在LINGO中的逻辑符号
绝世美人儿
524次浏览
2021年01月17日 16:40
最佳经验
本文由作者推荐
白理成-lilin
在
LINGO
中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪 些集成
员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。
LINGO
具有9种逻辑运算符:
#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#
例
4.2
逻辑运算符示例
2 #gt# 3 #and# 4 #gt# 2
,其结果为假(
0
)。
4.1.3
关系运算符
在
LINGO
中,关 系运算符主要是被用在模型中,来指定一个表达式的左边是否等于、小于
等于、
或者大于等于右 边,
形成模型的一个约束条件。
关系运算符与逻辑运算符
#eq#
、
#le#
、
#ge#
截然不同,前者是模型中该关系运算符所指定关系的为真描述,而 后者仅仅判断一个
该关系是否被满足:满足为真,不满足为假。
LINGO
有三种关系运算符:
“=”
、
“<=”
和
“>=”
。
LINGO
中还能用
“<”
表示小于等
11
于关系,
“>”
表示大于等于关系。
LINGO
并不支持严格小于和严格大于关系运算 符。然而,
如果需要严格小于和严格大于关系,比如让
A
严格小于
B
:
A,
那么可以把它变成如下的小于等于表达式:
A+ε<=B
,
这里
ε
是一个小的正数,它的值依赖于模 型中
A
小于
B
多少才算不等。
下面给出以上三类操作符的优先级:
高
#not#
﹣(取反)
^
﹡
/
﹢﹣
#eq# #ne# #gt# #ge# #lt# #le#
#and# #or#
低
<= = >=
4.2
数学函数
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
函数的自然对数
@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.5
变量界定函数
变量界定函数实现对变量取值范围的附加限制,共
4
种:
@bin(x)
限制
x
为
0
或
1
@bnd(L,x,U)
限制
L≤x≤U
@free(x) < br>取消对变量
x
的默认下界为
0
的限制,即
x
可以取任 意实数
@gin(x)
限制
x
为整数
在默认 情况下,
LINGO
规定变量是非负的,也就是说下界为
0
,上界为
+∞
。
@free
取消了
默认的下界为
0
的限制,使变量也 可以取负值。
@bnd
用于设定一个变量的上下界
,
它也可
以取消默 认下界为
0
的约束。
4.6
集操作函数
LINGO
提供了几个函数帮助处理集。
1
.
@in(set
_name,primitive_index_1 [,primitive_index_2,…])
如果元素在指定集中,返回
1
;否则返回
0
。
2
.
@index([set_name,] primitive_set_element)
该函数返回在集
set_name
中原始集成员
primitive_set_element
的索引。如果
set_n ame
被忽略,
那么
LINGO
将返回与
primitive_se t_element
匹配的第一个原始集成员的索引。
如
果找不到,则产生一个错误。
3
.
@wrap(index,limit)
该函数返回
j=index-k*limit
,其中
k
是一个整数,取适当值保证
j< br>落在区间
[1
,
limit]
内。该
函数相当于
in dex
模
limit
再加
1
。该函数在循环、多阶段计划编制中特别 有用。