其他分享
首页 > 其他分享> > Lingo

Lingo

作者:互联网

LINGO运算符与函数

常用运算符

  1. 算数运算符
    ^次方, *乘, /除, +加, -减
     
  2. 逻辑运算符

     
  3. 关系运算符
    • = 表达式左右相等
    • <= 表达式左边<=右边
    • >= 表达式右边>=左边

LINGO没有单独的'>' '<',二者出现是会被认为是省略了'='

不同种类运算符混合时的优先级为:单目>双目;算数>逻辑>关系,平级从左到右,括号改变次序。

 

数学函数

 

概率函数



 

集合操作函数

WH/W1..W6/:AI;
LINKS(WH,VD):C,X;

定义集合部分以语句SETS:开始,ENDSETS结束,单独成行且ENDSETS后不加 ';'
 

DATA:
        WI=60,55,51,43,41,52;
	VJ=35,37,22,32,41,32,43,38;
	C=6,2,6,7,4,2,5,9
	  4,9,5,3,8,5,8,2
	  5,2,1,9,7,4,3,3
	  7,6,7,3,9,2,7,1
	  2,3,9,5,7,2,6,5
	  5,5,2,2,8,1,4,3;
ENDDATA

数据初始化以DATA:开始,ENDDAT结束,单独成行。数据间的','与空格可互相替换

 

@FOR(VD(J)|J#NE#5:表达式e) !VD集合的成员序号J!=5时生成约束表达式e;

 

变量定界函数

LINGO默认变量取值为0~INF,变量定界函数用于改变默认状态。

 
@BND函数可以用约束条件代替,但是使用BND函数表达变量的取值范围比使用约束条件速度更快,且函数语句不计入约束条件数目。
(这些是变量界定函数,界定表达式会报错。。。。)
 

文件输入输出函数


 

金融函数

主要用于计算净现值。

 

结果报告函数


 

其他函数

  1. @WAN("文字信息", 逻辑表达式)
    逻辑表达式为TRUE则输出文字信息。
  2. @IF(逻辑表达式,表达式为真时的值,表达式为假时的值)
    常用于表达分段函数
  3. @USER()
    允许用户使用C语言或FORTRAN语言编写并编译函数(obj或dll文件),返回用户函数的计算结果。
     

示例:


MODEL:
	SETS:
		cut_plan/1,2,3/:x; !下料方式,x_i表示第i种下料方式切割钢管的数量;
		units/1,2,3,4/:l,need; !部件,l表示该部件长度,need表示该部件需求量;
		cut_units(cut_plan,units):n; !n_ij表示用第i中下料方式获得的第j种部件的数量;
	ENDSETS

	DATA:
		l=4,5,6,8;
		need=50,10,20,15;
	      ZL=19;
	ENDDATA

	MIN=@SUM(cut_plan:x);
	@FOR(units(j):@SUM(cut_plan(i):n(i,j)*x(i))>need(j));
	!@FOR(cut_plan(i):@BND(16,@SUM(units(j):n(i,j)*l(j)),ZL));
	@FOR(cut_plan(i):@SUM(units(j):n(i,j)*l(j))<=ZL);
	@FOR(cut_plan(i):@SUM(units(j):n(i,j)*l(j))>=16);
	@FOR(cut_plan:@GIN(x));
	@FOR(cut_units:@GIN(n));
END

结果:

Variable Value Reduced Cost
ZL 19.00000 0.000000
X( 1) 10.00000 1.000000
X( 2) 10.00000 1.000000
X( 3) 8.000000 1.000000
L( 1) 4.000000 0.000000
L( 2) 5.000000 0.000000
L( 3) 6.000000 0.000000
L( 4) 8.000000 0.000000
NEED( 1) 50.00000 0.000000
NEED( 2) 10.00000 0.000000
NEED( 3) 20.00000 0.000000
NEED( 4) 15.00000 0.000000
N( 1, 1) 3.000000 0.000000
N( 1, 2) 0.000000 0.000000
N( 1, 3) 1.000000 0.000000
N( 1, 4) 0.000000 0.000000
N( 2, 1) 2.000000 0.000000
N( 2, 2) 1.000000 0.000000
N( 2, 3) 1.000000 0.000000
N( 2, 4) 0.000000 0.000000
N( 3, 1) 0.000000 0.000000
N( 3, 2) 0.000000 0.000000
N( 3, 3) 0.000000 0.000000
N( 3, 4) 2.000000 0.000000

标签:cut,函数,0.000000,units,Lingo,集合,表达式
来源: https://www.cnblogs.com/ShineMiao/p/14122110.html