混合整数线性规划基础知识:Solver-BasedgydF4y2Ba
这个例子展示了如何解决混合整数线性问题。虽然不复杂,制定中的示例显示了典型步骤使用的语法问题gydF4y2BaintlinproggydF4y2Ba
。gydF4y2Ba
具体问题具体分析的方法这个问题,看到的gydF4y2Ba混合整数线性规划基础知识:具体问题具体分析gydF4y2Ba。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
制定问题,首先确定控制变量。把变量gydF4y2Bax (1) = 1gydF4y2Ba
的意思是你购买锭gydF4y2Ba1gydF4y2Ba,gydF4y2Bax (1) = 0gydF4y2Ba
意味着你不购买锭。同样,变量gydF4y2Bax (2)gydF4y2Ba
通过gydF4y2Bax (4)gydF4y2Ba
是二进制变量指示你是否购买锭吗gydF4y2Ba2gydF4y2Ba通过gydF4y2Ba4gydF4y2Ba。gydF4y2Ba
变量gydF4y2Bax (5)gydF4y2Ba
通过gydF4y2Bax (7)gydF4y2Ba
吨合金数量吗gydF4y2Ba1gydF4y2Ba,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba3gydF4y2Ba你购买,gydF4y2Bax (8)gydF4y2Ba
是你购买的废钢量。gydF4y2Ba
MATLAB®配方gydF4y2Ba
通过指定的输入制定的问题gydF4y2BaintlinproggydF4y2Ba
。相关的gydF4y2BaintlinproggydF4y2Ba
语法是:gydF4y2Ba
[x, fval] = intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托)gydF4y2Ba
创建输入gydF4y2BaintlinproggydF4y2Ba
从第一个(gydF4y2BafgydF4y2Ba
通过过去的)(gydF4y2Ba乌兰巴托gydF4y2Ba
)。gydF4y2Ba
fgydF4y2Ba
是成本的向量系数。系数代表锭的成本是钢锭重量乘以每吨成本。gydF4y2Ba
f = (350 * 5330 * 3310 * 4280 * 6500450400100);gydF4y2Ba
第一个四个整数变量。gydF4y2Ba
intcon = 1:4;gydF4y2Ba
提示:gydF4y2Ba指定二进制变量,将变量设置为整数gydF4y2BaintcongydF4y2Ba
,并给他们一个下界gydF4y2Ba0gydF4y2Ba
和一个上限的gydF4y2Ba1gydF4y2Ba
。gydF4y2Ba
这个问题没有线性不等式约束,所以gydF4y2Ba一个gydF4y2Ba
和gydF4y2BabgydF4y2Ba
空矩阵(gydF4y2Ba[]gydF4y2Ba
)。gydF4y2Ba
一个= [];b = [];gydF4y2Ba
有三个等式约束的问题。首先,总重量是25吨。gydF4y2Ba
5 * x (1) + 3 * x (2) + 4 * x (3) + 6 * x (4) + (5) + x (6) + x (7) + (8) = 25gydF4y2Ba
第二个约束是碳的重量是25吨的5%,或1.25吨。gydF4y2Ba
5 * 0.05 * (1)+ 3 * 0.04 * x (2) + 4 * 0.05 * x (3) + 6 * 0.03 * (4)gydF4y2Ba
+ 0.08 * 0.07 x (5) + * x (6) + 0.06 * (7) x (8) = 1.25 + 0.03 *gydF4y2Ba
第三个限制是钼的重量是1.25吨。gydF4y2Ba
5 * 0.03 * (1)+ 3 * 0.03 * x (2) + 4 * 0.04 * x (3) + 6 * 0.04 * (4)gydF4y2Ba
+ 0.06 * 0.07 x (5) + * x (6) + 0.08 * (7) x (8) = 1.25 + 0.09 *gydF4y2Ba
指定约束,Aeq * x = beq矩阵形式。gydF4y2Ba
Aeq = [5, 3、4、6, 1, 1, 1, 1;5 * 0.05,3 * 0.04,4 * 0.05,6 * 0.03,0.08,0.07,0.06,0.03;5 * 0.03,3 * 0.03,4 * 0.04,6 * 0.04,0.06,0.07,0.08,0.09);说真的= (25;1.25;1.25);gydF4y2Ba
每个变量有界低于零。上面的整数变量有界的。gydF4y2Ba
1磅= 0(8日);乌兰巴托= 1 (8,1);乌兰巴托(5:结束)=正;gydF4y2Ba%没有上限noninteger变量gydF4y2Ba
解决问题gydF4y2Ba
现在您已经输入,调用解算器。gydF4y2Ba
[x, fval] = intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托);gydF4y2Ba
LP:最优的客观价值是8125.600000。减少生成:应用3米尔削减。下界是8495.000000。相对差距是0.00%。找到最优解。Intlinprog停在根节点,因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-05。gydF4y2Ba
查看解决方案。gydF4y2Ba
x, fvalgydF4y2Ba
x =gydF4y2Ba8×1gydF4y2Ba1.0000 - 1.0000 3.5000 1.0000 7.0000 0.5000 0gydF4y2Ba
fval = 8495gydF4y2Ba
最优采购成本8495美元。买锭gydF4y2Ba1gydF4y2Ba,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba4gydF4y2Ba,但不gydF4y2Ba3gydF4y2Ba,买7.25吨合金gydF4y2Ba1gydF4y2Ba0.25吨合金gydF4y2Ba3gydF4y2Ba和3.5吨废钢。gydF4y2Ba
集gydF4y2Baintcon = []gydF4y2Ba
看到解决问题的效果没有整数约束。解决方案是不同的,是不现实的,因为你无法购买一个锭的一小部分。gydF4y2Ba