实验8线性规划.docx
《实验8线性规划.docx》由会员分享,可在线阅读,更多相关《实验8线性规划.docx(12页珍藏版)》请在冰豆网上搜索。
实验8线性规划
线性规划
【实验目的】
1、掌握用MATLAB优化工具箱解线性规划的方法;
2、练习建立实际问题的线性规划模型。
【实验内容】
题目6
某银行经理计划用一笔资金进行证券投资,可供购进的证券以及其信用等级,到期年限、收益如下表所示,按照规定,市政证券的收益可以免税,其他证券的收益需按50%的税率纳税,此外还有以下限制:
(1)政府及代办机构的证券总共至少要购进400万元;
(2)所购证券的平均信用等级不超过1.4(信用等级数字越小,信用程度越高);
(3)所购证券的平均到期年限不超过5年。
证券名称
证券种类
信用等级
到期年限/年
到期税前收益/%
A
市政
2
9
4.3
B
代办机构
2
15
5.4
C
政府
1
4
5.0
D
政府
1
3
4.4
E
市政
5
2
4.5
①若该经理有1000万元资金,应如何投资?
②如果能够以2.75%的利率借到不超过100万元资金,该经理应如何操作?
并考虑利率在什么范围内变化时,投资方案不改变?
③在1000万元资金情况下,若证券A的税前收益增加为4.5%,投资应否改变?
若证券C的税前收益减少为4.8%,投资应否改变?
6.1模型分析
这是一个有约束的优化问题,其模型应包含决策变量、目标函数和约束条件。
设购买A、B、C、D、E五种证券的资金分别为a、b、c、d、e,要最大化的目标函数是最终总收益z
根据上述约束条件,可列出下列不等式:
整理可得:
此外,还有非负约束:
如果记决策向量
目标函数
,右端向量
,约束矩阵
6.1.1总资金为1000万元
此时
。
则限制条件
,右端向量b2=1000。
6.1.2以2.75%的利率借到不超过100万元资金
设借贷金额为f,则此时可添加一条0≤f≤100;同时改变目标函数的形式。
收益
则决策向量
,
目标函数
右端向量
约束矩阵
6.1.3在1000万元资金情况下,证券A的税前收益增加为4.5%,即证券C的税前收益减少为4.8%
将证券A的税前收益增加为4.5%时,只需将
(1)中的右端向量c的A分量改变为0.045;
将证劵C的税前收益减少为4.8%时,只需将c的C分量改变为0.048。
6.2 matlab求解及结果分析
6.2.1总资金为1000万元
在matlab中运行如下程序touzi1.m:
c=-0.01*[4.32.72.52.24.5];
A1=[0-1-1-10
0.60.6-0.4-0.43.6
410-1-2-3];
b1=[-40000];
A2=[11111];
b2=1000;
v1=[00000];
[x,f,exit,outlag]=linprog(c,A1,b1,A2,b2,v1)
得到如下结果:
x=
218.1818
0.0000
736.3636
0.0000
45.4545
f=
-29.8364
exit=
1
out=
iterations:
5
algorithm:
'large-scale:
interiorpoint'
cgiterations:
0
message:
'Optimizationterminated.'
constrviolation:
5.6843e-013
firstorderopt:
3.5406e-008
lag=
ineqlin:
[3x1double]
eqlin:
0.0298
upper:
[5x1double]
lower:
[5x1double]
由此可得,这个银行经理手里的1000万元应该这样投资:
购买A证券218.1818万元,购买C证券736.3636万元,购买E证券45.4545万元。
最终的到的最大收益为29.8364万元。
此外,由exit=1可得结果收敛;由algorithm:
'large-scale:
interiorpoint'可得此程序采用的方法是内点法;由lag.ineqlin=[0.0000 0.0062 0.0024]可得第一项约束式没有起作用,在最优解下,第2、3个约束条件是等式约束。
6.2.2以2.75%的利率借到不超过100万元资金
在matlab中运行如下程序touzi2.m:
c=-0.01*[4.32.72.52.24.5-2.75];
A1=[0-1-1-100
0.60.6-0.4-0.43.60
410-1-2-30
111110];
b1=[-400001100];
A2=[11111-1];
b2=1000;
v1=[00000];
v2=[11001100110011001100100];
[x,f,exit,outlag]=linprog(c,A1,b1,A2,b2,v1)
得到如下结果:
x=
240.0000
0.0000
810.0000
0.0000
50.0000
100.0000
f=
-30.0700
exit=
1
out=
iterations:
6
algorithm:
'large-scale:
interiorpoint'
cgiterations:
0
message:
'Optimizationterminated.'
constrviolation:
2.2737e-013
firstorderopt:
5.7685e-014
lag=
ineqlin:
[4x1double]
eqlin:
0.0275
upper:
[6x1double]
lower:
[6x1double]
由上述结果可得,贷款总额为100万元,对A投资为240万元,对C投资为810万元,对E投资为50万元。
最优收益为30.07万元。
对此题进行分析,在命令窗口下键入lag.eqlin后按回车,显示0.0298。
这就是说,总投资金额每增加1万元,最终收益会增加0.0298万元。
也就是说投资金额每增加100万元,最终收益会增加2.98万元。
扣除贷款利率的2.75万元,最终收益能够增加0.23万元。
这样来看,最终收益约为30.07万元。
与matlab运行结果相符合。
另外也可以得到,只要贷款利率小于2.98%,将贷款来的钱再投资进去,最终收益就会增加。
一旦利率等于或大于这个值,投资收益的增加不能抵过贷款利息的偿还,最终收益反而会减小,这样的话就不应贷款。
6.2.3在1000万元资金情况下,证券A的税前收益增加为4.5%,即证券C的税前收益减少为4.8%
将
(1)中的右端向量c的A分量改变为0.045,得到输出结果如下:
x=
218.1818
0.0000
736.3636
0.0000
45.4545
f=
-30.2727
将
(1)中的右端向量c的C分量改变为0.024,得到输出结果如下:
x=
336.0000
0.0000
0.0000
648.0000
16.0000
f=
-29.4240
由上述结果可得,如A的税前收益增加为4.5%,投资不必改变。
如C的税前收益减少为4.8%,应改变投资方案。
具体改为:
买进A336万元,D648万元,E16万元,不买进BC。
题目8
某牧场主知道,对于一匹平均年龄的马来说,最低的营养需求为:
40磅蛋白质,20磅碳水化合物,45磅粗饲料。
这些营养成分是从不同的饲料中得到的,饲料及其价格在下表中列出。
建立数学模型,确定如何以最低的成本满足最低的营养需求。
蛋白质/磅
碳水化合物/磅
粗饲料/磅
价格/美元
干草/捆
0.5
2.0
5.0
1.80
燕麦片/袋
1.0
4.0
2.0
3.50
饲料块/块
2.0
0.5
1.0
0.40
高蛋白浓缩料/袋
6.0
1.0
2.5
1.00
每匹马的需求/天
40.0
20.0
45.0
-
8.1模型分析
这是一个有约束的优化问题,其模型应包含决策变量、目标函数和约束条件。
设干草、燕麦片、饲料快和高蛋白浓缩料这4种饲料的用量分别为a,b,c,d。
饲料成本价格为z。
目标函数
约束条件:
记决策向量
费用向量
,右端向量
约束矩阵
综上所述,可得到如下模型:
Min
s.t.Ax≥b
x≥0
8.2matlab求解
在matlab中运行以下程序yingyang.m
c=[1.83.50.41];
A=[0.5126
240.51
5212.5];
b=[402045];
v=[0000];
opt=optimset('largescale','off','simplex','on');
[x,f,exit,out,lag]=linprog(c,-A,-b,[],[],v1,[],[],opt)
得到如下输出结果:
x=
5.0000
0
20.0000
0
f=
17
exit=
1
out=
iterations:
2
algorithm:
'mediumscale:
simplex'
cgiterations:
[]
message:
'Optimizationterminated.'
constrviolation:
0
firstorderopt:
0
lag=
ineqlin:
[3x1double]
eqlin:
[0x1double]
upper:
[4x1double]
lower:
[4x1double]
由上述结果可知,所需干草5捆,饲料块20块即可满足营养要求,最低需要17美元。
输出的lag.ineqlin如下:
[0.0000,0.4000,0.2000]
这表明第一项约束式并没有起作用,而第二个和第三个约束条件起了作用,即在这个最优解下,第2、3个约束条件是等式约束。
【实验总结】
这次的实验内容比以往任何一次都来得简单、易于操作。
线性规划的关键在于将变量之间的约束关系转化为不等式,然后再以矩阵的形式表达出来。
在表达时要十分注意要写成标准形式,才可以求出正确的解。
虽然这次实验很简单,但是它的重要性却很大,因为生活中也好,其他学科领域也好,许多问题最后要归结到线性规划问题上。
通过本次实验,我了解了线性规划问题求解的算法,掌握了:
(1)建立实际问题的线性规划模型;
(2)利用MATLAB提供的程序求解线性规划问题;(3)对MATLAB提供的结果进行简单分析。
谢谢老师和助教的指导。