引言
LINGO是用来解决优化问题的一个特别好用的软件,可以快速求解线性规划、非线性规划、线性和非线性方程组等等,是数学建模中求优化问题的解不可缺少的工具之一。
目录
前言
算术运算符
^ 乘方
﹡ 乘
/ 除
﹢ 加
﹣ 减
逻辑运算符
在 LINGO 中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些 集成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。 LINGO 具有9种逻辑运算符
#not# 否定该操作数的逻辑值,#not#是一个一元运算符。
#eq# 若两个运算数相等,则为 true;否则为 false。
#ne# 若两个运算符不相等,则为 true;否则为 false。
#gt# 若左边的运算符严格大于右边的运算符,则为 true;否则为 false。
#ge# 若左边的运算符大于或等于右边的运算符,则为 true;否则为 false。
#lt# 若左边的运算符严格小于右边的运算符,则为 true;否则为 false。
#le# 若左边的运算符小于或等于右边的运算符,则为 true;否则为 false。
#and# 仅当两个参数都为 true 时,结果为 true;否则为 false。
#or# 仅当两个参数都为 false 时,结果为 false;否则为 true。
数学函数
LINGO 提供了大量的标准数学函数
@abs(x)返回 x 的绝对值。
@sin(x)返回 x 的正弦值,x 采用弧度制。
@cos(x)返回 x 的余弦值。
@tan(x)返回 x 的正切值。
@exp(x)返回常数 e 的 x 次方。
@log(x)返回 x 的自然对数。
@lgm(x)返回 x 的 gamma 函数的自然对数。
@mod(x,y)返回 x 除以 y 的余数。
@sign(x)如果 x0 时返回 1,当 x=0 时返回 0。
@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 的约束。
集循环函数
@for:该函数用来产生对集成员的约束。
@sum:该函数返回遍历指定的集成员的一个表达式的和。
@min 和@max:返回指定的集成员的一个表达式的最小值或最大值。
实例操作概览
model:
sets:
定义集合
endstes
data:
把已知数据输入进去
enddata
把已知模型输入
end
模型如下
注意这里c的数据是4286行24列的数据。
LINGO 输入如下
LINGO 软件的基本语法
集合
集合部分的语法为
sets:
集合名称1/成员列表1/:属性1_1,属性1_2,…,属性1_n1;
集合名称2/成员列表2/:属性2_1,属性2_2,…,属性2_n2;
派生集合名称(集合名称1,集合名称2):属性3_1,…,属性3_n3;
endsets
数据
数据部分的语法为
data:
属性 1= 数据列表;
属性 2= 数据列表;
enddata