投资问题数学建模

数学模型第一次讨论作业 问题:
某部门现有资金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: 1 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 1 14.37500 1.000000 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.7750000E-01 8 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 4 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= 4 所得最优值为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 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]; A=[0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 1 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,该问题可能存在多个最优解? 经尝试已排除变量设置数量差异,软件版本差异及计算机系统差异的原因,可能是软件求解原理或近似导致,或者该问题本身最优解不唯一。