实验1用LINGO求解线性规划问题LINGO使用简介LINGO软件是美国的LINDO系统公司(LindoSystemInc)开发的一套用于求解最优化问题的软件包.LINGO除了能用于求解线性规划和二次规划外,还可以用于非线性规划求解以及一些线性和非线性方程(组)的求解.LINGO软件的最大特色在于它允许优化模型中的决策变量为整数,而且执行速度快.LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果,这里简单介绍LINGO的使用方法.LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络优化和排队论模型中的最优化问题等.一个LINGO程序一般会包含集合段、数据输入段、优化目标和约束段、初始段和数据预处理段等部分,每一部分有其独特的作用和语法规则,读者可以通过查阅相关的参考书或者LINGO的HELP文件详细了解,这里就不展开介绍了.LINGO的主要功能特色为:既能求解线性规划问题,也有较强的求解非线性规划问题的能力;输入模型简练直观;运算速度快、计算能力强;内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述大规模的优化模型;将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;并且能方便地与Excel、数据库等其他软件交换数据.LINGO的语法规定:(1)求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2)每个语句必须以分号“;”结束,每行可以有许多语句,语句可以跨行;(3)变量名称必须以字母(A~Z)开头,由字母、数字(0~9)和下划线所组成,长度不超过32个字符,不区分大小写;(4)可以给语句加上标号,例如[OBJ]MAX=200*X1+300*X2;(5)以惊叹号“!”开头,以分号“;”结束的语句是注释语句;(6)如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;(7)LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,这两个语句可以省略.实验目的1.对于给定的实际应用问题,正确的建立线性规划问题数学模型,并用LINGO求解;2.掌握灵敏度分析以及资源的影子价格的相关分析方法.实验数据与内容问题1.1某工厂在计划期内要安排生产A、B两种产品,已知生产单位产品所需设备台时及对甲、乙两种原材料的消耗,有关数据如表1.1.问:应如何安排生产计划,使工厂获利最大?1表1.1资源配置问题的数据产品资源AB可利用资源设备128台时甲4016公斤乙0412公斤单位利润2元3元建立线性规划问题的数学模型,用LINGO求出最优解并做相应的分析.问题1.2某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲料1kg所含各种营养成分和成本如表1.2所示,如果每个小动物每周食用饲料不超过52kg,求既能满足动物生长需要,又使总成本最低的饲料配方.表1.2配料(食谱)问题的数据饲料营养1A2A3A4A5A营养最低要求蛋白质(g)0.3210.61.860矿物质(g)0.10.050.020.20.053维生素(mg)0.050.10.020.20.088成本(元/kg)0.20.70.40.30.5实验指导问题1.1设计划生产两种产品分别为,则建立线性规划问题数学模型BA,21,xx⎪⎪⎩⎪⎪⎨⎧≥≤≤≤++=0,12416482.32max21212121xxxxxxtsxxS在LINGO的MODEL窗口内输入如下模型:model:max=2*x1+3*x2;x1+2*x2=8;4*x1=16;4*x2=12;end选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGOErrorMessage”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help).改正错误以后再求解,如果语法通过,LINGO用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGOSolverStatus”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close关闭窗口,屏幕上出现标题为“SolutionReport”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.求解结果:2Globaloptimalsolutionfoundatiteration:5Objectivevalue:14.00000VariableValueReducedCostX14.0000000.000000X22.0000000.000000RowSlackorSurplusDualPrice114.000001.00000020.0000001.50000030.0000000.125000044.0000000.000000该报告说明:运行5步找到全局最优解,目标函数值为14,变量值分别为.“ReducedCost”的含义是需缩减成本系数或需增加利润系数(最优解中取值非零的决策变量的ReducedCost值等于零).“Row”是输入模型中的行号,目标函数是第一行;“SlackorSurplus”的意思是松弛或剩余,即约束条件左边与右边的差值,对于“124,2==xx≤”的不等式,右边减左边的差值为Slack(松弛),对于“”的不等式,左边减右边的差值为Surplus(剩余),当约束条件两边相等时,松弛或剩余的值等于零.“DualPrice”的意思是对偶价格(或称为影子价格),上述报告中Row2的松弛值为0,表明生产甲产品4单位、乙产品2单位,所需设备8台时已经饱和,对偶价格1.5的含义是:如果设备增加1台时,能使目标函数值增加1.5.报告中Row4的松弛值为4,表明生产甲产品4单位、乙产品2单位,所需原材料乙8公斤还剩余4公斤,因此增加原材料乙不会使目标函数值增加,所以对偶价格为0.≥问题1.2设需要饲料分别为kg,则建立线性规划数学模型:54321,,,,AAAAA54321,,,,xxxxx123451234512345123451234512345min0.20.70.40.30.50.320.61.8600.10.050.020.20.0530.050.10.020.20.088.52,,,,0Sxxxxxxxxxxxxxxxxxxxxstxxxxxxxxxx=++++++++≥⎧⎪++++⎪⎪≥++++⎨⎪++++≤⎪≥⎪⎩≥在LINGO的MODEL窗口内输入如下模型:Min=0.2*x1+0.7*x2+0.4*x3+0.3*x4+0.5*x5;0.3*x1+2*x2+x3+0.6*x4+1.8*x560;0.1*x1+0.05*x2+0.02*x3+0.2*x4+0.05*x53;0.05*x1+0.1*x2+0.02*x3+0.2*x4+0.08*x58;x1+x2+x3+x4+x552;求解输出结果如下:Globaloptimalsolutionfoundatiteration:4Objectivevalue:22.40000VariableValueReducedCostX10.0000000.7000000X212.000000.000000X30.0000000.6166667X430.000000.000000X510.000000.0000003RowSlackorSurplusDualPrice122.40000-1.00000020.000000-0.583333334.1000000.00000040.000000-4.16666750.0000000.8833333因此,每周每个动物的配料为饲料、、分别为12、30和10kg,合计为52,可使得饲养成本达到最小,最小成本为22.4元;不选用饲料和的原因是因为这两种饲料的价格太高了,没有竞争力.“ReducedCost”分别等于0.7和0.617,说明当这两种饲料的价格分别降低0.7元和0.62元以上时,不仅选用这两种饲料而且使得饲养成本降低.从“SlackorSurplus”可以看出,蛋白质和维生素刚达到最低标准,矿物质超过最低标准4.12A4A5Akgkgkg1A3Ag;从“DualPrice”可以得到降低标准蛋白质1单位可使饲养成本降低0.583元,降低标准维生素1单位可使饲养成本降低4.167元,但降低矿物质的标准不会降低饲养成本,如果动物的进食量减少,就必须选取精一些的饲料但要增加成本,大约进食量降低1可使得饲养成本增加0.88元.kg对于目标函数系数和约束条件右端常数项的灵敏度分析,可以通过LINGO软件求解的灵敏度分析给出.如果要看灵敏度分析结果,必须激活灵敏度计算功能才会在求解时给出灵敏度分析结果,默认情况下这项功能是关闭的.想要激活它,必须运行LINGO|Options…命令,选择GengralSolver,在DualComputation列表框中,选择PricesandRanges选项并确定.对于例1.1问题进行灵敏度分析,结果如下:以下是灵敏度分析的结果Rangesinwhichthebasisisunchanged:ObjectiveCoefficientRangesCurrentAllowableAllowableVariableCoefficientIncreaseDecreaseX12.000000INFINITY0.5000000X23.0000001.0000003.000000RighthandSideRangesRowCurrentAllowableAllowableRHSIncreaseDecrease28.0000002.0000004.000000316.0000016.000008.000000412.00000INFINITY4.000000对于例1.2问题进行灵敏度分析,结果如下:Rangesinwhichthebasisisunchanged:ObjectiveCoefficientRangesCurrentAllowableAllowableVariableCoefficientIncreaseDecreaseX10.2000000INFINITY0.7000000X20.7000000INFINITY0.1358974X30.4000000INFINITY0.6166667X40.30000001.4000001.000000X50.50000000.1247059INFINITYRighthandSideRangesRowCurrentAllowableAllowableRHSIncreaseDecrease260.000004.8000004.80000033.0000004.100000INFINITY48.0000000.34285710.48000004552.000001.8461541.411765思考题某投资公司拟制定今后5年的投资计划,初步考虑下面四个投资项目:项目A:从第1年到第4年每年年初可以投资,于次年年末收回成本,并可获利润15%;项目B:第3年年初可以投资,到第5年年末可以收回成本,并获得利润25%,但为了保证足够的资金流动,规定该项目的投资金额上限为不超过总金额的40%;项目C:第2年年初可以投资,到第5年年末可以收回成本,并获得利润40%,但公司规定该项目的最大投资金额不超过总金额的30%;项目D:5年内每年年初可以购买公债,于当年年末可以归还本金,并获利息6%.该公司现有投资金额100万元,请帮助该公司制定这些项目每年的投资计划,使公司到第5年年末核算这5年投资的收益率达到最大.建立线性规划问题的数学模型,并用LINGO求解.5