lingo用法总结
Lingo基本用法总结
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;
Lingo基本用法总结
Lingo基本⽤法总结
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;
lingo用法
lingo用法
Lingo是一种俚语,既可以指代一种特定的语言,也可以是特定领域
内的术语或俚语。它的用法相对灵活,可以根据具体情境进行调整。
首先,lingo这个词最初源自英语,其最常见的意思是指一种特定的
语言或方言。在这个意义上,lingo可以代表任何一种特定的语言,不论
是国际语言还是地方方言。例如,可以说某人操流利的英语,或者他会说
多种方言和lingo。
此外,lingo还可以指代特定领域内的术语或俚语。在不同的行业或
社群中,有许多专业术语和俚语,这些术语和俚语通常被认为是该领域或
社群的lingo。举几个例子,医学界有一些特定的术语,如"CT scan"
(计算机断层扫描)和"gastroenterologist"(胃肠科医生);IT界有
一些俚语,如"bug"(故障)和"hack"(黑客)。
此外,在不同的地区,也会有一些特定的领域内的俚语或术语,这些
也被称为lingo。例如,在美国,有一些特定的俚语和术语仅仅在某个地
区或某个人群中使用,这些俚语和术语可以被称为该地区或人群的lingo。比如,美国西海岸特定的俚语使用频繁,如"hella"(非常)和"gnarly"(厉害)。
在交流中,使用lingo可以增进彼此的亲近感和凝聚力,因为使用者
之间共享相同的术语和俚语。此外,了解并正确运用lingo也可以帮助与
特定群体或领域的人进行更有效的沟通。
然而,值得注意的是,使用lingo时应该遵守适当的场合和人群。在
正式场合或与不熟悉的人交流时,过度使用lingo可能造成误解或隔阂。
因此,在不同的沟通环境中,应根据具体情况灵活运用lingo。
Lingo基本用法总结
Lingo基本用法总结
LINGO是用来求解线性和非线性优化问题的简易工具。Lingo免费版可以支持30个未知数,lingo破解版可以支持几万个未知数、几万个约束条件。
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都
都要在该窗口内编码实现。然后点击工具条上的按钮即可。
算术运算符
Lingo中变量不区分大小写,以字母开头不超过32个字符
算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:
^乘方﹡乘/除﹢加﹣减
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的整数部分。当x>=0时,返回不超过x的最大整数;当
x<0时,返回不低于x的最大整数。
最大最小函数:
@smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值
lingo集合的三种最常用经典用法
lingo集合的三种最常用经典用法
热度11已有392 次阅读2010-8-10 12:24 |个人分类:lingo小经验|
!集合的使用初步,eg供求问题;
MODEL:
SETS:
QUARTERS/1,2,3,4/:DEM,RP,OP,INV;
ENDSETS
MIN=@SUM(QUARTERS:400*RP+450*OP+20*INV);
@FOR(QUARTERS(I):RP(I)<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
!稀疏集合的使用方法, 经典最短路问题,;
model:
sets:
cities/S,A1,A2,A3,B1,B2,C1,C2,T/:L; !cities到城市s的距离,索引使用时自动把S,A1..编成了1,2..;
roads(cities,cities)/
S,A1 S,A2 S,A3
A1,B1 A1,B2 A2,B1 A2,B2, A3,B1 A3,B2
B1,C1 B1,C2 B2,C1 B2,C2
C1,T C2,T/:D;
endsets
data:
D= 6 3 3
6 5 8 6
7 4
6 7 8 9
5 6; !数据段集合的赋值,必须对应集合所有属性,形成一一照应,否则就不要再数据段赋值,在求解段付部分集合的值
也是可以的。;
enddata
L(1)=0; !这里的索引不能用L(S)=0,只能用L(1)=0,或者用L(index(s))=0 ;
lingo用法总结(精品文档)
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的使用方法说明大全
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
LINGO使用大全
录
第一章 引言 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 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.1 LINDO 入门· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 2.1.1 LINDO 软件的安装过程· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 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.9 CONVERSATIONAL PARAMETERS(对话类命令) · · · · · · · · · · 2.6.10 USER SUPPLIED ROUTINES(用户过程类命令) · · · · · · · · · 2.6.11 MISCELLANEOUS(其他命令) · · · · · · · · · · · · · · · · · · · · · · · · · · ·
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的语法规则
Lingo是一种优化建模语言,它遵循一定的语法规则。以下是一些Lingo的语法规则:
1. 变量声明: 在Lingo中,变量需要在使用之前声明。变量可以是连续的实数、整数或者集合。
2. 目标函数: 目标函数是Lingo模型的核心部分,用于表示需要优化的目标。目标函数可以使用MAX或MIN关键字来指定最大化或最小化目标。
3. 约束条件: 约束条件是限制问题解的约束,通常由等式或不等式表示。约
束条件可以包括等式约束、不等式约束和逻辑约束。
4. 集合: Lingo允许使用集合来表示一组变量或一组约束。集合可以用于定
义变量、参数、约束等。
5. 参数: 参数是用于定义模型的数据,可以是数值型或字符型。参数可以在
模型中直接使用,也可以通过集合引用。
6. 运算符: Lingo支持多种运算符,包括算术运算符、逻辑运算符和关系运
算符。运算符的优先级遵循常规的数学规则。
7. 语句格式: Lingo语句通常以分号结尾,每行可以包含多个语句。语句可
以跨行,以提高可读性。
8. 注释: Lingo允许使用注释来解释模型或添加额外信息。注释以“!”开头,可以出现在模型的任何位置。
9. 标号: Lingo允许给语句添加标号,以便在模型中引用或识别特定语句。
标号以方括号开头和结尾,例如[OBJ]。
10. 模型结构: Lingo模型以“MODEL:”开头,以“END”结束。在模型中,可以包含多个目标函数、约束条件、参数等。
以上是Lingo的一些基本语法规则,使用这些规则可以帮助你构建有效的优化模型并解决实际问题。
lingo基础用法
lingo基础用法
Lingo是一种计算机编程语言,它的基础用法包括以下几个方面:
1. 变量声明和赋值:可以使用Lingo语言声明变量,并给变量
赋值。例如:
```
global myVariable -- 声明一个全局变量
put 5 into myVariable -- 将值5赋给变量myVariable
```
2. 条件语句:可以使用条件语句来根据条件执行不同的代码块。例如:
```
if myVariable = 5 then
put "It's five!" into message
answer message
end if
```
3. 循环语句:可以使用循环语句来反复执行特定的代码块。例如:
```
repeat with i = 1 to 10
put i into message
answer message
end repeat
```
4. 函数和命令:Lingo提供了许多内置的函数和命令,可以执行特定的操作。例如:
```
put the date into currentDate -- 获取当前日期
get the long name of sprite 1 -- 获取精灵1的长名称
```
5. 脚本和行为:可以使用Lingo编写脚本和行为,控制多媒体项目的行为。例如:
```
on mouseUp
go to the next frame
end
```
上述是Lingo语言的基础用法,只是其中的一小部分。Lingo 还提供了丰富的功能和特性,包括面向对象编程、多媒体处理等。要更深入地学习和使用Lingo,建议参考Lingo的官方文档或相关教程。
lingo知识点总结
lingo知识点总结
Lingo 是一个用于多媒体和跨平台软件开发的高级编程语言。它以其简单易用,高效快速
的特点,广泛应用于多媒体制作、交互式应用程序开发等领域。Lingo 语言自身也有许多
重要的知识点,包括基本语法、面向对象编程、多媒体处理等内容。在本文中,将对Lingo 的知识点进行总结和介绍,希望能够帮助大家更好地理解和使用 Lingo 语言。
一、基本语法
1. 变量和常量:在 Lingo 语言中,可以通过变量和常量来存储和表示数据。变量是可以改
变数值的,而常量是一旦定义就不可改变的数值。变量和常量的使用可以帮助我们更好地
处理数据和逻辑关系。
2. 数据类型:Lingo 语言支持多种数据类型,包括整型、浮点型、布尔型、字符串等。不
同的数据类型有不同的操作方法和适用范围,熟练掌握数据类型可以帮助我们更好地处理
数据。
3. 运算符:Lingo 语言支持多种运算符,包括算术运算符、比较运算符、逻辑运算符等。
运算符的使用可以帮助我们进行数值计算和逻辑判断。
4. 控制语句:Lingo 语言支持多种控制语句,包括条件语句、循环语句、跳转语句等。控
制语句的使用可以帮助我们控制程序的流程和逻辑。
5. 函数和方法:在 Lingo 语言中,可以通过函数和方法来封装和重用代码。函数和方法的
使用可以帮助我们更好地组织和管理代码。
6. 事件处理:Lingo 语言支持事件处理,可以方便地处理用户输入或系统事件。事件处理
的使用可以帮助我们开发交互式应用程序。
二、面向对象编程
1. 类和对象:在Lingo 语言中,可以通过类和对象来进行面向对象编程。类是对象的模板,对象是类的实例。类和对象的使用可以帮助我们更好地组织和管理代码。
LINGO的基本用法
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, 2, 7, 1
阳
师
2, 3, 9, 5, 7, 2, 6, 5
@FOR有两个参数:集合名和约束表达式
安 这里的集合名表示对该集合所有成员生成对应约束表达式
阳 师
问: 语句中的I, J能不能省略?
范 学 院
6
xij d j , j 1, 2,L ,8;
数
i 1
学 与
用LINGO语句表示为:
统 计
@FOR(VD(J): @SUM(WH(I): X(I, J)) =DJ(J));
范 学
5, 5, 2, 2, 8, 1, 4, 3;
院 数 学
注:
ENDDATA ①数据初始化部分以“DATA:” 开始, 以ENDDATA结束,
与 统
这两个语句必须单独成一行;
计 学
②数据之间的逗号和空格可以替换
院
运 3. 目标函数和约束条件.
筹
学 实 验
68
例2的目标函数:min z
师 范
【目标函数】 max z 200x1 300x2
lingo使用方法
到期的本息合计等于原基金总数M.用S表 示每年用于奖励优秀师生的奖金额,用ai表 示第i年的最优收益比。 目标函数是每年的奖金额最大,即maxS。 约束条件有3个:1)各年度的奖金数额相等; 2)基金总数M;3)n年末保留原基金总额M. 于是得到模型如下:
max S , ai xi = S , i = 1,2, L ,5. 6 s.t. ∑ xi = M i =1 a5 a6 = M
例1 某工厂有两条生产线,分别用来生 产M和P两种型号的产品,利润分别为200 元/个和300元/个,生产线的最大生产能力 分别为每日100和120,生产线每生产一个 M产品需要1个劳动日(1个工人工作8小时 称为1个劳动日)进行调试、检测等工作, 而每个P产品需要两个劳动日,该厂工人每 天共计能提供160劳动日,假如原材料等其 他条件不受限制,问应如何安排生产计划, 才能使获得的利润最大?
(1)原始集合 其定义的格式为: SETNAME/member list(or 1..n)/: attribute,attribute,etc. 其具体含义为:集合的名称/集合内的成员 (即集合中的元素,也可以看作是数组的下 标)/:集合的属性(可以看作是数组)
(2)导出集合 即以原始集合为基础,构成的派生集合。 其定义的格式为: SETNAME(set1,set2,etc.):attribute,attribute, etc. 其具体含义为:集合的名称(引用的原始 集合) :集合的属性。
Lingo基本用法总结
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;
LINGO的基本用法
试确定各货栈到各客户处的货物调运数量, 使总的运输费用 最小
[求解器状态][变量]
[扩展求解器状态]
[约束] [非零系数]
[内存使用量] [已运行时间
14
LINGO 教 程
§1.3 用LINGO编程语言建立模型
一、 LINGO模型的基本组成.
例2.某公司有6个供货栈, 库存货物总数分别为60, 55, 51, 43, 41, 52, 现有8个客户各要一批货, 数量分别为35, 37, 22, 32, 41, 32, 43, 38. 各供货栈到8个客户处的单位货物运输价见下表
22 逻辑运算符优先级别:#NOT#最高, #AND#和#OR#最低
例. 计算 2 #GT# 3 #AND# 4 #GT# 2
LINGO 教 程
结果为 0(Fቤተ መጻሕፍቲ ባይዱLSE)
3. 关系运算符.
关系运算符通常用在条件表达式中,用来指定约束条件表 达式左边与右边必须满足的关系. 有以下三种:
= <= >=
注:①LINGO没有单独的“<”和“>”关系,如果出现了单 个
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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中,当省