Lingo的基本用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LINGO的基本用法

一.集合的基本用法

集合(set)及其属性(attribute)的概念

基本集合与派生集合

集合名[/元素列表/][:属性列表];

集合名(父集合列表)[/元素列表/][:属性列表];

稠密集合与稀疏集合

元素过滤法

基本集合的隐式列举法:

数字型 1..n

字符数字型Car101..Car208

日期型MON..FRI

月份型OCT..JAN

年月型OCT2007..JAN2008

二.模型结构

(1)集合段从“sets:”到“endsets”

(2)数据输入段从“data:”到“enddata”

属性=常数列表

(3)目标和约束段

MIN=表达式

(4)计算段从“calc:”到“endcalc”,对原始数据的计算处理

(5)初始段从“init:”到“endinit”,定义迭代初值用

属性=常数列表

(6)注释从感叹号到分号

三.函数

基本数学函数

@ABS(X) @COS(X) @EXP(X) @FLOOR(X)

@LGM(X) @LOG(X) @MOD(X,Y) @POW(X,Y)

@SIGN(X) @SIN(X) @SMAX(list) @SMIN(list)

@SQR(X) @SQRT(X) @TAN(X)

其中@LGM(X) =ln(X-1)!

集合循环函数

@FOR @MIX @MIN @PROD

@SUM

用法:集合函数名(集合名(集合索引列表)|条件:表达式组)

集合操作函数

@IN @IN(集合名,集合元素名,…集合元素名)

@INDEX @INDEX(集合名,集合元素名)

@WRAP @WRAP(i,N),循环计数

@SIZE @SIZE(集合名)

变量定界函数

@BND(L,X,U) @BIN(X) @FREE(X) @GIN(X) 分别对变量取值限制:上下界,0-1值,取消非负限制,整数

概率分布函数

@PNS(X) 标准正态分布@PSL(X) 正态线性损失

@PBN(P,N,X) 二项分布@PHG 超几何分布

@PTD(N,X) t分布@PFD(N,D,X) F分布

@PPS(A,X) 泊松分布@PPL(A,X) 泊松线性损失

@PCX(N,X) X平方分布@RAND(seed) 随机数

服务系统函数

@PEL(A,X) @PFS(A,X,C) @PEB(A,X)

文件输入输出函数

@FILE(fn) @TEXT(…fn‟) @OLE

结果报告函数

@ITERS() 返回迭代次数

@NEWLINE(n) 输出n个新行

@STRLEN(string) 返回字符串的长度

@NAME(reference) 返回变量名或行名

@WRITE 用于数据段,输出变量,字符串或换行

@WRITEFOR 是@WRITE在循环情况下的推广

@FORMAT 以格式描述符方式输出数值

@DUAL(varname) 返回解答中变量的判别数或结束行的影子价格@STATUS() 返回求解后的最后状态

其他函数

@IF @IF(条件,true结果,false结果)

@WARN @WARN(‘text’,条件)

@USER @USER(用户编写的函数dll或obj文件)

四.文件传输

通过文本文件传输数据

@FILE和@TEXT

通过Excel文件传输数据

@OLE

例题

! 背包问题 Knapsack Problem

! max z=sum(i=1~n)ci xi

! st. sum ai xi <=b, xi=0/1;

model:

title背包问题;

sets:

wp/w1..w8/:a,c,x;

endsets

data:

a=1 3 4 3 3 1 5 10; c=2 9 3 8 10 6 4 10; enddata

max=@sum(wp:c*x);

@for(wp:@bin(x));

@sum(wp:a*x)<=15;

end

!装箱问题

!=======;

model:

title装箱问题;

sets:

wp/w1..w30/:w; xz/v1..v30/:y; links(wp,xz):x; endsets

data:

w=0.51,0.51,0.51,0.51,0.51,0.51,

0.27,0.27,0.27,0.27,0.27,0.27,

0.26,0.26,0.26,0.26,0.26,0.26,

0.23,0.23,0.23,0.23,0.23,0.23,

0.23,0.23,0.23,0.23,0.23,0.23;

enddata

min=@sum(xz(i):y(i));

C=1;

@for(links:@bin(x));

@for(xz:@bin(y));

@for(wp(i):@sum(xz(j):x(i,j))=1);

@for(xz(j):@sum(wp(i):w(i)*x(i,j))<=C*y(j)); end

相关文档
最新文档