Lingo简介_第1页
Lingo简介_第2页
Lingo简介_第3页
Lingo简介_第4页
Lingo简介_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录:LINGO简介一、如何编写、运行一个LINGO 9.0程序1、编写 双击LINGO图标,启动软件,屏幕上显示LINGO的初始用户界面。光标所在的窗口称为模型窗口(model window),用来供用户输入优化模型(LINGO程序)。 输入结束后,从莱单中选择File/Save(F5)命令把它保存在一个文件中,默认的后缀名为lg4,即LINGO程序的二进制文件。保存的文件将来可以用File/Open(F3)重新打开进行修改。 2、运行 从莱单中选择LINGO/Solve(Ctrl+S)命令运行程序。 用鼠标选择主莱单中Window/Reports Window,这就是最终结果的报告窗口。二、如何编写一个简单的LINGO程序说明:(1)在模型窗口中输入一个LINGO程序,以“MODEL:”开始,以“END”结束。对简单的模型,这两个语句也可以省略。(2)目标函数的表达方式是“MAX=”或“MIN=”,约束条件的S.T不要写出。(3)决策变量的变量名由字母和数字组成,但必须以字母开头,且长度不超过32个字符。不区分大小写字母(包括LINGO本身的关键字,如MAX、MIN、END)。(4)每行可以用行号(行名)进行标识,行名写法和变量名一样,行号用数字前带下划线表示,以方括号“ ”为行号(行名)的首尾,位于目标函数或每一个约束条件的开头。如果用户没有指定行号(行名),系统会自动产生行号,将目标函数所在行作为第一行,从第二行起为约束条件。(5)注释语句用“!”开头,单独一个语句。(6)变量与其系数间用“*”连接。(7)每个语句(目标函数、约束条件和说明语句)结束用“;”,允许一行写多个语句,但最好一行只写一个语句。(8)LINGO假定所有变量非负,可以用命令“FREE(变量名)”取消变量的非负假定。(9)用命令“BND(下界,变量名,上界)”设置变量的上界和下界。(10)一般整数变量可用“GIN(变量名)”来标识,0-1型变量可用“BIN(变量名)”来标识。(11) 可以在模型的任何地方用TITLE语句对输入的模型命名。例1、求解线性规划(LP)问题 MAX f=2x1-3x2+4x3 S.T4x1+3x2+2x310-3x1+5x2-x312x1+x2+5x38-5x1-x2-x32 0x220, x330程序如下:MODEL:TITLE 例1的模型;MAX=2*x1-3*x2+4*x3;4*x1+3*x2+2*x3=10;-3*x1+5*x2-x3=8;-5*x1-x2-x32;x3=30;!取消变量x1的非负限制;free(x1);BND(0,x2,20);END例2 求解整数线性规划(ILP)问题 MAX f=20x1+10x2 S.T 5x1+4x224 2x1+5x213 xi0, i=1,2 x1,x2为整数程序如下:MODEL:MAX=20*x1+10*x2;5*x1+4*x2=24;2*x1+5*x2=13;GIN(x1);GIN(x2);END例3 求解01整数线性规划问题 MAX f=-3x1+2x2-5x3 S.T X1+ x2-x32 X1+4x2+x34 X1+ x2 3 4x2+x36 xi (i=1,2,3)为0或1程序如下:MODEL:MAX=-3*x1+2*x2-5*x3; X1+ x2-x3=2; X1+4*x2+x3=4; X1+x2=3; 4*x2+x3=6;BIN(x1);BIN(x2);BIN(x3);END例4 求解混合整数线性规划问题 MAX f=2x1+3x2+4x3 S.T 1.5X1+3x2+5x3600 280X1+250x2+400x360000 80y1x11000y1 80y2x21000y2 80y3x31000y3 x1,x2,x30 yi (i=1,2,3)为0或1程序如下:MODEL:MAX=2*x1+3*x2+4*x3;1.5*X1+3*x2+5*x3=600;280*X1+250*x2+400*x3=60000;x1=1000*y1;x2=1000*y2;x380*y1;x280*y2;x380*y3;BIN(y1);BIN(y2);BIN(y3);end例5 求解二次规划(QP)问题 max S.T 为整数程序如下:MODEL:MAX=98*x1+277*x2-x12-0.3*x1*x2-2*x22;X1+x2=100;X1=2*x2;GIN(x1);GIN(x2);end例6、求解一般的非线性规划(NLP)问题min f=ex1(6x12+3x22+2x1x2+4x2+1) s.t x1x2-x1-x2+10 -2x1x2-50 x1,x2为整数程序如下:MODEL:Min=exp(x1)*(6*x12+3*x22+2*x1*x2+4*x2+1);X1*x2-x1-x2=0;-2*x1*x2-5=0;free(x1);free(x2);GIN(x1); GIN(x2);END值得注意的是,此时求解模型应该用莱单命令“LINGO/Options”在“Global Solver”选项卡上启动全局优化(use global solver)选项,然后重新执行莱单命令“LINGO/Solve”,得到全局最优解。三、LINGO模型的基本要素 当你遇到的是一个较大规模的优化问题时,怎样才能做到输入几个语句就可以建立起含有很多变量的目标函数和成千上万条约束的一个复杂庞大的模型呢?掌握LINGO提供的最优化模型语言是至关重要的。 一个最复杂的LINGO模型由以下5个要素组成(当然,如果实际问题不需要,则其中的某些要素可以省略),它们写在“MODEL:”与“END”之间。1、集合定义部分 这部分以“SETS:”开始,以“ENDSETS”结束,作用在于定义必要的集合变量(SET)及其元素(member,类似于数组的下标)和属性(attribute,类似于数组)。格式是: 集合名/1.n/:属性列表;各属性之间用“,”分隔。属性的具体数值如果是常量,则可在数据输入部分输入;如果是未知量,则可在初始部分输入它的初值。2、数据输入部分 这部分以“DATA:”开始,以“ENDDATA”结束,作用在于对集合的属性输入必要的常数数据。格式是: 属性名=常数列表;常数列表中的数据之间用“,”或空格或回车分隔。3、目标与约束部分 这部分没有开始和结束标记。是定义了模型的实际目标函数和约束条件。4、初始部分 这部分以“INIT:”开始,以“ENDINIT”结束,作用在于对集合的属性输入它的初值。格式是: 属性名=常数列表;常数列表中的数据之间用“,”或空格或回车分隔。5、计算部分 这部分以“CALC:”开始,以“ENDCALC”结束,作用在于对一些原始数据进行计算处理。为什么要这么做呢?这是因为在实际问题中,输入的数据通常是原始数据,不一定能在模型中直接使用,需要对这些原始数据进行一定的预处理后,得到我们模型中真正需要的数据。四、如何在LINGO中使用集合1、集合的基本用法 要注意当使用集合时,模型的目标函数是用求和函数 SUM(集合(下标):关于集合的属性的表达式)的方式定义的,这个函数的功能是对语句中冒号“:”后面的表达式按照“:”前面的集合指定的下标(元素)进行求和。 约束条件是用循环函数 FOR(集合(下标):关于集合的属性的约束关系式)的方式定义的,意思是对“:”前面的集合的每个下标(元素),“:”后面的约束关系式都要成立。例7、求解线性规划(LP)问题 min S.T 程序如下:MODEL: SETS: !pp为集合名; pp/1.4/:r,x,y,z; ENDSETS DATA: r=40,60,75,25; ENDDATA Min=SUM(pp(i):400*x(i)+450*y(i)+20*z(i); for(pp(i):x(i)1,称为过滤条件 for(pp(i)|I#GT#1:z(i)=z(i-1)+x(i)+y(i)-r(i);); z(1)=10 +x(1)+y(1)-r(1);END2、基本集合与派生集合 可以利用两个集合,定义一个由二元对组成的新集合,它的功效就相当于一个二维数组。格式是: link(集合名1,集合名2):集合名3;这里的集合名1,集合名2当然应该是之前定义了的基本集合。例8、求解非线性规划(NLP)问题 min S.T 其中 1234561.258.750.55.7537.251.250.754.7556.57.753547611程序如下:MODEL: SETS: Demand/1.6/:a,b,d; Supply/1.2/:x,y,e; Link(Demand, Supply):c; ENDSETS DATA: a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; d=3,5,4,7,6,11; e=20,20; ENDDATA Init: X,y=5,1,2,7; ENDInit m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论