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,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 d5
Aeq = [1 0 0 0 0 0 1 0 0 0 0
0 1 0 0 0 1 -1.06 1 0 0 0
-1.15 0 1 0 1 0 0 -1.06 1 0 0
0 -1.15 0 1 0 0 0 0 -1.06 1 0
0 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 d5]
7.1698 % 第壹年砸進去A壹筆,不要再投了。
0.0000
0.0000
0.0000
8.2453 % 第三年砸進B壹筆
3.0000 % 第二年砸進C壹筆
2.8302 % 第壹年砸進D壹筆,不要再投了。
0.0000
0.0000
0.0000
0.0000
============================================================