数学模型第一次讨论作业
问题:
某部门现有资金10万元,五年内有以下投资
项目供选择:
项目A:从第一年到第四年每年初投资,次年末收回本金且获利15%;
项目B:第三年初投资,第五年末收回本金且获利25%,最大投资额为4万元;
项目C:第二年初投资,第五年末收回本金且获利40%,最大投资额为3万元;
项目D:每年初投资,年末收回本金且获利6%;
问如何确定投资策略使第五年末本息总额最大?
问题分析:
用表示第i年对第j个项目的投资金额
要使第五年年末本息总额最大,应当在每年将所有可用资金都用于投资,以确保资金的充分利用,由于项目投资均发生在年初,故以下只讨论年初的投资情况:
第一年:
第二年:手上资金(即第一年年末收回资金)为,全部用来对可投资项目投资,则有=
第三年:同理,有=
第四年:=
第五年:=
第五年年末本息和为(即第五年所能收回的所有资金)
建立模型:
=
=
=
=,求解模型:
Lingo解法:
可编写lingo程序如下:
model:
max=1.06*x54+1.15*x41+1.25*x32+1.4*x23;!目标函数;
x11+x14=10;!以下约束条件表示每年资金全部用于投资;
1.06*x14=x21+x23+x24;
1.15*x11+1.06*x24=x31+x32+x34;
1.15*x21+1.06*x34=x41+x44;
1.15*x31+1.06*x44=x54;
x23<=3;!限制B,C项目的最大投资额;
x32<=4;
end
运行结果如下:
Global
optimal
solution
found.Objective
value:
14.37500
Infeasibilities:
0.000000
Total
solver
iterations:
Variable
Value
Reduced
Cost
X54
0.000000
0.000000
X41
4.500000
0.000000
X32
4.000000
0.000000
X23
3.000000
0.000000
X11
7.169811
0.000000
X14
2.830189
0.000000
X21
0.000000
0.000000
X24
0.000000
0.3036000E-01
X31
0.000000
0.000000
X34
4.245283
0.000000
X44
0.000000
0.2640000E-01
Row
Slack
or
Surplus
Dual
Price
14.37500
1.000000
0.000000
1.401850
0.000000
-1.322500
0.000000
-1.219000
0.000000
-1.150000
0.000000
-1.060000
0.000000
0.7750000E-01
0.000000
0.3100000E-01
所得最优值为14.375万元,对应的最优解为:
x11=7.169811,x14=2.830189,x23=3,x32=4,x34=4.245283,x41=4.5,其余值为0
即第一年对A项目投资7.169811万元,对D项目投资2.830189万元;第二年对C项目投资3万元;第三年对B项目投资4万元,对D项目投资4.245283万元;第四年对A项目投资4.5万元。
Lindo解法:
可编写lindo程序如下:
max
1.06x54+1.15x41+1.25x32+1.4x23
st
x11+x14=10
1.06x14-x21-x23-x24=0
1.15x11+1.06x24-x31-x32-x34=0
1.15x21+1.06x34-x41-x44=0
1.15x31+1.06x44-x54=0
x23<=3
x32<=4
输出结果如下:
LP
OPTIMUM
FOUND
AT
STEP
OBJECTIVE
FUNCTION
VALUE
1)
14.37500
VARIABLE
VALUE
REDUCED
COST
X54
0.000000
0.000000
X41
4.500000
0.000000
X32
4.000000
0.000000
X23
3.000000
0.000000
X11
7.169811
0.000000
X14
2.830189
0.000000
X21
0.000000
0.000000
X24
0.000000
0.030360
X31
0.000000
0.000000
X34
4.245283
0.000000
X44
0.000000
0.026400
ROW
SLACK
OR
SURPLUS
DUAL
PRICES
2)
0.000000
1.401850
3)
0.000000
-1.322500
4)
0.000000
-1.219000
5)
0.000000
-1.150000
6)
0.000000
-1.060000
7)
0.000000
0.077500
8)
0.000000
0.031000
NO.ITERATIONS=
所得最优值为14.375万元,对应的最优解为:
x11=7.169811,x14=2.830189,x23=3,x32=4,x34=4.245283,x41=4.5,其余值为0
即第一年对A项目投资7.169811万元,对D项目投资2.830189万元;第二年对C项目投资3万元;第三年对B项目投资4万元,对D项目投资4.245283万元;第四年对A项目投资4.5万元。
Matlab解法:
Way1可编写matlab程序如下:
f=[0
0
0
0
0
0
1.4
0
0
1.25
0
0
1.15
0
0
0
0
0
0
1.06];
Aeq=[1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0;
0
0
0
1.06
0
0
0
0
0
0
0
0
0
0
0
0
0;
1.15
0
0
0
0
0
0
1.06
0
0
0
0
0
0
0
0
0;
0
0
0
0
1.15
0
0
0
0
0
0
1.06
0
0
0
0
0
0;
0
0
0
0
0
0
0
0
1.15
0
0
0
0
0
0
1.06
0
0
0
-1];
beq=[10;0;0;0;0];
A=[0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0;
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0];
b=[3;4];
lb=zeros(20,1);
[x,fval]=linprog(-f,A,b,Aeq,beq,lb,[])
运行结果如下:
Optimization
terminated.x
=
6.5508
0
0
3.4492
0.6561
0
3.0000
0.0000
2.0066
4.0000
0
1.5268
2.3730
0
0
0.0000
0
0
0
2.3076
fval
=
-14.3750
所得最优值为14.375万元,对应的最优解为:x11=6.5508,x14=3.4492,x21=0.6561,x23=3,x31=2.0066,x32=4,x34=1.5268,x41=2.3730,x54=2.3076,其余值为0。
Way2可编写matlab程序如下:
f=[0 0 0 0 0 0-1.4 0 0-1.25 0 0-1.15 0 0 0 0 0 0-1.06];
A=[];
b=[];
Aeq=[1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;...0 0 0 1.06-1 0-1-1 0 0 0 0 0 0 0 0 0 0 0 0;...1.15 0 0 0 0 0 0 1.06-1-1 0-1 0 0 0 0 0 0 0 0;...0 0 0 0 1.15 0 0 0 0 0 0 1.06-1 0 0-1 0 0 0 0;...0 0 0 0 0 0 0 0 1.15 0 0 0 0 0 0 1.06 0 0 0-1];
beq=[10;0;0;0;0];
lb=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
ub=[inf inf inf inf inf inf 3 inf inf 4 inf inf inf inf inf inf inf inf inf inf];
[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)
运行结果如下:
Optimization terminated.x =
6.5113
0
0
3.4887
0.6980
0
3.0000
0.0000
2.0003
4.0000
0
1.4877
2.3797
0
0
0.0000
0
0
0
2.3004
fval =
-14.3750
所得最优值为14.375万元,对应的最优解为:x11=6.5113,x14=3.4887,x21=0.6980,x23=3,x31=2.0003,x32=4,x34=1.4877,x41=2.3797,x54=2.3004,其余值为0。
讨论:利用matlab,lingo及lindo程序分别求解上述模型后,发现取到相同最优值情况下,matlab的最优解不同于lingo和lindo,该问题可能存在多个最优解?
经尝试已排除变量设置数量差异,软件版本差异及计算机系统差异的原因,可能是软件求解原理或近似导致,或者该问题本身最优解不唯一。