主要内容gydF4y2Ba

混合整数线性规划基础:基于问题gydF4y2Ba

这个例子展示了如何解决一个混合整数线性问题。尽管并不复杂,但该示例展示了使用基于问题的方法构造问题的典型步骤。有关展示此示例的视频,请参见gydF4y2Ba求解一个混合整数线性规划问题的优化建模gydF4y2Ba.gydF4y2Ba

关于这个问题的基于求解器的方法,请参见gydF4y2Ba混合整数线性规划基础:基于求解器gydF4y2Ba.gydF4y2Ba

问题描述gydF4y2Ba

你想把钢与各种化学成分混合,以获得25吨具有特定化学成分的钢。结果应该有5%的碳和5%的钼重量,意味着25吨*5% = 1.25吨碳和1.25吨钼。目标是使混合钢的成本最小化。gydF4y2Ba

这个问题来自于卡尔-亨利克·韦斯特伯格,本特·比约克隆德和埃斯基尔·Hultman,gydF4y2Ba混合整数规划在瑞典某钢厂的应用gydF4y2Ba《界面》1977年2月第7卷第2期39-43页,其摘要载于gydF4y2Bahttps://doi.org/10.1287/inte.7.2.39gydF4y2Ba.gydF4y2Ba

可供购买的钢锭有四块。每个锭只有一个可用。gydF4y2Ba

我gydF4y2Ba ngydF4y2Ba ggydF4y2Ba ogydF4y2Ba tgydF4y2Ba WgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba TgydF4y2Ba ogydF4y2Ba ngydF4y2Ba 年代gydF4y2Ba %gydF4y2Ba CgydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba bgydF4y2Ba ogydF4y2Ba ngydF4y2Ba %gydF4y2Ba 米gydF4y2Ba ogydF4y2Ba lgydF4y2Ba ygydF4y2Ba bgydF4y2Ba dgydF4y2Ba egydF4y2Ba ngydF4y2Ba ugydF4y2Ba 米gydF4y2Ba CgydF4y2Ba ogydF4y2Ba 年代gydF4y2Ba tgydF4y2Ba TgydF4y2Ba ogydF4y2Ba ngydF4y2Ba 1gydF4y2Ba 5gydF4y2Ba 5gydF4y2Ba 3.gydF4y2Ba $gydF4y2Ba 3.gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba 2gydF4y2Ba 3.gydF4y2Ba 4gydF4y2Ba 3.gydF4y2Ba $gydF4y2Ba 3.gydF4y2Ba 3.gydF4y2Ba 0gydF4y2Ba 3.gydF4y2Ba 4gydF4y2Ba 5gydF4y2Ba 4gydF4y2Ba $gydF4y2Ba 3.gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 4gydF4y2Ba 6gydF4y2Ba 3.gydF4y2Ba 4gydF4y2Ba $gydF4y2Ba 2gydF4y2Ba 8gydF4y2Ba 0gydF4y2Ba

可供购买的合金钢有三种等级和一种等级的废钢。合金和废钢可以少量购买。gydF4y2Ba

一个gydF4y2Ba lgydF4y2Ba lgydF4y2Ba ogydF4y2Ba ygydF4y2Ba %gydF4y2Ba CgydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba bgydF4y2Ba ogydF4y2Ba ngydF4y2Ba %gydF4y2Ba 米gydF4y2Ba ogydF4y2Ba lgydF4y2Ba ygydF4y2Ba bgydF4y2Ba dgydF4y2Ba egydF4y2Ba ngydF4y2Ba ugydF4y2Ba 米gydF4y2Ba CgydF4y2Ba ogydF4y2Ba 年代gydF4y2Ba tgydF4y2Ba TgydF4y2Ba ogydF4y2Ba ngydF4y2Ba 1gydF4y2Ba 8gydF4y2Ba 6gydF4y2Ba $gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 2gydF4y2Ba 7gydF4y2Ba 7gydF4y2Ba $gydF4y2Ba 4gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba 3.gydF4y2Ba 6gydF4y2Ba 8gydF4y2Ba $gydF4y2Ba 4gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 年代gydF4y2Ba cgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba pgydF4y2Ba 3.gydF4y2Ba 9gydF4y2Ba $gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba

制定问题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,gydF4y2Ba3.gydF4y2Ba你购买。gydF4y2Ba废gydF4y2Ba是你购买的废钢数量。gydF4y2Ba

steelprob = optimproblem;锭= optimvar (gydF4y2Ba“锭”gydF4y2Ba4gydF4y2Ba“类型”gydF4y2Ba,gydF4y2Ba“整数”gydF4y2Ba,gydF4y2Ba下界的gydF4y2Ba0,gydF4y2Ba“UpperBound”gydF4y2Ba1);合金= optimvar (gydF4y2Ba“合金”gydF4y2Ba,3,gydF4y2Ba下界的gydF4y2Ba, 0);取消= optimvar (gydF4y2Ba“取消”gydF4y2Ba,gydF4y2Ba下界的gydF4y2Ba, 0);gydF4y2Ba

创建与变量相关的成本表达式。gydF4y2Ba

weightIngots =(5、3、4、6);costIngots = weightIngots。* [350330310280];costAlloys = [500450400];costScrap = 100;成本=成本锭*锭+成本合金*合金+成本废料*废料;gydF4y2Ba

将成本作为问题的目标函数。gydF4y2Ba

steelprob。目标=成本;gydF4y2Ba

这个问题有三个等式约束。第一个限制是总重量为25吨。计算钢的重量。gydF4y2Ba

totalWeight = weight gots*锭+ sum(合金)+废料;gydF4y2Ba

第二个限制是碳的重量是25吨的5%,即1.25吨。计算钢中碳的重量。gydF4y2Ba

carbonIngots =(5、4、5、3)/ 100;carbonAlloys =(8、7、6)/ 100;carbonScrap = 3/100;totalCarbon = (weight tingots .* carbon锭)*锭+碳合金*合金+碳废料*废料;gydF4y2Ba

第三个限制是钼的重量为1.25吨。计算钢中钼的重量。gydF4y2Ba

molybIngots = [3, 3, 4, 4] / 100;molybAlloys =(6、7、8)/ 100;molybScrap = 9/100;totalMolyb = (weightIngots.*molybIngots)*锭+ molybAlloys*合金+钼废料*废料;gydF4y2Ba

在问题中包含约束条件。gydF4y2Ba

steelpro . constraints .conswt = totalWeight == 25;steelpro . constraints .conscarb = totalCarbon = 1.25;steelpro . constraints .consmolyb = totalMolyb == 1.25;gydF4y2Ba

解决问题gydF4y2Ba

现在你有了所有的输入,调用求解器。gydF4y2Ba

[溶胶,fval] =解决(steelprob);gydF4y2Ba
使用intlinprog解决问题。LP:最佳目标值为8125.60万。切割生成:应用3个mir切割。下界是8495000000。相对差距为0.00%。找到最优解。Intlinprog在根节点停止,因为客观值在最优值options的间隙公差范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是在公差选项内的整数。IntegerTolerance = 1e-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,但不gydF4y2Ba3.gydF4y2Ba,并购买7.25吨合金gydF4y2Ba1gydF4y2Ba, 0.25吨合金gydF4y2Ba3.gydF4y2Ba,以及3.5吨废钢。gydF4y2Ba

相关的话题gydF4y2Ba