Lingo求解
model:
min=300*x1+180*x2;
x1+x2=0.5;
x1>=0.5*0.2;
7000*x2<=6000;
end
结果
Global optimal solution found.
Objective value: 102.0000
Infeasibilities: 0.000000
Total solver iterations: 0
Variable Value Reduced Cost
X1 0.1000000 0.000000
X2 0.4000000 0.000000
Row Slack or Surplus Dual Price
1 102.0000 -1.000000
2 0.000000 -180.0000
3 0.000000 -120.0000
4 3200.000 0.000000
MATLAB解答:
c=[2,3,5,3,3,6];
A=[1,2,3,0,0,0;0,0,0,1,1,3];
b=[80;100];
Aeq=[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];
beq=[70;50;20];
vlb=zeros(6,1);
[x,fval]=linprog(c,A,b,Aeq,beq,vlb)
结果:x =
70.0000
0.0000
3.3333
0.0000
50.0000
16.6667
fval =
406.6667
答:
MATLAB解题:
% 目标函数
f = [12 5 4 12 5 4];
% 不等式约束
a = [4 3 1 0 0 0;0 0 0 2 6 3];
b = [180;200];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(6,1);
vub = [];
[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)
计算结果:
x =
0
0
180
100
0
0
fval =
-1920
每班的护士在值班始时向病房报到,连续工作8h.医院领导为满足每班所需要的护士数,最少需要雇佣多少护士?
lingo模型求解:
min=x1+x2+x3+x4+x5+x6;
x1+x6>=60;
x1+x2>=70;
x2+x3>=60;
x3+x4>=50;
x4+x5>=20;
x5+x6>=30;
@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);@gin(x6);
end
Global optimal solution found.
Objective value: 150.0000
Objective bound: 150.0000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 4
Variable Value Reduced Cost
X1 60.00000 1.000000
X2 10.00000 1.000000
X3 50.00000 1.000000
X4 0.000000 1.000000
X5 30.00000 1.000000
X6 0.000000 1.000000
Row Slack or Surplus Dual Price
1 150.0000 -1.000000
2 0.000000 0.000000
3 0.000000 0.000000
4 0.000000 0.000000
5 0.000000 0.000000
6 10.00000 0.000000
7 0.000000 0.000000
答:最少需要雇佣150个护士。
1、MATLAB编程语句:
%目标函数的系数矩阵
f=-[6 4];
%设x1、x2为整数变量
intcon=[1,2];
%不等式约束的系数矩阵和资源数
a=[2 3;4 2];
b=[100;120];
%该模型不存在等式约束,用[]来表示
aeq=[];
beq=[];
%下限设为一个两行一列的矩阵,矩阵的每个量都为零,上限不限制
vlb=zeros(2,1);
vub=[];
[x,fval]=intlinprog(f,intcon,a,b,aeq,beq,vlb,vub)
运行结果:
x =
20
20
fval =
-200
则x=20,x2=20,最优解为200,即生产A1为20件,A2为20件,为最优化生产方案。
2、LINGO编程语句:
model:
title 最优生产方案;
max=6*x1+4*x2;
2*x1+3*x2<=100;
4*x1+2*x2<=120;
@gin(x1);@gin(x2);
end
运行结果:
Global optimal solution found.
Objective value: 200.0000
Objective bound: 200.0000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 2
Model Title: 最优生产方案
Variable Value Reduced Cost
X1 20.00000 -6.000000
X2 20.00000 -4.000000
Row Slack or Surplus Dual Price
1 200.0000 1.000000
2 0.000000 0.000000
3 0.000000 0.000000
(2)对产品A1的利润进行灵敏度分析
model:
title 最优生产方案;
max=6*x1+4*x2;
2*x1+3*x2<=100;
4*x1+2*x2<=120;
end
Global optimal solution found.
Objective value: 200.0000
Infeasibilities: 0.000000
Total solver iterations: 2
Model Title: 最优生产方案
Variable Value Reduced Cost
X1 20.00000 0.000000
X2 20.00000 0.000000
Row Slack or Surplus Dual Price
1 200.0000 1.000000
2 0.000000 0.5000000
3 0.000000 1.250000
分析:其中可以得出每增加一个单位的装配小时,利润增长0.5元,每增加一个单位的检验小时,利润增加1.25元。
(3)对装配工序的工时进行灵敏度分析
model:
title 最优生产方案;
max=6*x1+4*x2;
2*x1+3*x2<=100;
4*x1+2*x2<=120;
end
Ranges in which the basis is unchanged:
Objective Coefficient Ranges
Current Allowable Allowable
Variable Coefficient Increase Decrease
X1 6.000000 2.000000 3.333333
X2 4.000000 5.000000 1.000000
Righthand Side Ranges
Row Current Allowable Allowable
RHS Increase Decrease
2 100.0000 80.00000 40.00000
3 120.0000 80.00000 53.33333
数据记录和实验结果:
- MATLAB编程语句:
%目标函数的系数矩阵
f=-[6 4 5];
%设x1、x2为整数变量
intcon=[1,2,3];
%不等式约束的系数矩阵和资源数
a=[2 3 4;4 2 2];
b=[100;120];
%该模型不存在等式约束,用[]来表示
aeq=[];
beq=[];
%下限设为一个两行一列的矩阵,矩阵的每个量都为零,上限不限制
vlb=zeros(3,1);
vub=[];
[x,fval]=intlinprog(f,intcon,a,b,aeq,beq,vlb,vub)
运行结果:
x =
23.0000
2.0000
12.0000
fval =
-206
x1=23,x2=2,x3=12,最优解为206,即生产A1为23件,A2为2件,A3为12件,利润增加,可以投入生产。
2、LINGO编程语句:
model:
title 新增生产后;
max=6*x1+4*x2+5*x3;
2*x1+3*x2+4*x3<=100;
4*x1+2*x2+2*x3<=120;
@gin(x1);@gin(x2);@gin(x3);
end
运行结果:
Global optimal solution found.
Objective value: 206.0000
Objective bound: 206.0000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 5
Model Title: 新增生产后
Variable Value Reduced Cost
X1 23.00000 -6.000000
X2 2.000000 -4.000000
X3 12.00000 -5.000000
Row Slack or Surplus Dual Price
1 206.0000 1.000000
2 0.000000 0.000000
3 0.000000 0.000000
利润在增加,可以投入生产。
MATLAB求解:
% 目标函数
f = [10 5 6 4 8 15];
% 整数变量个数
intcon = [1,2,3,4,5,6];
% 不等式约束
a = [1 1 1 0 0 0;0 0 0 1 1 1;1 0 0 1 0 0;0 1 0 0 1 0;0 0 1 0 0 1];
b = [60 100 45 75 40];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(6,1);
vub = [];
[x,fval] = intlinprog(f,intcon,-a,-b,aeq,beq,vlb,vub)
计算结果:
x =
0
20
40
45
55
0
fval =
960
答:A厂供煤0 ,20 ,40;B厂供煤 45 55 0.
总运输量最小为960。
Matlab求解:
% 目标函数
f=[10 6 4];
%整数变量个数
intcon = [1,2,3];
%不等式约束
a=[1 1 1;10 4 5;2 2 6];
b=[100;600;300];
%等式约束
aeq =[];
beq =[];
%上下限
vlb = zeros(3,1);
vub =[];
[x,fval]= intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
运行结果:
x =
33.0000
67.0000
0
fval =
-732
增加至25/3:
% 目标函数
f=[10 6 25/3];
%整数变量个数
intcon = [1,2,3];
%不等式约束
a=[1 1 1;10 4 5;2 2 6];
b=[100;600;300];
%等式约束
aeq =[];
beq =[];
%上下限
vlb = zeros(3,1);
vub =[];
[x,fval]= intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
结果:
x =
29.0000
46.0000
25.0000
fval =
-774.3333
所以产品Ⅲ增加25/3不值得
Lingo求解:
maxf=10*x1+6*x2+4*x3;
x1+x2+x3<=100;
10*x1+4*x2+5*x3<=600;
2*x1+2*x2+6*x3<=300;
@gin(x1);@gin(x2);@gin(x3);
end
结果:
Global optimal solution found.
Objective value: 732.0000
Objective bound: 732.0000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 2
Variable Value Reduced Cost
X1 33.00000 -10.00000
X2 67.00000 -6.000000
X3 0.000000 -4.000000
Row Slack or Surplus Dual Price
1 732.0000 1.000000
2 0.000000 0.000000
3 2.000000 0.000000
4 100.0000 0.000000
所以影子价格为0
% 目标函数
f = [10 6 4 8];
% 整数变量个数
intcon = [1,2,3,4];
% 不等式约束
a = [1 1 1 1;10 4 5 4;2 2 6 4];
b = [100;600;300];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(4,1);
vub = [];
[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
结果:
x =
33.0000
17.0000
0
50.0000
fval =
-832.0000
所以生产Ⅰ产品33件,生产Ⅱ产品17件,生产Ⅲ产品50件,最优利润为832.
% 目标函数
f = [10 6 4];
% 整数变量个数
intcon = [1,2,3];
% 不等式约束
a = [1 1 1;10 4 5;2 2 6;0 0 -1];
b = [100;600;300;-10];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(3,1);
vub = [];
[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)
结果:
x =
31.0000
59.0000
10.0000
fval =
-704.0000
所以生产产品Ⅰ30件,产品Ⅱ59件,产品Ⅲ10件,最优利润为704
8.已知某工厂计划生产I、Ⅱ、Ⅲ三种产品,各产品需要在A、B,C设备上加工,有关数据如下:
试回答:
(1)如何发挥生产能力,使生产盈利最大?
(2)若为了增加产量,可借用别的工厂设备B,每月可借用60台时,租金1.8万元,借用设备B是否合算?
(3)假设另有两种新产品N、V,其中新产品I需用设备A12台时、设备B5台时、设备C10台时,单位产品盈利2.1千元;新产品V需用设备A4台时、设备B4台时、设备C12台时,单位产品盈利1.87千元.如果A,B,C的设备台时不增加,问这两种新产品投产在经济上是否合算?
(4)对产品工艺重新进行设计,改进结构,改进后生产每件产品I需用设备A9台时、设备B12台时、设备C4台时,单位产品盈利4.5千元,这时对原计划有何影响?
% 目标函数
f = [3 2 2.9 3 2 2.9 3 2 2.9];
% 不等式约束
a = [8 2 10 0 0 0 0 0 0;0 0 0 10 5 8 0 0 0;0 0 0 0 0 0 2 13 10];
b = [300;400;420];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(9,1);
vub = [];
[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)
x =
0
150
0
0
80
0
210
0
0
fval =
-1090
答:所以A生产Ⅱ产品数150件,B生产产品Ⅱ数80件,C生产产品I数210,利润最大1090
% 目标函数
f = [3 2 2.9;3 2 2.9;3 2 2.9];
% 不等式约束
a = [8 2 10 0 0 0 0 0 0;0 0 0 10 5 8 0 0 0;0 0 0 0 0 0 2 13 10];
b = [300;460;420];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(9,1);
vub = [];
[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)
fval = fval-18
结果:
x =
0
150
0
0
92
0
210
0
0
fval =
-1243
fval =
-1261
由结果可知若为增量产品,是合算的
% 目标函数
f = [3 2 2.9 2.1 1.87;3 2 2.9 2.1 1.87;3 2 2.9 2.1 1.87];
% 不等式约束
a = [8 2 10 12 4 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 10 5 8 5 4 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 2 13 10 10 12];
b = [300;400;420];
% 等式约束
aeq = [];
beq = [];
% 上下限
vlb = zeros(15,1);
vub = [];
[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)
计算结果:x =
0
150
0
0
80
0
105
0
0
fval =
-1.1395e+03
答:所以对产品重新设计会比原计划更盈利。