[大谦MATLAB,dqmatlab点com]
【例8】在5个地点中选择3个地点建设生成同一种产品的工厂,在这5个地点中,建厂所需投资、占用农田、建成以后的生产能力等数据如表6-3所示。
表6-3 数据表
| 地 点 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 所需投资(万元) | 320 | 280 | 240 | 210 | 180 |
| 占用农田(km2) | 20 | 18 | 15 | 11 | 8 |
| 生产能力(万吨) | 70 | 55 | 42 | 28 | 11 |
现在有总投资800万元,占用农田指标60 km2,应如何选择厂址,使建成后的总生产能力最大。
解 设五个0-1变量x1、x2、x3、x4、x5,其中
\({x}_{i}=\left\{ \begin{matrix} 0,表示在i 地不建厂 \\ 1,表示在i 地建厂 \end{matrix} \right.\) i=1,2,3,4,5
整数规划模型为:
\[\left\{ \begin{matrix} \begin{matrix} \operatorname{max}{z}=70{x}_{1}+55{x}_{2}+42{x}_{3}+28{x}_{4}+11{x}_{5} \\ 320{x}_{1}+280{x}_{2}+240{x}_{3}+210{x}_{4}+180{x}_{5}\leq800 \end{matrix} \\ 20{x}_{1}+18{x}_{3}+15{x}_{3}+11{x}_{4}+8{x}_{5}\leq60 \\ {x}_{1}+{x}_{2}+{x}_{3}+{x}_{4}+{x}_{5}=3 \\ {x}_{1},{x}_{2},{x}_{3},{x}_{4},{x}_{5}=0,1 \end{matrix} \right.\]
这是一个0-1规划问题。下面用MATLAB进行求解,在命令窗口中输入下面的命令行:
code.matlab
>> f=[-70;-55;-42;-28;-11];
>> ic=[1 2 3 4 5];
>> A=[320 280 240 210 180;20 18 15 11 8];
>> b=[800;60];
>> Aeq=[1 1 1 1 1];
>> beq=[3];
>> lb=zeros(5,1);
>> ub=ones(5,1);
>> x=intlinprog(f,ic,A,b,Aeq,beq,lb,ub)
LP: Optimal objective value is -151.727273.
Cut Generation: Applied 2 cover cuts.
Lower bound is -140.000000.
Relative gap is 0.00%.
Optimal solution found.
Intlinprog stopped at the root node because the objective value is within a gap tolerance of the optimal
value, options.AbsoluteGapTolerance = 0(the default value). The intcon variables are
integer within tolerance, options.IntegerTolerance = 1e-05(the default value).
x =
1
0
1
1
0
所以,问题的最优解为:
x1=1, x2=0, x3=1, x4=1, x5=0
此时最大总产能max z=140万吨。即在地点1、地点3、地点4建厂,地点2、地点5不建厂。总投资770万元,占用农地46 km2,总生产能力可以达到140万吨。