Lingo题目解答_第1页
Lingo题目解答_第2页
Lingo题目解答_第3页
Lingo题目解答_第4页
Lingo题目解答_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Lingo软件在求解数学优化问题的使用技巧LINGO是一种专门用于求解数学规划问题的软件包。由于LINGO执行速度快,易于方便地输入、求解和分析数学规划问题,因此在教学、科研和工业界得到广泛应用。LINGO主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等。LINGO的最新版本为LINGO7.0,但解密版通常为4.0和5.0版本,本书就以LINGO5.0为参照而编写。 1LINGO编写格式 LINGO模型以MODEL开始,以END结束。中间为语句,分为四大部分(SECTION):(1) 集合部分(SETS):这部分以“SETS:”开

2、始,以“ENDSETS”结束。这部分的作用在于定义必要的变量,便于后面进行编程进行大规模计算,就象C语言在在程序的第一部分定义变量和数组一样。在LINGO中称为集合(SET)及其元素(MEMBER或ELEMENT,类似于数组的下标)和属性(ATTRIBUTE,类似于数组)。LINGO中的集合有两类:一类是原始集合(PRIMITIVE SETS),其定义的格式为: SETNAME/member list(or 1.n)/:attribute,attribute,etc。另一类是是导出集合(DERIVED SETS),即引用其它集合定义的集合,其定义的格式为:SETNAME(set1,set2,e

3、tc。):attribute,attribute,etc。如果要在程序中使用数组,就必须在该部分进行定义,否则可不需要该部分。(2) 目标与约束:这部分定义了目标函数、约束条件等。一般要用到LINGO的内部函数,可在后面的具体应用中体会其功能与用法。求解优化问题时,该部分是必须的。(3) 数据部分(DATA):这部分以“DATA:”开始,以“END DATA”结束。其作用在于对集合的属性(数组)输入必要的数值。格式为:attribut=value_list。该部分主要是方便数据的输入。(4) 初始化部分(INIT):这部分以“INIT:”开始,以“END INIT”结束。作用在于对集合的属性(

4、数组)定义初值。格式为:attribute=value_list。由于非线性规划求解时,通常得到的是局部最优解,而局部最优解受输入的初值影响。通常可改变初值来得到不同的解,从而发现更好的解。编写LINGO程序要注意的几点:1. 所有的语句除SETS、ENDSETS、DATA、ENDDATA、INIT、ENDINIT和MODEL,END之外必须以一个分号“;”结尾。2. LINGO求解非线性规划时已约定各变量非负。LINGO内部函数使用详解。 LINGO建立优化模型时可以引用大量的内部函数,这些函数以“”符号打头。(1) 常用数学函数ABS(X) 返回变量X的绝对数值。 COS( X)返回X的余

5、弦值,X的单位为弧度EXP( X)返回的值,其中e为自然对数的底,即FLOOR( X)向0靠近返回X的整数部分。如FLOOR(3.7),则返回3;FLOOR(-3.7),则返回-3。LGM( X)返回函数的自然对数值。LOG( X)返回变量X的自然对数值。SIGN( X)返回变量X的符号值,当X0时为1。SIN( X)返回X的正弦值,X的单位为弧度SMAX( X1, X2,., XN)返回一列值X1, X2,., XN的最大值。SMIN( X1, X2,., XN)返回一列值X1, X2,., XN的最小值。TAN( X)返回X的正切值,X的单位为弧度 (2)集合函数 集合函数的用法如下:se

6、t_operator (set_name|condition:expression)其中set_oprator部分是集合函数名(见下),set_name是数据集合名,expression部分是表达式,|condition部分是条件,用逻辑表达式描述(无条件时可省略)。逻辑表达式中可以三种逻辑算符(#AND#(与),#OR#(或),#NOT#(非)和六种关系酸符(#EQ#(等于),#NE#(不等于),#GT#(大于),#GE#(大于等于),#LT#(小于),#LE#(小于等于)。常见的集合函数如下:FOR (set_name:constraint_expressions)对集合(set_name

7、)的每个元素独立地生成约束,约束由约束表达式(constraint_expressions)描述。MAX(set_name:expression)返回集合上的表达式(expression)的最大值。MIN(set_name:expression)返回集合上的表达式(expression)的最小值。SUM(set_name:expression)返回集合上的表达式(expression)的和。SIZE(set_name)返回数据集set_name中包含元素的个数。IN(set_name,set_element)如果数据集set_name中包含元素set_element则返回1,否则返回0。(3)

8、变量界定函数 变量函数对变量的取值范围附加限制,共有四种。 BND(L,X,U)限制 BIN(X)限制X为0或1。 FREE(X)取消对X的符号限制(即可取任意实数值)。 GIN(X)限制X为整数值。(4)财务函数 返回如下情形下的净现值:单位时段利率为,连续个时段支付,每个时段支付费用,即:=返回如下情形下的净现值:单位时段利率为,第个时段支付单位费用,即:= (5)概率函数PSN(X)标准正态分布的分布函数。PSL(X)单位正态线性损失函数(即返回的期望值,其中Z为标准正态随机变量)PPS(A,X)均值为A的Possion分布的分布函数(当X不是整数时,采用线性插值进行计算)。PPL(X)

9、Possion分布的线性损失函数(即返回的期望值,其中Z为Possion分布随机变量)PBN(P,N,X)二项分布的分布函数当N或X不是整数时,采用线性插值进行计算)。PHG(POP,G,N,X)超几何分布的分布函数(当POP,G,N或X不是整数时,采用线性插值进行计算)。PFD(N,D,X)自由度为N和D的F分布的分布函数。PCX(N,X) 自由度为N的分布的分布函数。PTD(N,X) 自由度为N的t分布的分布函数。RAND(X)返回0与1之间的伪随机数(X为种子数,典型用法为U(I)=RAND(U(I+1))。1某昼夜服务的公交路线每天各时间区段内需司机和乘务人员如下: 班次时间最少需要人

10、数16:0010:0060210:0014:0070314:0018:0060418:0022:0050522:002:002062:006:0030设司机和乘务人员分别在各时间区段一开始上班,并连续工作八小时,问该公交线路至少配备多少名司机和乘务人员?从第一班开始排,试建立线性模型。分析与求解:注意在每一时间段里上班的司机和乘务人员中,既包括在该时间段内开始时报到的人员,还包括在上一时间段工作的人员。因为每一时间段只有四个小时,而每个司乘人员却要连续工作八个小时。因此每班的人员应理解为该班次相应时间段开始时报到的人员。设为第班应报到的人员(),则应配备人员总数为:按所需人数最少的要求,可得到

11、线性模型如下:LINGO程序如下:MODEL: min=x1+x2+x3+x4+x5+x6; x1+x6=60; x1+x2=70; x2+x3=60; x3+x4=50; x4+x5=20; x5+x6=30; x1=60;END得到的解为:x1=60,x2=10,x3=50,x4=0,x5=30,x6=0;配备的司机和乘务人员最少为150人。2 某地区有三个农场共用一条灌渠,每个农场的可灌溉地及分配到的最大用水量如下表:农场可灌溉地(亩)最大用水量(百立方)140060026008003300375各农场均可种植甜菜、棉花和高粱三种作物,各种作物的用水量、净收益及国家规定的该地区各种作物种

12、植总面积最高限额如下表:作物种类种植限额(亩)耗水量(百立方/亩)净收益(元/亩)甜菜6003400棉花5002300高粱3251100三个农场达成协议,他们的播种面积与其可灌溉面积相等,而各种农场种何种作物并无限制。问如何制定各农场种植计划才能在上述限制条件下,使本地区的三个农场的总净收益最大。分析与求解:设农场1种植的甜菜、棉花和高粱分别为亩,农场2种植的甜菜、棉花和高粱分别为亩,农场3种植的甜菜、棉花和高粱分别为亩。设农场可耕地为,最大用水量为 ,甜菜、棉花和高粱的种植限额为,耗水量为,,净收益为,根据题目条件,可建立如下线性模型:LINGO编程如下:MODEL:SETS:place/1

13、.3/:a,b;kind/1.3/:c,d,e;plan(place,kind):x;ENDSETSDATA:a=400,600,300;b=600,800,375;c=600,500,325;d=3,2,1;e=400,300,100;ENDDATAmax=sum(kind(j):e(j)*sum(place(i):x(i,j);for(kind(j):sum(place(i):x(i,j)=c(j);for(place(i):sum(kind(j):x(i,j)=a(i);for(place(i):sum(kind(j):d(j)*x(i,j)=b(i);END得到结果如下:X(1,1)=

14、0,X(1,2)=300,X(1,3)=0 X(2,1)=258.3333,X(2,2)=12.5,X(2,3)=0X(3,1)=0,X(3,2)=187.5,X(3,3)=0最大总净收益为253333.3元。对本题来说,由于数据少,可以不采用数组形式,可直接采用变量,则建立模型如下:设农场1种植的甜菜、棉花和高粱分别为亩,农场2种植的甜菜、棉花和高粱分别为亩,农场3种植的甜菜、棉花和高粱分别为亩。根据题目条件,可建立如下线性模型:LINGO程序如下:MODEL:max=400*(x1+x2+x3)+300*(y1+y2+y3)+100*(z1+z2+z3);x1+x2+x3=600;y1+y

15、2+y3=500;z1+z2+z3=325;x1+y1+z1=400;x2+y2+z2=600;x3+y3+z3=300;3*x1+2*y1+z1=600;3*x2+2*y2+z2=800;3*x3+2*y3+z3=1; !至少有一名后卫上场;x(1)+x(4)+x(6)=2; !如果1号和4号上场,则6号不上场;x(2)+x(8)=1; !2号和8号至少有一个不出场.即出场人数至多为1个;FOR(team(i):bin(x(i); !所有变量为0-1变量;END所得到的解为:x(1)=0,x(2)=1,x(3)=1,x(4)=1,x(5)=1,x(6)=1,x(7)=0,x(8)=0即第2,

16、3,4,5,6名队员被选上。最大平均身高为Z=1.864米5.有五项设计任务可供选择。各项设计任务的预期完成时间分别为3,8,5,4,10(周)设计报酬分别为7,17,11,9,21(万元)。设计任务只能一项一项地进行,总的期限为20周。选择任务时必须满足下面要求:(1) 至少完成3项设计任务。(2) 若选择任务1,必须同时选择任务2。(3) 任务3和任务4不能同时选择。 应当选择哪些任务,才能使总的设计报酬最大?分析与求解:这是一个0-1整数规划问题。设0-1变量如下:设各项设计任务的完成时间为()表示,设计报酬为()表示。则容易得到目标函数:根据题目要求分别列出约束条件如下:总期限为避免2

17、0周,则约束条件为 至少完成3项设计任务,则若选择任务1,必须同时选择任务2,则。任务3和任务4不能同时选择,则,该约束表达式表明任务3和任务4至多只能选择1个。 因此对该问题建立的数学模型如下:LINGO程序如下:MODEL:SETS:mat/1.5/:m,t,x;ENDSETSDATA:m=7,17,11,9,21; !定义报酬数组;t=3,8,5,4,10; !定义完成时间;ENDDATAmax=SUM(mat(i):m(i)*x(i); !定义目标函数;SUM(mat(i):t(i)*x(i)=3; !至少完成3项任务;x(2)=x(1); !若选择任务1,必须同时选择任务2。;x(3

18、)+x(4)=1; !任务3和任务4不能同时选择。;FOR(mat(i):BIN(x(i); !使各变量为0-1变量;END得到的解为x(1)=1,x(2)=1,x(3)=1,x(4)=0,x(5)=0。最大报酬为35万元。即在满足各种约束条件下,选择设计任务1,2,3,可使总报酬达到最大为35万元。6 固定费用有四种资源被用于生产三种产品,资源量、产品单件可变费用、单件售价、资源单耗量及组织三种商品生产的固定费用见下表。现要求制定一个生产计划,使总收益最大。产品单耗量资源IIIIII资源量A248500B234300C123100D357700单件可变费用4612固定费用100150200单

19、件售价71020分析与求解:总收益等于销售收入减去生产产品的固定费用与可变费用之和。问题的困难之处在于事先不知道某种产品是否生产,因而不能确定是否有相应的固定费用。可引入用0-1变量来解决是否需要固定费用问题。设是第种产品的产量,;再设 第I种产品销售一件可收入7-4=3元,第II种产品销售一件可收入10-6=4元,第III种产品销售一件可收入20-12=8元。则问题的整数规划模型为:其中为的某个上界。如根据第2个约束条件,可取, 。也可统一取其最大值。如果生产第种产品,则起产量。由约束条件知,此时相应的生产第种产品的固定费用在目标函数被考虑。如果不生产第种产品,则起产量。由约束条件知可为0也

20、可为1。但显然只有有利于目标函数最大,从而相应的生产第种产品的固定费用在目标函数将不被考虑。因此引入是合理的。下面是LINGO程序。MODEL:DATA:M=150;ENDDATAmax=3*x1+4*x2+8*x3-100*y1-150*y2-200*y3;!目标函数;2*x1+4*x2+8*x3=500;2*x1+3*x2+4*x3=300;x1+2*x2+3*x3=100;3*x1+5*x2+7*x3=700;x1=M*y1;x2=M*y2;x3New。启动New属性单,选择Projects页面。再选择WIN32 Dynamic-Link Library。在右边Project name标

21、签下的编辑框中任意输入一个工程名。如CALC。点击OK命令按钮后就建立了一个新的空的工程。2选择Project-Add to Project-New。在New属性单中选择File页面。在下面空白框中选择C+ Source File。在右边File标签下的编辑框中输入一个文件名。如CB。3编辑C+程序CB.CPP如下:#include #include #include #include #include #define N 3#define DllExport extern C _declspec(dllexport) /该函数计算成本DllExport void MYUSER(int* Nu

22、mArgs,double *x,double *dResult) double sum; if(*NumArgs=0&x0=41&x1=101&x1=0&x1=51&x1=0&x2=100) sum+=5*x2; else sum+=4*x2; *dResult=sum; /返回成本总值注意在程序中MYUSER函数的第一个整型变量NumArgs代表输入的变量个数。根据LINGO调用时输入的变量个数,可以在C+程序内部得到输入变量的总数。第二个输入为向量x,就是外部输入的变量。第三个变量dResult用于返回最后的计算结果。用LINGO调用时只需要输入各变量就行了,自然会返回C+程序计算的结果d

23、Result。 变好程序后,按F7运行后生成动态库CALC.DLL。将其拷贝到LINGO目录下,并将文件名改名为MYUSER.DLL。启动LINGO,就可以通过外部函数USER调用动态库中自己编写的函数。LINGO程序:!采用动态库编写自己的函数;MODEL:max=12*x1+7*x2+6*x3-USER(x1,x2,x3);!目标函数;x1+2*x2+x3=100; !技术服务的约束;10*x1+4*x2+5*x3=700; !直接劳动的约束;3*x1+2*x2+x3=400; !材料的约束;GIN(x1);GIN(x2);GIN(x3);end迭代6步得到局部最优解为x1=70,x2=0

24、,x3=0。总利润最大为210元。容易验证,该局部最优解也是全局最优解。8.某企业和用户签定了设备交货合同,已知该企业各季度的生产能力、每台设备的生产成本和每季度末的交货量见下表,若生产出的设备当季度不交货,每台设备每季度需要支付保管费0.1万元,试问在遵守合同的条件下,企业应如何安排生产计划,才能使年消耗费用最低?季度工厂生产能力(台)交货量(台)每台设备生产成本(台)1251512.02352011.03302511.54202012.5分析与求解:方法1:设第季度生产台,库存台,。第季度生产能力用表示,交货量用表示,每台设备生产成本用表示。则建立目标函数为:LINGO程序如下:MODEL

25、:SETS:QUART/1.4/:x,y,p,d,c;ENDSETSDATA:!指定数据;p=25,35,30,20;d=15,20,25,20;c=12.0,11.0,11.5,12.5;ENDDATAmin=sum(QUART(i):c(i)*x(i)+0.1*y(i);!目标函数;FOR(QUART(i):x(i)=p(i); !生产能力限制;FOR(QUART(i)|i#GT#1:y(i)=y(i-1)+x(i)-d(i); y(1)=x(1)-d(1);end得到的结果如下:x1=15,x2=35,x3=30,x4=0;y1=0,y2=15,y3=20,y4=0。年消耗最小费用为91

26、3.5万元。方法1:设第季度生产第季度交货的台数,第季度生产能力用表示,交货量用表示,每台设备生产成本用表示。由于生产能力的限制,需要满足下面条件: 根据交货量的规定,应满足如下条件: 第季度生产第季度交货的每台设备所消耗的费用,应等于生产成本加上保管维护费用之和,其值如下表:生产季i交货季j1234123412.012.111.012.211.111.512.311.211.612.5则该模型表示如下:LINGO程序如下:MODEL:SETS:QUART/1.4/:p,d;LINK(QUART,QUART)|&1#LE#&2:x,c; !只取上三角阵;ENDSETSDATA:!指定数据;p=

27、25,35,30,20;d=15,20,25,20;c=12.0 12.1 12.2 12.3 11.0 11.1 11.2 11.5 11.6 12.5; ENDDATAMIN=SUM(LINK:c*x);!目标函数;FOR(QUART(i):SUM(QUART(j)|j#GE#i:x(i,j)=p(i); !生产能力限制;FOR(QUART(j):SUM(QUART(i)|i#LE#j:x(i,j)=d(j); !交货合同限制;end得到的结果如下:X(1,1)=15,X(1,2)=0,X(1,3)=0,X(1,4)=0;X(2,2)=20,X(2,3)=0,X(2,4)=15。X(3,3

28、)=25, X(3,4)=5;X(4,4)=0。年消耗最小费用为913.5万元。可以看出,第1季度生产量为15台,第2季度生产量为35台,第3季度生产量为30台,第4季度生产量为0台,与前面方法得到的结果一样。其最小费用也一样。9 (TSP问题) 设有一个售货员从10个城市中的某一个城市出发,去其它9个城市推销产品。10个城市相互距离如下表。要求每个城市到达一次仅一次后,回到原出发城市。问他应如何选择旅行路线,使总路程最短。城市123456789101074586121311182703109145141717343059102182712451050149109231658991407872

29、0196614109701352513712521108130232118813148975230181291117272320252118016101817121619131812160问题分析与建模: 设城市之间距离用矩阵来表示,其中为下三角矩阵,表示城市与城市之间的距离。设0-1矩阵用来表示经过的各城市之间的路线。设 则该TSP问题转化为如下线性模型:LINGO程序如下:!TSP quesion;MODEL:SETS:city/1.10/;link(city,city)|&1#GT#&2:d,s;ENDSETSDATA:d= 7 4 3 5 10 5 8 9 9 14 6 14 10 9

30、 7 12 5 21 10 8 13 13 14 8 9 7 5 23 11 17 27 23 20 25 21 18 18 17 12 16 19 13 18 12 16;ENDDATA MIN=SUM(link:d*s); SUM(city(j)|j#GT#1:S(j,1)=2; !与第1个城市相连的有两个城市; !与第i个城市相连有两个城市; FOR(city(i)|i#GT#1:SUM(city(j)|j#GT#i:s(j,i)+ SUM(city(k)|k#LT#i:s(i,k)=2);FOR(link:BIN(s);得到的结果如下: S(3,2)=1,S(4,1)=1,S(4,3)

31、=1,S(6,5)=1,S(7,2)=1,S(7,5)=1,S(8,6)=1,S(9,1)=1,S(10,8)=1,S(10,9)=1。其它全为0。 其最短路线为143275681091,最短距离为77公里。 10. 某公司有资金4万元,可向A,B,C三个项目投资。已知各项目不同投资额的相应效益如下表。问如何分配资金可使总效益最大。项目 投资额(万元) 01234A041486066B042506066C064687876模型分析与建立: 设项目有个,每个项目有种投资方式。第个项目的第种投资方式效益为万元。则投资可有效益矩阵为来表示。每个项目的投资方式的资金分配用向量来表示。本题。 设 则可建

32、立如下模型: LINGO程序如下:MODEL:SETS:item/1.3/;kind/1.5/:A;link(item,kind):S,C;ENDSETSDATA:A=0,1,2,3,4; !投资钱的情况;C=0,41,48,60,66, 0,42,50,60,66, 0,64,68,78,76; !投资矩阵;ENDDATAMAX=SUM(link:S*C);SUM(item(i):SUM(kind(j):S(i,j)*A(j)=4; !总共投资的钱为4万元;FOR(item(i):SUM(kind(j):S(i,j)=1);!每个项目最多投资一次;FOR(LINK:BIN(S);!限制S(i,j)只能取0,1;END结果如下:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论