作为编程语言,Lingo具备基本的加减乘除运算;

同样也具有封装好的函数实现:循环,求和,求最大(小)值······

基本运算符号

LINGO中的算术运算符有以下5种:

+ 加法- 减法或负号
* 乘法/ 除法

同样还有一个“^”幂次。

逻辑运算符号

在执行循环和求和等函数,需要用到逻辑判断,决定是否进行操作,就需要使用一些逻辑符号。

逻辑值之间的运算

它们操作的对象本身已经是逻辑值或逻辑表达式,计算结果也是逻辑值。

  1. #AND#(与)
  2. #OR#(或)
  3. #NOT#(非)

数与数之间的比较

它们操作的对象本身必须是两个数,计算得到的结果是逻辑值。

  1. #NE#(不等于)
  2. #GT#(大于)
  3. #GE#(大于等于)
  4. #LT#(小于)
  5. #LE#(小于等于)

函数

数学函数

  1. @MOD(X,Y):模函数,返回X对Y取模的结果,即X除以Y的余数,这里X和Y应该是整数。
  2. @POW(X,Y):指数函数,返回X^Y的值。
  3. @SIGN(X):符号函数,返回X的符号值(X < 0时返回-1, X > 0时返回+1, X = 0时返回0 )。
  4. @SIN(X):正弦函数,返回X的正弦值(X的单位是弧度)。
  5. @SMAX(list):最大值函数,返回一列数(list)的最大值。
  6. @SMIN(list):最小值函数,返回一列数(list)的最小值。
  7. @SQR(X):平方函数,返回X的平方(即X*X)的值。
  8. @SQRT(X):开平方函数,返回X的正的平方根的值。
  9. @TAN(X):正切函数,返回X的正切值(X的单位是弧度)。

变量定界函数

  1. @gin(x): 限制 x 为整数
  2. @bin(x): 限制 x 为 0 或 1
  3. @free(x): 取消 x 的非负限制,即x为任意实数
  4. @bnd(L, x, U): 限制 L<= x <= U

if函数

@if(logical_condition,true_result,false_result)

集合循环函数

for函数

@for(s:e)

表示对集合s中的每一个元素均进行操作e。

sum函数

@sum(s,e)

对于集合s的每一个元素,均进行e操作,然后求和。

max函数

@max(s:e)

对于集合s中的每一个元素,均进行e操作,然后取最大值,同理我们又有@min函数。

一个例题:

求向量(5,1,3,4,6,10)前5个数的最小值,后3个数的最大值。

model:
    sets:
       number/1. .6/: x;
    endsets
    data:
       x=5 1 3 4 6 10;
    enddata
  M=@min(number(i)| i #le#5 : x);
  N=@max(number(i)| i #ge#4: x);
end

prob函数

@prod(s,e)

对于集合s中的每一个元素均进行e操作,然后累积。

sets:
	set4/1..10/:y;
endsets
data:
	y=1,2,3,4,5,6,7,8,9,10;
enddata
p = @prod(set4(m):y(m));
ans