第1讲 Lingo软件入门(2014)

合集下载

lingo入门教程(共55张)

lingo入门教程(共55张)

3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
第18页,共55页。
分析
(fēnxī)
6 A1 5 6
B1 6 C1
S
3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
假设从S到T的最优行驶路线 P 经过城市C1, 则P中从S到C1的子路也一定 是从S到C1的最优行驶路线; 假设 P 经过城市C2, 则P中从S到C2的子路也一定是从S到C2的最优行驶路线. 因此, 为得到从S到T的最优行驶路线, 只需要先求出从S到Ck(k=1,2)的最 优行驶路线, 就可以方便地得到从S到T的最优行驶路线.
第19页,共55页。
分析
(fēnxī)
6 A1 5 6
B1 6 C1
S
3 3
A2
8 67
A3 4
7
B2
8 9
5 C2 6
T
此例中可把从S到T的行驶过程分成4个阶段,即 S→Ai (i=1,2 或3), Ai → Bj(j=1或2), Bj → Ck(k=1或2), Ck → T. 记d(Y,X)为城 市Y与城市X之间的直接距离(若这两个城市之间没有道路直 接相连,则可以认为直接距离为∞),用L(X)表示城市S到城市
L B2 minL A1 5, L A2 6, L A3 4 7 L A3 4; L C1 minL B1 6, L B2 8 15 L B2 8;
略2去),最小运量136.2275(吨公里)。
1
3
5
0
0
1
2
3
4
5
6

参考一:LINGO软件入门

参考一:LINGO软件入门

第7章 LINGO 软件入门7.1 LINGO 软件基本用法7.1.1 LINGO 软件简介:LINGO 软件是一套专门用于求解最优化问题的软件包. LINGO 可用于求解线性规划(LP ),二次规划(QP ),非线性规划(NLP ),整数规划(IP ),动态规划,多目标规划等,特别是对于变量或约束条件较复杂的大规模模型,提供了较好的选择.LINGO 还是最优化问题的一种建模语言,包括许多常用的数学函数可以调用,并可以接受其他数据文件(如文本文件、Excel 电子表格文件、数据库文件等),同时LINGO 提供了与电子表格软件(如Excel 等)的接口,能够直接集成到电子表格中使用.即使对优化方面知识了解不多的用户,也能够方便地建模和输入、有效地求解.7.1.2 LINGO 基本用法:启动LINGO 后,在主窗口上弹出标题为LINGO Model – LINGO1 的窗口,称为LINGO 的模型窗口,建立的模型都要在该窗口内编码实现.例1.求解下列二次规划.22121122121212982770.32;100;2;,;x x x x x x x x x x x x N +---+≤≤∈目标函数约束条件输入模型窗口LINGO1后的形式见下图.请注意以下几点:(1)LINGO总是根据“MAX=”或“MIN=”语句寻找目标函数,而其他语句都是约束条件(除注释语句和TITLE语句),所以语句顺序不重要.(2)LINGO中模型以“MODEL:”开始,以“END”结束.对简单的模型,这俩个语句也可以省略.(3)LINGO模型是由一系列语句组成,每个语句都以分号“;”结尾.(4)LINGO中不分大小写字母;其变量和行名由不超过32个字符(数字和字母)组成,且以字母开头;(5)乘号不能省略,即系数与变量之间要加运算符“*”.(6)“!”开头的是注释行(注释语句),可以省略.(7)“[]”为用户自定义的行号或行名,放在每行之前,可以省略.(8)LINGO中以“@”都是函数调用,@GIN表示变量取正整数.默认情况下,LINGO规定变量是非负的.(我们将在后面详细介绍函数)(9)“TITLE”后加名字,可对此模型命名,可以省略.现在我们用LINGO来解这个模型.点击工具条上的按钮,或从菜单中选择LINGO|Sovle 即可.(若模型编译有错,会有提示)求解时会显示下图:关闭窗口,得到运行结果:Local optimal solution found at iteration:找到最优解时迭代的次数. Objective value:表示所求的最优目标值(11077.50).Variable:变量名Value:最优解中各变量( Variable)的值.Row:约束条件行名.Reduced Cost:当该非基变量增加一个单位时(其他非基变量保持不变)目标函数减少的量(对max型问题)Slack or Surplus:约束对应得松弛变量的值.(第三行取0,对于最优解来讲,第三个约束取等号,为紧约束)Dual Price:对偶价格的值.表示当对应约束有微小变动时,目标函数的变化率,若其数值为X,表示对应约束中不等式右端项若增加一个单位,目标函数将增加X个单位(max 型问题).7.1.3 在LINGO中使用集合:1、LINGO模型的基本组成LINGO也是一种建模语言,称为矩阵生成器,通过集合的引入,它可使输入较大规模问题的过程得到简化.LINGO模型由5段组成:(1)、集合段:是用于定义变量.以“SETS:”开始,以“ENDSETS”结束.定义集合变量,元素,和属性.集合名/元素/:属性元素:类似于数组的下标.属性:定义集合的变量,类似于数组.属性之间必须用逗号或空格隔开.(2)、目标与约束段:定义目标函数,约束条件.(3)、数据段:用于给变量赋值.以“DATA:”开始,以“ENDDATA”结束.对集合的属性(数组)输入必要的常数数据.attribute list(属性)= value_list;(常数列表)(value_list)中数据用逗号或空格隔开.﹡在此段也可引入参数,“变量名=?”,在运行时才对参数赋值.但这仅用于单个变量赋值,而不能用于属性变量(数组).(4)、初始段:以“init:”开始,以“endinit”结束.对集合的属性(数组)定义初值. (5)、计算段:以“CALC:”开始,以“ENDCALA”结束.对一些原始数据进行“预处理”.﹡计算段中语句是顺序执行,不能交换位置.﹡计算段中只能直接使用赋值语句.2、集合的定义:变量使用之前需先定义,而LINGO中的变量是通过集合来定义的,变量皆为向量或由向量生成的二维数组.如:Demand/1..6/:a,b,d :集合名为Demand,共6个元素,a,b,d 为属于此集合的变量,其为含6个元素的向量.Supply/1,2/:x,y,e :集合名为Supply ,共2个元素,x,y,e 为属于此集合的变量,其为含2个元素的向量.————基本集合Link(demand,supply):c :集合link 是由集合demand和 supply生成的新集合,为二维数组,其元素由demand和 supply的笛卡尔积构成,即共6*2=12个元素变量c 即为6*2的矩阵————派生集合现有2料场,位于A (5, 1), B (2, 7),记(xj,yj),j=1,2, 日储量ej 各有20吨.假设从料场到工地之间均有直线道路相连,试制定每天的供应计划,即从A, B 两料场分别向各工地运送多少吨水泥,使总的吨公里数最小.解:设决策变量:ij c (料场j 到工地i 的运量)则其为12维.则规划模型为26221/2112161min [()()].,16,1,2ijji j i j i iji j ijji c xa yb s tcd i ce j ====-+-==≤=∑∑∑∑其LINGO 模型为:(1)集合段:我们定义需求点demand 和供应点supply 两个集合,分别有6个和2个元素,Demand/1..6/:a,b,d ; 其中a 为该集合的属性(变量),表示6个工地位置的横坐标的集合,是一个有6个元素的向量. Supply/1,2/:x,y,e ; 其中x 该集合的属性(变量),表示2个料场位置的横坐标的集合,是一个有2个元素的向量.运送量ij c 的集合是一个6*2 的矩阵,它需要利用集合demand 和supply ,定义一个新集合,定义ij c 为这个新集合的属性:Link(demand,supply):c;(2)数据段:给已知变量赋值.如a,b=1.25,1.25,8.75,0.75,0.5,4.75,5.75,5,3,6.5,7.25,7.75;也可写成a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75;注 LINGO 对数据是按列赋值的,而不是按行.分割数据可用空格,逗号,回车. (3)目标与约束段: 目标函数26221/211min[()()]ijji j i j i c xa yb ==-+-∑∑用LINGO 语句表示为:min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));()11*11*222*12*233*13*21244*14*255*15*266*16*2⎛⎫⎛⎫⎪⎪⎪ ⎪ ⎪ ⎪= ⎪⎪⎪ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪⎝⎭⎝⎭@sum :求和函数.这个函数的功能是对语句中冒号“:”后面的的表达式,按照“:”前面的集合指定的下标进行求和.“@sum ”相当于∑“”,“link(i,j)”相当于“i,j ∈link ”约束条件21.,16ijij s tcd i ===∑用LINGO 语句表示为:@for(demand(i): @sum(supply(j):c(i,j)) =d(i););@for:循环函数.意思是对冒号“:”前面的集合的每个元素(下标),对于“:”后面的约束关系式都要成立.注 @for 和@sum 可以嵌套使用.@free 函数取消了变量x,y 非负限制.(4)初始段:“X ,Y =5,1,2,7;”语句的实际赋值顺序是X=(5,2),Y=(1,7).作为寻找最优解的起始值. 模型如下: MODEL:Title Location Problem; sets:demand/1..6/:a,b,d; supply/1..2/:x,y,e; link(demand,supply):c; endsets data:!locations for the demand(需求点的位置); a=1.25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75;!quantities of the demand and supply (供需量); d=3,5,4,7,6,11; e=20,20; enddata init:!initial locations for the supply (初始点); x,y=5,1,2,7; endinit!Objective function (目标);[OBJ] min=@sum(link(i,j): c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2) ); !demand constraints (需求约束);@for(demand(i): @sum(supply(j):c(i,j)) =d(i);); !supply constraints (供应约束);@for(supply(i): @sum(demand(j):c(j,i)) <=e(i); ); @for(supply: @bnd(0.5,X,8.75); @bnd(0.75,Y,7.75); ); END 运行,得局部最优解X(1)=7.249997,X(2)=5.695940,Y(1)=7.749998,Y(2)=4.928524,,最小运量=89.8835(吨公里).NLP 中局部最优解不一定就是全局最优解,可通过“LINGO|Options|Global Solver|Use Global Solver ”菜单命令激活全局最优求解程序.7.1.4 LING O 的运算符和函数:在此我们主要介绍前六种函数1、算术运算符及其优先级:算术运算符:+(加法),—(减法或负号),*(乘法),/(除法)∧求幂)关系运算符:<(即<=,小于等于),=(等于),>(即>=,大于等于)逻辑运算符:#AND#(与),#OR#(或),#NOT#(非),#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于).结果只有“真”(1)和“假”(0)两个值。

[IT计算机]LINGO教程

[IT计算机]LINGO教程

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

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

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

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

下面举两个例子。

例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。

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

产销单位运价如A3 5 2 1 9 7 4 3 3 51A4 7 6 7 3 9 2 7 1 43A5 2 3 9 5 7 2 6 5 41A6 5 5 2 2 8 1 4 3 52销量 35 37 22 32 41 32 43 38使用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软件学习

Reduced Cost 0.000000 0.000000
Slack or Surplus Dual Price 3360.000 1.000000 0.000000 48.00000 0.000000 2.000000 40.00000 0.000000
20桶牛奶生产A1, 30桶生产A2,利 润3360元。
在LINGO中求解如下的LP问题: 例1 在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的运行按钮 即可。程序
lingo的语法规定
1、求解目标函数的最大值或最小值分别用MAX=… 或者MIN=…来表示; 2、每个语句必须以分号“;”结束,每行可以有多 个语句,语句可以跨行; 3、变量名称必须以字母(A ˜ Z)开头,有字母、 数字(0 ˜ 9)和下划线组成,长度不能超过32个 字符,不区分大小写; 4、可以给语句加上标号; 5、以!开头,以;号结束的语句是注释语句; 6、如果对变量的取值范围没有特殊说明,则默认所 有决策变量都非负; 7、lingo模型以”model”开头,以“end”结束,对 于比较简单的模型,这两个语句可以省略; 点击菜单lingo|solve求解即可
模型求解
Global optimal solution found. Objective value: 3360.000 Total solver iterations: 2
Variable X1 X2 Row 1 2 3 4
Value 20.00000 30.00000
Reduced Cost 0.000000 0.000000
st

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 <=164x_2 <=12该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。

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

第1讲Lingo软件基础学习(2014)

第1讲Lingo软件基础学习(2014)

第1讲Lingo软件入门司守奎烟台市,海军航空工程学院数学教研室Email:sishoukui@1 Lingo软件的基本语法1.1 集合集合部分的语法为sets:集合名称1/成员列表1/:属性1_1,属性1_2,…,属性1_n1;集合名称2/成员列表2/:属性2_1,属性2_2,…,属性2_n2;派生集合名称(集合名称1,集合名称2):属性3_1,…,属性3_n3;endsets例26sets:product/A B/;machine/M N/;week/1..2/;allowed(product,machine,week):x;endsets1.2 数据数据部分的语法为data:属性1=数据列表;属性2=数据列表;enddata1.3 计算计算段部分不能含有变量,必须是已知数据的运算。

calc:b=0;a=a+1;endcalc1.4 模型的目标函数和约束条件这里就不具体给出了,下面通过具体例子给出。

1.5 子模型在LINGO 9.0 及更早的版本中,在每个LINGO 模型窗口中只允许有一个优化模型,可以称为主模型(MAIN MODEL)。

在LINGO 10.0 中,每个LINGO 模型窗口中除了主模型外,用户还可以定义子模型(SUBMODEL)。

子模型可以在主模型的计算段中被调用,这就进一步增强了LINGO 的编程能力。

子模型必须包含在主模型之内,即必须位于以“MODEL:”开头、以“END”结束的模块内。

同一个主模型中,允许定义多个子模型,所以每个子模型本身必须命名,其基本语法是:SUBMODEL mymodel:可执行语句(约束+目标函数);ENDSUBMODEL其中mymodel 是该子模型的名字,可执行语句一般是一些约束语句,也可能包含目标函数,但不可以有自身单独的集合段、数据段、初始段和计算段。

也就是说,同一个主模型内的变量都是全局变量,这些变量对主模型和所有子模型同样有效。

如果已经定义了子模型mymodel,则在计算段中可以用语句“@SOLVE( mymodel);”求解这个子模型。

LINGO教程(PDF)

LINGO教程(PDF)

例 2.3
sets: product/A B/; machine/M N/; week/1..2/; allowed(product,machine,week):x; endsets
LINGO 生成了三个父集的所有组合共八组作为 allowed 集的成员。列表如下: 编号 成员 1 (A,M,1)
共 53 页 4
注意:用“[]”表示该部分内容可选。下同,不再赘述。
Setname 是你选择的来标记集的名字,最好具有较强的可读性。集名字必须严格符合标 准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z) 、下划线、阿拉 伯数字(0,1,…,9)组成的总长度不超过 32 个字符的字符串,且不区分大小写。
LINGO 教程
LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型 的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门
当你在 windows 下开始运行 LINGO 系统时,会得到类似下面的一个窗口:
共 53 页 3
LINGO 教程
MonthM..MonthN MonthYearM..MonthYearN
Oct..Jan Oct2001..Jan2002
Oct,Nov,Dec,Jan Oct2001,Nov2001,Dec2001,Jan2002
③ 集成员不放在集定义中,而在随后的数据部分 数据部分来定义。 数据部分 例 2.2
共 53 页 1
LINGO 教程
A3 A4 A5 A6 销量
5 7 2 5 35
2 6 3 5 37
1 7 9 2 22
9 3 5 2 32

第一讲 初识LINGO

第一讲  初识LINGO

Best Obj Obj Bound Steps
目前为止找到的可行解的最佳 实数 目标函数值 目标函数值的界 实数
特殊求解程序当前运行步数: 非负整数 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序) 有效步数 非负整数
13
Active
⑶“Variables” 表示变量数量(其中包括变量总数、非线性 变量数、整数变量数) ⑷“Constraints” 表示约束数量(约束总数、非线性约束个数) ⑸“Nonzeros” 表示非零系数数量(总数、非线性项的个数) ⑹“Generator Memory Used(K)”
2
LINDO和LINGO软件能求解的优化模型
优化模型
连续优化
整数规划(IP)
线性规划 (LP)
二次规划 (QP)
非线性规划 (NLP) LINGO
3
LINDO
LINDO/LINGO 软件的求解过程
LINDO/LINGO预处理程序 1、确定常数 2、识别类型 IP 全局优化(选) LP NLP 分枝定界管理程序
113求解状态窗口的参数解释求解扩展求解变量数量约束数量非零系数数量内存使用量求解花费的时间12solverstatus为求解器状态框各子项的含义及状态表域名含义可能的显示modelclass当前模型的类型lpqpilpiqppilpnlpinlppinlp以i开头表示ip以pi开头表示pipstate当前解的状态globaloptimumlocaloptimumfeasibleinfeasibleunboundedinterruptedundeterminedobjective目标函数值实数infeasibility当前约束不满足的总量实数即使该值为0当前解也可能不可行因为这个量中没有考虑用上下界形式给出的约束iterations目前为止的迭代次数非负整数13extendedsolverstatus

第1讲 Lingo软件入门

第1讲 Lingo软件入门

1.3 LINGO 软件的基本语法
1.3.1 集合 集合部分的语法为 sets: 集合名称 1/成员列表 1/:属性 1_1,属性 1_2,…,属性 1_n1; 集合名称 2/成员列表 2/:属性 2_1,属性 2_2,…,属性 2_n2; 派生集合名称(集合名称 1,集合名称 2) :属性 3_1,…,属性 3_n3; endsets
1.2
1.2.1 LINGO 的模型窗口
LINGO 软件的界面介绍
求解按钮
图 1.1 LINGO 的模型窗口
模型窗口输入格式要求: (1)LINGO 的数学规划模型包含目标函数、决策变量、约束条件三个要素。 (2)在 LINGO 程序中,每一个语句都必须要用一个英文状态下的分号结束,一个语 句可以分几行输入。 (3)LINGO 的注释以英文状态的!开始,必须以英文状态下的分号结束; (4)LINGO 的变量不区分字母的大小写,必须以字母开头,可以包含数字和下划线,
4
图 1.4 LINGO Options 设置
勾选了 Prices 选项后,运行 LINGO 程序,输出结果窗口中包含灵敏度分析,如图 1.5 所示。
最优目标函数值
第一个约束条件 第三个约束条件
图 1.5 灵敏度分析
目标函数
从结果可知,目标函数的最优值为 3360,决策变量 x1 20, x2 30 。 (1)reduced cost 值对应于单纯形法计算过程中各变量的检验数。 (2)图 1.5 中红色方框表示第二个约束条件,Slack or Surplus 值为 0 表示该约束松弛 变量为 0,约束等号成立,为紧约束或有效约束。蓝色方框表示第三个约束松弛变量为 40, 不等号成立,有剩余。 (3) Dual Price 对应影子价格, 红色方框表示当第一个约束条件右端常数项增加 1 个单 位,即由 50 变为 51 时,目标函数值增加 48,即约束条件 1 所代表的资源的影子价格。蓝 色方框表示,第三个约束条件右端常数项增加 1 个单位时,目标函数值不变。 2.确保最优基不变的系数变化范围 如果想要研究目标函数的系数和约束右端常数项系数在什么范围变化 (假定其他系数保 持不变)时,最优基保持不变。此时需要首先勾选图 1.6 所示的选项。

Lingo教程详解

Lingo教程详解

外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在 主窗口之下。在主窗口内的标题为 LINGO Model – LINGO1 的窗口是 LINGO 的默 认模型窗口,建立的模型都要在该窗口内编码实现。下面举两个例子。 例 1 某工厂在计划期内要安排生产 I、 II 两种产品, 已知生产单位产品所需的 设备台时及 A、B 两种原材料的消耗,如表所示。 产品 I 设备 原材料 A 原材料 B 1 4 0 产品 II 2 0 4 8 台时 16kg 12kg
目标函数 约束条件
max z=2x_1+3x_2 x_1 + 2x_2 <=8 4x_1 <=16 4x_2 <=12 x_1、x_2 >=0
一般来说,一个优化模型将由以下三部分组成: 1. 目标函数(Objective Function) :要达到的目标。 2. 决策变量(Decision variables) :每组决策变量的值代表一种方案。在优化模 型中需要确定决策变量的最优值,优化的目标就是找到决策变量的最优值使 得目标函数取得最优。 3. 约束条件(Constraints) :对于决策变量的一些约束,它限定决策变量可以取 的值。 在写数学模型时,一般第一行是目标函数,接下来是约束条件,再接着是一些非 负限制等。
设 VOLUME_i_j 为从仓库 i 运送到销售地 j 那里的货物量, 那么我们的目 标函数可以表示为: MIN = 6 * VOLUME_1_1 + 2 * VOLUME_1_2 + 6 * VOLUME_1_3 + 7 * VOLUME_1_4 + 4 * VOLUME_1_5 + . . . 8 * VOLUME_6_5 + VOLUME_6_6 + 4 * VOLUME_6_7 + 3 * VOLUME_6_8; 这里我们只列出了 48 个项中的 9 项,输入这么多的数据非常麻烦,而且容易出 错。而运用 Lingo 提供的模型语言则可以很容易的来描述这个目标函数,而且很 容易扩充模型。

lingo入门教程

lingo入门教程

运送量为cij 。
2 6
2
2
MIN f
cij x j ai y j bi
1
j1 i1
2
s.t.
cij di , i 1, 2,L , 6
2
j 1
6
cij ej , j 1, 2
3
i 1
使用现有临时料场时,决策变量只有 c(ij 非负),所以这是LP模型;当为新
建料场选址时决策变量为
c ij

x j , y j,由于目标函数
f对
x ,y
j
j
是非线性的,
所以在新建料场时是NLP模型。先解NLP模型,而把现有临时料场的位置作
为初始解告诉LINGO。
本例中集合的概念
利用集合的概念,可以定义需求点DEMAND和供应点 SUPPLY两个集合,分别有6个和2个元素(下标)。但决 策变量(运送量) cij 与集合DEMAND和集合SUPPLY都 有关系的。该如何定义这样的属性?
输出结果: 运行菜单命令“LINGO|Solve”
最大利润=11077.5
最优整数解 X=(35,65)
一个简单的LINGO程序
LINGO的基本用法的几点注意事项
•LINGO中不区分大小写字母;变量和行名可以超过8个字符,但 不能超过32个字符,且必须以字母开头。 •用LINGO解优化模型时已假定所有变量非负(除非用限定变量取 值范围的函数@free或@sub或@slb另行说明)。 •变量可以放在约束条件的右端(同时数字也可放在约束条件的左 端)。但为了提高LINGO求解时的效率,应尽可能采用线性表达 式定义目标和约束(如果可能的话)。 •语句是组成LINGO模型的基本单位,每个语句都以分号结尾,编 写程序时应注意模型的可读性。例如:一行只写一个语句,按照 语句之间的嵌套关系对语句安排适当的缩进,增强层次感。 •以感叹号开始的是说明语句(说明语句也需要以分号结束))。

《Lingo软件学习》PPT课件

《Lingo软件学习》PPT课件


xij
0或1

j 1, 2, , n, i j i=1,2, ,n, j i i, j 1, 2, n
三、职员时序安排模型
一项工作一周7天都需要有人(比如护士工作),每天 (周一至周日)所需的最少职员数为20、16、13、16、19、 14和12,并要求每个职员一周连续工作5天,试求每周所 需最少职员数,并给出安排。注意这里我们考虑稳定后的 情况。
LINGO中的函数有基本元算符,数学函数,金融函数,变 量限定函数等,全部函数请参照Edit|paste funtion。
算术运算符是针对数值进行操作的。LINGO提供了5种二元运算符:
^ 乘方 ﹡ 乘
/除
﹢加
﹣减
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
68
min z
cij xij
i1 j 1
8

xij ai
i 1, 2, , 6

lingo讲义

lingo讲义

第一章Lingo的基本用法我们遇到的许多优化问题都可以归结为规划问题,如线性规划,非线性规划,二次规划,整数规划,动态规划,多目标规划等;当遇到变量比较多或者约束条件表达式比较复杂的情况时,想用手工求解是不可能的;编程计算虽然可行,但工作量大,程序长而繁琐,需要花费大量的时间和精力,还容易出错。

可行的办法是用现成的软件求解,Lingo是专门求解各种规划问题的软件包,其功能非常强大。

§1Lingo入门Lingo是美国的lindo系统公司开发的求解数学规划系列软件中的一个,它的主要功能是求解大型线性,非线性和整数规划问题。

Lingo的主要功能特色为:(1)既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2)输入模型简练直观;(3)运行速度快,计算能力强;(4)内置建模语言,提供几十个内部函数,从而能以较少语句,以较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转化为Lingo 模型;(6)能方便地与Excel,数据库等其他软件交换数据。

通常,一个优化模型由以下三部分组成:(1)目标函数:一般表示成求某个数学表达式的最大值或最小值。

(2) 决策变量:目标函数值取决于哪些变量。

(3) 约束条件:对变量附加一些条件限制(通常用等式或不等式表示)。

例1:0,6002100350..32min212112121≥≤+≥≥++x x x x x x x t s x x 对于上述的优化模型,在Lingo 的窗口中输入以下的代码:min =2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;注1:Lingo 默认决策变量都非负,因而变量非负条件可以不必输入。

注2:Lingo 默认的文件格式的扩展名为.lg4,这是一种特殊的二进制文件,保存了模型窗口中所有的文本和其他对象以及格式信息,其它几种扩展名分别代表不同类型的文件。

数学软件应用之Lingo课件

数学软件应用之Lingo课件
第1章
计算机基础知识
第二篇
LINGO软件
§1 LINGO 概述 LINGO是一种专门用于求解数学规划问题的软件包。 由于LINGO执行速度快,易于方便地输入、求解和 分析数学规划问题,因此在教学、科研和工业界得 到广泛应用。LINGO主要用于求解线性规划、非线 性规划、二次规划和整数规划等问题,也可以用于 求解一些线性和非线性方程组及代数方程求根等。 LINGO的最新版本为LINGO10.0,但解密版通常为 4.0和5.0版本,本书就以LINGO5.0为参照而编写。
上一页
下一页
返回本章首页 返回本节
第1章
计算机基础知识
3. 查看...(Look...) 从LINGO菜单中选用“Look...”命令或直接按Ctrl+L组合键 可以查看全部的或选中的模型文本内容。 4. 灵敏性分析(Range,Ctrl+R) 用该命令产生当前模型的灵敏性分析报告:研究当目标函数的费用 系数和约束右端项在什么范围(此时假定其它系数不变)时,最优 基保持不变。灵敏性分析是在求解模型时作出的,因此在求解模型 时灵敏性分析是激活状态,但是默认是不激活的。为了激活灵敏性 分析,运行LINGO|Options…,选择General Solver Tab, 在Dual Computations列表框中,选择Prices and Ranges选项。灵敏性分析 耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它。 5. 模型通常形式...(Generate...) 从LINGO菜单中选用“Generate...”命令或直接按Ctrl+G组合 键可以创建当前模型的代数形式、LINGO模型或MPS格式文本。
上一页
下一页
返回本章首页 返回总目录

lingo入门

lingo入门

lingo入门lingo入门教程之一--- 初识lingoingo对于一些线性或者非线性的规划,优化问题非常有效首先介绍一下,在lingo中运行程序时出现的页面(在工具栏点击类似靶子一样的图标便可运行)Solver status:求解器(求解程序)状态框Model Class:当前模型的类型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I开头表示IP,以PI 开头表示PIP)State:当前解的状态:"Global Optimum", "LocalOptimum", "Feasible", "Infeasible“(不可行), "Unbounded “(无界), "Interrupted“(中断), "Undetermined“(未确定)Object:解的目标函数值Infeasibility:当前约束不满足的总量(不是不满足的约束的个数):实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束)Iteration:目前为止的迭代次数Extend solverstatus:扩展的求解器(求解程序)状态框Solver type:使用的特殊求解程序:Bestobj :目前为止找到的可行解的最佳目标函数值Objbound:目标函数值的界Steps:特殊求解程序当前运行步数:Active:有效步数Variables(变量数量):变量总数(T otal)、非线性变量数(Nonlinear)、整数变量数(Integer)。

Constraints(约束数量):约束总数(T otal)、非线性约束个数(Nonlinear)。

Nonzeros(非零系数数量):总数(Total)、非线性项系数个数(Nonlinear)。

GeneratorMemory Used (K) (内存使用量)ElapsedRuntime (hh:mm:ss)(求解花费的时间)运行之后页面介绍(这里的运行界面并不是与上面的运行过程中出现界面一致,即并非来自于同一个程序运行出现)第一行表示在经过457次迭代后得到局部最优解第二行给出该局部最优解的具体值下面给出取局部最优值时,x1 x2的具体取值这里求解的是局部最优解,如果想求出全局最优解,可以进行页面设置:lingo --> option --> global solver --> 勾选use globalsolver对于运行结果也可以另存为,格式一般为ldt,因为有时候对于求解一个问题,或许需要运行很久才可以得出结果,所以没必要每次为了看结果都运行,而是运行成功一次后便把结果保存下来注意事项LINGO总是根据“MAX=”或“MIN=”寻找目标函数;程序语句的顺序一般不重要,既可以随意调换;程序运用函数时都是以@开头;程序中的变量默认为非负数,想要改变变量类型必须有相应函数调整程序中变量不区分大小写;语句必须以分号结尾;注释以!开始,且注释语句后面必须也有分号,注释默认注释到第一个分号处,意思是分号前面会全部被注释掉。

韦琳娜-lingo入门

韦琳娜-lingo入门

LINGO 入门目录目录 (2)1 LINGO基础 (1)1.1 LINGO软件的安装过程 (1)1.2 在LINGO中使用LINDO模型 (1)1.3 编写一个简单的LINGO程序 (2)1.4 敏感性分析 (5)2 在LINGO中使用集合 (8)2.1 集合的基本用法和LINGO模型的基本要素 (8)2.2 基本集合与派生集合 (11)2.3 稠密集合与稀疏集合 (13)2.4 集合的使用小结 (14)3 运算符和函数 (15)4 LINGO软件与外部文件的接口 (16)4.1 通过Windows剪贴板传递数据 (16)4.2 通过文本文件传递数据 (16)4.3 通过Excel电子表格文件传递数据 (17)附录 (19)1 LINGO基础1.1 LINGO软件的安装过程LINGO软件非常容易安装,只需要在Windows操作系统下将安装光盘(或USB盘)插入光驱(或USB接口),运行其中的安装程序(通常是setup.exe)就可以了。

目前从LINDO 系统公司或其他渠道得到的安装程序,多数情况下是一个自解压的可执行性文件(如lingo8.exe,大致是20M左右),可以直接运行这个程序进行安装。

LINGO 9.0 for Windows软件安装完成前,会出现一个对话框,询问你希望采纳的默认的建模(即编程)语言,系统推荐的是采用LINGO语法,即选项“LINGO(recommended)”;你也可以选择“LINDO”将LINDO语法作为默认的设置。

安装后你也可以随时通过“LINGO|Options|Interface|File Format”命令来修改默认的建模语言。

第一次运行刚安装的LINGO软件时,系统会弹出一个对话框,要求你输入许可证(licence)。

如果你买的是正版软件,请在密码框中输入LINGO公司提供给你的许可证(如果密码已经被复制(Ctrl+C)到Windows剪贴板中,则可以使用粘贴(Ctrl+V)命令从Windows 剪贴板中将密码拷贝到密码框中),然后按“OK”按钮即可。

LINGO软件的基本使用方法

LINGO软件的基本使用方法

模(即编程)语言,系统推荐的是采用LINGO。安装后
可通过“LINGO|Options|File Format”命令修改缺省
的建模(即编程)语言。
第一次运行时提示输入授权密码,如图:
LINGO软件的主要特色
两种命令模式 Windows模式: 通过下拉式菜单命令驱动LINGO运
行(多数菜单命令有快捷键,常用的菜单命令有快捷
输出结果备注: LINGO是将它作为PINLP(纯整数非线性规划)来求解, 因此找到的是局部最优解。
通过菜单 “WINDOW| Status Window”看到状态窗 口,可看到最佳目标值 “Best Obj”与问题的上界 “Obj Bound”已经是一样的, 当前解的最大利润与这两个 值非常接近,是计算误差引 起的。如果采用全局最优求 解程序(后面介绍),可以验 证它就是全局最优解。
1 2 3 4
输入窗口如下:
程序语句输入的备注:
•LINGO总是根据“MAX=”或“MIN=”寻找目标函数, 而除注释语句和TITLE语句外的其他语句都是约束条 件,因此语句的顺序并不重要 。 •限定变量取整数值的语句为“@GIN(X1)”和 “@GIN(X2)”,不可以写成“@GIN(2)”,否则 LINGO将把这个模型看成没有整数变量。
按钮),图形界面,使用方便;
(这里主要介绍这种模式)
命令行 模式:仅在命令窗口(Command Window)下操 作,通过输入行命令驱动LINGO运行 。
LINGO的文件类型 •.LG4:LINGO格式的模型文件,保存了模型窗口中所 能够看到的所有文本和其他对象及其格式信息;
•.LNG:文本格式的模型文件,不保存模型中的格式信 息(如字体、颜色、嵌入对象等); •.LDT:LINGO数据文件;

1.LINGO软件的基本使用方法

1.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软件的主要特色 软件的主要特色
两种命令模式 Windows模式: 通过下拉式菜单命令驱动 模式: 通过下拉式菜单命令驱动LINGO运 模式 运 多数菜单命令有快捷键, 行(多数菜单命令有快捷键,常用的菜单命令有快捷 按钮),图形界面,使用方便; 按钮),图形界面,使用方便; ),图形界面
(这里主要介绍这种模式 这里主要介绍这种模式) 这里主要介绍这种模式
命令行 模式:仅在命令窗口(Command Window)下操 模式:仅在命令窗口 下操 通过输入行命令驱动LINGO运行 。 作,通过输入行命令驱动 运行
LINGO界面简介 界面简介

lingo教程

lingo教程

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

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

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

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

下面举两个例子。

例1.1 如何在LINGO 中求解如下的LP 问题:0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。

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

产销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 5 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 5 5 2 2 8 1 4 3; enddata end然后点击工具条上的按钮 即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:(1)Lingo中是不区分大小写字符的。
(2)Lingo中数据部分不能使用分式,例如数据部分不能使用1/3。
(3)Lingo中的注释是使用!引导的。
(4)Lingo中默认所有的变量都是非负的。
(5)Lingo中矩阵数据是逐行存储的,Matlab中数据是逐列存储的。
例1使用LINGO软件计算6个产地8个销地的最小费用运输问题。单位商品运价如表1所示。
注:执行一次@file,输入1个记录,记录之间的分隔符为~。
计算的Lingo程序如下
model:
sets:
warehouses/1..6/:e;
vendors/1..8/:d;
links(warehouses,vendors):c,x;
endsets
min=@sum(links:c*x);
@for(vendors(J):@sum(warehouses(I):x(I,J))=d(J));
sets:
warehouses/1.. 6/:e;
vendors/1..8/: d;
links(warehouses,vendors):c,x;
endsets
min=@sum(links:c*x);
@for(vendors(J):@sum(warehouses(I):x(I,J))=d(J));
@for(warehouses(I):@sum(vendors(J):x(I,J))<=e(I));
在Lingo中,关系运算符主要是被用在模型中来指定一个表达式的左边是否等于、小于等于、或者大于等于右边,形成模型的一个约束条件。关系运算符与逻辑运算符#eq#、#le#、#ge#截然不同,逻辑运算符仅仅判断一个关系是否被满足,满足为真,不满足为假。
Lingo有三种关系运算符:“=”、“<=”和“>=”。Lingo中还能用“<”表示小于等于关系,“>”表示大于等于关系。Lingo并不支持严格小于和严格大于关系运算符。
[obj]min=4*x(1)^3-a*x(1)-2*x(2);
x(1)+x(2)<4;
2*x(1)+x(2)<5;
-x(1)+b*x(2)>2;
endsubmodel
calc:
@for(var1(i):@for(var2(j):a=aa(i);b=bb(j);@solve(sub1); tobj(i,j)=obj;@write(a,' ' ,b,' ',obj,@newline(1))));
派生集合名称(集合名称1,集合名称2):属性3_1,…,属性3_n3;
endsets
例26
sets:
product/A B/;
machine/M N/;
week/1..2/;
allowed(product,machine,week):x;
endsets
1.2 数据
数据部分的语法为
data:
属性1=数据列表;
(2)函数@WRITE和@WRITEFOR
函数@WRITE和@WRITEFOR在LINGO9.0用在程序的数据段(DATA)方便用户控制输出格式,所输出的变量的取值是程序运行结束后最后结果的相关数据,并且输出必须定向到@TEXT函数,即通过@TEXT函数输出到缺省的输出设备(通常就是报告窗口)或文本文件。LINGO10.0中,这两个函数也是为了方便用户控制输出格式,但它们还可以出现在计算段(CALC)随时输出中间结果,并且不需要使用@TEXT函数,输出的结果也是被定向到缺省的输出设备(通常就是标准的报告窗口)。如果希望改变缺省的输出设备,可以采用@DIVERT函数。
表1单位商品运价表
单位运价销地
产地
B1
B2
B3
B4
B5
B6
B7
B8
产量
A1
6
2
6
7
4
2
5
9
60
A2
4
9
5
3
8
5
8
2
55
A3
5
2
1
9
7
4
3
3
51
A4
7
6
7
3
9
2
7
1
43
A5
2
3
9
5
7
2
6
5
41
A6
5
5
2
2
8
1
4
3
52
销量
35
37
22
32
41
32
43
38
解设 表示产地Ai运到销地Bj的量, 表示产地Ai到销地Bj的单位运价, 表示销地Bj的需求量, 表示产地Ai的产量,建立如下线性规划模型
Lingo具有9种逻辑运算符
#not#否定该操作数的逻辑值,#not#是一个一元运算符。
#eq#若两个运算数相等,则为true;否则为false。
#ne#若两个运算符不相等,则为true;否则为false。
#gt#若左边的运算符严格大于右边的运算符,则为true;否则为false。
#ge#若左边的运算符大于或等于右边的运算符,则为true;否则为false。
data:
e=@ole(sdata3.xls);
d=@ole(sdata3.xls);
c=@ole(sdata3.xls,cc);!Excel中不允许使用域名“c”,对应的数据块定义成“cc”;
@ole(sdata.xls)=x;
enddata
end
例2Lingo中的子模型
求解下列最小值问题

把完整的一个数学规划问题作为一个子模型的Lingo程序:
model:
sets:
var1/1..5/:aa;
var2/1..4/:bb;
var3/1 2/:x;
link(var1,var2): tobj;
endsets
data:
aa=0 1 2 3 4;
bb=2 4 6 7;
@text('sdata4.txt')=@table(tobj);
enddata
submodelsub1:
!需求约束;
@for(vendors(J):@sum(warehouses(I):x(I,r(warehouses(I):@sum(vendors(J):x(I,J))<=e(I));
!下面是数据;
data:
e=60 55 51 43 41 52;
d=35 37 22 32 41 32 43 38;
2.6 集循环函数
@for:该函数用来产生对集成员的约束。
@sum:该函数返回遍历指定的集成员的一个表达式的和。
@min和@max:返回指定的集成员的一个表达式的最小值或最大值。
2.7其他函数
(1)函数@TABLE
该函数以表格形式输出与集合和集合的属性相关的数据,并且只能在数据段(DATA)中使用。目前该函数仅用于将数据输出到结果报告窗口或文本文件中,而不能输出到数据库或电子表格(EXCEL)文件中。也就是说,只能输出到@TEXT函数,而不能输出到@OLE和@ODBC函数。
enddata
end
其中纯文本数据文件sdata.txt中的数据格式如下
60 55 51 43 41 52~ !~是记录分割符,该第一个记录是产量;
35 37 22 32 41 32 43 38~ !该第二个记录是需求量;
6 2 6 7 4 2 9 5
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
2.5 变量界定函数
变量界定函数实现对变量取值范围的附加限制,共4种
@bin(x)限制x为0或1;
@bnd(L,x,U)限制L≤x≤U;
@free(x)取消对变量x的默认下界为0的限制,即x可以取任意实数;
@gin(x)限制x为整数。
在默认情况下,Lingo规定变量是非负的,也就是说下界为0,上界为+∞。@free取消了默认的下界为0的限制,使变量也可以取负值。@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。
2.4 数学函数
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函数的自然对数。
@mod(x,y)返回x除以y的余数。
@for(warehouses(I):@sum(vendors(J):x(I,J))<=e(I));
data:
e=@file(sdata.txt);
d=@file(sdata.txt);
c=@file(sdata.txt);
@text(sdata2.txt)=@table(x);!把计算结果以表格形式输出到外部纯文本文件;
如果已经定义了子模型mymodel,则在计算段中可以用语句“@SOLVE(mymodel);”求解这个子模型。
2 Lingo函数
2.1 算术运算符
^ 乘方
﹡ 乘
/ 除
﹢ 加
﹣ 减
2.2 逻辑运算符
在Lingo中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。
第1讲Lingo软件入门
司守奎
烟台市,海军航空工程学院数学教研室
Email:sishoukui@
相关文档
最新文档