当前位置:文档之家› 数学实验——线性规划

数学实验——线性规划

实验5 线性规划分1 黄浩 43一、实验目的1.掌握用MATLAB工具箱求解线性规划的方法2.练习建立实际问题的线性规划模型二、实验内容1.《数学实验》第二版(问题6)问题叙述:某银行经理计划用一笔资金进行有价证券的投资,可供购进的证券以及其信用等级、到期年限、收益如下表所示。

按照规定,市政证券的收益可以免税,其他证券的收益需按50%的税率纳税。

此外还有如下限制:(1).政府及代办机构的证券总共至少要购进400万元;(2).所购证券的平均信用等级不超过1.4(信用等级数字越小,信用程度越高);(3).所购证券的平均到期年限不超过5年I.若该经理有1000万元资金,该如何投资?II.如果能够以2.75%的利率借到不超过100万元资金,该经理应如何操作?III.在1000万元资金情况下,若证券A的税前收益增加为4.5%,投资应否改变?若证券C的税前收益减少为4.8%,投资应否改变?模型转换及实验过程:I.设经理对于上述五种证券A 、B 、C 、D 、E 的投资额分别为:x 1、x 2、x 3、x 4、x 5(万元),全部到期后的总收益为z 万元。

由题目中的已知条件,可以列出约束条件为:{ x 2+x 3+x 4≥4002x 1+2x 2+x 3+x 4+5x 5≤1.4(x 1+x 2+x 3+x 4+x 5)9x 1+15x 2+4x 3+3x 4+2x 5≤5(x 1+x 2+x 3+x 4+x 5)x 1+x 2+x 3+x 4+x 5≤1000}而决策变量x =(x 1,x 2,x 3,x 4,x 5)T 的上下界约束为:x i ∈[0,1000]目标函数z =0.043x 1+0.027x 2+0.025x 3+0.022x 4+0.045x 5 将上述条件转变为matlab 的要求形式:使用matlab 解上述的线性规划问题(程序见四.1),并整理成表格:得出结论:当经理对A 、B 、C 、D 、E 五种证券分别投资218.18、0、736.36、0、45.45万元时,在全部收回时可得到29.836万元的税后收益,而且这种投资方式所得收益是最大的。

讨论:尝试输出该约束条件下的拉格朗日乘子:λ=(0 ,0.00618 ,0.00236 ,0.02984)T该乘子表示,第一个约束条件对目标函数的取值不起作用,而剩余三个约束条件取严格等号的时候,目标函数达到最优解。

下面验证之:由解得的x 值,代入四个约束条件中,得:{ −x 2−x 3−x 4=−736.36≪−4000.6x 1+0.6x 2−0.4x 3−0.4x 4+3.6x 5=0.016≈04x 1+10x 2−x 3−2x 4−3x 5=0.01≈0x 1+x 2+x 3+x 4+x 5=999.99≈1000}因为决策变量x 的取值经过了四舍五入,因而后三个约束条件最终是“约等于”,但已经十分接近,若使用更高精度的x ,则该三式是可以严格等于的。

以上便从实验角度证明了拉格朗日乘子的其中一条数学意义——非零分量对应于起作用的约束,且这些约束取严格等于的时候,目标函数达到最优解。

II.若能以2.75%的利率借到不超过100万元资金,那么还可以将这部分资金进行证券投资,设借款金额为x 6,则线性规划条件改为: 使用matlab 求解(程序见四.2)并整理成表格: 名称证券A 证券B 证券C 证券D 证券E 借款额 总收益 金额(万元) 240 0 810 0 50 100 30.07得出结论:当经理在以2.75%的利率借款100万元后,且对A 、B 、C 、D 、E 五种证券分别投资240、0、810、0、50万元时,在全部收回投资时可得到30.07万元的税后收益,而且这种投资方式所得收益是最大的。

讨论:本小题中借款的利率2.75%设为了与借款时间无关的量,即无论借多长时间,最终只需多缴纳0.0275倍借款额的利息,这显然是与实际不符的。

在这种情况下,借款额x6的数值显然是100(万元),因为其他五种证券的收益率都高于贷款利率(也可看做负的收益率),借款越多,其他高收益证券就可以有更多本金,收益就越大,因而该情况下,借款多多益善。

而实际情况下,贷款利率是按年计算的,在这种情况下,还需要考虑还款时间。

III.若证券A的税前收益增加为4.5%,则目标函数变为:z=0.045x1+0.027x2+0.025x3+0.022x4+0.045x5使用matlab解上述线性规划问题(程序见四.3),并整理成表格:因此,证券A的税前收益增加为4.5%时,投资方式不需改变,而总收益提高为30.273万元同样,若证券C的税前收益减少为4.8%,则目标函数变为:z=0.043x1+0.027x2+0.024x3+0.022x4+0.045x5使用matlab解上述线性规划问题(程序见四.4),并整理成表格:因此,当证券C的税前收益减少为4.8%时,投资方式发生了很大改变,证券A和E有少量的变化,证券C被完全舍弃,原C的资金大部分改投证券D,而总收益也由29.836万元下降为29.424万元。

得出结论:若证券A的税前收益增加为4.5%,投资不需改变。

总收益增加为30.273万元。

而若证券C的税前收益减少为4.8%,投资需要发生改变,五个证券的投资额相应变为336、0、0、648、16万元。

总收益下降为29.424万元。

2.《数学实验》第二版(问题8)问题叙述:某牧场主知道,对于一匹平均年龄的马来说,最低的营养需求为:40磅蛋白质,20磅碳水化合物,45磅粗饲料。

这些营养成分是从不同饲料中得到的,饲料及其价格在下表中列出。

建立数学模型,确定如何以最低的成本满足最低的营养需求。

模型转换及实验过程:设牧场主对于每一匹马的供给量为:x 1捆干草,x 2袋燕麦片,x 3块饲料块,x 4袋高蛋白浓缩料。

每匹马耗费资金z 美元。

则可列出约束条件为:{0.5x 1+x 2+2x 3+6x 4≥402x 1+4x 2+0.5x 3+x 4≥205x 1+2x 2+x 3+2.5x 4≥45}而决策变量x =(x 1,x 2,x 3,x 4)T ,x i ≥0目标函数:z = 1.8x 1+3.5x 2+0.4x 3+x 4改换成matlab 的要求格式:使用matlab 解上述的线性规划问题(程序见四.5),结果整理成表格:项目 干草/捆 燕麦片/袋 饲料块/块 高蛋白浓缩料/袋 资金/美元得出结论:当牧场主给每匹马配备5捆干草、20块饲料块时,能以每匹马17美元的最低的成本满足最低的营养需求。

讨论:与第一题类似,尝试输出该约束条件下的拉格朗日乘子:λ=(0 ,0.4 ,0.2)T这说明,蛋白质的需求量不是有效约束条件,而碳水化合物和粗饲料的需求是有效约束条件,二者在严格等于的时候才会出现最优解。

下面再证明拉格朗日乘子的另一个数学意义:影子价格,λ表示对应约束的右端项增加一个单位时,目标函数的增加量(最大化问题)或减少量(最小化问题)。

分别对一匹马的蛋白质、碳水化合物、粗饲料需求量加1,使用matlab求解这三种线性规划,得目标函数的最优解如下:z1=17z2=17.4z3=17.287可见,z1没有变化,验证了蛋白质的需求量不是有效约束条件这一性质,z2的增量为λ2=0.4,也验证了影子价格的性质。

但奇怪的是,z3却没有按照预期增加0.2,而是增加了0.287个单位。

再将粗饲料的增值设为0.1,其他增值设为0,重复实验,得z3=17.02,即目标函数的增量为0.1∗λ2,符合预期。

然而为什么当增值设为1时,便得不到预期的目标函数的增量了呢?,当约束条因为拉格朗日乘子仅在一定范围内,代表影子价格,即λ=dzdb件的改变达到一定程度后,拉格朗日乘子便不再表示正确的影子价格了。

而在matlab中,无法调用函数操作来输出拉格朗日乘子的使用范围,只有在LINGO 或LINDO中才能给出。

三、实验总结本次实验是求解两个实际的线性规划问题,相对于之前的实验,本次的内容较少,操作也很简单。

除了需要注意一下matlab对于线性规划问题的标准格式,搞清楚min和max的区别、大于与小于的区别之外,没有其他易错点。

相对于这两道题的实际情景,我在本次实验中更关心拉格朗日乘子这个数学概念的深层意义。

通过附加的实验,我证明了拉格朗日乘子的两条数学含义,它的零分量对应于不起作用的约束,且为严格不等式约束,非零分量对应于起作用的约束,且为严格等式约束,且分量数值代表约束右端项改变一个单位时,目标函数的改变量,即影子价格。

当然,拉格朗日乘子也有一定的使用范围,当约束右端项改变达到一定程度,使得各个约束之间的优劣关系发生改变时,原条件下的拉格朗日乘子便不能代表当前的影子价格了。

四、程序清单1.第一题小问c=[-0.043,-0.027,-0.025,-0.022,-0.045];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];b1=[-400;0;0;1000];v1=[0,0,0,0,0];v2=[1000,1000,1000,1000,1000];opt=optimset('largescale','off','simplex','on');[x,fv,ef,out,lambda]=linprog(c,A1,b1,[],[],v1,v2,[],opt)2.第一题II小问c=[-0.043,-0.027,-0.025,-0.022,-0.045,0.0275];A1=[0,-1,-1,-1,0,0;0.6,0.6,-0.4,-0.4,3.6,0;4,10,-1,-2,-3,0;1,1,1,1,1,-1];b1=[-400;0;0;1000];v1=[0,0,0,0,0,0];v2=[1100,1100,1100,1100,1100,100];opt=optimset('largescale','off','simplex','on');[x,fv,ef,out,lambda]=linprog(c,A1,b1,[],[],v1,v2,[],opt)3.第一题III小问——A的税前收益增加为4.5%c=[-0.045,-0.027,-0.025,-0.022,-0.045];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];b1=[-400;0;0;1000];v1=[0,0,0,0,0];v2=[1000,1000,1000,1000,1000];opt=optimset('largescale','off','simplex','on');[x,fv,ef,out,lambda]=linprog(c,A1,b1,[],[],v1,v2,[],opt)4.第一题III小问——C的税前收益减少为4.8%c=[-0.043,-0.027,-0.024,-0.022,-0.045];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]; b1=[-400;0;0;1000];v1=[0,0,0,0,0];v2=[1000,1000,1000,1000,1000];opt=optimset('largescale','off','simplex','on');[x,fv,ef,out,lambda]=linprog(c,A1,b1,[],[],v1,v2,[],opt)5.第二题c=[1.8,3.5,0.4,1];A1=-[0.5,1,2,6;2,4,0.5,1;5,2,1,2.5];b1=[-40;-20;-45];v1=[0,0,0,0];opt=optimset('largescale','off','simplex','on');[x,fv,ef,out,lambda]=linprog(c,A1,b1,[],[],v1,[],[],opt)。

相关主题