清华大学数学实验_实验8 线性规划1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验8 线性规划
实验目的:
1)掌握用matlab优化工具箱解线性规划的方法
2)练习建立实际问题的线性规划模型
实验内容:
6,信息如下表所示。市政证券的收益可以免税,其他证券的收益需按50%的税率纳税。此
(1)政府及代办机构的证券总共至少要购进400万元;
(2)所购证券的平均信用等级不超过1.4
(3)所购证券的平均到期年限不超过5年。
①若该经理有1000万元资金,应该如何投资?
②如果能够以2.75%的李律借到不超过100万元资金,该经理应如何操作?
③在1000万元资金的情况下,若证券A的税前收益增加为4.5%,投资应否改变?若证券C的税前收益减少为4.8%,投资应否改变?
解:
①
问题的建模:
令总收益为z,每项投资各为x1,x2,x3,x4,x5
则有:
z=0.043x1+0.054*0.5x2+0.050*0.5x3+0.044*0.5x4+0.045x5
约束为:
x2+x3+x4≥400
0.6x1+0.6x2-0.4x3-0.4x4+3.6x5≤0 (平均信用等级不超过1.4)
4x1+10x2-x3-2x4-3x5≤0 (平均到期年限不超过5年)
x1+x2+x3+x4+x5=1000
x1,x2,x3,x4,x5≥0
模型的求解:
matlab代码如下:
c=[0.043 0.054*0.5 0.050*0.5 0.044*0.5 0.045];
A1=[0 -1 -1 -1 0;0.6 0.6 -0.4 -0.4 3.6;4 10 -1 -2 -3];
b1=[-400 0 0]
A2=[1 1 1 1 1];
b2=[1000];
v1=[0 0 0 0 0];
opt=optimset(‘LargeScale’,’off’,’simplex’,’on’); %选用单纯形法求解
[x,z0,ef,out,lag]=linprog(-c,A1,b1,A2,b2,v1,[],[],opt)
lag.ineqlin, lag.eqlin
结果是:
x =
218.1818
736.3636
45.4545
z0 =
-29.8364
lag =
ineqlin: [3x1 double]
eqlin: 0.0298
upper: [5x1 double]
lower: [5x1 double]
ans =
0.0062
0.0024
ans =
0.0298
因此:该经理应购入A 218.18万元,C 736.3636万元,E 45.4545万元。最大收益是
29.8364万元。
②如果能够以2.75%的李律借到不超过100万元资金
问题的建模:
则z=0.043x1+0.054*0.5x2+0.050*0.5x3+0.044*0.5x4+0.045x5-(x1+x2+x3+x4+x5-1000)*0.0275
1000≤x1+x2+x3+x4+x5≤1100
其余不变。
模型的求解:
Matlab代码如下:
c=[0.043 0.054*0.5 0.050*0.5 0.044*0.5 0.045]-[1 1 1 1 1]*0.0275;
A1=[0 -1 -1 -1 0;0.6 0.6 -0.4 -0.4 3.6;4 10 -1 -2 -3;1 1 1 1 1;-1 -1 -1 -1 -1]; b1=[-400 0 0 1100 -1000]
v1=[0 0 0 0 0];
opt=optimset(‘LargeScale’,’off’,’simplex’,’on’); %选用单纯形法求解[x,z0,ef,out,lag]=linprog(-c,A1,b1,[],[],v1,[],[],opt)
lag.ineqlin, lag.lower
结果是:
x =
240.0000
810.0000
50.0000
z0 =
-2.5700
lag =
ineqlin: [5x1 double]
eqlin: [0x1 double]
upper: [5x1 double]
lower: [5x1 double]
ans =
0.0062
0.0024
0.0023
ans =
0.0302
0.0006
因此:该经理应购入A 240万元,C 810万元,E 50万元。最大收益是2.57+1000*0.0275=30.07万元。
③修改matlab代码如下:
A税前收益增加为4.5%
c=[0.045 0.054*0.5 0.050*0.5 0.044*0.5 0.045];
A1=[0 -1 -1 -1 0;0.6 0.6 -0.4 -0.4 3.6;4 10 -1 -2 -3];
b1=[-400 0 0]
A2=[1 1 1 1 1];
b2=[1000];
v1=[0 0 0 0 0];
opt=optimset('LargeScale','off','simplex','on'); %选用单纯形法求解[x,z0,ef,out,lag]=linprog(-c,A1,b1,A2,b2,v1,[],[],opt)
lag.ineqlin,lag.eqlin
算得x =
218.1818
736.3636
45.4545
与①相同,所以说不应该改变投资计划。
C税前收益减少为4.8%:
c=[0.043 0.054*0.5 0.048*0.5 0.044*0.5 0.045];
A1=[0 -1 -1 -1 0;0.6 0.6 -0.4 -0.4 3.6;4 10 -1 -2 -3];
b1=[-400 0 0]
A2=[1 1 1 1 1];
b2=[1000];
v1=[0 0 0 0 0];
opt=optimset('LargeScale','off','simplex','on'); %选用单纯形法求解[x,z0,ef,out,lag]=linprog(-c,A1,b1,A2,b2,v1,[],[],opt)