「这是我参与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;

成果的相关注解:

Lingo线性规划教程

对成果进行range剖析的过程

  1. 在lingo中ctrl+I打开option
  2. 点击general solveer选项卡,将dual computat属性设置为princeses&ranges
  3. ctrl+r进行range剖析

如图设置

Lingo线性规划教程

range剖析的成果解说

Lingo线性规划教程