lingo入门基本函数及格式

最近在学lingo,感觉上手比较简单,也不知道自己感觉的对不对,哈哈
这是自己在OneNote上记得笔记,在此备份一下
如果有什么问题可以一起交流讨论啊

代码格式

model:

sets:

!此处为集合定义;

endsets

data:

!此处为数据导入;

enddata

calc:

!此处为计算段,专职已知数据的计算处理,不能含有变量;

endcalc

min\max=…; !目标函数;

@for(…); !约束条件;

end

数学函数

@smax(x1,x2,x3…xn)
返回x1,x2,x3…xn

@max() 一般对集循环函数取集里面的最大值

@abs(x) 绝对值

@sin(x)

@cos(x)

@tan(x)

@exp(x)

@log(x)

@mod(x,y)x除以y的余数

@lgm(x) 返回x的gamma函数的自然对数

@sign(x)
如果x<0返回-1,否则返回1

@floor(x)返回x的整数部分

@gin() 取整函数

@sum(setname(i):x(i))

@size(S1)S1为集合的名字,返回集合中元素的个数

约束函数(可结合逻辑函数使用)

@for

用法举例

@for(r(i)|i#ge#2:d(i)>=3)

@for(r(i):@for(c(j):x(i,j)<=y(i,j)));

逻辑运算符一般配合for约束语句使用

逻辑运算符

优先级高

#not# 否定该操作数的逻辑值

优先级中

#eq# 若两个运算数相等,返回true,否则false

#ne# 若两个运算数不相等,返回true,否则false

#gt# 若左边的运算符严格大于右边的运算符,则为true

#ge# 若左边的运算符严格大于等于右边的运算符,则为true

#lt# 若左边的运算符严格小于右边的运算符,则为true

#le# 若左边的运算符严格小于等于右边的运算符,则为true

优先级低

#and# 仅当两个参数都为true时,结果为true

#or# 仅当两个参数都为false时,结果为false

边界限定函数

@bin(x) 限制x为0或1

@bnd(L,x,U)限制L<= x <= U

@free(x) 取消对变量x的默认下界为0的限制

@gin(x) 限制x为整数

辅助函数

@if(logical_condition,true_result,false_result)

评价一个逻辑表达式logical_condition,如果为真,返回true_result,否则返回false_result

你可能感兴趣的:(lingo,lingo,数学建模,函数,优化)