Lingo运算符
1.算术运算
^ 乘方
﹡ 乘
/ 除
﹢ 加
﹣ 减
2.逻辑运算符
#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
这些运算符的优先级由高到低为:
高 #not#
#eq# #ne# #gt# #ge# #lt# #le#
低 #and# #or#
3.数学函数
@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中的最小值
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的约束。
5.循环函数
1.@for
该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入
每个约束,不过@for函数允许只输入一个约束,然后LINGO自动产生
每个集成员的约束。
2.@sum
该函数返回遍历指定的集成员的一个表达式的和。
3.@min和@max
返回指定的集成员的一个表达式的最小值或最大值。
6.输入输出函数
略
7.辅助函数
略
8.金融函数
略
常规线性规划
例题切入:加工奶制品的生产计划
1桶牛奶有两种生产方式:(A)12小时/3公斤,获利24元/公斤;(B)8小时/4公斤,获利16元/公斤。
题目需求:50桶牛奶,480小时,至多加工100公斤A。
制定生产计划使每天获利最大。
lingo代码如下:
max=72*a+64*b;!获利函数;
a+b<50;!桶数量约束;
12*a+8*b<480;!时间约束;
3*a<100;!a数量约束;
!非负约束;
a>0;
b>0;
结果的相关注解:
对结果进行range分析的步骤:
- 在lingo中ctrl+I打开option
- 点击general solveer选项卡,将dual computat属性设置为princeses&ranges
- ctrl+r进行range分析
如图设置
range分析的结果解释