lingo总结

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

lingo总结

集(set)

定义原始集的语法规则:集的名字[/集的成员/][:集成员的属性];

注意:用“[]”表示该部分内容可选。

显式的:

1.sets:

students(集的名字)/John ,Jill,Rose ,Mike(集的成员)/:sex,age(集成员的属性);(成员也可以用空格隔开)

Endsets (记得这儿是不用分号的)

2.集成员不放在集定义中,而在随后的数据部分来定义:

sets:

students:sex,age;

endsets

data:

students,sex,age= John 1 16

Jill 0 14

Rose 0 17

Mike 1 13;

enddata

隐式

sets:

students(集的名字)/1..19(集的成员)/:sex,age(集成员的属性);(成员也可以用空格隔开)

Endsets

(不用一一列出所有的成员)

注释是以!开头,以;结束。

有时在定义集时,不写成员,成员在后面再列明。

for example:

max z=3*x1+5*x2

s.t. x1<4

2*x2<12

3*x1+2*x2<=18

一维:

c1*x1+c2*x2+..+cN*xN

sets:

decision/1..n/:c,x;

endsets

@sum(decision(j):c(j)*x(j))

多维:

a11*x1+a12*x2+...+a1n*xn<=b1 .

.

am1*x1+am2*x2+...+amn*xn<=bm decision/1..n/:C,x;

constraint/1..m/:B;

matrix(constraint,decision):A;

C=3 5;

B=4 12 18;

A=1 0

0 2

3 2;

lingo是不区分大小写的

数据的定义:

sets:

decision/1 2/:C,X;

constraint/1..3/:B;

Matrix (constraint,decision):A; endsets;

max=@sum(decision(i):c(i)*x(i));

@for(constraint(i):

@sum(decision(j)):

a(i,j)*x(j))

Data:

c=3,5;

B=4 12 18;

A=1 0

0 2

3 2;

注意项:(1)将目标函数的表示方式从“min”变成了“min=”

(2)“ST”在LINGO 模型中不再需要,所以被删除了

(3)每个系数与变量间增加了运算符“*”(即乘号不能省略)

(4)每行(目标、约束和说明语句)后面均增加了一个分号“;”

(5)模型结束标志“END”也被删除了(LINGO 中只有当模型以“MODEL:”开始时才能以“END”结束)。

逻辑运算符:

这些运算符的优先级由高到低为:

高#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的整数部分。当x>=0时,返回不超过x的最大整数;当x<0时,返回不低于x的最大整数。

@smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值

@smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值

@size(set_name) 返回集的成员个数

@index(set_name,成员名)【有时不用写set_name】返回成员的位置

@in(set_name,@index(...))【index要写set_name 】显示该成员是否在该集中,在,返回1,否则,返回0。

变量界定函数:

@bin(x) 限制x为0或1

@bnd(L,x,U) 限制L≤x≤U

@free(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数

@gin(x) 限制x为整数

min = @smax(f(1),f(2),f(3));(首先求f(i)的最小值,然后求三个最小值中的最大值)

在默认情况下,Lingo规定变量是非负的,也就是说下界为0,上界为+∞。@free取消了默认的下界为0的限制,使变量也可以取负值。@bnd用于设定一个变量的上下界,它也可以取

消默认下界为0的约束。

集循环函数:

@function(setname[(set_index_list)[|conditional_qualifier]]: expression_list);

(1)@function相应于下面罗列的四个集循环函数之一(@for 、@sum、@max、@min);(2)setname是要遍历的集;

(3)set_ index_list是集索引列表;

(4)conditional_qualifier是用来限制集循环函数的范围,当集循环函数遍历集的每个成员时,LINGO都要对conditional_qualifier

相关文档
最新文档