此示例显示如何解决混合整数线性问题。虽然并不复杂,但该示例显示了使用基于问题的方法制定问题的典型步骤。对于显示此示例的视频,请参阅GyD.F4y2Ba使用优化建模解决混合整数线性编程问题GyD.F4y2Ba。GyD.F4y2Ba
对于基于求解器的方法来解决这个问题,请参阅GyD.F4y2Ba混合整数线性编程基础:基于求解器GyD.F4y2Ba。GyD.F4y2Ba
您希望用各种化学组成融合钢材,以获得25吨钢,具有特定的化学成分。结果应具有5%的碳和5%钼重量,意为25吨* 5%= 1.25吨碳和1.25吨钼。目的是最大限度地减少混合钢的成本。GyD.F4y2Ba
这个问题来自Carl-Henrik Westerberg,Bengt Bjorklund和Eskil Hultman,“GyD.F4y2Ba混合整数规划在瑞典钢厂中的应用GyD.F4y2Ba。“界面1977年2月Vol。7,第2页第2页。39-43,其摘要在于GyD.F4y2Bahttps://doi.org/10.1287/inte.7.2.39GyD.F4y2Ba。GyD.F4y2Ba
购买四锭可供购买。只有每个铸锭中的一个。GyD.F4y2Ba
购买三种合金钢和一级废钢等级可供购买。合金和废钢钢可以分数数量购买。GyD.F4y2Ba
要制定问题,首先确定控制变量。拿变量GyD.F4y2Ba锭(1)= 1GyD.F4y2Ba
意味着你购买锭GyD.F4y2Ba1GyD.F4y2Ba, 和GyD.F4y2Ba锭(1)= 0GyD.F4y2Ba
意味着你没有购买铸锭。同样,变量GyD.F4y2Ba锭(2)GyD.F4y2Ba
通过GyD.F4y2Ba锭(4)GyD.F4y2Ba
是二进制变量,指示您是否购买锭GyD.F4y2Ba2GyD.F4y2Ba通过GyD.F4y2Ba4.GyD.F4y2Ba。GyD.F4y2Ba
变量GyD.F4y2Ba合金(1)GyD.F4y2Ba
通过GyD.F4y2Ba合金(3)GyD.F4y2Ba
是吨合金的数量GyD.F4y2Ba1GyD.F4y2Ba那GyD.F4y2Ba2GyD.F4y2Ba, 和GyD.F4y2Ba3.GyD.F4y2Ba你购买。GyD.F4y2Ba废料GyD.F4y2Ba
是您购买的废钢的数量。GyD.F4y2Ba
SteelProb = OptimProblem;锭= Optimvar(GyD.F4y2Ba'锭'GyD.F4y2Ba,4,GyD.F4y2Ba'类型'GyD.F4y2Ba那GyD.F4y2Ba'整数'GyD.F4y2Ba那GyD.F4y2Ba'indowbound'GyD.F4y2Ba,0,GyD.F4y2Ba'上行'GyD.F4y2Ba,1);合金= Optimvar(GyD.F4y2Ba'合金'GyD.F4y2Ba,3,GyD.F4y2Ba'indowbound'GyD.F4y2Ba,0);scrap = Optimvar(GyD.F4y2Ba'废料'GyD.F4y2Ba那GyD.F4y2Ba'indowbound'GyD.F4y2Ba,0);GyD.F4y2Ba
为与变量相关的成本创建表达式。GyD.F4y2Ba
重量仪= [5,3,4,6];costingots =权重。* [350,330,310,280];costoloys = [500,450,400];成比赛= 100;成本=成本刺激*铸锭+ costoloys *合金+成比赛*废料;GyD.F4y2Ba
包括作为问题的目标函数的成本。GyD.F4y2Ba
steelprob.objective =成本;GyD.F4y2Ba
问题有三个平等约束。第一个约束是总重量为25吨。计算钢的重量。GyD.F4y2Ba
Totalweight = Preceingot *锭+和(合金)+废料;GyD.F4y2Ba
第二个约束是碳的重量为25吨的5%,或1.25吨。计算钢中碳的重量。GyD.F4y2Ba
碳酸碳= [5,4,5,3] / 100;Carbonalloys = [8,7,6] / 100;Carbonscrap = 3/100;TotalCarbon =(配重*碳连接液)*锭+碳铝合金*合金+碳酸碎屑*废料;GyD.F4y2Ba
第三个约束是钼的重量为1.25吨。计算钢中钼的重量。GyD.F4y2Ba
钼手提= [3,3,4,4] / 100;莫利鲍伊= [6,7,8] / 100;Molybscrap = 9/100;TotalMolyB =(配重*钼印刷)*锭+钼杆合金*合金+ Molybscrap *废料;GyD.F4y2Ba
包括问题的约束。GyD.F4y2Ba
steelprob.constraints.conswt = totalweight == 25;steelprob.constraints.conscarb = totalcarbon == 1.25;steelprob.constraints.consmolyb = totalmolyb == 1.25;GyD.F4y2Ba
现在您拥有所有输入,请致电求解器。GyD.F4y2Ba
[溶胶,fval] =解决(钢鞋);GyD.F4y2Ba
使用intlinprog解决问题。LP:最佳目标值为8125.600000。切割生成:应用3 miR切割。下限为8495.000000。相对间隙为0.00%。找到最佳解决方案。intlinprog在根节点处停止,因为目标值在最佳值的间隙容忍度范围内,options.absolutegolerance = 0(默认值)。INTCON变量在公差中是整数,Options.integertolerance = 1E-05(默认值)。GyD.F4y2Ba
查看解决方案。GyD.F4y2Ba
sol.ingots.GyD.F4y2Ba
ANS =.GyD.F4y2Ba4×1GyD.F4y2Ba1.0000 1.0000 0 1.0000GyD.F4y2Ba
sol.alloys.GyD.F4y2Ba
ANS =.GyD.F4y2Ba3×1GyD.F4y2Ba7.2500 0 0.2500GyD.F4y2Ba
sol.scrap.GyD.F4y2Ba
ANS = 3.5000.GyD.F4y2Ba
fval.GyD.F4y2Ba
fval = 8.4950e + 03GyD.F4y2Ba
最佳购买费用为8,495美元。买锭子GyD.F4y2Ba1GyD.F4y2Ba那GyD.F4y2Ba2GyD.F4y2Ba, 和GyD.F4y2Ba4.GyD.F4y2Ba, 但不是GyD.F4y2Ba3.GyD.F4y2Ba,买7.25吨合金GyD.F4y2Ba1GyD.F4y2Ba,0.25吨合金GyD.F4y2Ba3.GyD.F4y2Ba和3.5吨废钢。GyD.F4y2Ba