在LINGO中的逻辑符号

绝世美人儿
524次浏览
2021年01月17日 16:40
最佳经验
本文由作者推荐

白理成-lilin

2021年1月17日发(作者:邵建初)

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
。该函数在循环、多阶段计划编制中特别 有用。

白理成-lilin


白理成-lilin


白理成-lilin


白理成-lilin


白理成-lilin


白理成-lilin


白理成-lilin


白理成-lilin