运算符
算术运算符
运算符 | 功能 | 说明 |
---|
+ | 加 | - |
- | 减 | - |
* | 乘 | - |
/ | 除 | - |
^ | 根 | 开方也可以写成@sqrt() |
例子
x=2;
y=3*x^10+6/(15-@sqrt(x));
关系运算符
- 无>,<,但lingo会填上=
- 严格的表达a>10可以用:
b=10;
e=0.00001;
a-e>b;
逻辑运算符
分类 | 运算符 | 作用 |
---|
数字之间 | #eq# | equal |
| #ne# | not equal |
| #gt# | greater than 左大于右 |
| #gn# | greater equal 左大于等于右 |
| #lt# | less than 左小于右 |
| #le# | less equal 左小于等于右 |
逻辑式之间 | #not# | 非门 |
| #and# | 与门 |
| #or# | 或门 |
例1
sets:
fac /1..6/:a;
endsets
data:
a=6,5,4,3,2,1;
enddata
y=@sum(fac(i)|i#ge#5:a(i));
例2
sets:
fac /1..6/:a;
endsets
@for(fac(i)|i#ne#3 #and# i#ne#4:a(i)>5);
min=@sum(fac(i):a(i));
函数
数学函数
函数 | 作用 |
---|
@sin(x) | x的正弦值 |
@cos(x) | x的余弦值 |
@tan(x) | x的正切值 |
@log(x) | x的自然对数值 |
@exp(x) |
e
x
e^x
ex |
@sign(x) | x的符号值(x<0返回-1,x≥0返回1) |
集合操作函数
函数 | 作用 |
---|
@for( ) | 循环 |
@sum() | 求和 |
@prod() | 求积 |
@max() | 最大值 |
@min() | 最小值 |
变量定界函数
函数 | 作用 |
---|
@bin(x) | 0-1规划: x只能取0、1 |
@gin(x) | 整数规划:x只能取整数 |
@bnd(a,x,b) | 夹逼定理a≤x≤b |
@free(x) | 扩充x的定义域到R |
例一
@free(x);
@free(y);
min=(x+2)^2+(y-2)^2;
例二
@bnd(1,x,3);
max=x*2;
例三:0-1背包问题
model:
sets:
fac /1..8/:a,b,x;
endsets
data:
a=2,9,3,8,10,6,4,10;
b=1,3,4,3,3,1,5,10;
enddata
max=@sum(fac(i):a(i)*x(i));
@sum(fac(i):b(i)*x(i))<=15;
@for(fac(i):@bin(x(i)));
end