主要内容GyD.F4y2Ba

混合整数线性编程基础:基于求解器GyD.F4y2Ba

此示例显示如何解决混合整数线性问题。虽然不复杂,但该示例显示了使用语法制定问题的典型步骤GyD.F4y2Baintlinprog.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 pp。39-43,谁的摘要是GyD.F4y2Bahttps://doi.org/10.1287/inte.7.2.39GyD.F4y2Ba。GyD.F4y2Ba

购买四锭可供购买。只有每个铸锭中的一个。GyD.F4y2Ba

一世GyD.F4y2Ba NGyD.F4y2Ba GGyD.F4y2Ba O.GyD.F4y2Ba T.GyD.F4y2Ba W.GyD.F4y2Ba E.GyD.F4y2Ba 一世GyD.F4y2Ba GGyD.F4y2Ba HGyD.F4y2Ba T.GyD.F4y2Ba 一世GyD.F4y2Ba NGyD.F4y2Ba T.GyD.F4y2Ba O.GyD.F4y2Ba NGyD.F4y2Ba S.GyD.F4y2Ba %GyD.F4y2Ba CGyD.F4y2Ba 一种GyD.F4y2Ba R.GyD.F4y2Ba B.GyD.F4y2Ba O.GyD.F4y2Ba NGyD.F4y2Ba %GyD.F4y2Ba mGyD.F4y2Ba O.GyD.F4y2Ba L.GyD.F4y2Ba yGyD.F4y2Ba B.GyD.F4y2Ba D.GyD.F4y2Ba E.GyD.F4y2Ba NGyD.F4y2Ba 你GyD.F4y2Ba mGyD.F4y2Ba CGyD.F4y2Ba O.GyD.F4y2Ba S.GyD.F4y2Ba T.GyD.F4y2Ba T.GyD.F4y2Ba O.GyD.F4y2Ba NGyD.F4y2Ba 1GyD.F4y2Ba 5.GyD.F4y2Ba 5.GyD.F4y2Ba 3.GyD.F4y2Ba $GyD.F4y2Ba 3.GyD.F4y2Ba 5.GyD.F4y2Ba 0.GyD.F4y2Ba 2GyD.F4y2Ba 3.GyD.F4y2Ba 4.GyD.F4y2Ba 3.GyD.F4y2Ba $GyD.F4y2Ba 3.GyD.F4y2Ba 3.GyD.F4y2Ba 0.GyD.F4y2Ba 3.GyD.F4y2Ba 4.GyD.F4y2Ba 5.GyD.F4y2Ba 4.GyD.F4y2Ba $GyD.F4y2Ba 3.GyD.F4y2Ba 1GyD.F4y2Ba 0.GyD.F4y2Ba 4.GyD.F4y2Ba 6.GyD.F4y2Ba 3.GyD.F4y2Ba 4.GyD.F4y2Ba $GyD.F4y2Ba 2GyD.F4y2Ba 8.GyD.F4y2Ba 0.GyD.F4y2Ba

购买三种合金钢和一级废钢等级可供购买。合金和废钢钢可以分数数量购买。GyD.F4y2Ba

一种GyD.F4y2Ba L.GyD.F4y2Ba L.GyD.F4y2Ba O.GyD.F4y2Ba yGyD.F4y2Ba %GyD.F4y2Ba CGyD.F4y2Ba 一种GyD.F4y2Ba R.GyD.F4y2Ba B.GyD.F4y2Ba O.GyD.F4y2Ba NGyD.F4y2Ba %GyD.F4y2Ba mGyD.F4y2Ba O.GyD.F4y2Ba L.GyD.F4y2Ba yGyD.F4y2Ba B.GyD.F4y2Ba D.GyD.F4y2Ba E.GyD.F4y2Ba NGyD.F4y2Ba 你GyD.F4y2Ba mGyD.F4y2Ba CGyD.F4y2Ba O.GyD.F4y2Ba S.GyD.F4y2Ba T.GyD.F4y2Ba T.GyD.F4y2Ba O.GyD.F4y2Ba NGyD.F4y2Ba 1GyD.F4y2Ba 8.GyD.F4y2Ba 6.GyD.F4y2Ba $GyD.F4y2Ba 5.GyD.F4y2Ba 0.GyD.F4y2Ba 0.GyD.F4y2Ba 2GyD.F4y2Ba 7.GyD.F4y2Ba 7.GyD.F4y2Ba $GyD.F4y2Ba 4.GyD.F4y2Ba 5.GyD.F4y2Ba 0.GyD.F4y2Ba 3.GyD.F4y2Ba 6.GyD.F4y2Ba 8.GyD.F4y2Ba $GyD.F4y2Ba 4.GyD.F4y2Ba 0.GyD.F4y2Ba 0.GyD.F4y2Ba S.GyD.F4y2Ba CGyD.F4y2Ba R.GyD.F4y2Ba 一种GyD.F4y2Ba P.GyD.F4y2Ba 3.GyD.F4y2Ba 9.GyD.F4y2Ba $GyD.F4y2Ba 1GyD.F4y2Ba 0.GyD.F4y2Ba 0.GyD.F4y2Ba

要制定问题,首先确定控制变量。拿变量GyD.F4y2Bax(1)= 1GyD.F4y2Ba意味着你购买锭GyD.F4y2Ba1GyD.F4y2Ba, 和GyD.F4y2Bax(1)= 0GyD.F4y2Ba意味着你没有购买铸锭。同样,变量GyD.F4y2Bax(2)GyD.F4y2Ba通过GyD.F4y2Bax(4)GyD.F4y2Ba是二进制变量,指示您是否购买锭GyD.F4y2Ba2GyD.F4y2Ba通过GyD.F4y2Ba4.GyD.F4y2Ba。GyD.F4y2Ba

变量GyD.F4y2Bax(5)GyD.F4y2Ba通过GyD.F4y2Bax(7)GyD.F4y2Ba是吨合金中的数量GyD.F4y2Ba1GyD.F4y2Ba那GyD.F4y2Ba2GyD.F4y2Ba, 和GyD.F4y2Ba3.GyD.F4y2Ba你购买,和GyD.F4y2Bax(8)GyD.F4y2Ba是您购买的废钢的数量。GyD.F4y2Ba

MATLAB®配方GyD.F4y2Ba

通过指定输入来制定问题GyD.F4y2Baintlinprog.GyD.F4y2Ba。相关的GyD.F4y2Baintlinprog.GyD.F4y2Ba语法是:GyD.F4y2Ba

[x,fval] = intlinprog(f,intcon,a,b,aeq,beq,lb,Ub)GyD.F4y2Ba

创建输入GyD.F4y2Baintlinprog.GyD.F4y2Ba从第一个(GyD.F4y2BaFGyD.F4y2Ba)通过最后一次(GyD.F4y2BaUB.GyD.F4y2Ba)。GyD.F4y2Ba

FGyD.F4y2Ba是成本系数的矢量。表示锭成本的系数是每吨成本的铸锭重量。GyD.F4y2Ba

f = [350 * 5,330 * 3,310 * 4,280 * 6,500,450,400,100];GyD.F4y2Ba

整数变量是前四个。GyD.F4y2Ba

Intcon = 1:4;GyD.F4y2Ba

小费:GyD.F4y2Ba要指定二进制变量,请将变量设置为整数GyD.F4y2BaIntcon.GyD.F4y2Ba,并给他们一个下限GyD.F4y2Ba0.GyD.F4y2Ba和一个上限GyD.F4y2Ba1GyD.F4y2Ba。GyD.F4y2Ba

问题没有线性不等式约束,所以GyD.F4y2Ba一种GyD.F4y2Ba和GyD.F4y2BaB.GyD.F4y2Ba是空矩阵(GyD.F4y2Ba[]GyD.F4y2Ba)。GyD.F4y2Ba

a = [];b = [];GyD.F4y2Ba

问题有三个平等约束。首先是总重量为25吨。GyD.F4y2Ba

5 * x(1)+ 3 * x(2)+ 4 * x(3)+ 6 * x(4)+ x(5)+ x(6)+ x(7)+ x(8)= 25GyD.F4y2Ba

第二个约束是,碳的重量为25吨的5%,或1.25吨。GyD.F4y2Ba

5 * 0.05 * x(1)+ 3 * 0.04 * x(2)+ 4 * 0.05 * x(3)+ 6 * 0.03 * x(4)GyD.F4y2Ba

+ 0.08 * x(5)+ 0.07 * x(6)+ 0.06 * x(7)+ 0.03 * x(8)= 1.25GyD.F4y2Ba

第三个约束是钼的重量为1.25吨。GyD.F4y2Ba

5 * 0.03 * x(1)+ 3 * 0.03 * x(2)+ 4 * 0.04 * x(3)+ 6 * 0.04 * x(4)GyD.F4y2Ba

+ 0.06 * x(5)+ 0.07 * x(6)+ 0.08 * x(7)+ 0.09 * x(8)= 1.25GyD.F4y2Ba

指定由矩阵形式的AEQ * x = Beq的约束。GyD.F4y2Ba

AEQ = [5,3,4,6,1,1,1,1,1,1,1,1,11;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];Beq = [25; 1.25; 1.25];GyD.F4y2Ba

每个变量均按零界限为零。整数变量上面界限为一个。GyD.F4y2Ba

lb =零(8,1);UB =α(8,1);UB(5:结束)= INF;GyD.F4y2Ba百分比上没有上限在非整数变量上GyD.F4y2Ba

解决问题GyD.F4y2Ba

现在您拥有所有输入,请致电求解器。GyD.F4y2Ba

[x,fval] = intlinprog(f,intcon,a,b,aeq,beq,lb,Ub);GyD.F4y2Ba
LP:最佳目标值为8125.600000。切割生成:施加3 miR切割。下限为8495.000000。相对间隙为0.00%。找到最佳解决方案。intlinprog在根节点停止,因为客观值在最佳值的间隙容忍度范围内,Options.absolutegAppolerance = 0(默认值)。INTCON变量在容差,选项中是整数.inteGertolerance = 1E-05(默认值)。GyD.F4y2Ba

查看解决方案。GyD.F4y2Ba

x,fval.GyD.F4y2Ba
X =GyD.F4y2Ba8×1GyD.F4y2Ba1.0000 1.0000 0 1.0000 7.2500 0 0.2500 3.5000GyD.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

放GyD.F4y2BaIntcon = []GyD.F4y2Ba要查看解决问题的效果,不会在没有整数约束的情况下。解决方案是不同的,并且不是现实的,因为你不能购买一小部分铸锭。GyD.F4y2Ba

相关话题GyD.F4y2Ba