LINGO课件(10)

2019-08-31 09:19

END

例1.7.2;

MODEL: SETS:

cutfa/1,2,3/:X; buj/1..4/:L,NEED; SHUL(cutfa,buj):N; ENDSETS DATA:

L=4 5 6 8;

NEED=50 10 20 15; ZL=19; ENDDATA

MIN=@SUM(cutfa:x);

@FOR(buj(J):@sum(cutfa(I):N(I,J)*X(I))>=NEED(J)); @FOR(cutfa(I):@SUM(buj(J):N(I,J)*L(J))<=ZL); @FOR(cutfa(I):@SUM(buj(J):N(I,J)*L(J))>=16); @FOR(SHUL:@GIN(N)); @FOR(cutfa:@GIN(X)); END

例1.7.3;

MODEL: SETS:

SHC/A1..A6/:AI,X; YF/B1..B5/:BJ; JIAGE(SHC,YF):C; ENDSETS DATA:

AI=2,1,1.8,1.2,2.0,1.2; BJ=6,125,12500,345,5; C=0.45,20,415,22,0.3 0.45,28,4065,5,0.35 0.65,40,850,43,0.6 0.4,25,75,27,0.2 0.5,26,76,48,0.4 0.5,75,235,8,0.6; ENDDATA

MIN=@SUM(SHC:AI*X);

@FOR(SHC(I):@GIN(X(I))); @FOR(SHC(I):X(I)>=1); @SUM(SHC(I):X(I))=14; X(2)<=3;

页 第46

X(4)<=2;

@FOR(SHC(I)|I #NE# 2 #AND# I#NE# 4:X(I)<=4); @FOR(YF(J):@SUM(SHC(I):X(I)*C(I,J))>=BJ(J)); END

例1.7.4(1);

MODEL: SETS:

gd/1..6/:x,y,d; lch/A,B/:px,py,e; links(gd,lch):c; ENDSETS DATA:

X=1.25 8.75 0.5 5.75 3 7.25; Y=1.25 0.75 4.75 5 6.5 7.75; d=3,5,4,7,6,11; px=5,2; py=1,7; e=20,20; ENDDATA

MIN=@sum(links(i,j):c(i,j)*((px(j)-x(i))^2+(py(j)-y(i))^2)^(1/2)); @for(gd(i):@sum(lch(j):c(i,j))=d(i)); @for(lch(j):@sum(gd(i):c(i,j))<=e(j)); END

例1.7.4(2);

MODEL: SETS:

gd/1..6/:x,y,d; lch/A,B/:px,py,e; links(gd,lch):c; ENDSETS DATA:

X=1.25 8.75 0.5 5.75 3 7.25; Y=1.25 0.75 4.75 5 6.5 7.75; d=3,5,4,7,6,11; e=20,20; ENDDATA

MIN=@sum(links(i,j):c(i,j)*((px(j)-x(i))^2+(py(j)-y(i))^2)^(1/2)); @for(gd(i):@sum(lch(j):c(i,j))=d(i)); @for(lch(j):@sum(gd(i):c(i,j))<=e(j)); END

例1.7.5; MODEL: SETS:

页 第47

WORKER/W1..W5/; JOB/J1..J5/;

LINKS(WORKER,JOB):C,X; ENDSETS DATA:

C=8,6,10,9,12, 9,12,7,11,9, 7,4,3,5,8, 9,5,8,11,8, 4,6,7,5,11; ENDDATA

MIN=@SUM(LINKS:C*X);

@FOR(WORKER(I):@SUM(JOB(J):X(I,J))=1); @FOR(JOB(J):@SUM(WORKER(I):X(I,J))=1); @FOR(LINKS:@BIN(X)); END

例1.7.6;

model:

max=1.12*x41+1.18*x32+1.26*x23+1.05*x54; x11+x14=100;

x21+x23+x24=1.05*x14;

x31+x32+x34=1.12*x11+1.05*x24; x41+x44=1.12*x21+1.05*x34; x54=1.12*x31+1.05*x44; x23<=30; x32<=40; end

八、 LINGO与外部文件之间的数据传输

有时候实际问题的数据在WORD、EXCEL或ACCESS等文件中,在编写LINGO程序时,为了避免逐个输入的麻烦,可以采用以下几种方式进行数据传输。 8.1通过Windows剪贴板传递数据

可以通过剪贴板把表格连同数据传递到LINGO中,下面分别用实例来说明具体的操作。 例:1.7.3a(复制粘贴文本文件内容); 例:1.7.3cut&paste(复制粘贴EXCEL内容) 8.2通过文件传输函数

输入和输出函数可以把模型和外部数据比如文本文件、数据库和电子表格等连接起来。 1.@file函数

使用格式为:@file(filename)

页 第48

该函数的功能是从外部文件读取信息,可以放在模型中任何地方,要求文件必须是纯文本文件,比如写字板或记事本文件。这里filename存放数据的文件名,文件名可以包含目录路径,如果不含目录路径,则默认为在当前目录。文件之中可以包含不同的数据段,数据段之间用“~”分开,数据段内的多个数据之间用逗号或空格分开,数据结束时不要加“;”号。

例:1.7.3inputtxt;

MODEL: SETS:

SHC/A1..A6/:AI,X; YF/B1..B5/:BJ; JIAGE(SHC,YF):C; ENDSETS DATA:

AI=@FILE(C:\\Documents and Settings\\Administrator\\桌面\\LINGO\\lingo培训课件\\173data.txt);

BJ=@file(C:\\Documents and Settings\\Administrator\\桌面\\LINGO\\lingo培训课件\\173data.txt);

C=@file(C:\\Documents and Settings\\Administrator\\桌面\\LINGO\\lingo培训课件\\173data.txt); ENDDATA

MIN=@SUM(SHC:AI*X);

@FOR(SHC(I):@GIN(X(I))); @FOR(SHC(I):X(I)>=1); @SUM(SHC(I):X(I))=14; X(2)<=3; X(4)<=2;

@FOR(SHC(I)|I #NE# 2 #AND# I#NE# 4:X(I)<=4); @FOR(YF(J):@SUM(SHC(I):X(I)*C(I,J))>=BJ(J)); END

模型的数据来自于173data.txt文件。其内容如下: 2,1,1.8,1.2,2.0,1.2~ 6,125,12500,345,5~ 0.45,20,415,22,0.3 0.45,28,4065,5,0.35 0.65,40,850,43,0.6 0.4,25,75,27,0.2 0.5,26,76,48,0.4 0.5,75,235,8,0.6

我们来看一下在数据文件中的数据同模型中@file函数调用是如何工作的。当在模型中第一次调用@file函数时,LINGO打开数据文件,然后读取第一个数据段;第二次调用@file函

页 第49

数时,LINGO读取第二个数据段等。文件的最后一个数据段可以没有结束标记“~”,当遇到文件结束标记时,LINGO会读取最后一条数据,然后关闭文件。如果最后一条数据段也有结束标记,那么直到LINGO求解完当前模型后才关闭该文件。

当使用@file函数时,可把数据段的内容(除了一些数据段结束标记外)看作是替代模型中@file(filename)位置的文本。注意在LINGO中不允许嵌套调用@file函数。

2.@text函数

语法为:@text(‘filename’)=变量名

该函数被用在数据部分用来把解输出至文本文件中。它可以输出集成员和集属性值。 这里filename是文件名,可以采用相对路径和绝对路径两种表示方式。如果忽略filename,那么数据就被输出到标准输出设备(大多数情形都是屏幕)。@text函数仅能出现在模型数据部分的一条语句的左边,右边是集名(用来输出该集的所有成员名)或集属性名(用来输出该集属性的值)。该语句通常放在数据段,其中参数‘filename’是文件名,它可以由用户按自己的意愿随意起个名字,如果文件不存在,则在当前目录下生成这个文件,如果文件已经存在,则其中的内容将会被覆盖,文件名可以包含完整的目录路径名,如果没有指定路径,则默认路径是LINGO的当前工作目录。

例:1.7.3outputtxt

MODEL: SETS:

SHC/A1..A6/:AI,X; YF/B1..B5/:BJ; JIAGE(SHC,YF):C; ENDSETS DATA:

AI=2,1,1.8,1.2,2.0,1.2; BJ=6,125,12500,345,5; C=0.45,20,415,22,0.3 0.45,28,4065,5,0.35 0.65,40,850,43,0.6 0.4,25,75,27,0.2 0.5,26,76,48,0.4 0.5,75,235,8,0.6;

@text('output.txt')=c; ENDDATA

MIN=@SUM(SHC:AI*X);

@FOR(SHC(I):@GIN(X(I))); @FOR(SHC(I):X(I)>=1); @SUM(SHC(I):X(I))=14;

页 第50


LINGO课件(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中华人民共和国杭州海关通关作业审单操作规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: