本文主要讲述使用MindOpt工具优化排产排程的数学规划问题。
视频讲解👈👈👈👈👈👈👈👈👈
一、排产排程问题
在实际生产过程中存在着各种各样的排产排程问题,如物料流动、工序安排、设备调度及员工分配等方面。在设备调度场景,我们可以控制任务的分配,将其分配给机器设备进行处理。根据任务特点、设备能力等约束条件,可以合理地分配任务,实现设备利用率、生产效率的最大化。
二、数学规划
排产排程问题也可以使用数学规划的方法。数学规划是一种数学优化方法,主要是寻找变量的取值在特定的约束情况下使我们的决策目标得到一个最大或最小值的决策。常见规划方法有线性规划、整数规划还有非线性规划。
工具:
MindOpt优化求解器:帮我们求解大规模数据的数学规划问题。
三、排产排程问题案例
该案例的目的在于最大化工厂的利润,约束是当月投入生产的原材料加上生产剩余的原材料不超过当月购买的原材料数量,这也符合生活常识逻辑。但在实际生活中,问题往往更加复杂。假设有一个香皂制造工厂,要求对未来半年内的香皂的生产和油脂的采买制定计划。
在这个问题中,我们需要考虑以下四点因素。
第一,油脂需要储存。每月生产香皂可能会有油脂的剩余,因此我们需要考虑剩余原材料的储存问题。
第二,制作香皂的油脂种类繁多。
第三,每月各种油脂的采购价格不完全相同,这会导致每个月采购成本的浮动。
第四,每种油脂每月使用量有限制,该因素用于模拟工厂的工作效率。
在确定问题的因素后,我们需要对其进行数学建模。将数学建模转化为代码,转化过程中需要使用一些工具,采用的是阿里巴巴达摩院的MindOpt,可以使用浏览器在MindOpt的云平台上访问。编程代码使用的是MindOpt APL建模语言,它可以直接调用MindOpt solve求解器。
四、代码解析
使用工具:
- MindOpt Studio 云建模平台,在线开发调试,免下载
- MindOpt APL(MAPL)建模语言编程,代数建模语言,语法与数学公式相近
1.声明变量
变量xjmn表示工厂在第m个月对油脂j的购买、使用和储存计划;
变量ym表示在第m个月对香皂的生产计划;
2.声明集合、参数
o是定义油脂的集合,01表示植物油脂,02表示动物油脂,共有五种油脂;
M是月份集合;N表示“购买”“使用”“储存”计划。
声明的参数是每个月油脂采购的价格,即成本价格。
hardness是油脂的硬度,r是的销售单价,b1、b2是动物油脂和植物油脂采购的下限和上限,l、u是香皂的下限和上限,s是初始的油脂储存量,d是付出储存成本的单价。
3.声明目标
即需要最大化工厂的利润,并确定数学公式。查看代码,r是香皂的销售单价,y(m)是生产计划,即生产的香皂量以及销售量,计算得到盈利情况。j油脂在第m月的采购成本(cost[j,m])乘以其该月的购买计划(x[j,m,"Buy"])得到采购成本,储存一吨油脂所付出的单价(d)乘以的j油脂在该月的储存计划(x[j,m,"Store"])得到储存成本。盈利情况减上述两项成本得到利润,最后得到利润的最大化。
4.声明约束
第一条约束,方便问题计算使得每个月的油脂使用量等于生产计划,如生产计划是生产一吨香皂,则使用一吨油脂。
forall是MindOpt语法中的方法,主要用于快速声明约束,循环集合。这里循环集合是月份集合M,并使得第m个月的使用计划等于生产计划y(m)。
第二条约束和第三条约束的是为了把控生产产品时产品的规格,这里是指香皂的硬度,在生产零件的案例中,可能约束的是形状等等。
油脂的硬度(hardness[j])乘以油脂在第m个月的使用计划(x[j,m,"Use"])组成了香皂的生产过程,l是香皂的下限,u是香皂的上限。例如,第1个月购使用第1种油脂(VEG1),油脂的硬度为8,相乘得到第一个月的产量,需要等于第1个月的生成计划。
第三条约束为限制油脂的购买量,主要用于模拟香皂生产的效率,即j油脂在第m个月的使用量小于等于b1和b2,b1和b2分别表示是植物油脂和动物油脂的购买数量。
第四条约束是考虑到生活逻辑。除一月之外,其他月有初始原材料的储存。初始储存数量(s)加j油脂在一月的采购计划等于j油脂在一月的使用计划加储存计划,即上个月的储存量加上本月的购买量的总和等于本月的使用量加储存到下月的原材料数量。
最后一条约束用于控制原材料的储存成本,考虑到仓库储存的情况,
既不能使仓库有过多空余,也不能造成仓库的积压,因此需要使用约束条件固定储存的数量,使得j油脂第6个月的储存计划等于1月初的初始储存数量。
5.结果解析
从上图(部分结果)可以看到第一种植物油脂在一月份的购买情况是0,使用计划是100吨,储存计划是400吨;二月份购买计划是0,使用计划是200吨,储存计划是200吨。各月的生产计划均为450吨,最大利润(最终目标)是108250。
五、总结
本期主要是讲述了排场排程的问题,并以制作香皂的工厂为例进行了说明。案例中,工厂要求对其未来半年内的生产以及采购定制定计划,并最大化工厂的利润。
求解问题使用的工具,是使用的是阿里巴巴达摩院的MindOpt,可以在opt.aliyun.com平台上编写代码,编程代码的语言MAPL。
获取源代码