lingo基本用法(精华版)20分钟学会

合集下载

lingo教程

lingo教程

lingo教程LINGO是用来求解线性和非线性优化问题的简易工具。

LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。

§1 LINGO 快速入门安装:实验室的所有电脑都已经事先安装好了Lingo 8(或者9,10,11)。

如果要在自己的电脑上安装这个软件,建议从网上下载一个破解版的,按照提示一步一步地安装完毕。

简单例子:当你在windows系统下开始运行LINGO时,会得到类似于下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都要在该窗口内编码实现。

下面举两个例子。

例1 某工厂在计划期内要安排生产I、II两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表所示。

产品I 产品II 设备 1 2 8台时原材料A 4 0 16kg 原材料B 0 4 12kg工厂每生产一件产品I可获利2元,每生产一件产品II可获利3元,问应该如何安排生产计划使该厂获利最多?我们用下面的数学模型来描述这个问题。

设x_1、x_2分别表示在计划期内产品I、II的产量。

因为设备的有效台时是8,这是一个限制产量的条件,所以在确定产品I、II的产量时,要考虑不超过设备的有效台时数,即可用不等式表示为x_1 + 2x_2 <=8 同理,因原材料A、B的限量,可以得到以下不等式4x_1 <=16 4x_2 <=12 该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。

若用z表示利润,这时z=2x_1+3x_2.综合上述,该计划问题可用数学模型表示为:目标函数max z=2x_1+3x_2约束条件x_1+2x_2<=84x_1 <=16 4x_2 <=12 x_1、x_2 >=0 一般来说,一个优化模型将由以下三部分组成:1. 目标函数(Objective Function):要达到的目标。

LINGO的使用方法说明大全

LINGO的使用方法说明大全

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教程(基本语法)
LINGO 教 程
LINGO软件的基本使用方法 软件的基本使用方法
1
LINGO 教 程
内容提要
1. LINGO入门 入门 2.在LINGO中使用集合 在 中使用集合 3. 运算符和函数 4. LINGO的主要菜单命令 的主要菜单命令 5. LINGO命令窗口 命令窗口
2
LINGO 教 程
1. LINGO入门 入门 2.在LINGO中使用集合 在 中使用集合 3. 运算符和函数 1. LINGO入门 入门 4. LINGO的主要菜单命令 的主要菜单命令 5. LINGO命令窗口 命令窗口
选择菜单命令 “File|Open(F3)”, , 可以看到 “打开文 对话框。 件”对话框。 (如 图)

6
L LINGO中使用LINDO模型 中使用LINDO

打开“ 打开“EXAM0201.LTX”文件 (如下图) 文件 如下图)
选择“LINGO|Solve 选择“ (Ctrl+S)”来运行这 ) 个程序( 个程序(运行状态窗口 如右图) 如右图)
通过菜单 “WINDOW| Status Window”看到状态窗 口,可看到最佳目标值 “Best Obj”与问题的上界 “Obj Bound”已经是一样的, 当前解的最大利润与这两个 值非常接近,是计算误差引 起的。如果采用全局最优求 解程序(后面介绍),可以验 证它就是全局最优解。
18
LINGO 教 程
9
• Elapsed Runtime (hh:mm:ss) 求解花费的时间) (求解花费的时间)
• 运行状态窗口
LINGO 教 程 当前模型的类型 :LP,QP,ILP,IQP,PILP, , , , , , PIQP,NLP,INLP,PINLP (以I开头表示 , , , 开头表示 IP,以PI开头表示 开头表示PIP) , 开头表示 ) 当前解的状态 : "Global Optimum", "Local Optimum", "Feasible", "Infeasible“(不可行 不可行), 不可行 "Unbounded“(无界 无界), 无界 "Interrupted“(中断 中断), 中断 "Undetermined“(未确定 未确定) 未确定 当前约束不满足的总量(不是不 当前约束不满足的总量 不是不 满足的约束的个数):实数 实数( 满足的约束的个数 实数(即使 该值=0,当前解也可能不可行, 该值 ,当前解也可能不可行, 因为这个量中没有考虑用上下界 命令形式给出的约束) 命令形式给出的约束)

Lingo的基本使用方法

Lingo的基本使用方法

二. LINGO软件的基本使用方法 LINGO软件的基本使用方法
LINGO软件的求解过程 LINGO软件的求解过程
1. 确定常数 2. 识别类型 LINGO预处理程序 LP QP NLP IP 全局优化(选) 分枝定界管理程序 ILP 线性优化求解程序 IQP INLP
非线性优化求解程序 1、顺序线性规划法(SLP) 2、广义既约梯度法(GRG) (选) 3、多点搜索(Multistart) (选)
Solver Status 窗口
4)计算完成后出现Solution 4)计算完成后出现Solution Report 计算完成后出现 窗口显示模型解的详细信息 显示模型解的详细信息; 窗口显示模型解的详细信息;
Solution Report 窗口
•Global optimal solution found at iteration: 2 Global •Objective value: 7.454545 Objective value: •Variable Value Variable Reduced Cost • x1 1.272727 0.000000 • x2 1.636364 0.000000 •Row Slack or Surplus Dual Price Row •1 7.454545 1.000000 •2 0.9090909E0.000000 0.9090909E-01 •3 0.000000 0.5454545
LINGO
黑龙江八一农垦大学 文理学院数学系 高德宝
学习提纲
一. 优化模型与优化软件简介 二. LINGO软件的基本使用方法 LINGO软件的基本使用方法 三. LINGO程序流程控制和子模型 LINGO程序流程控制和子模型

Lingo的基本使用方法

Lingo的基本使用方法

建模时需要注意的几个基本问题
1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数
如:尽量少使用绝对值、符号函数、多个变量求最大/最小值 、四舍五入、取整函数等 3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y <5 改为x<5y)
4、合理设定变量上下界,尽可能给出变量初始值
目标函数是所有费用的和 约束条件主要有两个:
M I{ 4 N R 0(I) 0 P 4O 5(I) 0 P 2I0 N (I)V } I 1 ,2 ,3 ,4
1)能力限制: R(IP )4,I0 1 ,2 ,3 ,4
2)产品数量的平衡方程:
I( N I ) IV ( N I 1 ) R V ( I ) O P ( I ) D P ( I ) I E , 1 , 2 , 3 , 4 M
5、模型中使用的参数数量级要适当 (如小于103)
第四页,共149页。
1. LINGO入门
内容提要
2.在LINGO中使用集合
3. 运算符和函数
4. LINGO的主要菜单命令
5. LINGO命令窗口
6.习题
第五页,共149页。
1. LINGO入门
1. LINGO入门 2.在LINGO中使用集合 3. 运算符和函数 4. LINGO的主要菜单命令 5. LINGO命令窗口
第二十三页,共149页。
集合及其属性
QUARTERS集合的属性
DEM
RP
OP
INV
1
2
3
4
QUARTERS集合
第二十四页,共149页。
集合元素及集合的属性确定的所有变量
集合QUARTERS 1

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 Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。

LINGO的基本用法精讲

LINGO的基本用法精讲

运 筹 学 实 验
衍生集合的定义四要素: 集合的名称, 对应的初始集合, 集合的元素(可以省略), 集合 的属性(可以没有).
例. 定义集合,表示例3中从第i个货栈到第j个客户的运货量 xij, 和第i个货栈到第j个客户的单位货物运价cij.
LINKS (WH, VD) :C, X;
安 阳 师 范 学 院 数 学 与 统 计 学 院
运 筹 学 实 验
LINGO求解报告:
缩减成本系数 (相差值) 松弛或剩余 影子(对偶) 价格
安 阳 师 范 学 院 数 学 与 统 计 学 院
注: ①最优解中变量的缩减成本系数值自动取零. ②约束条件中, 对于“<=”不等式, 称之为松弛 (Slack). 对于“>=”不等式, 称之为剩余 (Surplus). 不等式左右两边值 相等时, 松弛和剩余的值为0; 如果约束条件无法满足, 则松弛 和剩余的值为负. 含义: 如果该生产线最大生产能力增加1, 能使目标函数值增 加50.
货栈 客户
V1 6 4
V2 2 9
V3 6 5
V4 7 3
V5 4 8
V6 2 5
V7 5 8
V8 9 2
W1 安 阳 师 范 学 院 数 学 与 统 计 学 院 W2
W3
W4 W5 W6
5
7 2 526 来自 517 9 2
9
3 5 2
7
9 7 8
4
2 2 1
3
7 6 4
3
1 5 3
试确定各货栈到各客户处的货物调运数量, 使总的运输费用 最小
用LINGO语句表示为: @FOR(VD(J): @SUM(WH(I): X(I, J)) =DJ(J));

(完整word版)lingo基本用法(精华版)20分钟学会

(完整word版)lingo基本用法(精华版)20分钟学会

Lingo基本用法总结(除集函数部分)LINGO是用来求解线性和非线性优化问题的简易工具。

Lingo免费版可以支持30个未知数,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;然后点击工具条上的按钮即可。

得到如下结果:所以当x1为250,x2为100时目标函数得到最大值.算术运算符Lingo中变量不区分大小写,以字母开头不超过32个字符算术运算符是针对数值进行操作的.LINGO提供了5种二元运算符:^乘方﹡乘/除﹢加﹣减LINGO唯一的一元算术运算符是取反函数“﹣"。

这些运算符的优先级由高到底为:高﹣(取反)^﹡/低﹢﹣运算符的运算次序为从左到右按优先级高低来执行.运算的次序可以用圆括号“()”来改变。

例:在x1+x2〉=350,x1>=100,2*x1+x2<=600的条件下求2*x1+3*x2的最小值在代码窗口中编写min=2*x1+3*x2;x1+x2〉=350;x1>=100;2*x1+x2<=600;然后单击上面菜单lingo菜单下solve键即可.●数学函数标准数学函数:@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)如果x<0返回-1;否则,返回1@floor(x)返回x的整数部分。

lingo基础用法

lingo基础用法

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,Linear Interactive and General Optimizer的缩写,中文名为“交互式的线性和通用优化求解器”,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。

当你在win环境下打开LINGO系统时,会得到如下窗口外层是主框架窗口,包含了所有菜单命令和工具条,其他所有窗口将被包含在主窗口之下。

在模型窗口中输入如下代码min=2x1+3x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮就可以了集集是一群相联系的对象,这些对象也称为集的成员。

一个集可能是一系列产品的特征,称为属性。

LINGO中有两种集:原始集一些最基本的对象派生集一个或多个其他集来定义的,也就是说,它的成员来自于其他已存在的集模型的集部分集部分是LINGO模型的一个可选部分。

在LINGO模型使用集之前,都是以“sets”开始,“endsets”结束,一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中必须使用定义它们定义原始集先声明集的名字可选,集的成员可选,集成员的属性定义一个原始集,语法:setname[ /member_list /] [:attribute_list]集成员不放在集定义中,而后在随后的数据部分来定义sets:students:sex,age;endsetsdata:students,sex,age=John 1 16Jill 0 14endata注意:开头用感叹号(!),末尾用分号(;)表示注释,可跨多行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#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) 如果x<0返回-1;否则,返回1@floor(x) 返回x的整数部分。

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然后点击⼯具条上的按钮即可。

lingo用法

lingo用法

Lingo 是一种专门用于线性规划和整数规划的建模和求解语言。

它提供了一种简洁的方式来描述数学模型,并使用线性规划算法求解这些模型。

下面是Lingo 的一些基本用法示例:
1. 变量定义:
- 定义实数变量:`X = 0.5;`
- 定义整数变量:`INT_VAR Y;`
2. 目标函数定义:
- 最小化目标函数:`MIN = 2*X + 3*Y;`
- 最大化目标函数:`MAX = -X + 4*Y;`
3. 约束条件定义:
- 等式约束:`EQUATION C1: X + Y = 10;`
- 不等式约束:`INEQUATION C2: X >= 5;`
- 范围约束:`5 <= Y <= 20;`
4. 求解模型:
- 使用默认求解器求解:`SOLVE;`
- 指定求解器和参数:`SOLVE WITH LP_METHOD=3;` 以上是Lingo 的一些基本用法示例,实际上,Lingo 还提供了更多的功能和语法,用于描述更复杂的数学模型和问题。

它可以处理
线性规划、整数规划、混合整数规划等多种类型的问题,并提供了丰富的优化算法和工具来求解这些问题。

Lingo软件简单教程

Lingo软件简单教程

派生集是由其它的集来创建。这些集被称为该派生集的父集(原始 集或其它的派生集)。一个派生集既可以是稀疏的,也可以是稠密 的。稠密集包含了父集成员的所有组合(有时也称为父集的笛卡尔 乘积)。稀疏集仅包含了父集的笛卡尔乘积的一个子集,可通过显 式罗列和成员资格过滤器这两种方式来定义。显式罗列方法就是逐 个罗列稀疏集的成员。成员资格过滤器方法通过使用稀疏集成员必 须满足的逻辑条件从稠密集成员中过滤出稀疏集的成员。
4
LP问题在lindo和lingo中不同的输入形式:
Lindo: min 2x1+3x2 st x1+y2>=250 x1>=100 end
Lingo: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 这是LINGO 模型的最基本特征
(1)将目标函数的表示方式从“min”变成 了“min=” (2)“ST”在LINGO 模型中不再需要,所 以被删除了 (3)每个系数与变量间增加了运算符“*” (即乘号不能省略) (4)每行(目标、约束和说明语句)后面 均增加了一个分号“;” (5)模型结束标志“END”也被删除了 (LINGO 中只有当模型以“MODEL:”开 始时才能以“END”结束)。
3
例1 在LINGO中求解如下的LP问题:
min 2 x1 3x 2 s.t. x1 x 2 350 x1 100 2 x1 x 2 600 x1 , x 2 0
然后点击工具条上的按钮 即可。
在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600;

lingo基本语言

lingo基本语言

lingo基本语言今天咱们来聊一聊一种很有趣的东西,叫做Lingo基本语言。

你们知道吗?就好像我们在玩游戏的时候,有游戏规则一样,Lingo也有它自己的规则。

比如说,我们要告诉电脑我们想做什么,就得按照Lingo的规则来表达。

我给你们讲个小故事吧。

有个小朋友叫小明,他特别喜欢画画。

有一天,他发现可以用电脑画画,而且还能让画动起来呢。

但是他不知道怎么告诉电脑他想要画的东西的形状、颜色还有怎么动。

这时候呀,要是他懂Lingo基本语言就好了。

那Lingo基本语言怎么用呢?就像我们说话一样,不过是一种电脑能懂的话。

比如说,我们想画一个红色的圆。

在Lingo里,我们就得用特定的“话”来告诉电脑。

我们可能会说类似“画个圆,颜色是红的”这样的话,当然在Lingo里是有它自己的表达形式的。

再比如说,我们在玩一个小动画制作的游戏。

里面有个小方块,我们想让小方块从左边移到右边。

我们就得用Lingo来告诉电脑这个小方块要怎么移动。

就好像是给小方块下达命令一样。

我们可以想象成我们是小方块的指挥官,Lingo就是我们的指挥语言。

有一次,我在电脑上做一个小项目,就像做一个自己的小世界。

我想在这个小世界里有好多好多的小花。

我就用Lingo基本语言来告诉电脑,我想要小花的样子,它们的颜色,还有它们长在哪里。

我就说“我要好多小花,花瓣是彩色的,长在绿色的草地上”,当然是用Lingo的方式说啦。

然后电脑就按照我说的,在我的小世界里做出了好多漂亮的小花。

Lingo基本语言还能让我们做很多好玩的东西。

我们可以做自己的小动画,让小动物们在里面跑来跑去。

我们可以让太阳早上慢慢升起来,晚上慢慢落下去。

就像我们是这个小动画世界的创造者一样。

不过呢,学Lingo基本语言也有点像我们学习骑自行车。

刚开始的时候可能会有点难,可能会摔倒。

但是只要我们不断尝试,不断练习,我们就会越来越熟练。

就像我们学会了骑自行车之后,就可以骑得又快又稳,去很多我们想去的地方。

LINGO的基本知识及使用

LINGO的基本知识及使用
有了集合,许多类似的约束条件就可以简化。
下面定义一个简单的集合: SETS: SETS: CARS/car1,car2,car3/:topspeed,price; ENDSETS 其中,CARS是集合名,是一个标记; /car1,car2,car3/是集合中的成员列表(类似 于集合中的元素); topspeed和price则是car1,car2,car3的属性, 如car2的topspeed为180km/h,price为40万; SETS和ENDSETS为LINGO中定义集合域 的关键词。
LINGO中的函数有基本运算符,数学 中的函数有基本运算符, 中的函数有基本运算符 函数,金融函数,变量限定函数等。 函数,金融函数,变量限定函数等。这里我 们看一下集合循环函数,这是lingo中的特色。 中的特色。 们看一下集合循环函数,这是 中的特色 其余函数的使用与该函数一致。 其余函数的使用与该函数一致。
LINDO API: LINDO Application Programming Interface (V2.0) What’s Best!: (SpreadSheet e.g. EXCEL) (V7.0)
一、一个最简单的LP( 一、一个最简单的LP(线性规划)问题
max z = 3 x1 + 5 x2
元素过滤器派生集合中的成员可以省略这时这个集合就是密集也可以显式罗列也就是用类似原始集的方法直接列出只选取集合中的一部分元素用在模型中还可以用元素过滤器筛选
LINGO的基本知识 LINGO的基本知识
美国LINDO公司的主要产品: 公司的主要产品: 美国 公司的主要产品 LINDO: Linear INteractive and Discrete Optimizer LINGO: Linear INteractive General Optimizer (V6.1) (V8.0)

Lingo的基本使用方法

Lingo的基本使用方法
INV(0)10
加上变量的非负约束
注:LINGO中没有数组,只能对每个季度分别定义变量,如正常 产量就要有RP1,RP2,RP3,RP4 4个变量等。写起来就比较麻烦 ,尤其是更多(如1000个季度)的时候。
记四个季度组成的集合QUARTERS={1,2,3,4},它们就是上 面数组的下标集合,而数组DEM,RP,OP, INV对集合QUARTERS中 的每个元素1,2,3,4分别对应于一个值。LINGO正是充分利用 了这种数组及其下标的关系,引入了“集合”及其“属性”的概 念,把QUARTERS={1,2,3,4}称为集合,把DEM,RP,OP, INV 称为该集合的属性(即定义在该集合上的属性)。
当前时间
一个简单的LINGO程序
例1 直接用LINGO来解如下二次规划问题:
Max98x127x72x120.3x1x22x22 1
s.t. x1x2100
2
x12x2
3
x1,x20 为整数
4
输入窗口如下:
程序语句输入的备注:
LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除 注释语句和TITLE语句外的其他语句都是约束条件,因此语句 的顺序并不重要 。 限定变量取整数值的语句为“@GIN(X1)”和“@GIN(X2)”, 不可以写成“@GIN(2)”,否则LINGO将把这个模型看成没有 整数变量。 LINGO中函数一律需要以“@”开头,其中整型变量函数( @BIN、@GIN)和上下界限定函数(@FREE、@SUB、@SLB )与LINDO中的命令类似。而且0/1变量函数是@BIN函数。
因为这个量中没有考虑用上下界 命令形式给出的约束)
运行状态窗口
扩展 的求 解器( 求解 程序) 状态 框
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Lingo基本用法总结(除集函数部分)LINGO是用来求解线性和非线性优化问题的简易工具.Lingo免费版可以支持30个未知数,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;
然后点击工具条上的按钮即可。

得到如下结果:
所以当x1为250,x2为100时目标函数得到最大值。

算术运算符
Lingo中变量不区分大小写,以字母开头不超过32个字符
算术运算符是针对数值进行操作的。

LINGO提供了5种二元运算符:
^乘方﹡乘/除﹢加﹣减
LINGO唯一的一元算术运算符是取反函数“﹣”。

这些运算符的优先级由高到底为:
高﹣(取反)

﹡/
低﹢﹣
运算符的运算次序为从左到右按优先级高低来执行。

运算的次序可以用圆括号“()”
来改变。

例:在x1+x2>=350,x1>=100,2*x1+x2〈=600的条件下求2*x1+3*x2的最小值
在代码窗口中编写
min=2*x1+3*x2;
x1+x2〉=350;
x1〉=100;
2*x1+x2<=600;
然后单击上面菜单lingo菜单下solve键即可。

数学函数
标准数学函数:
@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) 如果x<0返回-1;否则,返回1
@floor(x)返回x的整数部分。

当x>=0时,返回不超过x的最大整数;
当x〈0时,返回不低于x的最大整数.
最大最小函数:
@smax(x1,x2,…,xn)返回x1,x2,…,xn中的最大值
@smin(x1,x2,…,xn)返回x1,x2,…,xn中的最小值
边界限定函数:
@bin(x) 限制x为0或1
@bnd(L,x,U) 限制L≤x≤U
@free(x)取消对变量x的默认下界为0的限制,即x可以取任意实数@gin(x) 限制x为整数
辅助函数
1.@if(logical_condition,true_result,false_result)
@if函数将评价一个逻辑表达式logical_condition,如果为真,返回true_ result,否则返回false_result
在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。

@free取消了默认的下界为0的限制,使变量也可以取负值。

@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。

例:求x1^2+3*x2-x1*x2+e^x3在 x1+x2>=350;x1+x3〈50;2*x1+x2+x3<=600;x1只能取0或1;x2为整数的条件下的最小值。

在代码窗口中编写
min=x1^2+3*x2—x1*x2+@exp(x3);
x1+x2>=350;
x1+x3〈50;
2*x1+x2+x3<=600;
@bin(x1);@gin(x2);
以上是lingo最基本的用法
●逻辑运算符
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#
例4。

2 逻辑运算符示例
2 #gt#
3 #and#
4 #gt# 2,其结果为假(0)。

●模型求解状态
@status()
返回LINGO求解模型结束后的状态:
0 Global Optimum(全局最优)
1 Infeasible(不可行)
2 Unbounded(无界)
3 Undetermined(不确定)
4 Feasible(可行)
5 Infeasible or Unbounded(通常需要关闭“预处理”选项后重新求解模型,以确定模型究竟是不可行还是无界)
6 Local Optimum(局部最优)
7 Locally Infeasible(局部不可行,尽管可行解可能存在,但是LINGO并没有找到一个)
8 Cutoff(目标函数的截断值被达到)
9 Numeric Error(求解器因在某约束中遇到无定义的算术运算而停止)
通常,如果返回值不是0、4或6时,那么解将不可信,几乎不能用。

该函数仅被用在模型的数据部分来输出数据。

相关文档
最新文档