lINGO11使用(精选)
- 格式:ppt
- 大小:3.74 MB
- 文档页数:55
LINGO的使用方法说明大全LINGO的使用简介LINGO软件就是美国的LINGO系统公司开发的一套专门用于求解最优化问题的软件包.LINGO除了能够用于求解线性规划与二次规划外,还可以用于非线性规划求解、以及一些线性与非线性方程(组)的求解等.LINGO软件的最大特色在于它允许优化模型中的决策变量为整数,即可以求解整数规划,而且执行速度快.LINGO就是用来求解线性与非线性优化问题的简易工具.LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果.在这里仅简单介绍LINGO的使用方法.LINGO(Linear INteractive and General Optimizer )的基本含义就是交互式的线性与通过优化求解器.它就是美国芝加哥大学的Linus Schrage 教授于1980年开发了一套用于求解最优化问题的工具包,后来经过完善成何扩充,并成立了LINDO系统公司.这套软件主要产品有:LINDO,LINGO,LINDO API与What’sBest.它们在求解最优化问题上,与同类软件相比有着绝对的优势.软件有演示版与正式版.正式版包括:求解包(solver suite)、高级版(super)、超级版(hyper)、工业版(industrial)、扩展版(extended).不同版本的LINGO对求解问题的规模有限制,如附表3-1所示.附表3-1 不同版本LINGO对求解规模的限制版本类型总变量数整数变量数非线性变量数约束数演示版 300 30 30 150求解包 500 50 50 250高级版 2000 200 200 1000超级版 8000 800 800 4000工业版 32000 3200 32000 16000扩展版无限无限无限无限3、1 LINGO程序框架LINGO可以求解线性规划、二次规划、非线性规划、整数规划、图论及网络最优化问题与最大最小求解问题,以及排队论模型中最优化等问题.一个LINGO程序一般会包括以下几个部分:(1) 集合段:集部分就是LINGO模型的一个可选部分.在LINGO模型中使用集之前,必须在集部分事先定义.集部分以关键字“sets:”开始,以“endsets”结束.一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分.一个集部分可以放置于模型的任何地方,但就是一个集及其属性在模型约束中被引用之前必须先定义.(2) 数据段:在处理模型的数据时,需要为集部分定义的某些元素在LINGO求解模型之前为其指定值.数据部分以关键字“data:”开始,以关键字“enddata”结束.(3) 目标与约束段:这部分用来定义目标函数与约束条件等.该部分没有开始与结束的标记.主要就是要用到LINGO的内部函数,尤其就是与集合有关的求与与循环函数等.(4)初始段:这个部分要以关键字“INIT:”开始,以关键字“ENDINIT”结束,它的作用就是对集合的属性定义一个初值.在一般的迭代算法中,如果可以给一个接近最优解的初始值,会大大减少程序运行的时间.(5) 数据预处理段:这一部分就是以关键字“CALC:”开始,以关键字“ENDCALC”结束.它的作用就是把原始数据处理成程序模型需要的数据,它的处理就是在数据段输入完以后、开始正式求解模型之前进行的,程序语句就是按顺序执行的.3、2 LINGO中集合的概念在对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具与雇工等等.LINGO允许把这些相联系的对象聚合成集(sets).一旦把对象聚合成集,就可以利用集来最大限度地发挥LINGO建模语言的优势.现在将深入介绍如何创建集,并用数据初始化集的属性.3、2、1集的构成集就是LINGO建模语言的基础,就是程序设计最强有力的基本构件.借助于集能够用一个单一的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型.集就是一群相联系的对象,这些对象也称为集的元素.一个集可能就是一系列产品、卡车或雇员.每个集的元素可能有一个或多个与之有关联的特征,把这些特征称为属性.属性值可以预先给定,也可以就是未知的,有待于LINGO求解的.LINGO有两种类型的集:原始集(primitive set)与派生集(derived set).一个原始集就是由一些最基本的对象组成的.一个派生集就是用一个或多个其它集来定义的,也就就是说,它的元素来自于其它已存在的集.3、2、2模型的集部分集部分在程序中又称为集合段,它就是LINGO模型的一个可选部分.在LINGO模型中使用集之前,必须在集部分事先定义.集部分以关键字“sets:”开始,以“endsets”结束.一个模型可以没有集部分,或有一个简单的集部分,或有多个集部分.一个集部分可以放置于模型的任何地方,但就是一个集及其属性在模型约束中被引用之前必须先定义.(1)原始集的定义为了定义一个原始集,必须详细说明集的名字,而集的元素与相应的属性就是可选的.定义一个原始集,用下面的语法:setname[/member_list/][:attribute_list];注意:用“[]”表示该部分内容就是可选的(下同).Setname就是用来标记集的名字,最好具有较强的可读性.集名字必须严格符合标准命名规则:以拉丁字母或下划线为首字符,其后由拉丁字母、下划线、阿拉伯数字组成的总长度不超过32个字符的字符串,且不区分大小写.注意:该命名规则同样适用于集元素名与属性名等的命名.Member_list就是集元素的列表.如果集元素放在集定义中,那么对它们可采取显式与隐式罗列两种方式.如果集元素不放在集定义中,那么可以在随后的数据部分定义.①当显式罗列元素时,必须为每个元素输入一个不同的名字,中间用空格或逗号隔开,允许混合使用.例3、1 定义一个名为friends的原始集,它具有元素John,Jill,Rose 与Mike,其属性有sex与age: sets:friends/John Jill, Rose Mike/: sex, age;endsets②当隐式罗列元素时,不必罗列出每个集元素.可采用如下语法:setname/member1、、member N/[: attribute_list];这里的member1就是集的第一个元素名,member N就是集的最后一个元素名.LINGO将自动产生中间的所有元素名.LINGO也接受一些特定的首元素名与末元素名,用于创建一些特殊的集.③集元素不放在集定义中,而在随后的数据部分来定义.例3、2!集部分;sets:friends:sex,age;endsets!数据部分;data:friends,sex,age=John,1,16 Jill,0,14 Rose,0,17 Mike,1,13;enddata注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行.在集部分只定义了一个集friends,并未指定元素.在数据部分罗列了集元素John,Jill,Rose与Mike,并对属性sex与age分别给出了值.集元素无论用何种字符标记,它的索引都就是从1开始连续计数.在attribute_ list可以指定一个或多个集元素的属性,属性之间必须用逗号隔开.LINGO内置的建模语言就是一种描述性语言,用它可以描述现实世界中的一些问题,然后再借助于LINGO求解器求解.因此,集属性的值一旦在模型中被确定,就不可能再更改.只有在初始部分中给出的集属性值在以后的求解中可更改.这与前面并不矛盾,初始部分就是LINGO求解器的需要,并不就是描述问题所必须的.。
Lingo介绍Lingo是美国LINDO系统公司(Lindo Symtem Inc)开发的求解数学规划系列软件中的一个(其他软件为LINGDO,GINO,What’s Best 等),它的主要功能是求解大型线性、非线性和整数规划问题,目前的版本是lingo11.0。
lingo分为Demo、solve suite、hyper、industrial、extended等六类不同版本,只有Demo版本是免费的,其他版本需要向LINDO系统公司(在中国的代理商)购买,Lingo的不同版本对模型的变量总数、非线性变量个数、整型变量个数和约束条件的数量做出不同的限制(其中extended版本无限制)。
Lingo的主要功能特色为:(1)既能求解线性规划,也有较强的求解非线性规划的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强;(4)内置建模语言,提供几十种内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为Lingo 语言;(6)能方便地与excel、数据库等其他软件交换数据。
学校图书馆40本《lingo和excel在数学建模中的应用》,袁新生、邵大宏、郁时炼主编,科学出版社Lingo 程序设计简要说明在数学建模中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。
在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。
一般我们用LINGO 来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。
LINGO 只是一个求解工具,我们主要的任务还是模型的建立!当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
lingo软件使⽤教程lingo软件使⽤教程⼀般来说,⼀个优化模型将由以下三部分组成:1. ⽬标函数(Objective Function):要达到的⽬标。
2. 决策变量(Decision variables):每组决策变量的值代表⼀种⽅案。
在优化模型中需要确定决策变量的最优值,优化的⽬标就是找到决策变量的最优值使得⽬标函数取得最优。
3. 约束条件(Constraints):对于决策变量的⼀些约束,它限定决策变量可以取的值。
在写数学模型时,⼀般第⼀⾏是⽬标函数,接下来是约束条件,再接着是⼀些⾮负限制等。
在模型窗⼝输⼊如下代码:Max = 2*x1+3*x2;X1+2*x2<=8;4*x1<16;4*x2<12;注意:1.每⼀个lingo表达式最后要跟⼀个分号;2.多数电脑中没有符号,lingo中<=代替;为了⽅便可以⽤<代替⼩于等于,⽤>代替⼤于等于。
3.我们可以添加⼀些注释,增加程序的可读性。
注释以⼀个!(叹号必须在英⽂状态下输⼊,它会⾃动变为绿⾊)开始,以;(分号)结束。
4.Lingo中不区分变量名的⼤⼩写。
变量名必须以字母(A-Z)开头,后⾯的字符可以是字母、数字、下划线。
变量名不能超过32个字符。
Lingo程序的⼀些规则:1. 在Lingo中最开始都是“MAX=”或者“MIN=”开始表⽰求⽬标函数的最⼤或者最⼩值。
2. 变量和它前⾯的系数之间要⽤“*”连接,中间可以有空格。
3. 变量名不区分⼤⼩写,但必须以字母开始,不超过32个字符。
4. 数学表达式结束时要⽤分号“;”表⽰结束。
表达式可以写在多⾏上,但是表达式中间不能⽤分号。
5. 在电脑系统中⼀般没有“⼩于等于”符号,在Lingo采⽤“<=”来表⽰“⼩于等于”,⽤“>=”表⽰“⼤于等于”。
⼩于等于也可以⽤更简单的“<”表⽰,⼤于等于⽤“>”表⽰。
集合段:在我们已经得到的程序⾥有⼀些量没有定义,如WAREHOUSES( I),DEMAND( J), LINKS( I, J)。
lingo基础用法Lingo是一种计算机编程语言,它的基础用法包括以下几个方面:1. 变量声明和赋值:可以使用Lingo语言声明变量,并给变量赋值。
例如:```global myVariable -- 声明一个全局变量put 5 into myVariable -- 将值5赋给变量myVariable```2. 条件语句:可以使用条件语句来根据条件执行不同的代码块。
例如:```if myVariable = 5 thenput "It's five!" into messageanswer messageend if```3. 循环语句:可以使用循环语句来反复执行特定的代码块。
例如:```repeat with i = 1 to 10put i into messageanswer messageend repeat```4. 函数和命令:Lingo提供了许多内置的函数和命令,可以执行特定的操作。
例如:```put the date into currentDate -- 获取当前日期get the long name of sprite 1 -- 获取精灵1的长名称```5. 脚本和行为:可以使用Lingo编写脚本和行为,控制多媒体项目的行为。
例如:```on mouseUpgo to the next frameend```上述是Lingo语言的基础用法,只是其中的一小部分。
Lingo 还提供了丰富的功能和特性,包括面向对象编程、多媒体处理等。
要更深入地学习和使用Lingo,建议参考Lingo的官方文档或相关教程。
LINGO使⽤教程(⼀)LINGO是⽤来求解线性和⾮线性优化问题的简易⼯具。
LINGO内置了⼀种建⽴最优化模型的语⾔,可以简便地表达⼤规模问题,利⽤LINGO ⾼效的求解器可快速求解并分析结果。
1.LINGO快速⼊门当你在windows下开始运⾏LINGO系统时,会得到类似下⾯的⼀个窗⼝:外层是主框架窗⼝,包含了所有菜单命令和⼯具条,其它所有的窗⼝将被包含在主窗⼝之下。
在主窗⼝内的标题为LINGO Model – LINGO1的窗⼝是LINGO的默认模型窗⼝,建⽴的模型都都要在该窗⼝内编码实现。
下⾯举两个例⼦。
例1.1 如何在LINGO中求解如下的LP问题:在模型窗⼝中输⼊如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击⼯具条上的按钮即可。
例1.2 使⽤LINGO软件计算6个发点8个收点的最⼩费⽤运输问题。
产销单位运价如下表。
使⽤LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!⽬标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这⾥是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击⼯具条上的按钮即可。
目录第一章引言······························································ 1.1 优化模型的基本概念·······································1.1.1 优化模型的一般形式··································1.1.2 可行解与最优解······································1.1.3 优化模型的基本类型···································1.2 优化问题的建模实例·········································1.2.1 线性规划模型··········································1.2.2 二次规划模型··········································1.2.3 非线性规划模型·········································1.2.4 整数规划模型···········································1.2.5 其他优化模型···········································1.3 LINDO/LINGO软件简介········································1.3.1 LINDO/LINGO软件的基本功能···························1.3.2 LINDO/LINGO软件的求解过程···························1.3.3 建立LINDO/LINGO优化模型需要注意的几个基本问题·······习题1··························································第二章 LINDO软件的基本使用方法··································2.1LINDO入门··················································2.1.1LINDO软件的安装过程··································2.1.2编写一个简单的LINDO程序······························2.1.3一些注意事项···········································2.2敏感性分析··················································2.3整数线性规划的求解··········································*2.4 二次规划的求解··············································*2.5 LINDO的主要菜单命令········································2.5.1 文件主菜单·············································2.5.2 编辑主菜单·············································2.5.3 求解主菜单·············································2.5.4 报告主菜单············································*2.6 LINDO命令窗口··············································2.6.1 INFORMATION(信息类命令)·····························2.6.2 INPUT(输入类命令)····································2.6.3 DISPLAY(显示类命令)··································2.6.4 OUTPUT(输出类命令)···································2.6.5 SOLUTION(求解类命令)·································2.6.6 PROBLEM EDITING(编辑类命令)·······················2.6.7 QUIT(退出类命令)······································2.6.8 INTEGER,QUADRATIC,AND PARAMETRIC PROGRAMS(整数,二次与参数规划命令)····························2.6.9CONVERSATIONAL PARAMETERS(对话类命令)··········2.6.10 USER SUPPLIED ROUTINES(用户过程类命令)·········2.6.11 MISCELLANEOUS(其他命令)···························*2.7 LINGO命令脚本文件·······································附录 MPS格式数据文件········································习题2·························································第三章 LINGO软件的基本使用方法··································3.1LINGO入门···············································3.1.1LINGO软件的安装过程和主要特色··················3.1.2在LINGO中使用LINGO模型·······················3.1.3编写一个简单的LINGO程序························3.2在LINGO中使用集合······································3.2.1集合的基本用法和LINGO模型的基本要素············3.2.2基本集合与派生集合·······························3.2.3稠密集合与稀疏集合·······························3.2.4集合的使用小结···································3.3运算符和函数·············································3.3.1运算符及优先级···································3.3.2基本的数学函数···································3.3.3集合循环函数·····································3.3.4集合操作函数·····································3.3.5变量定界函数·····································3.3.6财务会计函数·····································3.3.7概率论中的相关函数·······························3.3.8文件输入输出函数·································3.3.9结果报告函数·····································3.3.10其他函数·········································3.4LINGO的主要菜单命令·····································3.4.1文件主菜单·······································3.4.2编辑主菜单·······································3.4.3LINGO系统(LINGO)主菜单·······················3.5LINGO命令窗口···········································习题3························································第四章 LINGO软件与外部文件的接口································4.1 通过WINDOWS剪贴板传递数据···························4.1.1粘贴命令的用法·······························4.1.2特殊粘贴命令的用法······························4.2通过文本文件传递数据···································4.2.1通过文本文件输入数据····························4.2.2通过文本文件输出数据····························4.3通过电子表格文件传递数据·································4.3.1在LINGO中使用电子表格文件的数据················4.3.2将LINGO模型嵌入、链接到电子表格文件中···········4.4LINGO命令脚本文件·······································附录 LINGO出错信息··········································习题4························································第五章生产与服务运作管理中的优化问题·······························5.1 生产与销售计划问题·······································5.1.1 问题实例·········································5.1.2 建立模型·········································5.1.3 求解模型·········································5.2 有瓶颈设备的多级生产计划问题·····························5.2.1 问题实例·········································5.2.2 建立模型·········································5.2.3 求解模型·········································5.3 下料问题················································5.3.1 钢管下料问题·····································5.3.2 易拉罐下料问题···································5.4 面试顺序与消防车调度问题································5.4.1 面试顺序问题·····································5.4.2 消防车调度问题···································5.5 飞机定位和飞行计划问题··································5.5.1 飞机的精度定位问题·······························5.5.2 飞机计划问题·····································习题5························································第六章经济与金融中的优化问题·····························.6.1经济均衡问题及应用······································6.1.1单一生产商、单一消费者的情形······················6.1.2两个生产商、两个消费者的情形······················6.1.3拍卖与投标问题···································6.1.4交通流均衡问题···································6.2投资组合问题············································6.2.1基本的投资组合模型·······························6.2.2存在无风险资产时的投资组合模型···················6.2.3考虑交易成本的投资组合模型·······················6.2.4利用股票指数简化投资组合模型·····················6.2.5其他目标下的投资组合模型·························6.3市场营销问题············································6.3.1新产品的市场预测·································6.3.2产品属性的效用函数·······························6.3.3机票的销售策略···································习题6························································第七章图论与网络模型······································7.1运输问题与转运问题······································7.1.1运输问题········································7.1.2指派问题·········································7.1.3转运问题········································7.2最短路问题和最大流问题··································7.2.1最短路问题·······································7.2.2最大流问题······································7.2.3最小费用最大流问题······························。
lingo11课程设计一、教学目标本课程的教学目标是让学生掌握lingo11的基本概念和应用,包括其语法、功能和操作方法。
学生应该能够熟练地使用lingo11进行简单的编程和问题求解。
此外,学生还应该通过学习本课程,培养逻辑思维能力、问题解决能力和创新意识。
具体来说,知识目标包括:1.理解lingo11的基本语法和结构。
2.掌握lingo11的基本数据类型和运算符。
3.学会使用lingo11进行简单的输入输出操作。
4.理解lingo11的控制语句和函数。
技能目标包括:1.能够使用lingo11编写简单的程序,解决实际问题。
2.能够阅读和理解lingo11程序代码。
3.能够对lingo11程序进行调试和优化。
情感态度价值观目标包括:1.培养学生的团队合作意识和沟通能力。
2.培养学生的创新意识和问题解决能力。
3.培养学生的自主学习能力和持续学习的意识。
二、教学内容本课程的教学内容主要包括lingo11的基本概念、语法和应用。
具体的教学大纲如下:1.引言:介绍lingo11的发展历程和应用领域,激发学生的学习兴趣。
2.基本语法:介绍lingo11的基本语法和结构,包括数据类型、变量、运算符等。
3.输入输出操作:讲解lingo11的输入输出操作,包括文件的读写和图形界面的设计。
4.控制语句:讲解lingo11的控制语句,包括条件语句、循环语句等。
5.函数:讲解lingo11的函数,包括用户自定义函数和内建函数。
6.编程实践:通过实际案例和项目,让学生运用lingo11解决实际问题。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。
包括:1.讲授法:教师通过讲解lingo11的基本概念和语法,引导学生理解相关知识。
2.案例分析法:通过分析实际案例,让学生学会如何使用lingo11解决实际问题。
3.实验法:安排实验课,让学生亲自动手编写程序,培养实际操作能力。
4.小组讨论法:学生进行小组讨论,促进学生之间的交流与合作。
LINGO 使用教程LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
一般来说LINGO 多用于解决大规模数学规划。
用时要注意以下几点:(1)每条语句后必须使用分号“;”结束。
问题模型必须由MODEL 命令开始,END结束。
(2)用MODEL 命令来作为输入问题模型的开始,格式为MODEL :statement (语句)。
(3)目标函数必须由“min =”或“max =”开头。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如model :!6发点8收点运输问题; sets :warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume; endsets !目标函数;min =@sum (links: cost*volume); !需求约束;@for (vendors(J):@sum (warehouses(I): volume(I,J))=demand(J)); !产量约束;@for (warehouses(I):@sum (vendors(J): volume(I,J))<=capacity(I));!这里是数据; data :capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38; cost=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 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end然后点击工具条上的按钮 即可。