混合整数线性规划基础知识:具体问题具体分析gydF4y2Ba
这个例子展示了如何解决混合整数线性问题。虽然不复杂,但例子展示了典型的步骤制定一个问题通过具体问题具体分析的方法。视频的这个例子中,看到的gydF4y2Ba使用优化建模解决混合整数线性规划问题gydF4y2Ba。gydF4y2Ba
solver-based的方法这个问题,看到的gydF4y2Ba混合整数线性规划基础知识:Solver-BasedgydF4y2Ba。gydF4y2Ba
问题描述gydF4y2Ba
你想混合钢与各种化学成分获得25吨钢材与特定的化学成分。结果应该按重量5%的碳和5%的钼,意思是25吨* 5% = 1.25吨碳和1.25吨钼。目标是最小化混合钢的成本。gydF4y2Ba
这个问题来自维斯特伯格Carl-Henrik,说比约克隆德,和Eskil Hultman”gydF4y2Ba应用混合整数规划的瑞典钢铁厂gydF4y2Ba”。1977年2月接口7卷,第二页39-43,抽象的gydF4y2Bahttps://doi.org/10.1287/inte.7.2.39gydF4y2Ba。gydF4y2Ba
四锭钢铁可供购买。只有一个锭是可用的。gydF4y2Ba
三个等级的合金钢和一个等级的废钢可供购买。废合金和钢可以购买部分。gydF4y2Ba
制定问题gydF4y2Ba
制定问题,首先确定控制变量。把变量gydF4y2Ba锭(1)= 1gydF4y2Ba
意味着你购买锭gydF4y2Ba1gydF4y2Ba,gydF4y2Ba锭(1)= 0gydF4y2Ba
意味着你不购买锭。同样,变量gydF4y2Ba锭(2)gydF4y2Ba
通过gydF4y2Ba锭(4)gydF4y2Ba
是二进制变量指示你是否购买锭吗gydF4y2Ba2gydF4y2Ba通过gydF4y2Ba4gydF4y2Ba。gydF4y2Ba
变量gydF4y2Ba合金(1)gydF4y2Ba
通过gydF4y2Ba合金(3)gydF4y2Ba
吨合金数量吗gydF4y2Ba1gydF4y2Ba,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba3gydF4y2Ba你购买。gydF4y2Ba废gydF4y2Ba
是你购买的废钢量。gydF4y2Ba
steelprob = optimproblem;锭= optimvar (gydF4y2Ba“锭”gydF4y2Ba4gydF4y2Ba“类型”gydF4y2Ba,gydF4y2Ba“整数”gydF4y2Ba,gydF4y2Ba下界的gydF4y2Ba0,gydF4y2Ba“UpperBound”gydF4y2Ba1);合金= optimvar (gydF4y2Ba“合金”gydF4y2Ba3,gydF4y2Ba下界的gydF4y2Ba,0);取消= optimvar (gydF4y2Ba“取消”gydF4y2Ba,gydF4y2Ba下界的gydF4y2Ba,0);gydF4y2Ba
创建表达式相关的成本变量。gydF4y2Ba
weightIngots = (5、3、4、6);costIngots = weightIngots。* [350330310280];costAlloys = [500450400];costScrap = 100;成本= costIngots + costScrap * *锭+ costAlloys *合金废料;gydF4y2Ba
包括成本为目标函数的问题。gydF4y2Ba
steelprob。目标=成本;gydF4y2Ba
有三个等式约束的问题。第一个约束是总重量是25吨。计算钢的重量。gydF4y2Ba
totalWeight = weightIngots *锭+(合金)+废总和;gydF4y2Ba
第二个约束是碳的重量是25吨的5%,或1.25吨。计算钢中碳的重量。gydF4y2Ba
carbonIngots = (5、4、5、3) / 100;carbonAlloys = (8、7、6) / 100;carbonScrap = 3/100;totalCarbon = (weightIngots。* carbonIngots) + carbonScrap * *锭+ carbonAlloys *合金废料;gydF4y2Ba
第三个限制是钼的重量是1.25吨。计算钢中钼的重量。gydF4y2Ba
molybIngots = [3, 3, 4, 4] / 100;molybAlloys = (6、7、8) / 100;molybScrap = 9/100;totalMolyb = (weightIngots。* molybIngots) + molybScrap * *锭+ molybAlloys *合金废料;gydF4y2Ba
包括约束问题。gydF4y2Ba
steelprob.Constraints。con年代wt = totalWeight == 25; steelprob.Constraints.conscarb = totalCarbon == 1.25; steelprob.Constraints.consmolyb = totalMolyb == 1.25;
解决问题gydF4y2Ba
现在您已经输入,调用解算器。gydF4y2Ba
[溶胶,fval] =解决(steelprob);gydF4y2Ba
使用intlinprog解决问题。LP:最优的客观价值是8125.600000。减少生成:应用3米尔削减。下界是8495.000000。相对差距是0.00%。找到最优解。Intlinprog停在根节点,因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0(默认值)。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-05(默认值)。gydF4y2Ba
查看解决方案。gydF4y2Ba
sol.ingotsgydF4y2Ba
ans =gydF4y2Ba4×1gydF4y2Ba1.0000 - 1.0000 0 1.0000gydF4y2Ba
sol.alloysgydF4y2Ba
ans =gydF4y2Ba3×1gydF4y2Ba7.2500 0 0.2500gydF4y2Ba
sol.scrapgydF4y2Ba
ans = 3.5000gydF4y2Ba
fvalgydF4y2Ba
fval = 8.4950 e + 03gydF4y2Ba
最优采购成本8495美元。买锭gydF4y2Ba1gydF4y2Ba,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba4gydF4y2Ba,但不gydF4y2Ba3gydF4y2Ba,买7.25吨合金gydF4y2Ba1gydF4y2Ba0.25吨合金gydF4y2Ba3gydF4y2Ba和3.5吨废钢。gydF4y2Ba