清华大学数学实验实验9非线性规划1文档格式.docx
《清华大学数学实验实验9非线性规划1文档格式.docx》由会员分享,可在线阅读,更多相关《清华大学数学实验实验9非线性规划1文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
![清华大学数学实验实验9非线性规划1文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/14/9978bad8-6ad3-496a-bb99-dfde10357cdf/9978bad8-6ad3-496a-bb99-dfde10357cdf1.gif)
3%x1+1%x3+2%x5≤2.5%y1
3%x2+1%x4+2%x6≤1.5%y2
0.5x1-1.5x3-0.5x5≤0
1.5x2-0.5x4+0.5x6≤0
供应量约束:
(x1+x2),(x3+x4),(x5+x6)≤500
需求量约束:
y1≤100;
y2≤200
x1+x3+x5≤100
x2+x4+x6≤200
甲乙混合,比例相同:
整理得:
x1x4-x2x3=0;
模型的求解:
该问题是一个带约束非线性规划问题,编写源程序如下:
M文件:
函数文件:
functionz=lab94fun(x)
z=-(3*x
(1)+9*x
(2)-7*x(3)-x(4)-x(5)+5*x(6));
end
非线性约束条件文件:
function[c,ceq]=lab94con(x)
c=0;
ceq=x
(1)*x(4)-x
(2)*x(3);
主文件:
A=[0.50-1.50-0.50
01.50-0.500.5
110000
001100
000011
101010
010101]
b=[00500500500100200]'
x0=[202020203030];
%已验证在可行域中
v1=[000000]
[x,z,ef,out,lag,grad,hess]=fmincon(@lab94fun,x0,A,b,[],[],v1,[],@lab94con);
x
z
运算结果为:
x=
0.00000-0.0000100.00000100.0000
z=
-400
因此,此时应购买100吨乙,100吨丙来生产200吨B,总共收益是400千元
(2)
问题的建模:
修改x1+x3+x5≤100为:
x1+x3+x5≤600,其余不变。
将b变为:
b=[00500500500600200]'
在实际运行时发现,在初值为x0=[15010101015010](也有其他初值)时,总收益最大。
结果为:
300.00000.00000-0.0000300.00000.0000
-600
因此,这时应该购入100吨甲和100吨丙来生产A,总收益是600千元。
(3)
总收益变为:
z=3x1+9x2-4x3+2x4-x5+5x6
其余不变。
将函数文件修改为:
z=-(3*x
(1)+9*x
(2)-4*x(3)+2*x(4)-x(5)+5*x(6));
对
(1),结果为:
(修改初值是x0=[3010101003010])
0.000050.0000-0.0000150.000000
-750.0000
对
(2),结果为:
可见,二者结果相同。
因此,应购买50吨甲,150吨乙,生产200吨B,总收益是750千元。
(本题初值对结果有一定影响,有时初值不同、结果不同,因此应该多选初值进行尝试。
)
9.8.美国某三种股票(A,B,C)12年(1943-1954年)的价格(已经包括了分红在内)每年的增长情况如下表所示(表中还给出了相应年份的500种股票的价格指数的增长情况).例如,表中第一个数据1.300倍,即收益为30%,其余数据的含义以此类推.假设你在1955年时有一笔资金准备投资这三种股票,并期望年收益率至少达到15%,那么你应当如何投资?
此外,考虑一下问题:
(1)当期望的年收益率在10%~100%变化时,投资组合和相应的风险如何变化?
(2)假设除了上述三种股票外,投资人还有一种无风险的投资方式,如购买国库券.假设国库券的年收益率为5%,如何考虑该投资问题?
(3)假设你手上目前握有的股票比例为:
股票A占50%,B占35%,C占15%.这个比例与你得到的最优解可能有所不同,但实际股票市场上每次股票买卖通常总有交易费,例如按交易额的1%收取交易费,这时你是否仍需要对手上的股票进行买卖(换手),以便满足“最优解”的要求?
年份
股票A
股票B
股票C
股票指数
1943
1.300
1.225
1.149
1.258997
1944
1.103
1.290
1.260
1.197526
1945
1.216
1.419
1.364361
1946
0.954
0.728
0.922
0.919287
1947
0.929
1.144
1.169
1.057080
1948
1.056
1.107
0.965
1.055012
1949
1.038
1.321
1.133
1.187925
1950
1.089
1.305
1.732
1.317130
1951
1.090
1.195
1.021
1.240164
1952
1.083
1.390
1.131
1.183675
1953
1.035
0.928
1.006
0.990108
1954
1.176
1.715
1.908
1.526236
为方便建模及程序编写,先将各值计算出来。
令EA,EB,EC为各股票的期望,DA,DB,DC为各股票的方差,rAB、rAC、rBC分别为每两支股票之间的相关系数。
可以计算得:
EA=1.0891;
EB=1.2137;
EC=1.2346
DA=0.0108;
DB=0.0584;
DC=0.0942
rAB=0.4939;
rAC=0.4097;
rBC=0.7472
同时可计算出每两种股票的协方差为:
令投资A,B,C三种股票每种所占的比例分别为x1、x2、x3
因此,投资的总期望收益是:
投资总收益的方差为
年收益率至少要达到15%:
其他约束:
源程序如下:
functionf=lab98fun(x)
f=0.0108*x
(1)^2+0.0584*x
(2)^2+0.0942*x(3)^2+0.01240387*x
(1)*x
(2)+0.01306782*x
(1)*x(3)+0.05532028*x
(2)*x(3);
约束条件文件:
function[c,ceq]=lab98con(x)
c=1.15-1.0891*x
(1)-1.2137*x
(2)-1.2346*x(3);
ceq=x
(1)+x
(2)+x(3)-1;
主程序:
x0=[0.10.10.1];
v1=[000];
v2=[111];
[x,fv,ef,out,lag,grad,hess]=fmincon(@lab98fun,x0,[],[],[],[],v1,v2,@lab98con);
运行结果为:
0.53940.29280.1678
fv=
0.0167
所以选择投资A54%,B29%,C17%左右,可使方差最小,收益率的方差为1.67%。
改变期望的年收益率,则可得到部分情况如下:
期望年收益率
投资组合
收益率方差
A
B
C
10%
90.55%
6.91%
2.54%
1.04%
11%
84.09%
10.74%
5.17%
1.06%
12%
76.58%
15.22%
8.2%
1.13%
13%
69.05%
19.77%
11.18%
1.25%
14%
61.53%
24.31%
14.16%
1.43%
15%
53.94%
29.28%
16.78%
1.67%
20%
16.37%
51.58%
32.05%
3.64%
22%
1.32%
60.67%
38.01%
4.8%
22.5%
45.93%
54.07%
5.36%
23%
22.01%
77.99%
6.96%
23.46%
100%
9.42%
由表中数据所示,当期望年收益率低的时候,多投资A股一些可以减小风险。
随着期望年收益率的不断增高,投资A股的份额不断减小,而B股和C股的份额在增大,同时风险也在增大,当期望年收益率更高时,B股的股份也下降,转而都投资C股,同时风险进一步加大。
由此可以看出,高收益总是伴随着高风险。
(2)问题的建模:
只是要改变相应的约束条件。
ED=1.05DD=0
投资的总期望收益变为
投资总收益的方差不变
其余约束条件变为
根据问题要求,变为
解为:
0.24630.32680.19970.2272
0.0159
因此,应投资的比例分别为A24.6%,B32.7%,C20%,D22.7%左右,收益率的方差为1.59%
需要改变收益的方程为
将收益的语句改为c=1.15-1.0891*x
(1)-1.2137*x
(2)-1.2346*x(3)+0.01*(abs(0.5-x
(1))+abs(0.35-x
(2))+abs(0.15-x(3)));
运行后可得
0.53140.31870.1500
0.0169
因此,应投资的比例分别为A53.14%,B31.87%,C15%,收益率的方差为1.69%
也就是适当改变A,B的持股比例,C股不变即可
(本题没有用quadprog语句求解,最终结果与课本答案有偏差)