清华大学数学实验_实验8 线性规划1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档