Lingo

CGC Lv4

lingo编写格式

集合部分(SETS)

SETS开始,以ENDSETS结束
用于定义必要变量
有两类集合

**原始集合:**
其定义格式为:

1
SETENME/member list(or 1..n)/: attribute, attribute, etc.

导出集合
引用其他集合定义的集合 其定义格式为:

1
SENTNAME(set1, set2, etc.): attribute, attribute, etc.

若要在程序中使用数组,则必须在该部分定义

1
2
3
Person/1..10/:A;
Task/1..12/:B;
Link(Person, Task):X;

目标与约束

定义目标函数、约束条件等

数据部分(DATA)

DATA: 开始,以END DATA结束
用于数据的输入
格式为:

1
attribute = value_list

初始化部分(INIT)

INIT: 开始,以END INIT结束
用于对集合属性(数组)定义初值
格式为

1
attribute=value_list

内部函数

@开头\

数学函数

常用数学函数如下

1
2
3
4
5
6
7
8
9
10
11
@ABS(X) 返回绝对值
@COS(X) 返回余弦值
@EXP(X) 返回e指数值
@FLOOR(X) 返回靠近0的整数部分
@LGM(X) 返回Γ函数自然对数值
@LOG(X) 返回x自然对数值
@SIGN(X) 返回符号值 负数为-1 正数为1
@SIN(X) 返回正弦 x为弧度制
@SMAX(X1, X2···, Xn) 返回最大值
@SMIN(X) (X1, X2···, Xn) 返回最小值
@TAN(X) 返回正切值

集合函数

集合函数格式如下

1
set_operator(set_name|condition:expression)

其中set_operator为集合函数名
set_name为数据集合名
condition为表达式
|expression为条件,用逻辑表达式描述(无条件可省略)

逻辑表达式中 有如下运算符

1
2
3
4
5
6
7
8
9
10
#AND# 与
#OR# 或
#NOT# 非

#EQ# 等于
#NE# 不等于
#GT# 大于
#GE# 大于等于
#LT# 小于
#LE# 小于等于

常见集合函数如下:

1
2
3
4
5
6
@FOR(set_name: constraint) 对集合set_name的每个元素独立生成约束 由约束表达式constraint描述
@MAX(set_name: exoression) 返回集合上最大值
@MIN(set_name: exoression) 返回集合上最小值
@SUN(set_name: exoression) 返回集合上的表达式exoression的和
@SIZE(set_name) 返回元素个数
@IN(set_name, set_element) 若set_name中包含set_element则返回1,反之返回0

变量界定函数

变量函数对变量的取值范围的附加限制 由如下四种

1
2
3
4
@BND(L, X, U)限制L≤X≤U
@BIN(X) 限制x为1或0
@FREE(X) 取消对x的符号限制(可取任意实数)
@GIN(X) 限制x为整数值
  • Title: Lingo
  • Author: CGC
  • Created at: 2023-03-14 21:26:36
  • Updated at: 2023-04-09 10:51:53
  • Link: https://redefine.ohevan.com/2023/03/14/Lingo/
  • License: This work is licensed under CC BY-NC-SA 4.0.