当前位置:文档之家› LINGO的基本用法

LINGO的基本用法

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;endsetsdata:a=1 3 4 3 3 1 5 10; c=2 9 3 8 10 6 4 10; enddatamax=@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; endsetsdata: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;enddatamin=@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@for(o(j):cun(2,j)= cun(1,j)+x(2,j)-he(2,j) ;z2= @sum(o(j): cun(2,j));@for(o(j):cun(3,j)= cun(2,j)+x(3,j)-he(3,j) ;z3= @sum(o(j): cun(3,j));@for(o(j):cun(4,j)= cun(3,j)+x(4,j)-he(4,j) ;z4= @sum(o(j): cun(4,j));@for(o(j):cun(5,j)= cun(4,j)+x(5,j)-he(5,j) ;z5= @sum(o(j): cun(5,j));@for(o(j):cun(6,j)= cun(5,j)+x(6,j)-he(6,j) ;z6= @sum(o(j): cun(6,j));食品加工一项食品加工业,对几种粗油精炼,然后加以混合成为成品食用油。

原料油有两大类,共5种。

两种植物油,V1和V2,三种非植物油,O1、O2和O3。

各种原料油均从市场采购,未来半年中原料油的市场价格(元/吨)如下成品油售价1500元/吨。

植物油和非植物油要在不同的生产线精炼,每个月最多可炼植物油200吨,非植物油250吨。

精练过程中没有重量损失,精炼费用可以忽略。

每种原料油最多可存储1000吨备用。

存储费为每吨每月50元。

成品油和经过精炼的原料油不能存储。

对成品油限定其硬度在3至6单位之间。

各种原料油的硬度如下假设硬度是线性地混合的。

为使公司获得最大利润,应采取什么样的采购和加工方案。

现存有5种原料油每种500吨,要求在6月底仍然有这样多存货。

@for(month(i) : @sum(o(j): y(j)*he(i,j))/@sum(o(j):he(i,j)) >3 ) ;z2= z1+@sum(o(i):x(2)(i) - @sum(o(i):he(2)(i) ;z3= z2+@sum(o(i):x(3)(i) - @sum(o(i):he(3)(i) ;z4= z3+@sum(o(i):x(4)(i) - @sum(o(i):he(4)(i) ;z5= z4+@sum(o(i):x(5)(i) - @sum(o(i):he(5)(i) ;研究总利润和采购与加工方案适应不同的未来市场价格应如何变化。

考虑如下的价格变化方式:2月份植物油价上升x%,非植物油上升2x%;3月份植物油价上升2x%,非植物油上升4x%;其余月份保持这种线性的上升势头。

对不同的值x(直到20),就方案的必要的变化及对利润的影响,作出全面计划。

@for(o(j):cun(1,j)= 500+x(1,i)-he(1,j) ;@for(o(j):cun(2,j)= cun(1,j)+x(2,j)-he(2,j) ;@for(o(j):cun(3,j)= cun(2,j)+x(3,j)-he(3,j) ;@for(o(j):cun(4,j)= cun(3,j)+x(4,j)-he(4,j) ;@for(o(j):cun(5,j)= cun(4,j)+x(5,j)-he(5,j) ;@for(o(j):cun(6,j)= cun(5,j)+x(6,j)-he(6,j) ;@for(month(i):he(i,1) +he(i,2)<200);@for(month(i):he(i,3) +he(i,4)+he(i,5)<250);@for(links(i,j): cun(i,j) <1000 ) ;@for(o(j):cun(6,j)=500 );@for(month(i) : @sum(o(j): y(j)*he(i,j)) <6 *@sum(o(j):he(i,j)) ) ;@for(month(i) : @sum(o(j): y(j)*he(i,j)) >3*@sum(o(j):he(i,j)) );飞行管理问题在约一万米高空边长160公里的长方形区域内有若干架飞机(最多6架)在水平飞行。

当一架飞机新进入该区域,地面调度中心根据记录的数据(各架飞机的位置和速度向量),要立即计算并判断是否会发生飞机相撞。

如果会相撞,则应计算如何调整各架飞机飞行的方向角,以避免相撞。

不相撞的标准为飞机间的距离大于8公里,所有飞机的航速均为800公里/小时,新进入的飞机与其它飞机的距离都在60公里以上。

试建立一个避免碰撞的数学模型,要求方向调整角的幅度尽量小,且不超过30度,计算误差不超过0.01度。

设飞行区域的四个顶点的坐标为(0, 0)、(160, 0)、(160, 160)和(0, 160)。

当前飞行记录为(6号为新进入的飞机)! 飞行管理;model:sets:feiji/p3 .. p6/:zt,zt0,dzt,zt1,xi0,yi0;juli/l1 .. l3001/:L;endsetsdata:xi0=150,145,130,0;yi0=155,50,150,0;zt=220.5,159,230,52;enddata@for(juli(i):L(i)=90+(i-1)/100);@for(feiji:@bnd(-0.08,dzt,0.08));@for(feiji:zt0=zt*3.14159265359/180);@for(feiji:zt1=zt0+dzt);@for(juli(i):@for(feiji(j)|j#lt#4:@for(feiji(k)|k#gt#j:(xi0(j)-xi0(k) +L(i)*(@cos(zt1(j))-@cos(zt1(k))))^2+(yi0(j)-yi0(k)+L(i)*(@cos(zt1(j) )-@cos(zt1(k))))^2>=64)));min=@sum(feiji:@abs(dzt));end。

相关主题