您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > LINGO软件学习入门
LINGO软件学习一.优化模型与优化软件简介二.LINGO软件的基本使用方法三.LINGO软件求解线性规划问题一.优化模型与优化软件简介数学规划模型实际问题中的优化模型mixgtsxxxxfzMaxMiniTn,2,1,0)(..),(),()(1或x~决策变量f(x)~目标函数gi(x)0~约束条件数学规划线性规划(LP)二次规划(QP)非线性规划(NLP)整数规划(IP)线性规划问题的标准形式11221111221111221max00nnnnmmmnnmnZcxcxcxaxaxaxbaxaxaxbxx目标函数:约束条件:①②③非线性规划设nTnRxxx),...,(1,();(),1,...,;(),1,...,:nijfxgxiphxjqRR,如下的数学模型称为数学规划(MathematicalProgramming,MP):qjxhpixgtsxfji,...,1,0)(,...,1,0)(..)(min()0,1,...,()0,1,...,injgxipXxRhxjq约束集或可行域常用优化软件LINDO/LINGO软件MATLAB优化工具箱/mathematica优化程序包EXCEL软件的优化功能SAS(统计分析)软件的优化功能建模时需要注意的几个基本问题1、尽量使用实数优化,减少整数约束和整数变量2、尽量使用光滑优化,减少非光滑约束的个数如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等3、尽量使用线性模型,减少非线性约束和非线性变量的个数(如x/y5改为x5y)4、合理设定变量上下界,尽可能给出变量初始值5、模型中使用的参数数量级要适当(如小于103)二.LINGO软件的基本使用方法§1LINGO入门第一步:启动LINGO屏幕显示如下:标记LINGO的外窗口是主框架窗口,主框架窗口的上面包含所有的命令菜单和命令工具栏;标记LINGOMODEL-LINGO1的子窗口是一个新的、空白的模型窗口。第二步:在模型窗口中输入模型输入:model:max=2*x1+3*x2;4*x1+3*x210;3*x1+5*x212;end12121212maxz2x3x4x3x10s.t.3x5x12x,x0,第三步:求解模型1、选择菜单LINGO|Solve或者按工具栏的2、LINGO开始编译模型,如有语法错误将返回一个错误的消息并指明错误出现的位置;如果通过编译,LINGO将激活Solver运算器寻求模型的最优解;3、首先出现solverstatus窗口,其作用是监控solver的进展和显示模型的维数等信息;4、计算完成后出现SolutionReport窗口显示模型解的详细信息;•运行状态窗口Variables(变量数量):变量总数(Total)、非线性变量数(Nonlinear)、整数变量数(Integer)。Constraints(约束数量):约束总数(Total)、非线性约束个数(Nonlinear)。Nonzeros(非零系数数量):总数(Total)、非线性项系数个数(Nonlinear)。GeneratorMemoryUsed(K)(内存使用量)•ElapsedRuntime(hh:mm:ss)(求解花费的时间)•运行状态窗口求解器(求解程序)状态框当前模型的类型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I开头表示IP,以PI开头表示PIP)当前解的状态:GlobalOptimum,LocalOptimum,Feasible,Infeasible“(不可行),Unbounded“(无界),Interrupted“(中断),Undetermined“(未确定)解的目标函数值当前约束不满足的总量(不是不满足的约束的个数):实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束)目前为止的迭代次数•运行状态窗口扩展的求解器(求解程序)状态框使用的特殊求解程序:B-and-B(分枝定界算法)Global(全局最优求解程序)Multistart(用多个初始点求解的程序)目前为止找到的可行解的最佳目标函数值目标函数值的界特殊求解程序当前运行步数:分枝数(对B-and-B程序);子问题数(对Global程序);初始点数(对Multistart程序)有效步数运行程序的LINGO报告窗口(如下图)注:LINGO不询问是否进行敏感性分析,敏感性分析需要将来通过修改系统选项启动敏感性分析后,再调用“REPORT|RANGE”菜单命令来实现。现在同样可以把模型和结果报告保存在文件中。解释Objectivevalue:最优目标值Infeasibilities:不可行性Totalsolveriterations:单纯形法的迭代次数Variable:变量Value:给出最优解中各变量的值ReducedCost:各个变量的检验数SlackorSurplus:约束条件的松驰变量或剩余变量的值DualPrice:对偶价格或影子价格§2Lingo的基本用法注意事项1、每一个模型都以model:开始,又以end结束,也可省略此结构;2、目标函数必须由“min=”或“max=”开头。3、可以用表示=;用表示=;4、LINGO的每一语句;结束;5、注释以!开始,以;结束;6、变量名:不区分大小写;由字母数字下划线组成;第一个字符必须是字母;变量名最长为32个字符7、变量和数字放在约束条件的左、右端均可;但最好变量在左,数字在右。8、Lingo变量默认域为非负实数,可以改变默认域.程序语句输入的备注:•LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除注释语句和TITLE语句外的其他语句都是约束条件,因此语句的顺序并不重要。•限定变量取整数值的语句为“@GIN(X1)”和“@GIN(X2)”,不可以写成“@GIN(2)”,否则LINGO将把这个模型看成没有整数变量。•LINGO中函数一律需要以“@”开头,其中整型变量函数(@BIN、@GIN)和上下界限定函数(@FREE、@SUB、@SLB)与LINDO中的命令类似。而且0/1变量函数是@BIN函数。数学函数LINGO提供了大量的标准数学函数:@abs(x)返回x的绝对值@sin(x)返回x的正弦值,x采用弧度制@cos(x)返回x的余弦值@tan(x)返回x的正切值@exp(x)返回常数e的x次方@log(x)返回x的自然对数@lgm(x)返回x的gamma函数的自然对数@sign(x)如果x0返回-1;否则,返回1@floor(x)返回x的整数部分。当x=0时,返回不超过x的最大整数;当x0时,返回不低于x的最大整数。@smax(x1,x2,…,xn)返回x1,x2,…,xn中的最大值@smin(x1,x2,…,xn)返回x1,x2,…,xn中的最小值三.LINGO软件求解线性规划问题熟悉LINGO软件的使用方法、功能;利用LINGO软件求解一般线性规划问题。熟悉LINGO软件的启动步骤。熟悉LINGO软件的各菜单、命令按钮的作用。学会如何使用LINGO的帮助文件。学会输入线性规划模型的基本格式。1、求解线性规划:12121212maxzx2x2x5x12s.t.x2x8x,x0model:max=x1+2*x2;2*x1+5*x212;x1+2*x28;End注意:乘法一定用*2、求解线性规划:12121212minz20x10x5x4x24s.t.2x5x5x,x0model:max=20*x1+10*x2;5*x1+4*x224;2*x1+5*x25;end1、解线性规划练习2、求解问题052222..max121212121xxxxxxxtsxxz5,...,2,1;021322..2min53243232132jxxxxxxxxxxtsxxzj3、求解5,4,3,2,1;1226..215min5321432131jxxxxxxxxxtsxxzj4、解下列规划0,,2413..min321321321321xxxxxxxxxtsxxx♂返回5、求解问题5,4,3,2,1;1226..215min5321432131jxxxxxxxxxtsxxzj052222..21max1212121xxxxxxxtsxxz6、求解问题♂返回7、求下述整数规划问题的最优解且均取整数值,0,5.45.0143223max21212121xxxxxxxxz8、如何在LINGO中求解如下的IQP问题:22121122121212max()982770.32..1002,0fxxxxxxxstxxxxxx为整数LINGO代码:max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;x1+x2=100;x12*x2;@gin(x1);@gin(x2);1桶牛奶3公斤A112小时8小时4公斤A2或获利24元/公斤获利16元/公斤50桶牛奶时间480小时至多加工100公斤A1制订生产计划,使每天获利最大•35元可买到1桶牛奶,买吗?若买,每天最多买多少?•可聘用临时工人,付出的工资最多是每小时几元?•A1的获利增加到30元/公斤,应否改变生产计划?每天:例1:加工奶制品的生产计划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.000
本文标题:LINGO软件学习入门
链接地址:https://www.777doc.com/doc-4089242 .html