LINGO在数学建模中的应用_第1页
LINGO在数学建模中的应用_第2页
LINGO在数学建模中的应用_第3页
LINGO在数学建模中的应用_第4页
LINGO在数学建模中的应用_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、LINGO在数学建模中的应用LINGO在数学建模中的应用 LINGO的主要功能和特点1.求解线性规划和非线性规划问题2.模型输入简练直观3.运行速度快 计算能力强4.内置建模语言 提供内部函数 较少语句直观描述大规模优化模型5.引入集合 容易建模6.数据交换方便(与EXCEL和数据库)需要掌握的几个重要方面需要掌握的几个重要方面掌握集合掌握集合(SETS)的应用;的应用;正确阅读求解报告;正确阅读求解报告;正确理解求解状态窗口;正确理解求解状态窗口; 学会设置基本的求解选项学会设置基本的求解选项(OPTIONS) ; 掌握与外部文件的基本接口方法掌握与外部文件的基本接口方法LINGO在数学建模

2、中的应用 LINGO的基本用法模型窗口”LINGO Model-LINGO1”用于输入模型可用基本类似数学公式的形式输入小模型LINGO的语法规则1.最大值MAX=,最小值MIN=2.语句必须以分号”;”结束 每行可多个语句 语句可跨行3.变量名由字母、数字和下划线组成 以字母开头 长度 不超32个字符 不区分大小写4.默认决策变量非负 其他要求可做说明5.模型以MODEL:开头,以END结束 例 工厂有两条生产线,分别生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产能力分别为100和120,生产一个产品分别需1个和2个劳动日,工厂每天能提供160个劳动日。假设原材料不受限

3、制,如何安排生产计划,利润最大。 设生产计划为生产x1个M和x2个P,数学模型为. 02, 01,1602211202,1001. .23001200maxxxxxxxtsxxzLINGO求解1.输入模型 MODEL: MAX=200*X1+300*X2; X1=100;X2=120; X1+2*X2=160; END2.模型存盘 选File|Save As3.模型求解 选Lingo|Solve(Ctrl+s)LINGO求解4.求解结果Lingo Solver Status 变量个数 约束条件个数 优化状态 非零变量个数 耗费内存 所用时间Solution Report 计算步数 目标函数值

4、变量值Golbal optimal solution found at iteration:2 Objective value: 29000.00Variable value Reduced cost (缩减成本系数)X1 100.000 0.000000X2 30.000 0.000000Row Slack (松池) or Surplus (剩余) Dual Price(影子价格)1 29000.00 12 0.000000 50.000003 90.00000 0.0000004 0.000000 150.0000注 Row 模型中行号 Slack=右-左(=)LINGO编程(建模)语言

5、LINGO模型的基本组成1.集合定义部分 集合是一组相关对象构成的组合,代表模型中的实际事物,并与数学变量和常量联系起来,实际问题到数学问题的抽象,集合使用前应定义,内容为:集合名称、集合内的成员、集合的属性(命名规则同变量)初始集合:集合名称/集合内的成员/:集合的属性 如:WH/W1.W6/:AI;VD/V1.V8/:Dj衍生集合:集合名称 对应的初始集合 集合成员 集合的属性 集合名称( 对应的初始集合,对应的初始集合): 集合的属性 如:LINKS(WH,VD):C,X;集合定义部分以语句SETS:开头,以语句ENDSETS结束集合的类型集合的类型 集合集合 派生集合派生集合 基本集合

6、基本集合 稀疏集合稀疏集合 稠密集合稠密集合 元素列表法元素列表法 元素过滤法元素过滤法 直接列举法直接列举法 隐式列举法隐式列举法setname /member_list/ : attribute_list;setname(parent_set_list) /member_list/ : attribute_list;SETS: CITIES /A1,A2,A3,B1,B2/; ROADS(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D; ENDSETSSETS: STUDENTS /S1.S8/; PAIRS( STUDENTS, STUDENTS)

7、 | &2 #GT# &1: BENEFIT, MATCH;ENDSETS集合元素的集合元素的隐式列举隐式列举类型类型隐式列举格式隐式列举格式示例示例示例集合的元素示例集合的元素数字型数字型 1.n1.51, 2, 3, 4, 5字符字符-数字型数字型stringM.stringNCar101.car208Car101, car102, , car208星期型星期型 dayM.dayNMON.FRIMON, TUE, WED, THU, FRI月份型月份型 monthM.monthNOCT.JANOCT, NOV, DEC, JAN年份年份-月份型月份型monthYearM.m

8、onthYearNOCT2001.JAN2002OCT2001, NOV2001, DEC2001, JAN2002LINGO编程(建模)语言 LINGO模型的基本组成2.数据初始化部分(数据段) LINGO建模语言通过数据初始化部分来实现对已知属性赋予初始值 数据初始化部分以语句DATA:开始,以语句 ENDDATA结束如:DATA: AI=60,55,51,43,41,52;DJ=35,37,22,32,41,32,43,38; C=6,2,6,7,4,2,5,9 4,9,5,3,8,5,8,2 ENDDATALINGO编程(建模)语言 LINGO模型的基本组成3.目标函数和约束条件内部函

9、数:SUM,FORSUM是是LINGO的内部函数的内部函数,功能是对某个集合的所有成员功能是对某个集合的所有成员求指定表达式的和求指定表达式的和,有两个参数有两个参数,其一是集合名称其一是集合名称,指定对该指定对该集合的所有成员求和集合的所有成员求和,其二是一个表达式其二是一个表达式,表示求和运算对表示求和运算对该表达式进行该表达式进行.FOR是是LINGO的内部函数的内部函数,功能是对某个集合的所有成员功能是对某个集合的所有成员分别派生一个约束表达式有两个参数分别派生一个约束表达式有两个参数,其一是集合名称其一是集合名称,表表示对该集合的所有成员分别派生一个约束表达式示对该集合的所有成员分别

10、派生一个约束表达式,其二是其二是约束表达式的具体内容约束表达式的具体内容.注注: :SUM和和FOR可以嵌套使用可以嵌套使用LINGO编程(建模)语言 例 运输问题公司有6个供货栈(仓库),库存货物总数分别为AI=60,55,51,43,41,52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38,各供货栈到8个客户的单位运价如表1.如何确定各供货栈到8个客户的货物调运量,使总的运费最小? 表1 各供货栈到8个客户的单位运价V1V2V3V4V5V6V7V8W162674259W249538582W352197433W476739271W523957265W655

11、228143LINGO编程(建模)语言 例 运输问题数学模型 .8,1,6,1,0,8,1,6,1,.,min61816181jixjdxiaxtsxczijjiijijijijijijLINGO编程(建模)语言 例 运输问题LINGO模型MODEL: SETS: WH/W1.W6/:AI;VD/V1.V8/:Dj; LINKS(WH,VD):C,X; ENDSETS DATA: AI=60,55,51,43,41,52;DJ=35,37,22,32,41,32,43,38; C=6,2,6,7,4,2,5,9 4,9,5,3,8,5,8,2 5,2,1,9,7,4,3,3 7,6,7,3,9

12、,2,7,1 2,3,9,5,7,2,6,5 5,5,5,5,8,1,4,3 ENDDATALINGO编程(建模)语言例 运输问题LINGO模型MIN=SUM(LINKS(I,J):C(I,J)*X(I,J);FOR(WH(I):SUM(VD(J):X(I,J)=AI(I);FOR(VD(J):SUM(WH(I):X(I,J)=DJ(J);END求解Lingo|SolveSolition ReportGolbal optimal solution found at step:17 Objective value: 664.0000Variable value Reduced cost (缩减成

13、本系数)X(w1,v1) 0.000 5.000000X(w1,v2) 19.000 0.000000.Lingo运算符1.算术运算符乘方,*乘,/除,+加,-减2.逻辑运算符分 类 运算符作 用运算对象是两个数#EQ#两个运算对象相等时为真,否则为假运算对象是两个数#NE#两个运算对象不相等时为真,否则为假运算对象是两个数#GT#左边大于右边时为真,否则为假运算对象是两个数#GE#左边大于或等于右边时为真,否则为假运算对象是两个数#LT#左边小于右边时为真,否则为假运算对象是两个数#LT#左边小于或等于右边时为真,否则为假对象是逻辑值或#NOT#表示运算对象取反表达式#AND#两个运算对象都

14、真时为真,否则为假#OR#两个运算对象都假时为假,否则为真Lingo运算符3.关系运算符= 表达式左右相等= 表达式左边大于或等于右边注:Lingo没有单独的 AB,BA是一个小的正数Lingo函数 Lingo提供了五十几个内部函数,所有函数都以字符开头 数学函数ABS(x),SIN(X),COS(x),TAN(X),LOG(X),EXP(X),SIGN(X),SMAX(X1,Xn),SMIN(X1,Xn)FLOOR(X),LGM(X)Lingo函数 集合函数 集合是Lingo中最重要的概念,使用集合函数,用简单的语句可表达目标函数和约束条件FOR(S|TJ:E) 常用在约束条件中,表示对满足

15、TJ的S中的成员都生成一个表达式E;SUM(S|TJ:E) 对集合S中的每个成员,分别得到E的值,返回所有这些值的和;MAX(S|TJ:E)对集合S中的每个成员,分别得到E的值,返回所有这些值中的最大值;SIZE(S)返回集合S中的成员个数集合函数集合函数四个集合循环函数:四个集合循环函数:FOR、SUM 、 MAX、MINfunction( setname ( set_index_list) | condition : expression_list);objective MAX = SUM( PAIRS( I, J): BENEFIT( I, J) * MATCH( I, J);FOR(S

16、TUDENTS( I): constraints SUM( PAIRS( J, K) | J #EQ# I #OR# K #EQ# I: MATCH( J, K) =1);FOR(PAIRS( I, J): BIN( MATCH( I, J);MAXB=MAX(PAIRS( I, J): BENEFIT( I, J);MINB=MIN(PAIRS( I, J): BENEFIT( I, J);Example:PAIRSJIJIMATCHJIBENEFIT),(),(*),(1),(),(IKorIJPAIRSKJKJMATCHLingo函数 变量定界函数变量定界函数该函数可以改变变量的值或界该

17、函数可以改变变量的值或界BIN(X) 限制限制X为为0或或1,用于用于0-1规划规划;BND(L,X,U) 限制限制L=X=U;GIN(X) 限制限制X为整数为整数,用于整数规划用于整数规划FREE(X) 取消对变量的默认为非负数的限制取消对变量的默认为非负数的限制,即即X可取任意实数值可取任意实数值注注:用用BND(L,X,U)代替约束条件代替约束条件,一方面可提高求一方面可提高求解速度解速度,另一方面它不计入约束条件另一方面它不计入约束条件整数规划例题-背包问题 某人计划外出旅游并登山,路途较远,要坐火车和飞机,要带必要的用品,如:相机、摄相机、衣服、食品、雨具和书籍等,共n件物品,重量分

18、别为ai,能带行李的总重量为b,ci表示物品的重要性(价值).该旅行者最多能带哪些物品,才能使总价值最大. 该问题称为背包问题.引入0-1型决策变量ix1ix表示物品i放入背包0ix表示物品i不放入背包,则背包问题的数学模型是整数规划例题-背包问题 数学模型., 2 , 101,. .,max11nixbxatsxcziniiiniii,或整数规划例题-背包问题 n=8,a=1,3,4,3,3,1,5,10;c=2,9,3,8,10,4,10; b=15kg Lingo程序Model: SETS: WP/W1.W8/:A,C,X; ENDSETSDATA: A=1 3 4 3 3 1 5 10

19、; C=2 9 3 8 10 6 4 10;ENDDATAMAX=SUM(WP:C*X);FOR(WP:BIN(X);SUM(WP:A*X) NEED( I); CON2 SHIP( I) SUPPLY( I);DATA: COST = FILE(myfile.txt); NEED = FILE(myfile.txt); SUPPLY = FILE(myfile.txt); TEXT(result.txt)=SHIP, DUAL(SHIP), DUAL(CON1);ENDDATAENDmyfile.txt文件的内容、格式:Seattle,Detroit,Chicago,DenverCOST,N

20、EED,SUPPLY,SHIP12,28,15,201600,1800,1200,10001700,1900,1300,1100Lingo函数 其他函数WARN(文字信息,逻辑表达式)逻辑表达式的值为真时,显示文字信息,用于提示USER()IF(逻辑表达式,逻辑表达式的值为真时的值,逻辑表达式的值为假时的值) 通常用来定义分段函数优化模型优化模型 实际问题中实际问题中的优化模型的优化模型mixgtsxxxxfzMaxMiniTn, 2 , 1, 0)(. .),(),()(1或x决策变量决策变量f(x)目标函数目标函数gi(x) 0约束条件约束条件数学规划数学规划线性规划线性规划(LP)二次规

21、划二次规划(QP)非线性规划非线性规划(NLP)纯整数规划纯整数规划(PIP)混合整数规划混合整数规划(MIP)整数规划整数规划(IP)0-1整数规划整数规划一般整数规划一般整数规划连续规划连续规划LINDO和和LINGO软件能求解的优软件能求解的优化模型化模型 LINGO LINDO优化模型优化模型线性规划线性规划(LP)非线性规划非线性规划(NLP)二次规划二次规划(QP)连续优化连续优化整数规划整数规划(IP) LP QP NLP IP 全局优化全局优化(选选) ILP IQP INLP LINDO/LINGO软件的求解过程 LINDO/LINGO预处理程序预处理程序线性优化求解程序线性

22、优化求解程序非线性优化求解程序非线性优化求解程序分枝定界管理程序分枝定界管理程序1. 确定常数确定常数2. 识别类型识别类型1. 单纯形算法单纯形算法2. 内点算法内点算法(选选)1、顺序线性规划法、顺序线性规划法(SLP) 2、广义既约梯度法、广义既约梯度法(GRG) (选选) 3、多点搜索、多点搜索(Multistart) (选选) 运算符的优先级运算符的优先级 优先级优先级运算符运算符最高最高#NOT# (负号)(负号)* /+ (减法)(减法)#EQ# #NE# #GT# #GE# #LT# #LE# #AND# #OR#最低最低(=)三类运算符:三类运算符: 算术运算符算术运算符 逻

23、辑运算符逻辑运算符 关系运算符关系运算符 程序与数据分离程序与数据分离文文本本文文件件使用外部数据文件使用外部数据文件 Cut (or Copy) Paste 方法方法 FILE 输入数据、输入数据、TEXT输出数据(文本文件)输出数据(文本文件) OLE函数与电子表格软件(如函数与电子表格软件(如EXCEL)连接)连接 ODBC函数与数据库连接函数与数据库连接 LINGO命令脚本文件命令脚本文件 LG4 (LONGO模型文件)模型文件) LNG (LONGO模型文件)模型文件) LTF (LONGO脚本文件)脚本文件) LDT (LONGO数据文件)数据文件) LRP (LONGO报告文件)

24、报告文件)常用文件后缀常用文件后缀 界面界面LINGO的菜单及对话框1、LINGO的界面的界面主窗口主窗口模型窗口模型窗口Model Window状态栏状态栏当前时间当前时间 当前光标当前光标位置位置 2、LINGO的工具栏File|Open(F3)打开文件File|Print(F7)打印文件Edit|Copy(Ctrl+C)复制Edit|Undo(Ctrl+Z)取消操作Edit|Find (Ctrl+F)查找LINGO|Solution(Alt+O)显示解答Edit|Match Parenthesis(Ctrl+P)匹配括号LINGO|Options(Ctrl+I)选项设置Window|Cl

25、ose All (Alt+X)关闭所有窗口Help|Contents(F1)在线帮助File|New(F2)新建文件File|Save(F4)保存文件Edit|Cut(Ctrl+X)剪切Edit|Paste(Ctrl+V)粘贴Edit|Redo(Ctrl+Y)恢复操作Edit | Go To Line(Ctrl+T)定位某行LINGO|Solve (Ctrl+S)求解模型LINGO|Picture(Ctrl+K)模型图示Window|Send to Back (Ctrl+B)窗口后置Window|Tile(Alt+T) 平铺窗口上下文相关的帮助 3、LINGO的菜单栏1.File(文件菜单)

26、Export file(输出特殊格式文件) Database User Info(用户基本信息)2.Edit Menu(编辑菜单) Paste Special(选择性粘贴) Go to Line(光标移到某一行) Match Parenthesis(匹配括号) Insert New Object(插入新对象)LINGO的菜单3.LINGO Solution(求解结果) 打开求解结果对话框,文本或图表方式查看结果 Range(灵敏性分析) 产生当前模型的灵敏性分析报告:最优解不变目标函数系 数的变化范围;影子价格和缩减系数不变,约束条件右端常数的变化范围(用时需激活) Options(选项设置)

27、 Generate(生成模型展开式) Picture(生成图形)LINGO的菜单3.LINGO Debug(调试) Model Statistics(模型资料统计) Look(查看)LINGO的菜单4.Window Command Window(命令行窗口) Status Window(状态窗口)5.Help Help Topics(帮助主题) Register(在线注册) Auto Update(自动更新) About Lingo(关于Lingo)Variables(变量数量):(变量数量): 变量总数(变量总数(Total)、)、 非线性变量数(非线性变量数(Nonlinear)、)、 整

28、数变量数(整数变量数(Integer)。)。Constraints(约束数量):(约束数量): 约束总数(约束总数(Total)、)、 非线性约束个数非线性约束个数(Nonlinear)。Nonzeros(非零系数数量):(非零系数数量): 总数(总数(Total)、)、 非线性项系数个数非线性项系数个数(Nonlinear)Generator Memory Used (K) (内存使用内存使用量量)Elapsed Runtime (hh:mm:ss)(求解花费的时间)(求解花费的时间) 4、LINGO的运行状态窗口求解求解器器(求求解程解程序序)状状态框态框当前模型的类型当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以(以I开头表示开头表示IP,以,以PI开头表示开头表示P

温馨提示

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

评论

0/150

提交评论