排产排程问题,如何让利益最大化?(达摩院Mindopt案例)

简介: 本篇我们要讲述的案例是工厂生产相关,一个好的管理者会合理安排生产计划,让生产机器在固定的时间,不同的产品,生产效率的差异中尽可能的让工厂的利益最大化。那么面对这一问题,如果计算量比较大,该如何是好呢?

优化求解器是求解优化问题的专业设计软件。MindOpt是阿里达摩院自主研发的求解器套件,可用于求解线性规划、混合整数线性规划、半定规划、凸二次规划问题,目前广泛工业制造、交通物流、云计算等领域,每年都有帮助阿里降低成本,提高利率,本系列将带大家了解多个MindOpt的使用场景。

本篇我们要讲述的案例是工厂生产相关,一个好的管理者会合理安排生产计划,让生产机器在固定的时间,不同的产品,生产效率的差异中尽可能的让工厂的利益最大化。那么面对这一问题,如果计算量比较大,该如何是好呢?MindOpt优化求解器可以为您提供计算能力,让工厂利益最大化。下面我将使用MindOpt来优化一个排产排程的问题。

问题描述和数学规划模型

问题描述

考虑如下决策问题,某钢铁厂在下一周将要生产Bands,Coils,和Plate三种产品。

  • 已知该工厂每小时能生产200吨Bands、或140吨Coils、或160吨Plate。
  • 每吨Bands获利25元,每吨Coils获利30元,每吨Plate获利29元。
  • 已知每周最多能够生产最多6000吨的Bands,4000吨的Coils 和3500吨Plate,且工厂每周最多工作40小时。
  • 现规定每周Bands生产数量不得少于1000吨,Coils的生产数量不得少于500吨,Plate的生产数量不得少于750吨。

问下周生产多少吨的Bands和Coils能让工厂利润最大化?

数学规划模型

以上问题,我们可以建立线性规划的数学模型如下。

集合
产品集合 𝑃

混合集合  𝐷
(由生产效率 rate,每小时获利 profit,最低生产量  commit和最大生产量  profit四个元素组成)

参数

  • 工厂每周最大工作时间 avail
  • 工厂生产产品 𝑝∈𝑃 的效率  𝑟𝑝
  • 每吨产品  𝑝∈𝑃 获利  𝑝𝑝
  • 产品 𝑝∈𝑃 每天最低生产量  𝑐𝑝
  • 产品 𝑝∈𝑝 每天最大生产量  𝑚𝑝

决策变量
工厂一周生产产品 𝑝∈𝑃 的数量image.png

目标函数
工厂要最大化利润 image.png

约束
工厂每周工作不得超过最大工作时间  image.png


汇总的数学公式如下:


image.png


使用MindOpt APL进行建模和求解

MindOpt建模语言(MindOpt Algebra Programming Language, MindOpt APL,简称为MAPL)是一种高效且通用的代数建模语言。当前主要用于数学规划问题的建模,并支持调用多种求解器求解。下面将演示如何使用MAPL将上面的数学模型公式和数据输入,生成一个求解器可求解的问题,再调用求解器去进行求解。

方法:cell中直接输入建模代码运行

改写上面的数据图和数学模型,如下代码,在Notebook的cell中运行它:

clear model;#清除model,多次run的时候使用
option modelname model/manufacture_01_steel;#方便与方法2的中间文件生成在同一个目录
#---------建模-----------------
# manufacture_01_steel.mapl
set PROD := { "bands", "coils", "plate" };
set D := { "rate", "profit", "commit", "market" };
param data[PROD * D] := 
         | "rate", "profit", "commit", "market"|
|"bands" |  200,    25,       1000,     6000   |
|"coils" |  140,    30,       500,      4000   |
|"plate" |  160,    29,       750,      3500   |;
param avail := 40;
var Make[<p> in PROD] >= data[p, "commit"] <= data[p, "market"];
maximize Total_Profit: sum {<p> in PROD } data[p, "profit"] * Make[p];
subto Time:
  sum {<p> in PROD} 1/data[p, "rate"] * Make[p] <= avail;
#------------------------------
print "-----------------用MindOpt求解---------------";
option solver mindopt;   # 指定求解用MindOpt求解器
solve;               # 求解
display;
print "-----------------结果---------------";
print "最大利润 = ";
print sum { <p> in PROD } data[p, "profit"] * Make[p];

运行上述代码结果如下:

-----------------用MindOpt求解---------------
Running mindoptampl
wantsol=1
MindOpt Version 0.25.1 (Build date: 20230816)
Copyright (c) 2020-2023 Alibaba Cloud.
Start license validation (current time : 18-AUG-2023 16:04:09).
License validation terminated. Time : 0.006s
Model summary.
 - Num. variables     : 3
 - Num. constraints   : 1
 - Num. nonzeros      : 3
 - Bound range        : [4.0e+01,6.0e+03]
 - Objective range    : [2.5e+01,3.0e+01]
 - Matrix range       : [5.0e-03,7.1e-03]
Presolver started.
Presolver terminated. Time : 0.002s
Simplex method started.
Model fingerprint: =E2blNmZul3Z3R2dkdnZ
    Iteration       Objective       Dual Inf.     Primal Inf.     Time
            0     3.71500e+05      0.0000e+00      1.6179e+01     0.01s    
            1     1.94829e+05      0.0000e+00      0.0000e+00     0.02s    
Postsolver started.
Simplex method terminated. Time : 0.008s
OPTIMAL; objective 194828.57
1 simplex iterations
Completed.
Primal Solution:
Make@bands = 6000.00000
Make@coils = 500.000000
Make@plate = 1028.57143
-----------------结果---------------
最大利润 = 
194828.5714285714

3. 结果解析

display指令运行时,会打印求解的结果,Make@name 是决策变量的取值,后面的dual solution是对偶解的值。示意如下:


Primal Solution:
Make@bands = 6.000000000000000E+03
Make@coils = 5.000000000000000E+02
Make@plate = 1.028571428571429E+03
Dual Solution:
Time_1   = 4.640000000000000E+03

同时,在最近建模的文件所在目录或option modelname指定的位置,会生成对应的文件.nl.sol。其中.nl文件是建模的问题模型文件,可被多数求解器识别,.sol文件中存储了求解结果solution。

从打印的结果,我们可以得到采用如下的生产方案时,利润最大,为194828.57元:

Make@bands = 6.000000000000000E+03
Make@coils = 5.000000000000000E+02
Make@plate = 1.028571428571429E+03
相关文章
|
3月前
|
达摩院 供应链 安全
光储荷经济性调度问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文介绍使用MindOpt工具优化光储荷经济性调度的数学规划问题。光储荷经济性调度技术旨在最大化能源利用率和经济效益,应用场景包括分布式光伏微网、家庭能源管理系统、商业及工业用电、电力市场参与者等。文章详细阐述了如何通过数学规划方法解决虚拟电厂中的不确定性与多目标优化难题,并借助MindOpt云建模平台、MindOpt APL建模语言及MindOpt优化求解器实现问题建模与求解。最终案例展示了如何通过合理充放电策略减少37%的电费支出,实现经济与环保双重效益。读者可通过提供的链接获取完整源代码。
|
3月前
|
达摩院 BI 索引
切割问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文主要讲述了使用MindOpt工具对切割问题进行优化的过程与实践。切割问题是指从一维原材料(如木材、钢材等)中切割出特定长度的零件以满足不同需求,同时尽可能减少浪费的成本。文章通过实例详细介绍了如何使用MindOpt云上建模求解平台及其配套的MindOpt APL建模语言来解决此类问题,包括数学建模、代码实现、求解过程及结果分析等内容。此外,还讨论了一维切割问题的应用场景,并对其进行了扩展,探讨了更复杂的二维和三维切割问题。通过本文的学习,读者能够掌握利用MindOpt工具解决实际切割问题的方法和技术。
|
3月前
|
达摩院 算法 安全
智慧楼宇多目标调度问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文探讨了使用MindOpt工具优化智慧楼宇的多目标调度问题,特别是在虚拟电厂场景下的应用。智慧楼宇通过智能化技术综合考虑能耗、舒适度等多目标,实现楼宇设备的有效管理和调度。虚拟电厂作为多能源聚合体,能够参与电力市场,提供调峰、调频等辅助服务。文章介绍了如何使用MindOpt云上建模求解平台及MindOpt APL建模语言对楼宇多目标调度问题进行数学建模和求解,旨在通过优化储能设备的充放电操作来最小化用电成本、碳排放成本和功率变化成本,从而实现经济、环保和电网稳定的综合目标。最终结果显示,在使用储能设备的情况下,相比不使用储能设备的情形,成本节约达到了约48%。
|
3月前
|
达摩院 供应链 JavaScript
网络流问题--仓储物流调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文通过使用MindOpt工具优化仓储物流调度问题,旨在提高物流效率并降低成本。首先,通过考虑供需匹配、运输时间与距离、车辆容量、仓库储存能力等因素构建案例场景。接着,利用数学规划方法,包括线性规划和网络流问题,来建立模型。在网络流问题中,通过定义节点(资源)和边(资源间的关系),确保流量守恒和容量限制条件下找到最优解。文中还详细介绍了MindOpt Studio云建模平台和MindOpt APL建模语言的应用,并通过实例展示了如何声明集合、参数、变量、目标函数及约束条件,并最终解析了求解结果。通过这些步骤,实现了在满足各仓库需求的同时最小化运输成本的目标。
|
4月前
|
达摩院 安全 调度
网络流问题--交通调度【数学规划的应用(含代码)】阿里达摩院MindOpt
本文探讨了如何利用数学规划工具MindOpt解决交通调度问题。交通调度涉及网络流分析,考虑道路容量、车辆限制、路径选择等因素,以实现高效运行。通过建立数学模型,利用MindOpt云平台和建模语言MAPL,设定流量最大化目标并确保流量守恒,解决实际的调度问题。案例展示了如何分配车辆从起点到终点,同时满足道路容量约束。MindOpt Studio提供在线开发环境,支持模型构建和求解,帮助优化大规模交通调度。
|
4月前
|
达摩院
人员排班【数学规划的应用(含代码)】阿里达摩院MindOpt
本文介绍了使用阿里巴巴达摩院的MindOpt工具解决人员排班的数学规划问题。人员排班在多个行业中至关重要,如制造业、医疗、餐饮和零售等。问题涉及多种约束,包括工作需求、员工能力、工作时间限制、连续工作天数及公平性。通过MindOpt云建模平台和建模语言MindOpt APL,建立数学模型并编写代码来解决最小化总上班班次的问题。案例中展示了如何声明集合、参数、变量和约束,并给出了部分代码示例。最后,通过MindOpt求解器得到最优解,并将结果输出到CSV文件中。
|
4月前
|
存储 达摩院 供应链
排产排程问题【数学规划的应用(含代码)】阿里达摩院MindOpt
**文章摘要:** 本文探讨了使用阿里巴巴达摩院的MindOpt优化求解器解决制造业中的排产排程问题。排产排程涉及物料流动、工序安排、设备调度等多个方面,通常通过数学规划方法建模。MindOpt支持线性规划、整数规划等,能有效处理大规模数据。案例以香皂制造工厂为例,考虑了多种油脂的购买、存储和生产计划,以及价格变化和存储成本。问题通过数学建模转化为MindOpt APL代码,求解器自动寻找最优解,以最大化利润。文章还提供了代码解析,展示了解决方案的细节,包括目标函数(利润最大化)、约束条件(如生产效率、库存管理)以及结果分析。
|
5月前
|
达摩院 Python
阿里达摩院MindOpt优化求解器-月刊(2024年6月)
**阿里达摩院MindOpt优化求解器2024年6月月刊概览:** - 发布新功能,MAPL建模语言V2.5上线,Python APIs全面升级,旧版本不兼容。 提供快速入门教程、示例代码展示如何用Python调用MAPL。MindOpt Studio租户版新增Gradio支持,便于开发WebAPP,提供了案例源码展示如何开发。引入新案例: 1. 巡检线路的排班-2017全国大学生数学建模竞赛D题。包含最短路模型、TSP模型、弧分割模型。2. 商品组合定价策略:探讨如何最赚钱的加购区商品定价。
130 0
|
5月前
|
达摩院 供应链 调度
【FlowShop流水线作业排班问题【数学规划的应用(含代码)】阿里达摩院MindOpt】
本文探讨了使用阿里巴巴达摩院的MindOpt工具解决FlowShop流水线作业排班的数学规划问题。FlowShop涉及到多台机器、多个工序和多个作业,目标是通过优化排班最小化总生产耗时。MindOpt通过数学规划方法,如线性或混合整数线性规划,将问题建模并转化为代码,利用云建模平台MindOpt Studio和MindOpt APL建模语言进行求解。案例中详细介绍了参数定义、变量解析、约束设置和目标函数,展示了如何通过MindOpt进行建模和求解,以达到最优化的生产调度。此外,文章还提供了代码示例和结果解析,帮助读者理解如何实际应用MindOpt解决这类问题。
|
6月前
|
达摩院 开发者 容器
「达摩院MindOpt」优化形状切割问题(MILP)
在制造业,高效地利用材料不仅是节约成本的重要环节,也是可持续发展的关键因素。无论是在金属加工、家具制造还是纺织品生产中,原材料的有效利用都直接影响了整体效率和环境影响。
「达摩院MindOpt」优化形状切割问题(MILP)