《最优投资方案lingo和matlab解》由会员分享,可在线阅读,更多相关《最优投资方案lingo和matlab解(4页珍藏版)》请在金锄头文库上搜索。
1、某投资者有基金 10 万元,考虑在今后 5 年内对下列 4 个项目进行投资,已知:项目 A 从第 1 年到第 4 年每年年初需要投资,并与次年年末回收本利 115%项目 B 从第 3 年初需要投资,并于第 5 年年末回收本利 125%项目 C 从第 2 年初需要投资,并于第 5 年年末回收本利 140%,但按照规定此项投资不能超过 3 万元项目 D 5 年内每年年初可购买公债,当年年末回收本利 106%应如何安排资金,可使第 5 年年末的资金总额最大?用 lingo 解model:sets:i/1.4/:a,b,c,d,e;j/1.5/:m;endsetsdata:n=10;enddatama
2、x=m(5);m(1)=1.06*a(4);m(2)=1.15*a(1)+1.06*b(4);m(3)=1.15*b(1)+1.06*c(4);m(4)=1.15*c(1)+1.06*d(4);m(5)=1.15*d(1)+1.25*c(2)+1.40*b(3)+1.06*e(4);b(3)3;sum(i:a)=n;sum(i:b)=m(1);sum(i:c)=m(2);sum(i:d)=m(3);sum(i:e)=m(4);end结果运行结果是Global optimal solution found.Objective value: 14.50660Total solver iterati
3、ons: 0Variable Value Reduced CostN 10.00000 0.000000A( 1) 7.169811 0.000000A( 2) 0.000000 1.437500A( 3) 0.000000 1.437500 A( 4) 2.830189 0.000000B( 1) 0.000000 0.3363208E-01B( 2) 0.000000 1.356132B( 3) 3.000000 0.000000B( 4) 0.000000 0.3113208E-01C( 1) 0.000000 0.3100000E-01C( 2) 8.245283 0.000000C(
4、 3) 0.000000 1.250000C( 4) 0.000000 0.3100000E-01D( 1) 0.000000 0.000000D( 2) 0.000000 1.150000D( 3) 0.000000 1.150000D( 4) 0.000000 0.2640000E-01E( 1) 0.000000 1.060000E( 2) 0.000000 1.060000E( 3) 0.000000 1.060000E( 4) 0.000000 0.000000M( 1) 3.000000 0.000000M( 2) 8.245283 0.000000M( 3) 0.000000 0
5、.000000M( 4) 0.000000 0.000000M( 5) 14.50660 0.000000Row Slack or Surplus Dual Price1 14.50660 1.0000002 0.000000 1.3561323 0.000000 1.2500004 0.000000 1.1500005 0.000000 1.0600006 0.000000 1.0000007 0.000000 0.4386792E-018 0.000000 1.4375009 0.000000 1.35613210 0.000000 1.25000011 0.000000 1.150000
6、12 0.000000 1.060000即,第一年投资项目 A 为 7.169811 万元第二年投资项目 C 为 3.000000 万元第三年投资项目 B 为 8.245283 万元第四年和第五年不进行投资,最终投资收益为 14.50660 万元用 matlab 解先定义一个 myinvest.m 函数:function y = myinvest(x);y = -0 0 0 1.15 1.25 1.40 0 0 0 0 1.06*x;然后运行命令行(最好新建在另外一个 M 文件里):clear all;% 这里是告诉你我的思路:设出每年年初的 a,d,这样就有 4 个 a, 5 个 d, b,
7、c 固定% X = a1 a2 a3 a4 b c d1 d2 d3 d4 d5% 其实就是要求 1.15a4+1.25b+1.40c+1.06d5 的正值最大值,就等于是求其负值的最小值,因此用到 fmincon 函数% max(0 0 0 1.15 1.25 1.40 0 0 0 0 1.06*X)% 不等约束,只有 c 一个A = 0 0 0 0 0 1 0 0 0 0 0; B = 3;% 相等约束一共五个:下一年年初手中的现金,与上一年年末的结余相等%a1 a2 a3 a4 b c d1 d2 d3 d4 d5Aeq = 1 0 0 0 0 0 1 0 0 0 00 1 0 0 0
8、1 -1.06 1 0 0 0-1.15 0 1 0 1 0 0 -1.06 1 0 00 -1.15 0 1 0 0 0 0 -1.06 1 00 0 1.15 0 0 0 0 0 0 1.06 -1;Beq = 10 0 0 0 0;options = optimset(LargeScale, off, MaxFunEvals, 1e4, MaxIter, 1e4);x = fmincon(myinvest, zeros(11, 1), A, B, Aeq, Beq, 1e-6+zeros(11, 1), , , options)解出来的 x 就是相应的a1 a2 a3 a4 b c d1 d2 d3 d4 d57.1698 % 第一年砸进去 A 一笔,不要再投了。0.00000.00000.00008.2453 % 第三年砸进 B 一笔3.0000 % 第二年砸进 C 一笔2.8302 % 第一年砸进 D 一笔,不要再投了。0.0000 0.00000.0000