lingo用法总结

合集下载

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免费版可以⽀持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还可以指代特定领域内的术语或俚语。在不同的行业或

社群中,有许多专业术语和俚语,这些术语和俚语通常被认为是该领域或

社群的lingo。举几个例子,医学界有一些特定的术语,如"CT scan"

(计算机断层扫描)和"gastroenterologist"(胃肠科医生);IT界有

一些俚语,如"bug"(故障)和"hack"(黑客)。

此外,在不同的地区,也会有一些特定的领域内的俚语或术语,这些

也被称为lingo。例如,在美国,有一些特定的俚语和术语仅仅在某个地

区或某个人群中使用,这些俚语和术语可以被称为该地区或人群的lingo。比如,美国西海岸特定的俚语使用频繁,如"hella"(非常)和"gnarly"(厉害)。

在交流中,使用lingo可以增进彼此的亲近感和凝聚力,因为使用者

之间共享相同的术语和俚语。此外,了解并正确运用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集合的三种最常用经典用法

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用法总结(精品文档)

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的使用方法.

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使用大全

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 是一种专门用于线性规划和整数规划的建模和求解语言。它提供了一种简洁的方式来描述数学模型,并使用线性规划算法求解这些模型。下面是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是一种优化建模语言,它遵循一定的语法规则。以下是一些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基础用法

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 的知识点进行总结和介绍,希望能够帮助大家更好地理解和使用 Lingo 语言。

一、基本语法

1. 变量和常量:在 Lingo 语言中,可以通过变量和常量来存储和表示数据。变量是可以改

变数值的,而常量是一旦定义就不可改变的数值。变量和常量的使用可以帮助我们更好地

处理数据和逻辑关系。

2. 数据类型:Lingo 语言支持多种数据类型,包括整型、浮点型、布尔型、字符串等。不

同的数据类型有不同的操作方法和适用范围,熟练掌握数据类型可以帮助我们更好地处理

数据。

3. 运算符:Lingo 语言支持多种运算符,包括算术运算符、比较运算符、逻辑运算符等。

运算符的使用可以帮助我们进行数值计算和逻辑判断。

4. 控制语句:Lingo 语言支持多种控制语句,包括条件语句、循环语句、跳转语句等。控

制语句的使用可以帮助我们控制程序的流程和逻辑。

5. 函数和方法:在 Lingo 语言中,可以通过函数和方法来封装和重用代码。函数和方法的

使用可以帮助我们更好地组织和管理代码。

6. 事件处理:Lingo 语言支持事件处理,可以方便地处理用户输入或系统事件。事件处理

的使用可以帮助我们开发交互式应用程序。

二、面向对象编程

1. 类和对象:在Lingo 语言中,可以通过类和对象来进行面向对象编程。类是对象的模板,对象是类的实例。类和对象的使用可以帮助我们更好地组织和管理代码。

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使用方法

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是用来求解线性和非线性优化问题的简易工具。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的基本用法
货栈 客户 V1 V2 V3 V4 V5 V6 V7 V8 W1 6 2 6 7 4 2 5 9 W2 4 9 5 3 8 5 8 2 W3 5 2 1 9 7 4 3 3 W4 7 6 7 3 9 2 7 1 W5 2 3 9 5 7 2 6 5 W6 5 5 2 2 8 1 4 3
试确定各货栈到各客户处的货物调运数量, 使总的运输费用 最小
[求解器状态][变量]
[扩展求解器状态]
[约束] [非零系数]
[内存使用量] [已运行时间
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. 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中,当省

相关文档
最新文档