您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > LINGO软件入门(数学建模所需)
LINGO软件篇LINGO9.0forwindows任兴龙建模时需要注意的几个基本问题1、尽量使用实数优化,减少整数约束和整数变量2、尽量使用光滑优化,减少非光滑约束的个数如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等3、尽量使用线性模型,减少非线性约束和非线性变量的个数(如x/y5改为x5y)4、合理设定变量上下界,尽可能给出变量初始值5、模型中使用的参数数量级要适当(如小于103)否则会给警告信息,选择适当单位改变相对尺度scalingLPQPNLPIP全局优化(选)ILPIQPINLPLINGO软件的求解过程LINDO/LINGO预处理程序线性优化求解程序非线性优化求解程序分枝定界管理程序1.确定常数2.识别类型1.单纯形算法2.内点算法(选)1、顺序线性规划法(SLP)2、广义既约梯度法(GRG)(选)3、多点搜索(Multistart)(选)又称障碍法barrierLINGO的文件类型•.LG4:LINGO格式的模型文件,保存了模型窗口中所能够看到的所有文本和其他对象及其格式信息;•.LNG:文本格式的模型文件,不保存模型中的格式信息(如字体、颜色、嵌入对象等);•.LDT:LINGO数据文件;•.LTF:LINGO命令脚本文件;•.LGR:LINGO报告文件;•.LTX:LINDO格式的模型文件;•.MPS:示MPS(数学规划系统)格式的模型文件。除“LG4”文件外,另外几种格式的文件都是普通的文本文件,可以用任何文本编辑器打开和编辑。规划问题的傻瓜输入取整 ,0,2100..23.02779max22222212121xxxxxxtsxxxxxx1118Model:Title:傻瓜输入法;!小程序可用,大程序不提倡;[st1]x1+x2100;[opt]max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;[st2]x1=2*x2;@gin(x1);@gin(x2);end使用LINGO的一些注意事项•“”(或“”)号与“=”(或“=”)功能相同•LINGO模型以“MODEL:”开始,“END”结束。•目标函数为“MAX=”。不需要写“ST”。•变量与系数间有乘号运算符“*”•变量名以字母开头,不能超过32个字符•变量名不区分大小写(包括LINGO中的关键字)•语句的顺序不重要•行号自动产生或人为定义。目标函数所在行是第一行,第二行起为约束条件,约束行名字被放“〔〕”中。•行中注有“!”符号的后面部分为注释。使用LINGO的一些注意事项•在模型的开头可以用“TITLE”对模型命名,•变量可以放在约束右端•每行(目标,约束,说明语句)后增加“;”•@开头都是函数调用;•上下界限定用@BND,不计入模型的约束,也不能给出其松紧判断和敏感性分析;•缺省假定所有变量非负;可在模型的“END”语句后用“@FREE”将变量的非负假定取消;•对0-1变量说明:@BIN;对整型变量说明:@GIN•模型由一系列语句组成,适当缩进,增强可读性LINGO状态窗口变量数量TNInTNTNClassObInfeIteTypeObj求解花费时间非零系数数量内存使用数量约束数量模型类型当前解状态当前目标函数值扩展求解器使用的特殊求解程序到目前的最佳目标值特殊求解程序当前运行步数有效步数可能显示B-and-BGlobalMultistart可直接求解的变量不作为决策变量。一般线性规划问题的影子价格与敏感性分析1桶牛奶3公斤A112小时8小时4公斤A2或获利24元/公斤获利16元/公斤50桶牛奶时间480小时至多加工100公斤A1制订生产计划,使每天获利最大•35元可买到1桶牛奶,买吗?若买,每天最多买多少?•可聘用临时工人,付出的工资最多是每小时几元?•A1的获利增加到30元/公斤,应否改变生产计划?每天:加工奶制品的生产计划1桶牛奶3公斤A112小时8小时4公斤A2或获利24元/公斤获利16元/公斤x1桶牛奶生产A1x2桶牛奶生产A2获利24×3x1获利16×4x2原料供应5021xx劳动时间48081221xx加工能力10031x决策变量目标函数216472xxzMax每天获利约束条件非负约束0,21xx线性规划模型(LP)时间480小时至多加工100公斤A150桶牛奶每天模型求解OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES2)0.00000048.0000003)0.0000002.0000004)40.0000000.000000NO.ITERATIONS=220桶牛奶生产A1,30桶生产A2,利润3360元。Max=72*x1+64*x2;x1+x250;12*x1+8*x2480;3*x1100;模型求解reducedcost值表示当该非基变量增加一个单位时(其他非基变量保持不变)目标函数减少的量(对max型问题)OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES2)0.00000048.0000003)0.0000002.0000004)40.0000000.000000NO.ITERATIONS=2也可理解为:为了使该非基变量变成基变量,目标函数中对应系数应增加的量OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES2)0.00000048.0000003)0.0000002.0000004)40.0000000.000000原料无剩余时间无剩余加工能力剩余40三种资源“资源”剩余为零的约束为紧约束(有效约束)结果解释Max=72*x1+64*x2;x1+x250;12*x1+8*x2480;3*x1100;OBJECTIVEFUNCTIONVALUE1)3360.000VARIABLEVALUEREDUCEDCOSTX120.0000000.000000X230.0000000.000000ROWSLACKORSURPLUSDUALPRICES2)0.00000048.0000003)0.0000002.0000004)40.0000000.000000结果解释最优解下“资源”增加1单位时“效益”的增量原料增1单位,利润增48时间加1单位,利润增2能力增减不影响利润影子价格Shadowprice•35元可买到1桶牛奶,要买吗?3548,应该买!•聘用临时工人付出的工资最多每小时几元?2元!对偶计算,包括对偶价格和敏感性分析LINGO︱Options︱GeneralSolver(通用求解程序)选项卡要使用敏感性分析必须要在这选择使用敏感性分析RANGESINWHICHTHEBASISISUNCHANGED:OBJCOEFFICIENTRANGESVARIABLECURRENTALLOWABLEALLOWABLECOEFINCREASEDECREASEX172.00000024.0000008.000000X264.0000008.00000016.000000RIGHTHANDSIDERANGESROWCURRENTALLOWABLEALLOWABLERHSINCREASEDECREASE250.00000010.0000006.6666673480.00000053.33333280.0000004100.000000INFINITY40.000000最优解不变时目标系数允许变化范围x1系数范围(64,96)x2系数范围(48,72)•A1获利增加到30元/千克,应否改变生产计划x1系数由243=72增加为303=90,在允许范围内不变!(约束条件不变)结果解释LINGO︱Range结果解释RANGESINWHICHTHEBASISISUNCHANGED:OBJCOEFFICIENTRANGESVARIABLECURRENTALLOWABLEALLOWABLECOEFINCREASEDECREASEX172.00000024.0000008.000000X264.0000008.00000016.000000RIGHTHANDSIDERANGESROWCURRENTALLOWABLEALLOWABLERHSINCREASEDECREASE250.00000010.0000006.6666673480.00000053.33333280.0000004100.000000INFINITY40.000000影子价格有意义时约束右端的允许变化范围原料最多增加10时间最多增加53•35元可买到1桶牛奶,每天最多买多少?最多买10桶?(目标函数不变)注意:充分但可能不必要LINGO的高级使用MODEL:TITLEEX060201;!简单的线性规划只需要修改一下已有模型的集合段和数据段;!直接输入为min=-5*x1-2*x2;2*x1+x2+x3=8;x1+x4=3;x2+x5=4;(为了避免中止说明语句,这里用的是文本格式的分号,在模型中是作为文本的)SETS:HANG/1..3/:B;LIE/1..5/:C,X;XISHU(HANG,LIE):A;ENDSETSDATA:A=211001001001001;C=-5-2000;B=834;ENDDATA[OBJ]MIN=@SUM(LIE:C*X);@FOR(HANG(I):[YUESHU]@SUM(LIE(J):A(I,J)*X(J))=B(I));END集合与属性例SAILCO公司需要决定下四个季度的帆船生产量。下四个季度的帆船需求量分别是40条,60条,75条,25条,这些需求必须按时满足。每个季度正常的生产能力是40条帆船,每条船的生产费用为400美元。如果加班生产,每条船的生产费用为450美元。每个季度末,每条船的库存费用为20美元。假定生产提前期为0,初始库存为10条船。如何安排生产可使总费用最小?分析:用DEM,RP,OP,INV分别表示需求量、正常生产的产量、加班生产的产量、库存量,则DEM,RP,OP,INV对每个季度都应该有一个对应的值,也就说他们都应该是一个由4个元素组成的数组,其中DEM是已知的,而RP,OP,INV是未知数。集合元素及集合的属性确定的所有变量集合QUARTERS的元素1234定义在集合QUARTERS上的属性DEMDEM(1)DEM(2)DEM(3)DEM(4)RPRP(1)RP(2)RP(3)RP(4)OPOP(1)OP(2)OP(3)OP(4)INVINV(1)INV(2)INV(3)INV(4)MODEL:!集合段:定义集合SET,元素member及其属性attribute;SETS:QUARTERS/1,2,3,4/:DEM,RP,OP,INV;ENDSETS!目标与约束段:没有开始和结束标记,顺序无关;MIN=@SUM(QUARTERS:400*RP+450*OP+20*INV);@FOR(QUARTERS(I):RP(I)40);@FOR(QUARTERS(I)|I#GT#1:INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););INV(1)=10+RP(1)+OP(1)-DEM(1);!数据段:对集合的属性输入必要的常数数据;DATA:DEM=40,60,75,25;ENDDATAEND或1..4或用空格或回车隔开,“属性=常数列表”对“:”前的每个元素求和或循环遍历下标元素,可
本文标题:LINGO软件入门(数学建模所需)
链接地址:https://www.777doc.com/doc-3521626 .html