1、项目三 多元函数微积分实验 5 线性规划问题(综合实验)实验目的 通过建立投资收益和风险问题的线性规划模型, 掌握利用线性规划理论建立实际问题的数学模型的思想和方法. 掌握用 Mathematica 求解线性规划问题的基本方法.基本命令1.约束最大与约束最小命令求解线性规划问题的命令为 ConstrainedMax 与 ConstrainedMin. 其的基本格式是:ConstrainedMaxf,inequalities,x,y,在不等式或等式inequalities确定的可行区域上求线性目标函数 f 的最大值, 约定变量x,y,都大于或等于 0;ConstrainedMinf,inequa
2、lities,x,y,在不等式或等式inequalities确定的可行区域上求线性目标函数 f 的最小值, 约定变量x,y,都大于或等于 0.注:上面两个命令都有一个可选参数: Tolerance 允许误差 (默认值是 ).610例如, 输入ConstrainedMin1.5 x+2.5 y,x+3 y=3,x+y=2,x,y则输出3.5,x-1.5,y-0.5即当 时, 函数取得最小值 3.5. 在约束条件中可以使用等号, 但要用“= =”表5.0y,.1x示. 例如,输入ConstrainedMax5 x+3 y+2 z+4 t,3 x+y+2 z+8 t=10,2 x+4 y+2 z+t
3、=10,x,y,z,t则输出18,x-3,y-1,z-0,t-0有时, 输出结果可能有些问题. 输入ConstrainedMax3x+2y-1,x1,y-2即当 时, 函数取最大值 6. 21yx注: 约束条件使用严格不等号, 结果仍旧取在边界上.输入ConstrainedMaxx+y,x+y15,y-10这个问题有无穷多最优解, 这里只给出其中之一, 而且没有给出任何提示信息.前面的例题总是给出一个最优解, 属于正常情况.下面的例子是非正常的情况.例如, 输入ConstrainedMaxx+y,x-y=0,3x-y=0,3x-y=-1,-0.5x+yIndeterminate,y-Indet
4、erminate其含义是: 可行区域无界, 问题没有最大值, 或说最大值是无穷大. 然后返回投资的收益和风险问题.2.线性规划命令 LinearProgramming当自变量和约束不等式较多时, 用 ConstrainedMax 或 ConstrainedMin 求解就比较麻烦. 此时, 可将目标函数和约束条件用向量或矩阵表示, 然后使用 LinearProgramming. 其基本格式为LinearProgrammingc,m,b其中 c 是行向量 , b 是列向量, m 是矩阵, 自变量用 x 表示, 使用该命令, 则在满足不等式且 的可行区域中, 求出函数 cx 的最小值点 x.mx0注
5、: 实际输入时, b 仍以行向量表示. 此外, 这个命令也有可选参数 Tolerance, 其含义与前面的说明相同.例如, 用约束最小命令计算, 输入ConstrainedMin2x-3y,x+y2,x1,x,y则输出0,x-6,y-4改为用线性规划命令计算, 输入LinearProgramming2,-3,-1,-1,1,-1,1,0,-10,2,1则输出6,4两者结果一样, 但表示的方法不同.注: 当有无穷多组解时, 线性规划命令仍不会给出提示信息.应用举例1.投资的收益和风险例 1 (1998 年全国大学生数学建模竞赛的 A 题)市场上有 n 种资产(如股票、债券、 ) 供投资者选择 ,
6、 某公司有数额为),1(niSM 的一笔相当大的资金可用作一个时期的投资.公司财务分析人员对这 n 种资产进行了评估, 估算出在这一时期内购买 的平均收益率为 , 并预测出购买 的风险损失率为 考虑iSiriS.iq到投资越分散总的风险越小, 公司确定 , 当用这笔资金购买若干种资产时 , 总体风险可用所投资的 中最大的一个风险来度量.iS购买 要付交易费, 费率为 , 并且当购买额不超过给定值 时, 交易费按购买 计ipiuiu算(不买当然无需付费). 另外, 假定同期银行存款利率是 , 既无交易费又无风险 .0r已知 时的相关数据如下表:4niS%/ir/iq%/ip元/i1S28 2.5
7、 1.0 103221 1.5 2.0 198323 5.5 4.5 52425 2.6 6.5 40试给该公司设计一种投资组合方案, 即用给定的资金 M, 有选择地购买若干种资产或存银行生息, 使净收益尽可能大, 而总体风险尽可能小.实验习题中将就一般情况对以上问题进行讨论.模型的分析与建立这是一个优化问题, 要决策的是向每种资产的投资额, 要达到的目标包括两方面要求: 净收益最大和总体风险最小, 即本题是一个双目标优化问题 . 一般地 , 这两个目标是矛盾的, 净收益愈大,风险也就随之增加; 反过来也一样. 因此, 不可能提供这两个目标同时达到最优的决策方案. 我们可以做到的只能是: 在风
8、险一定的前提下, 取得收益最大的决策; 或在收益一定的前提下, 使得风险最小的决策; 或是在收益和风险按确定偏好比例的前提下的最优决策. 这样, 我们得到的不再是一个方案, 而是一组方案供投资者选择.设购买 表示存入银行, 下同)的金额为 所付的交易费记为0;,1(SniS ,ix则),(ixciiii uxpcnxc, 0)(;,21,)( 对 投资的净收益是iS ),0()(icrRiii 对 投资的风险是i ,1,qnxqQii 对 投资所需资金(即购买金额 与所需的手续费 之和) 是iS (ix,0)()(cfiii 投资方案用 表示, 那么, 净收益总额为,(10nxniixR0)(
9、)(总体风险为 ma)(0inQx所需资金为iifF0)()(于是, 总收益最大、总体风险最小的双目标优化模型可以表示为 0,)(minxMFxRQx上述双目标优化模型一般情况下是难于直接求解的, 根据我们前面的分析, 通常可以把它转化为以下三种单目标优化问题:模型 a. 假设投资的风险水平是 k, 即要求总体风险 限制在风险 k 以内: )(xQ则模型可转化为,)(kxQ 0,)(,)(.maxMFQtsR模型 b. 假设投资的盈利水平是 h, 即要求净收益总额 不少于 则模型)(x,)(:hxR可转化为: 0)(,)(.inxRts模型 c. 线性加权法 , 在多目标规划问题中, 人们总希
10、望对那些相对重要的目标给予较大的权重. 因此, 假定投资者对风险收益的相对偏好参数为 则模型可转化为:),(0,)(.)1minxMFtsRQ模型的化简与求解由于交易 是分段函数, 使得上述模型中的目标函数或约束条件相对比较复杂, 是)(ixc一个非线性规划问题, 难于求解. 但注意到总投资额 M 相当大, 一旦投资资产 其投资额,iS一般都会超过 于是交易费 可简化为线性函数ix,iu)(ixciixp从而, 资金约束简化为 fxFniini 00)1()()(净收益总额简化为 niiniiini xprxcrR000 )()()()(在实际进行计算时, 可设此时 ),1()1(ipyii
11、可视作投资 的比例.iS以下的模型求解都在上述两个简化条件下进行讨论的.(i)模型 a 的求解模型 a 的约束条件 即kxQ)( kxqxiniini )(ma)(a00所以此约束条件可转化为 ,1qi 这时模型 a 可化简为如下的线性规划问题:0,1)(2.)(max00xpnikqtsxrniiinii具体到 的情形, 按投资的收益和风险问题中表 23.1 给定的数据, 模型为:4n )4,10(,1065.4.102.1. 2.,5, 8.9.7.max430 432 ixxkkkkts i利用 Mathematica4.0 求解模型 a, 以 为例, 输入.Clearf,st,k,va
12、r;k=0.005;f=0.05*x0+0.27*x1+0.19*x2+0.185*x3+0.185*x4;st=0.025*x10.158192,x1-0.2,x2-0.333333,x3-0.0909091,x4-0.192308这说明投资方案为(0.158192,0.2,0.333333,0.0909091, 0.192308)时,可以获得总体风险不超过0.005 的最大收益是 0.177638M.当 k 取不同的值 (00.03), 计算最大收益和最优决策可以利用下面的命令Clearst;stk_:=0.025*x1=h,x0+1.01*x1+1.02*x2+1.045*x3+1.06
13、5*x4=1;TableConstrainedMinx5,sth,var,h,0.06,0.26,0.02模型 b 的输出结果列于下表 (其中第一行 可以近似看作是 0).1760,00862.95.0251.6039747419 26.1.8. 95863 7307280250160 .35.4.4 449172 261798 59. 0620301624 171432xxxQh风 险水 平净 收 益从表中我们可以推出和模型 a 类似的结果.(iii)模型 c 的求解类似模型 b 的求解, 我们同样引进变量 , 将它改写为如下的线性规划:)(max01ininq0,1)(;,210,. )(
14、)(min01 xpnixqtsxriiinii具体到 的情形, 按投资的收益和风险问题表中给定的数据, 模型为:4n利用)5,10(,1065.4.102.1. 2.,5, 8.9.7.)(i 430 44315 ixxxts xiMathematica 求解模型 c, 当 取不同的值(0.70.98), 我们可以利用下面的命令计算最小风险和最优决策Clearf,st,var;fa_:=a*x5-(1-a)*(0.05*x0+0.27*x1+0.19*x2+0.185*x3+0.185*x4);st=0.025*x1-x5=0,0.015*x2-x5=0,0.055*x3-x5=0,0.02
15、6*x4-x5=0,x0+1.01*x1+1.02*x2+1.045*x3+1.065*x4=1;var=x0,x1,x2,x3,x4,x5;TableConstrainedMinfa,st,var,a,0.7,0.98,0.04模型 c 的输出结果列于下表00.1098.0 2846.1793.35.27845936.4. .6 00619.00782. 5.36495.42. 43210 xxxQ风 险偏 好 系 数 从表中的结果可以看出, 随着偏好系数 的增加, 也就是对风险的日益重视, 投资方案的总体风险会大大降低, 资金会从净收益率 较大的项目 转向无风险的项目ipr,421S银行存
16、款. 这和模型 a 的结果是一致的, 也符合人们日常的经验.2. 生产计划中线性规划模型(教材 应用举例)某工厂有甲、乙、丙、丁四个车间, 生产 A,B,C,D,E,F 六种产品,根据车床性能和以前的生产情况, 得知生产单位产品所需车间的工作小时数 , 每个车间每月工作小时的上限 , 以及产品的价格如表 1.表 1产品 A 产品 B 产品 C 产品 D 产品 E 产品 F 每月工作小时上限甲 0.01 0.01 0.01 0.03 0.03 0.03 850乙 0.02 0.05 700丙 0.02 0.05 100丁 0.03 0.08 900单价 0.40 0.28 0.32 0.72 0
17、.64 0.60问各种产品每月应该生产多少, 才能使这个工厂每月生产总值达到最大?数学建模以 分别表示产品 A,B,C,D,E,F 的每月生产数量, 则它们应满足约束条件621,x, ( )908.03. 105. 7.0.53.1. 62463 xx 6,21,jxj并使目标函数 654321 .72.8.4. xxf 达到最大. 这里, 称 为决策变量, f 为目标函数, 决策变量应满足的T),(6543不等式组为约束条件, 其中 称为非负约束.0x模型求解将上述模型写成矩阵的形式, 并用 LinearProgramming 命令求解.在矩阵形式中, 需求目标函数的最小值 , 而且要用大于
18、等于约束条件 . 因此将目标函数与约束条件改写成 908.03.1527. 8503.0.3.1 647202840.min654xxxtsxf其中 .6,1,0jxj输入c=-0.4,-0.28,-0.32,-0.72,-0.64,-0.6;A=-0.01,-0.01,-0.01,-0.03,-0.03,-0.03,-0.02,0,0,-0.05,0,0,0,-0.02,0,0,-0.05,0,0,0,-0.03,0,0,-0.08;b=-850,-700,-100,-900;x=LinearProgrammingc,A,b则输出35000.,5000.,30000.,0,0,0这里只输出决
19、策变量的取值, 而没有目标函数的最优值. 目标函数 的最小值为f输入,cxfc.x则得到输出-25000因此, 所求目标函数 f 的最优值为 25000.实验报告1.有甲、乙、丙三块地, 单位面积的产量(单位:kg)如下:表 6面积 水稻 大豆 玉米甲 20 7500 4000 10000乙 40 6500 4500 9000丙 60 6000 3500 8500种植水稻、大豆和玉米的单位面积投资分别是 200 元、500 元和 100 元. 现要求最低产量分别是 25 万公斤、8 万公斤和 50 万公斤时, 如何制定种植计划才能使总产量最高, 而总投资最少? 试建立数学模型.2.运输问题: 设有三个工厂 A,B,C 同时需要某种原料, 需要量分别是 17 万吨, 18 万吨, 15 万吨. 现有两厂 X,Y 分别有该原料 23 万吨.每万吨动费如下表(单位:元):表 7A B CX 50 60 70Y 60 110 160问应如何调运才能使总运费最少?