lingo1
- 格式:ppt
- 大小:964.50 KB
- 文档页数:76


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求解器的需要,并不就是描述问题所必须的.。
1、实验目的和任务1.1熟练掌握Lingo基本操作;1.2.掌握Lingo编程技巧;1.3通过实验进一步掌握运筹学有关方法原理、求解过程,提高学生分析问题和解决问题能力。
2、实验仪器、设备及材料计算机、Lingo3、实验内容3.1 Lingo软件的安装与运行Lingo软件的安装程序一般可以通过网络免费获得,文件大小通常是20M多一点,安装完成前,会出现询问你希望采纳的默认的建模语言对话框,推荐采用LINGO语法。
第一次运行LINGO软件时,系统需要你输入密码,如果你未购买该软件,你可以选择演示版(Demo)。
3.2 Lingo界面启动Lingo软件,屏幕上显示如下图窗口。
最外层的窗口是LINGO软件的主窗口,所有其他窗口都在这个窗口之内。
当前光标所在的窗口上标有“LINGO Model-LINGO1”,这就是模型窗口,也就是输入LINGO优化模型的窗口。
(介绍菜单栏,工具栏,状态行)3.3 编写一个简单的Lingo程序例1. 直接用LINGO来解1.1节的线性规划问题:1、实验目的和任务1.1熟练掌握Lingo基本操作;1.2.掌握Lingo编程技巧;1.3通过实验进一步掌握运筹学有关方法原理、求解过程,提高学生分析问题和解决问题能力。
2、实验仪器、设备及材料计算机、Lingo3、实验内容3.1 Lingo软件的安装与运行Lingo软件的安装程序一般可以通过网络免费获得,文件大小通常是20M多一点,安装完成前,会出现询问你希望采纳的默认的建模语言对话框,推荐采用LINGO语法。
第一次运行LINGO软件时,系统需要你输入密码,如果你未购买该软件,你可以选择演示版(Demo)。
3.2 Lingo界面启动Lingo软件,屏幕上显示如下图窗口。
最外层的窗口是LINGO软件的主窗口,所有其他窗口都在这个窗口之内。
当前光标所在的窗口上标有“LINGO Model-LINGO1”,这就是模型窗口,也就是输入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)。