lingo用法总结(精品文档)

合集下载

Lingo 数学软件的使用方法

Lingo 数学软件的使用方法
7
仓库 10 6 7 17 4 12 4 19 4 13 16
客 11 客 12 客 13 客 14 客 15 客 16 客 17 客 18 客 19 客 20
3 6 4 10 12 19 8 7 10 4
2 17 18 19 15 18 16 9 8 8
4 8 16 2 15 11 8 8 3 14
Lingo 数学软件的使用方法
一、Lingo 使用介绍
LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型 的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可快速求解并分析结果。 功能:可以求解非线性规划。也可以做线性规划、整数规划。 特点:运算速度快,允许使用集合来描述大规模的优化问题;
(2) 某仓库供应某客户全部需求量时的运费(单位:万元) 仓库 1 客1 客2 客3 客4 客5 客6 客7 客8 客9 客 10 9 14 6 15 6 19 11 19 4 5 仓库 2 10 16 9 12 8 14 4 20 9 13 仓库 3 2 10 2 18 4 19 8 13 15 9 仓库 4 6 4 1 9 3 3 5 15 6 10 仓库 5 7 10 20 17 7 9 13 16 9 15 仓库 6 15 18 14 18 11 4 20 20 13 1 仓库 7 仓库 8 15 14 20 12 6 15 20 3 1 16 1 1 5 2 2 5 16 8 7 7 仓库 9 18 16 20 18 5 20 8 6 17 20
@SMAX(x1,x2,x3,…,xn)
@FLOOR(x) 最接近 x 的整数 5. 变量定界函数 @BND(L,x,U) @BIN(x) @FREE(x) @GIN(x) 限制 x 的范围 L<=x<=U x为0或1 取消对 x 的限制 x 为整数

lingo基本用法

lingo基本用法

lingo基本用法以下是 9 条关于“lingo 基本用法”的内容:1. 嘿,你知道吗,lingo 里的变量定义可简单啦!就像给东西起个名字一样自然。

比如说,咱要算一堆苹果的数量,那就可以设个变量叫apple_num 呀,这不就清楚明白啦!2. 哇塞,lingo 的约束条件就像是给问题加上规矩。

就好比说,规定一个房间最多能进 10 个人,这就是个约束呀。

比如限制某种资源不能超过多少,lingo 就能很好地处理呢!3. 哎呀呀,lingo 的目标函数那可重要了!这就好比是你要去追求的目标。

比如你想让利润最大化,那目标函数就是让利润相关的表达式达到最大呀!像算怎么卖东西能赚最多钱,lingo 就能帮你找到答案哟!4. 嘿,lingo 的表达式书写也不难呢!就像写个数学式子一样。

比如 2x +3y 这么简单明了。

要计算一些关系,用它来写表达式再合适不过了!5. 哇哦,lingo 里的集合定义多有意思啊!像是把一群相关的东西归到一起。

比如把不同类型的商品归成一个集合,然后对它们进行统一的处理呀,是不是很方便呀?6. 哎呀,lingo 的求解命令一敲,就等着答案出来啦!就像你按下按钮,机器就开始工作一样。

你看,多神奇啊,一下子就知道结果了呢!7. 嘿,lingo 还能处理复杂的数据呢!就像一个聪明的小助手,不管多乱的数据它都能理清楚。

比如算一大堆乱七八糟数字的关系,lingo 绝对能应付得来呀!8. 哇,lingo 的模型建立虽然要动点脑筋,但一旦建好了,那可太好用啦!就跟盖房子一样,辛苦一点,盖好了住着就舒服啦。

你想想,自己建的模型能用起来,多有成就感呀!9. 哎呀呀,掌握了 lingo 的基本用法,那真的是能解决好多问题呢!不管是算数量还是优化方案,都不在话下。

所以呀,还不赶紧去学学,让它为你服。

第3讲LINGO基本使用方法-资料

第3讲LINGO基本使用方法-资料
注意:用“[]”表示该部分内容可选。下同,不再赘述。
2019/10/30
新余学院 建模组
上一页
下一页
Xinyu University MCM
优优优化化化建建建模模模
例语1法可:以定se义tn一a个m名e[为/mstuedmenbts的er原_l始is集t/,][它:a具tt有ri成bu员tJeo_hlni、stJ]i;ll、Rose和Mike
•LINGO中函数一律需要以“”开头,其中整型变量函
数(BIN、GIN)和上下界限定函数(FREE、SUB、
SLB)与LINDO中的命令类似。而且0/1变量函数是
BIN函数。
2019/10/30
新余学院 建模组
上一页
下一页
Xinyu University MCM
输出结果: 运行菜单命令“LINGO|Solve”
4
输入窗口如下:
2019/10/30
新余学院 建模组
上一页
下一页
Xinyu University MCM
程序语句输入的备注:
优优优化化化建建建模模模
•LINGO总是根据“MAX=”或“MIN=”寻找目标函数, 而除注释语句和TITLE语句外的其他语句都是约束条 件,因此语句的顺序并不重要 。
•限定变量取整数值的语句为“GIN(X1)”和 “GIN(X2)”,不可以写成“GIN(2)”,否则LINGO将 把这个模型看成没有整数变量。
目前为止的 迭代次数
当前约束不满足的总量(不是不 满足的约束的个数):实数(即使 该值=0,当前解也可能不可行, 因为这个量中没有考虑用上下界 命令形式给出的约束)
2019/10/30
新余学院 建模组
上一页

LINGO基本用法

LINGO基本用法

LINGO基本用法1、概况 (1)2、LINGO的基本用法 (1)3、用LINGO编程语言建立模型 (2)4、建立LINGO/LINDO优化模型需要注意的几个基本问题 (3)5、对求解结果的分析 (3)LINGO基本用法LINGO是专门用来求解各种规划问题的软件包,其功能十分强大,是求解优化模型的最佳选择。

1、概况LINGO是美国LINDO系统公司开发的求解数学规划系列软件中的一个,它的主要功能是求解大型线性、非线性和整数规划问题,LINGO分为Demo、Solve Suite、Super、Hyper、Industrial、Extended等六种不同版本。

只有Demo版是免费的。

LINGO的不同版本对模型的变量总数,非线性变量的数目,整形变量数目和约束条件的数量作出了不同的限制。

LINGO的主要功能:(1) 既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2) 输入模型简练直观(3) 运行速度快,计算能力强(4) 内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型(5) 将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型(6) 能方便地与Excel,数据库等其他软件交换数据2、LINGO的基本用法通常一个优化模型由下列三部分所组成:(1) 目标函数:一般表示成求某个数学表达式的最大值或最小值。

(2) 决策变量:目标函数值取决于哪些变量(3) 约束条件:对变量附加一些条件限制(通常用等式或不等式表示)注:LINGO默认所有决策变量都非负,因而变量非负条件可以不必输入。

LINGO的语法规定:(1) 求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2) 每个语句必须以分号";"结束,每行可以有多个语句,语句可以跨行;(3) 变量名称必须以字母(A~Z)开头,由字母,数字(0~9)和下划线所组成,长度不超过32个字符,不区分大小写;(4) 可以给语句加上标号,例如[OBJ] MAX= 20*X1+300*X2;(5) 以!开头,以;号结束的语句是注释语句;(6) 如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;(7) LINGO模型以语句“MODEL:”开头,以“END”结束,对于比较简单的模型,这两个语句可以省略。

LINGO简易用法

LINGO简易用法

LINGO 是用来求解线性和非线性运筹学优化问题的简易工具。

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

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

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

下面举两个例子。

例 1.1 如何在LINGO 中求解如下的LP 问题:在模型窗口中输入如下代码:然后点击工具条上的按钮a134 即可。

例 1.2使用LINGO软件计算6个发点8个收点的最小费用运输问题。

产销单位运价如下表。

使用LINGO 软件,编制程序如下:然后点击工具条上的按钮a134 即可。

2、LINGO中的集对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。

LINGO 允许把这些相联系的对象聚合成集(sets)。

一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。

现在我们将深入介绍如何创建集,并用数据初始化集的属性。

学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。

2.1 为什么使用集集是LINGO建模语言的基础,是程序设计最强有力的基本构件。

借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。

2.2 什么是集集是一群相联系的对象,这些对象也称为集的成员。

一个集可能是一系列产品、卡车或雇员。

每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。

属性值可以预先给定,也可以是未知的,有待于LINGO求解。

LINGO 有两种类型的集:原始集(primitive set)和派生集(derived set)。

lingo用法总结(精品文档)

lingo用法总结(精品文档)

ji例程1、model:sets:quarters/1..4/:dem,rp,op,inv;endsetsmin=@sum(quarters:400*rp+450*op+20*inv);@for(quarters(i):rp<=40);@for(quarters(i)|i#gt#1:inv(i)=inv(i-1)+rp(i)+op(i)-dem(i););inv(1)=10+rp(1)+op(1)-dem(1);data:dem=40 60 75 25;enddataend例程2、model:sets:quarters/1..4/:dem,rp,op,inv;endsetsmin=@sum(quarters:400*rp+450*op+20*inv);@for(quarters(i):rp<=40);@for(quarters(i)|i#gt#1:inv(i)=inv(i-1)+rp(i)+op(i)-dem(i););inv(1)=a+rp(1)+op(1)-dem(1);data:dem=40 60 75 25;a=?enddataend•LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除注释语句和TITLE语句外的其他语句都是约束条件,因此语句的顺序并不重要。

•LINGO中函数一律需要以“@”开头•Lingo中的每个语句都以分号结尾•用LINGO解优化模型时已假定所有变量非负(除非用限定变量取值范围的函数@free或@sub或@slb另行说明)。

•以感叹号开始的是说明语句(说明语句也需要以分号结束))•理解LINGO建模语言最重要的是理解集合(Set)及其属性(Attribute)的概念。

•一般来说,LINGO中建立的优化模型可以由5个部分组成,或称为5“段”(SECTION):(1)集合段(SETS):以“ SETS:” 开始,“ENDSETS”结束,定义必要的集合变量(SET)及其元素(MEMBER,含义类似于数组的下标)和属性(ATTRIBUTE,含义类似于数组)。

Lingo使用方法

Lingo使用方法

LINGO早期版本对LINDO的兼容问题
优化建模
从LINDO模型到LINGO模型的实质性转化工作主要在 于以下几个方面(这也是LINGO模型的最基本特征): •将目标函数的表示方式从“MAX”变成了“MAX=”; •“ST”(SubjectTo)在LINGO模型中不需要,被删除; •在系数与变量之间增加运算符“*”(即乘号不能省略); •每行(目标、约束和说明语句)后面增加一个分号“;”; •约束的名字被放到 “[ ]”中,不放在右半括号“)”前; •LINGO中模型以“MODEL:”开始,以“END” 结束。 对简单的模型,这两个语句也可以省略。
优化建模
一个简单的LINGO程序
例 直接用LINGO来解如下二次规划问题:
Max 98x1 + 277x2 − x12 − 0.3x1x2 − 2x22 (1)
s.t. x1 + x2 ≤ 100
(2)
x1 ≤ 2x2
(3)
x1, x2 ≥ 0 为整数
(4)
输入窗口如下:
程序语句输入的备注:
优化建模
优化建模
优化建模与LINDO/LINGO软件
第 3 章 LINGO软件的基本使用方法
[原书相关信息] 谢金星, 薛毅编著, 清华大学出版社, 2005年7月第1版.
/~jxie/lindo
优化建模
LINGO软件的主要特色
两种命令模式 Windows模式: 通过下拉式菜单命令驱动LINGO运 行(多数菜单命令有快捷键,常用的菜单命令有快捷 按钮),图形界面,使用方便; (这里主要介绍这种模式)
Generator Memory Used (K) (内存使 用量)
• Elapsed Runtime (hh:mm:ss) (求解花费的时间)

(完整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的整数部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ji例程1、
model:
sets:
quarters/1..4/:dem,rp,op,inv;
endsets
min=@sum(quarters:400*rp+450*op+20*inv);
@for(quarters(i):rp<=40);
@for(quarters(i)|i#gt#1:
inv(i)=inv(i-1)+rp(i)+op(i)-dem(i););
inv(1)=10+rp(1)+op(1)-dem(1);
data:
dem=40 60 75 25;
enddata
end
例程2、
model:
sets:
quarters/1..4/:dem,rp,op,inv;
endsets
min=@sum(quarters:400*rp+450*op+20*inv);
@for(quarters(i):rp<=40);
@for(quarters(i)|i#gt#1:
inv(i)=inv(i-1)+rp(i)+op(i)-dem(i););
inv(1)=a+rp(1)+op(1)-dem(1);
data:
dem=40 60 75 25;
a=?
enddata
end
•LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除注释语句和TITLE语句外的其他语句都是约束条件,因此语句的顺序并不重要。

•LINGO中函数一律需要以“@”开头
•Lingo中的每个语句都以分号结尾
•用LINGO解优化模型时已假定所有变量非负(除非用限定变量取值范围的函数@free或@sub或@slb另行说明)。

•以感叹号开始的是说明语句(说明语句也需要以分号结束))
•理解LINGO建模语言最重要的是理解集合(Set)及其属性(Attribute)的概念。

•一般来说,LINGO中建立的优化模型可以由5个部分组成,或称为5“段”
(SECTION):
(1)集合段(SETS):以“ SETS:” 开始,“ENDSETS”结束,定义
必要的集合变量(SET)及其元素(MEMBER,含义类似于数
组的下标)和属性(ATTRIBUTE,含义类似于数组)。

属性可以认为是数组名称,集合变量可以认为是数组下表所代
表的意义,集合变量的元素就是数组下标及其个数。

(2)目标与约束段:目标函数、约束条件等,没有段的开始和结束
标记,因此实际上就是除其它四个段(都有明确的段标记)外的
LINGO模型。

这里一般要用到LINGO的内部函数,尤其是与
集合相关的求和函数@SUM和循环函数@FOR等。

(3)数据段(DATA):以“DATA:” 开始, “ENDDATA”结束,对集合
的属性(数组)输入必要的常数数据。

格式为:“attribute(属性) = value_list(常数列表);
”常数列表(value_list)中数据之间可以用逗号“,”分开,也可以用
空格分开(回车等价于一个空格),如上面对DEM的赋值也可以
写成“DEM=40 60 75 25;”。

(4)初始段(INIT):以“INIT: ”开始,“ENDINIT”结束,对集合的
属性(数组)定义初值(因为求解算法一般是迭代算法,所以用户
如果能给出一个比较好的迭代初值,对提高算法的计算效果是
有益的)。

如果有一个接近最优解的初值,对LINGO求解模型是有帮助
的。

定义初值的格式为:“attribute(属性)= value_list(常数列表);”
这与数据段中的用法是类似的。

(5)计算段(CALC):以“CALC: ”开始,“ENDCALC”结束,对
一些原始数据进行计算处理。

在实际问题中,输入的数据通常是原始数据,不一定能在模型
中直接使用,可以在这个段对这些原始数据进行一定的“预处
理”,得到模型中真正需要的数据。

在LINGO模型中,如果想在运行时才对参数赋值,可以在数据段使用输入语句。

但这仅能用于对单个变量赋值,输入语句格式为:“变量名= ?;”。

例如,上例中如果需要在求解模型时才给出初始库存量(记为A),则可以在模型中数据段写上语句:”A = ?;”
1、LINGO中用数字1代表TRUE,其他值(典型的值是0)都是FALSE。

在LINGO中,逻辑运算(表达式)通常作为过滤条件使用,逻辑运算符有9种,可以分成两类:#AND#(与),#OR#(或),#NOT#(非):逻辑值之间的运算,它们操作的对象本身已经是逻辑值或逻辑表达式,计算结果也是逻辑值。

#EQ#(等于),#NE#(不等于),#GT#(大于greater than),#GE#(大于等于),#LT#(小于),#LE#(小于等于):是“数与数之间”的比较,也就是它们操作的对象本身必须是两个数, 计算得到的结果是逻辑值。

2、LINGO中关系运算符有3种:
<(即<=,小于等于),=(等于),>(即>=,大于等于)
(在优化模型中约束一般没有严格小于、严格大于关系)
3、在LINGO中建立优化模型时可以引用大量的内部函数,这些函数以”@” 打头。

LINGO中包括相当丰富的数学函数,这些函数的用法非常简单,下面一一列出。

@ABS(X):绝对值函数,返回X的绝对值。

@COS(X):余弦函数,返回X的余弦值(X的单位是弧度)。

@EXP(X):指数函数,返回e x 的值(其中e=2.718281...)。

@FLOOR(X):取整函数,返回X的整数部分(向最靠近0的方向取整)。

@LGM(X) :返回X的伽玛(gamma)函数的自然对数值(当X为整数时LGM(X) = LOG(X-1)!;当X不为整数时,采用线性插值得到结果)。

@LOG(X):自然对数函数,返回X的自然对数值。

@MOD(X,Y):模函数,返回X对Y取模的结果,即X除以Y的余数,这里X和Y应该是整数。

@SIGN(X):符号函数,返回X的符号值(X < 0时返回-1, X >= 0时返回+1)。

@SIN(X):正弦函数,返回X的正弦值(X的单位是弧度)。

@SMAX(list):最大值函数,返回一列数(list)的最大值。

@SMIN(list):最小值函数,返回一列数(list)的最小值。

@SQR(X):平方函数,返回X的平方(即X*X)的值。

@SQRT(X):开平方函数,返回X的正的平方根的值。

@TAN(X):正切函数,返回X的正切值(X的单位是弧度)。

集合循环函数:
集合上的元素(下标)进行循环操作的函数, 一般用法如下:
@function(setname [ ( set_index_list)[ | condition]] : expression_list);
其中:
function 集合函数名,FOR、MAX、MIN、PROD(元素积)、SUM之一;
Setname 集合名;
set_index_list 集合索引列表(不需使用索引时可以省略);
Condition 用逻辑表达式描述的过滤条件(通常含有索引,无条件时可以省略);expression_list 一个表达式(对@FOR函数,可以是一组表达式。

五个集合函数名的含义:
@FOR(集合元素的循环函数):对集合setname的每个元素独立地生成表达式,表达式由expression_list描述(通常是优化问题的约束)。

@MAX(集合属性的最大值函数):返回集合setname上的表达式的最大值。

@MIN(集合属性的最小值函数):返回集合setname上的表达式的最小值。

@PROD(集合属性的乘积函数):返回集合setname上的表达式的积。

@SUM(集合属性的求和函数):返回集合setname上的表达式的和。

文件输入输出函数:
•@FILE(filename) 当前模型引用其他ASCII码文件中的数据或文本时可以采用该语句(但不允许嵌套使用),其中filename为存放数据的文件名,该文件中记录之间用“~”分开。

•@ODBC 提供LINGO与ODBC(Open Data Base Connection,开放式数据库连接)的接口。

•@OLE 提供LINGO与OLE(Object Linking and Embeding)接口。

•@POINTER( N) 在Windows下使用LINGO的动态连接库DLL ,直接从共享的内存中传送数据。

•@TEXT(['filename']) 用于数据段中将解答结果送到文本文件filename中,当省
略filename时,结果送到标准的输出设备(通常就是屏幕)。

filename中可以带有文件路径,没有指定路径时表示在当前目录,如果这个文件已经存在,将会被覆盖。

1、求和函数的定义方式:
@SUM(集合(下标):关于集合的属性的表达式)。

对语句中冒号“:”后面的表达式,按照“:”前面的集合指定的下标(元素)进行求和。

若对集合中所有元素(即下标)都要求和,则可以将下表i省略。

2、循环函数的定义方式:
@FOR(集合(下标):关于集合的属性的约束关系式) 。

对冒号“:”前面的集合的每个元素(下标),冒号“:”后面的约束关系式都要成立。

对集合中所有元素(即下标)的约束条件相同,则可以将下表i省略。

相关文档
最新文档