清华大学数学实验实验9非线性规划1.docx
《清华大学数学实验实验9非线性规划1.docx》由会员分享,可在线阅读,更多相关《清华大学数学实验实验9非线性规划1.docx(9页珍藏版)》请在冰豆网上搜索。
清华大学数学实验实验9非线性规划1
实验9非线性规划
实验目的:
1)掌握用matlab优化工具箱解非线性规划的方法
2)练习建立实际问题的非线性规划模型
实验内容:
4.某公司将3种不同含硫量的液体原料(分别记为甲、乙、丙)混合生产两种产品(分别记为A,B).按照生产工艺的要求,原料甲、乙必须首先倒入混合池中混合,混合后的液体再分别于原料丙生产A,B.已知原料甲、乙、丙的含硫量分别是3%,1%,2%,进货价格分别为6千元/t,16千元/t,10千元/t;产品A,B的含硫量分别不能超过2.5%,1.5%,售价分别为9千元/t,15千元/t.根据市场信息,原料甲、乙、丙的供应量都不能超过500t;产品A,B的最大市场需求量分别为100t,200t.
(1)应如何安排生产?
(2)如果产品A的最大市场需求量增长为600t,应如何安排生产?
(3)如果乙的进货价格下降为13千元/t,应如何安排生产?
分别对
(1)、
(2)两种情况进行讨论.
解:
(1)
问题的建模
设利用x1吨甲,x2吨乙,x3吨丙制造y1吨A;利用x2吨甲,x4吨乙,x6吨丙制造y2吨B;总收益是z千元。
则有以下方程与不等式:
质量守恒:
y1=x1+x3+x5
y2=x2+x4+x6
总收益:
z=9y1+15y2-6(x1+x2)-16(x3+x4)-10(x5+x6)
化简得:
z=3x1+9x2+3x3+9x4-x5+5x6
含硫量约束:
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);
end
主文件:
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](也有其他初值)时,总收益最大。
结果为:
x=
300.00000.00000-0.0000300.00000.0000
z=
-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])
x=
0.000050.0000-0.0000150.000000
z=
-750.0000
对
(2),结果为:
(修改初值是x0=[3010101003010])
0.000050.0000-0.0000150.000000
z=
-750.0000
可见,二者结果相同。
因此,应购买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.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);
end
约束条件文件:
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;
end
主程序:
x0=[0.10.10.1];
v1=[000];
v2=[111];
[x,fv,ef,out,lag,grad,hess]=fmincon(@lab98fun,x0,[],[],[],[],v1,v2,@lab98con);
运行结果为:
x=
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%
0
45.93%
54.07%
5.36%
23%
0
22.01%
77.99%
6.96%
23.46%
0
0
100%
9.42%
由表中数据所示,当期望年收益率低的时候,多投资A股一些可以减小风险。
随着期望年收益率的不断增高,投资A股的份额不断减小,而B股和C股的份额在增大,同时风险也在增大,当期望年收益率更高时,B股的股份也下降,转而都投资C股,同时风险进一步加大。
由此可以看出,高收益总是伴随着高风险。
(2)问题的建模:
只是要改变相应的约束条件。
ED=1.05DD=0
投资的总期望收益变为
投资总收益的方差不变
其余约束条件变为
根据问题要求,变为
模型的求解:
解为:
x=
0.24630.32680.19970.2272
fv=
0.0159
因此,应投资的比例分别为A24.6%,B32.7%,C20%,D22.7%左右,收益率的方差为1.59%
(3)
问题的建模:
需要改变收益的方程为
模型的求解:
将收益的语句改为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)));
运行后可得
x=
0.53140.31870.1500
fv=
0.0169
因此,应投资的比例分别为A53.14%,B31.87%,C15%,收益率的方差为1.69%
也就是适当改变A,B的持股比例,C股不变即可
(本题没有用quadprog语句求解,最终结果与课本答案有偏差)