「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」。
Lingo运算符
算术运算
| 符号 | 解释 |
|---|---|
| ^ | 乘方 |
| * | 乘 |
| / | 除 |
| + | 加 |
| - | 减 |
逻辑运算符
| 符号 | 解释 |
|---|---|
| #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#
数学函数
| 函数 | 解释 |
|---|---|
| @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中的最小值 |
变量界定函数
| 函数 | 解释 |
|---|---|
| @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的约束。
循环函数
@for
该函数用来产生对集成员的约束。基于建模语言的标量需要显式输入
每个约束,不过@for函数允许只输入一个约束,然后LINGO自动产生
每个集成员的约束。
@sum
该函数返回遍历指定的集成员的一个表达式的和。
@min和@max
返回指定的集成员的一个表达式的最小值或最大值。
输入输出函数
略
辅助函数
略
金融函数
略
常规线性规划
例题切入:加工奶制品的生产计划
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分析的结果解释