您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > LINGO软件求解优化问题
LINGO主讲:张森数学规划软件LINGO软件LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,LINGO高效的求解器可快速求解并分析结果。一、数学软件LINDO•美国Chicago大学:LinusSchrage教授于1980年前后开发,后来成立LINDO系统公司(LINDOSystemsInc.)–网址:•产品:–LINDO:LinearINteractiveandDiscreteOptimizer(V6.1)–LINDOAPI:LINDOApplicationProgrammingInterface(V4.1)–LINGO:LinearINteractiveGeneralOptimizer(V11.0)•演示(试用)版、高级版、超级版、工业版、扩展版…–求解问题规模和选件不同LINGO——数学规划软件•优化线性规划LP非线性规划NLP二次规划QP连续优化离散:整数规划IP:ILPPIP0-1LINDOLINGOMATLAB优化工具箱EXCEL软件优化功能SAS软件优化功能其他优势:模型表述简单求解引擎强大数学规划模型•决策变量x=(x1,x2,…,xn)•目标函数MinZ=f(x)•约束条件s.txA(Rn)–等式或不等式•求解–线性:单纯形法–非线性:……•LINGO专业软件数学规划线性规划非线性规划整数规划连续规划0-1规划•界面主窗口模型窗口ModelWindow状态栏当前时间当前光标位置二、Lingo的菜单及对话框1、LINGO的界面File|Open(F3)打开文件File|Print(F7)打印文件Edit|Copy(Ctrl+C)复制Edit|Undo(Ctrl+Z)取消操作Edit|Find(Ctrl+F)查找LINGO|Solution(Alt+O)显示解答Edit|MatchParenthesis(Ctrl+P)匹配括号LINGO|Options(Ctrl+I)选项设置Window|CloseAll(Alt+X)关闭所有窗口Help|Contents(F1)在线帮助File|New(F2)新建文件File|Save(F4)保存文件Edit|Cut(Ctrl+X)剪切Edit|Paste(Ctrl+V)粘贴Edit|Redo(Ctrl+Y)恢复操作Edit|GoToLine(Ctrl+T)定位某行LINGO|Solve(Ctrl+S)求解模型LINGO|Picture(Ctrl+K)模型图示Window|SendtoBack(Ctrl+B)窗口后置Window|Tile(Alt+T)平铺窗口上下文相关的帮助•2、LINGO的工具栏•File–ExportFile…–UserDatabaseInfo•Edit–Paste–PasteSpecial…–MatchParenthesis–PasteFunction–SelectFont–InsertNewObject–Links–ObjectPropertiesLINGOLOOKGeneratePictureFileGenerateOptions3、LINGO的菜单栏Variables(变量数量):变量总数(Total)、非线性变量数(Nonlinear)、整数变量数(Integer)。Constraints(约束数量):约束总数(Total)、非线性约束个数(Nonlinear)。Nonzeros(非零系数数量):总数(Total)、非线性项系数个数(Nonlinear)GeneratorMemoryUsed(K)(内存使用量)•ElapsedRuntime(hh:mm:ss)(求解花费的时间)4、LINGO的运行状态窗口求解器(求解程序)状态框当前模型的类型: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程序)有效步数运行状态•可设置80-90个控制参数Interface界面GeneralSolver通用求解LinearSolver线性求解NonlinearSolver非线性求解IntegerPre-Solver整数预处理IntegerSolver整数求解GlobalSolver全局最优求解5、Options7个选项卡三、Lingo基本语法1、定义了目标函数为MIN=..MAX=..2、以一个分号“;”结尾——除SETS,ENDSETS,DATA,ENDDATA,END之外3、可以放在约束条件的右端,同时数字也可放在约束条件的左端。4、假定各变量非负。5、注释:“!”6、、为≤、≥•制订生产计划,使每天获利最大1桶牛奶3公斤A112小时8小时4公斤A2或获利24元/公斤获利16元/公斤50桶牛奶时间480小时至多加工100公斤A1每天:例1:加工奶制品的生产计划建模时需要注意的几个基本问题1、尽量使用实数优化,减少整数约束和整数变量2、尽量使用光滑优化,减少非光滑约束的个数如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等3、尽量使用线性模型,减少非线性约束和非线性变量的个数(如x/y5改为x5y)4、合理设定变量上下界,尽可能给出变量初始值5、模型中使用的参数数量级要适当(如小于103)1桶牛奶3公斤A112小时8小时4公斤A2或获利24元/公斤获利16元/公斤x1桶牛奶生产A1x2桶牛奶生产A2获利24×3x1获利16×4x2原料供应5021xx劳动时间48081221xx加工能力10031x决策变量目标函数216472xxzMax每天获利约束条件非负约束0,21xx时间480小时至多加工100公斤A150桶牛奶每天模型求解max=72*x1+64*x2;x1+x250;12*x1+8*x2480;3*x1=100;1212121127264.501284803100,0Maxzxxstxxxxxxx•20桶牛奶生产A1•30桶生产A2•利润3360元结果Objectivevalue:3360.000VariableValueReducedCostX120.000000.000000X230.000000.000000RowSlackorSurplusDualPrice13360.0001.00000020.00000048.0000030.0000002.000000440.000000.000000reducedcost值表示当该非基变量增加一个单位时(其他非基变量保持不变)目标函数减少的量(对max型问题)Objectivevalue:3360.000VariableValueReducedCostX120.000000.000000X230.000000.000000RowSlackorSurplusDualPrice13360.0001.00000020.00000048.0000030.0000002.000000440.000000.000000也可理解为:为了使该非基变量变成基变量,目标函数中对应系数应增加的量结果Objectivevalue:3360.000VariableValueReducedCostX120.000000.000000X230.000000.000000RowSlackorSurplusDualPrice13360.0001.00000020.00000048.0000030.0000002.000000440.000000.000000原料无剩余时间无剩余加工能力剩余40max72x1+64x2st2)x1+x2503)12x1+8x24804)3x1100end三种资源“资源”剩余为零的约束为紧约束(有效约束)结果解释Objectivevalue:3360.000VariableValueReducedCostX120.000000.000000X230.000000.000000RowSlackorSurplusDualPrice13360.0001.00000020.00000048.0000030.0000002.000000440.000000.000000最优解下“资源”增加1单位时“效益”的增量原料增1单位,利润增48时间加1单位,利润增2能力增减不影响利润影子价格结果解释•尽量使用实数优化,减少整数约束和整数变量•尽量使用光滑优化,减少非光滑约束的个数如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数等•尽量使用线性模型,减少非线性约束和非线性变量的个数如x/y5改为x5y•合理设定变量上下界,尽可能给出变量初始值•模型中使用的参数数量级要适当–如小于103建模时需要注意的几个基本问题练习•1、求解线性规划•2、求解非线性规划0,,501024020233022)532min(zyxzyxzyxzyxzyx222min(4)(12)fxyx逻辑运算符#NOT#否定#EQ#相等#NE#不等#AND#并且#OR#或者#GT#大于#GE#大于等于#LT#小于#LE#小于等于算术运算符+-*/^关系运算符(=)=(=)三、Lingo运算符和函数1、运算符及其优先级LINGO具有9种逻辑运算符:•#not#否定该操作数的逻辑值,#not#是一个一元运算符•#eq#若两个运算数相等,则为true;否则为flase•#ne#若两个运算符不相等,则为true;否则为flase•#gt#若左边的运算符严格大于右边的运算符,则为true;否则为flase•#ge#若左边的运算符大于或等于右边的运算符,则为true;否则为flase•#lt#若左边的运算符严格小于右边的运算符,则为true;否则为flase•#le#若左边的运算符小于或等于右边的运算符,则为true;否则为flase•#and#仅当两个参数都为true时,结果为true;否则为flase•#or#仅当两个参数都为false时,结果为false;否则为true运算符的优先级由高到低•高#not#﹣(取反)^﹡/﹢﹣#eq##ne##gt##ge##lt##le##and##or#•低===逻辑运算符示例•2#gt#3#and#4#gt#2,其结果为假(0)。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软件求解优化问题
链接地址:https://www.777doc.com/doc-8140887 .html