一个使用Lingo求解多目标0-1整数规划问题答案
- 格式:pdf
- 大小:135.53 KB
- 文档页数:3
AK是一家空调制造商,其面临的需求增长很快。
预计2001年,其全国的需求在南部将为180,000单位,在中部为120,000单位,在东部为110,000单位,在西部为100,000单位。
DryIce在设计物流网络时,有四个备选的地点:New York, Atlanta, Chicago和San Diego。
在这四个地点建厂,工厂的生产能力将要么为200,000单位,要么为400,000单位。
工厂的年固定运营成本及从工厂所在地生产出产品并运往四个销售区域的生产和运输的单位成本如表所示。
请为该设施网络的设计建立模型,并请对模型作简要说明。
设定变量如下表所示:其中M11 M12等一系列值为0.1变量,即可得到如下式子:m12+9200000*m22+232*x12+212*x22+230*x32+280*x42+5600000*m13+9300000*m 23+238*x13+230*x23+215*x33+270*x43+6100000*m14+10200000*m24+299*x14+2 80*x24+270*x34+225*x44;m11*200000+m21*400000>=x11+x21+x31+x41;m12*200000+m22*400000>=x12+x22+x32+x42;m13*200000+m23*400000>=x13+x23+x33+x43;m14*200000+m24*400000>=x14+x24+x34+x44;x11+x12+x13+x14>=110000;x21+x22+x23+x24>=180000;x31+x32+x33+x34>=120000;x41+x42+x43+x44>=100000;@bin(m11);@bin(m21);@bin(m12);@bin(m22);@bin(m13);@bin(m23);@bin(m14);@bin(m24);通过运行LINGO得到如下结果:Global optimal solution found.Objective value: 0.1294800E+09Extended solver steps: 0Total solver iterations: 131Variable Value Reduced CostM11 0.000000 -6200000.M21 0.000000 -0.1440000E+08 X11 0.000000 0.000000X21 0.000000 41.00000X31 0.000000 31.00000X41 0.000000 136.0000M12 0.000000 -2500000.M22 1.000000 -6800000.X12 110000.0 0.000000X22 180000.0 0.000000X32 110000.0 0.000000X42 0.000000 95.00000M13 0.000000 -5400000.M23 0.000000 -0.1270000E+08 X13 0.000000 21.00000X23 0.000000 33.00000X33 0.000000 0.000000X43 0.000000 100.0000M14 1.000000 6100000.M24 0.000000 0.1020000E+08 X14 0.000000 27.00000X24 0.000000 28.00000X34 10000.00 0.000000X44 100000.0 0.000000Row Slack or Surplus Dual Price1 0.1294800E+09 -1.0000002 0.000000 -61.000003 0.000000 -40.000004 0.000000 -55.000005 90000.00 0.0000006 0.000000 -272.00007 0.000000 -252.00008 0.000000 -270.00009 0.000000 -225.0000如下表:总成本为:$129480000。
用LINGO求解整数规划在LINGO中,输入总是以model:开始,以end结束;中间的语句之间必须以“;”分开;LINGO不区分字母的大小写;目标函数用MAX=…;或MIN=…;给出(注意有等号“=”)。
在LINDO中所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用@bin(x1)表示x1为0-1整数。
在现在的LINDO中,默认设置假定所有变量非负。
函数中变量的界定:@GIN(X):限制X为整数@BIN(X):限定变量X为0 或1。
@FREE(X):取消对x的符号限制(即可取任意实数包括负数)@BND(L,X,U):限制L<= X <= ULINGO提供了大量的标准数学函数:@abs(x) 返回x的绝对值@sin(x) 返回x的正弦值,x采用弧度制@cos(x) 返回x的余弦值@tan(x) 返回x的正切值@exp(x) 返回常数e的x次方@log(x) 返回x的自然对数@lgm(x) 返回x的gamma函数的自然对数@sign(x) 如果x<0返回-1;否则,返回1@smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值@smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值例1:整数规划模型在LINGO中可以如下输入:model:Max=5*x1+8*x2;!*号不能省略x1+x2<=6;!约束条件和目标函数可以写在model:与end之间的任何位置5*x1<=45-9*x2;@gin(x1);@gin(x2); !和LINDO不同,不能写在end之后end运行后同样得到最优解为x1=0,x2=5,最优值为40。
例2:在线性规划中的应用max Z =5X1+3X2+6X3,s.t.X1 +2 X2 + X3 ≤182 X1 + X2 +3 X3 =16X1 + X2 + X3 =10X1 ,X2 ≥0 , X3 为自由变量应用LINGO 来求解该模型,只需要在 lingo窗口中输入以下信息即可:max=5*x1+3*x2+6*x3;x1+2*x2+x3<=18;2*x1+x2+3*x3=16;x1+x2+x3=10;@free(x3);然后按运行按钮,得到模型最优解,具体如下:Objective value: 46.00000Variable Value Reduced Costx1 14.00000 0.000000x2 0.000000 1.000000x3 -4 .000000 0.000000由此可知,当 x1 =14 , x2 =0 , x3 =-4 时,模型得到最优值,且最优值为 46。
Lingo 精选题目及答案答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。
1、简单线性规划求解(目标函数)2134maxx x z += s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x2、整数规划求解219040Max x x z +=⎪⎩⎪⎨⎧≥≤+≤+0,702075679212121x x x x x x 3、0-1规划求解Max 432215.18.04.0x x x x f +++=10106234321≤+++x x x x10,,,4321或=x x x x4、非线性规划求解||4||3||2||min 4321x x x x z +++=s.t. ⎪⎪⎩⎪⎪⎨⎧-=+--=-+-=+--2132130432143214321x x x x x x x x x x x x5、集合综合应用产生一个集合5052--=x x y ,(10,...,2,1=x ),求y 前6个数的和S 1,后6个数的和S 2,第2~8个数中的最小值S 3,最大值S 4。
6、综合题要求列出具体的目标函数和约束条件,然后附上Lingo 程序和最终结果。
6.1 指派问题有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:问指派哪个人去完成哪项工作,可使总的消耗时间为最小?6.2 分配问题某两个煤厂A1,A2每月进煤数量分别为60t和100t,联合供应3个居民区B1,B2,B3。
3个居民区每月对煤的需求量依次分别为50t,70t,40t,煤厂A1离3个居民区B1,B2,B3的距离依次分别为10km,5km,6km,煤厂A2离3个居民区B1,B2,B3的距离分别为4km,8km,12km。
问如何分配供煤量使得运输量(即t·km)达到最小?1、model:max=4*x1+3*x2;2*x1+x2<10;x1+x2<8;x2<7;end2、model:max=40*x1+90*x2;9*x1+7*x2<56;7*x1+20*x2<70;@gin(x1);@gin(x2);end3、model:max=x1^2+0.4*x2+0.8*x3+1.5*x4;3*x1+2*x2+6*x3+10*x4<10;@bin(x1); @bin(x2);@bin(x3); @bin(x4);end4、model:max=@abs(x1)+2*@abs(x2)+3*@abs(x3)+4*@abs(x4);x1-x2-x3+x4=0;x1-x2+x3-3*x4=1;x1-x2-2*x3+3*x4=-1/2;end5、model:sets:jihe/1..10/:y;ss/1..4/:S;endsets!由于y和s中部分有负数,所以要先去掉这个约束;@for(jihe:@free(y));@for(ss(i):@free(S));!产生元素;@for (jihe(x):y(x)=x^2-5*x-50); S(1)=@sum (jihe(i)|i#le#6:y(i)); S(2)=@sum (jihe(i)|i#ge#5:y(i));S(3)=@min (jihe(i)|i#ge#2 #and# i#le#8:y(i)); S(4)=@max (jihe(i)|i#ge#2 #and# i#le#8:y(i)); end6.1、设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:⎩⎨⎧=其他件工作个工人去做第指派第01j i f ijmin∑∑==⨯4141i j ij ijt fs.t. 141=∑=i ijf()4,3,2,1=j 每份工作都有一人做∑==411j ijf()4,3,2,1=i 每人都只做一项工作model : sets :work/A B C D/;worker/jia yi bing ding/; time(worker,work):t,f; endsets!目标函数可以用[obj]标志出,也可以省略;[obj] min =@sum (time(i,j):t(i,j)*f(i,j)); data :!可以直接复制表格,但是在最后要有分号; t=; e !每份工作都有一人做;@for (work(j):@sum (time(i,j):f(i,j))=1); !每人都只做一项工作;@for (worker(i):@sum (time(i,j):f(i,j))=1); !让f 取0-1值,此条件可以省略;!@for(time(i,j):@bin(f(i,j))); end6.2设:煤厂进煤量i s ,居民区需求量为i d ,煤厂i 距居民区j 的距离为ij L ,煤厂i 供给居民区j 的煤量为ij g那么可以列出如下优化方程式∑∑==⨯=3121min j i ij ij L gs.t ()3,2,121==∑=j d gi jij()2,131=≤∑=i s gj iijmodel : sets :supply/1,2/:s; demand/1,2,3/:d;link(supply,demand):road,sd; endsets data :road=10 5 6 4 8 12; d=50 70 40; s=60 100; enddata[obj] min =@sum (link(i,j):road(i,j)*sd(i,j)); @for (demand(i):@sum (supply(j):sd(j,i))=d(i)); @for (supply(i):@sum (demand(j):sd(i,j))<s(i));end1.线性规划模型。
Lingo精选题目及答案Lingo 精选题目及答案答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。
1、简单线性规划求解(目标函数)2134m axx x z += s.t.(约束条件)≥≤≤+≤+0,781022122121x x x x x x x2、整数规划求解219040Maxx x z +=≥≤+≤+0,702075679212121x x x x x x 3、0-1规划求解Max 432215.18.04.0x x x x f +++=10106234321≤+++x x x x10,,,4321或=x x x x4、非线性规划求解||4||3||2||m in4321x x x x z +++=s.t.-=+--=-+-=+--2132130432143214321x x x x x x x x x x x x5、集合综合应用产生一个集合5052--=x x y ,(10,...,2,1=x ),求y 前6个数的和S 1,后6个数的和S 2,第2~8个数中的最小值S 3,最大值S 4。
6、综合题要求列出具体的目标函数和约束条件,然后附上Lingo 程序和最终结果。
6.1 指派问题问指派哪个人去完成哪项工作,可使总的消耗时间为最小?6.2 分配问题某两个煤厂A1,A2每月进煤数量分别为60t和100t,联合供应3个居民区B1,B2,B3。
3个居民区每月对煤的需求量依次分别为50t,70t,40t,煤厂A1离3个居民区B1,B2,B3的距离依次分别为10km,5km,6km,煤厂A2离3个居民区B1,B2,B3的距离分别为4km,8km,12km。
问如何分配供煤量使得运输量(即t·km)达到最小?1、model:max=4*x1+3*x2;2*x1+x2<10;x1+x2<8;x2<7;end2、model:max=40*x1+90*x2;9*x1+7*x2<56;7*x1+20*x2<70;@gin(x1);@gin(x2);end3、model:max=x1^2+0.4*x2+0.8*x3+1.5*x4;3*x1+2*x2+6*x3+10*x4<10;@bin(x1); @bin(x2);@bin(x3); @bin(x4);end4、model:max=@abs(x1)+2*@abs(x2)+3*@abs(x3)+4*@abs(x4);x1-x2-x3+x4=0;x1-x2+x3-3*x4=1;x1-x2-2*x3+3*x4=-1/2;end5、model:sets:jihe/1..10/:y;ss/1..4/:S;endsets!由于y和s中部分有负数,所以要先去掉这个约束;@for(jihe:@free(y));@for (ss(i):@free (S));!产生元素;@for (jihe(x):y(x)=x^2-5*x-50); S(1)=@sum (jihe(i)|i#le#6:y(i)); S(2)=@sum (jihe(i)|i#ge#5:y(i));S(3)=@min (jihe(i)|i#ge#2 #and# i#le#8:y(i)); S(4)=@max (jihe(i)|i#ge#2 #and# i#le#8:y(i)); end6.1、设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:=其他件工作个工人去做第指派第01j i f ijmin∑∑==?4141i j ij ijt fs.t. 141=∑=i ijf()4,3,2,1=j 每份工作都有一人做∑==411j ijf()4,3,2,1=i 每人都只做一项工作model : sets :work/A B C D/;worker/jia yi bing ding/; time(worker,work):t,f; endsets!目标函数可以用[obj]标志出,也可以省略;[obj] min =@sum (time(i,j):t(i,j)*f(i,j)); data :!可以直接复制表格,但是在最后要有分号; t=; e nddata!每份工作都有一人做;@for (work(j):@sum (time(i,j):f(i,j))=1); !每人都只做一项工作;@for (worker(i):@sum (time(i,j):f(i,j))=1); !让f 取0-1值,此条件可以省略;!@for(time(i,j):@bin(f(i,j))); end6.2设:煤厂进煤量i s ,居民区需求量为i d ,煤厂i 距居民区j 的距离为ij L ,煤厂i 供给居民区j 的煤量为ij g那么可以列出如下优化方程式∑∑==?=3121min j i ij ij L gs.t ()3,2,121==∑=j d gi jij()2,131=≤∑=i s gj iijmodel : sets :supply/1,2/:s; demand/1,2,3/:d;link(supply,demand):road,sd; endsets data :road=10 5 6 4 8 12; d=50 70 40; s=60 100; enddata[obj] min =@sum (link(i,j):road(i,j)*sd(i,j)); @for (demand(i):@sum (supply(j):sd(j,i))=d(i)); @for (supply(i):@sum (demand(j):sd(i,j))<s(i));< p="">end1.线性规划模型。
实验二:目标规划一、实验目的目标规划是由线性规划发展演变而来的,线性规划考虑的是只有一个目标函数的问题,而实际问题中往往需要考虑多个目标函数,这些目标不仅有主次关系,而且有的还相互矛盾。
这些问题用线性规划求解就比较困难,因而提出了目标规划。
熟悉目标规划模型的建立,求解过程及结果分析。
二、目标规划的一般模型设)...2,1(n j x j =是目标规划的决策变量,共有m 个约束是国刚性约束,可能是等式约束,也可能是不等式约束。
设有l 个柔性目标约束,其目标规划约束的偏差是),...,2,1(,l i d d i i =-+。
设有q 个优先级别,分别为q p p p ,...,21。
在同一个优先级k p 中,有不同的权重,分别记为),...,2,1(,l j w w kj kj =-+。
因此目标规划模型的一般数学表达式为:min ∑∑=++--=+=l j j kj j kj q k k d w d w p z 11);(s.t. ,,...2,1,),(1m i b x an j i j ij =≥=≤∑= .,...2,1,0,,,...,2,1,,,...2,1,1l i d d n x o x l i g d d x c i i j i nj i i j ij =≥=≥==-++-=+-∑ 三、实验设备及分组实验在计算机中心机房进行,使用微型电子计算机,每人一机(一组)。
四、实验容及步骤1、打开LINGO ,并利用系统菜单和向导在E 盘创建一个项目。
目录和项目名推荐使用学生自己的学号。
2、以此题为例,建立数学模型,并用说明语句进行说明,增强程序的可读性。
例2.1:某工厂生产Ⅰ、Ⅱ两种产品,需要用到A ,B ,C 三种设备,已知有关数据见下表。
企业的经营目标不仅仅是利润,还需要考虑多个方面:(1) 力求使利润不低于1500元;(2) 考虑到市场需求,Ⅰ、Ⅱ两种产品的产量比应尽量保持1:2;(3) 设备A 为贵重设备,严格禁止超时使用;(4) 设备C 可以适当加班,但要控制;设备B 即要求充分利用,又尽可能不加班。
用LINGO求解整数规划在LINGO中,输入总是以model:开始,以end结束;中间的语句之间必须以“;”分开;LINGO不区分字母的大小写;目标函数用MAX=…;或MIN=…;给出(注意有等号“=”)。
在LINDO中所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用@bin(x1)表示x1为0-1整数。
在现在的LINDO中,默认设置假定所有变量非负。
函数中变量的界定:@GIN(X):限制X为整数@BIN(X):限定变量X为0 或1。
@FREE(X):取消对x的符号限制(即可取任意实数包括负数)@BND(L,X,U):限制L<= X <= ULINGO提供了大量的标准数学函数:@abs(x)???????????? 返回x的绝对值@sin(x)???????????? 返回x的正弦值,x采用弧度制@cos(x)???????????? 返回x的余弦值@tan(x)???????????? 返回x的正切值@exp(x)???????????? 返回常数e的x次方@log(x)???????????? 返回x的自然对数@lgm(x)???????????? 返回x的gamma函数的自然对数@sign(x)??????????? 如果x<0返回-1;否则,返回1@smax(x1,x2,…,xn)? 返回x1,x2,…,xn中的最大值@smin(x1,x2,…,xn)? 返回x1,x2,…,xn中的最小值例1:整数规划模型在LINGO中可以如下输入:model:Max=5*x1+8*x2;!*号不能省略x1+x2<=6;!约束条件和目标函数可以写在model:与end之间的任何位置5*x1<=45-9*x2;@gin(x1);@gin(x2); !和LINDO不同,不能写在end之后end运行后同样得到最优解为x1=0,x2=5,最优值为40。
例2:在线性规划中的应用max Z =5X1+3X2+6X3,s.t.X1 +2 X2 + X3 ≤182 X1 + X2 +3 X3 =16X1 + X2 + X3 =10X1 ,X2 ≥0 , X3 为自由变量应用LINGO 来求解该模型,只需要在 lingo窗口中输入以下信息即可:max=5*x1+3*x2+6*x3;x1+2*x2+x3<=18;2*x1+x2+3*x3=16;x1+x2+x3=10;@free(x3);然后按运行按钮,得到模型最优解,具体如下:Objective value: 46.00000Variable Value Reduced Costx1 14.00000 0.000000x2 0.000000 1.000000x3 -4 .000000 0.000000由此可知,当 x1 =14 , x2 =0 , x3 =-4 时,模型得到最优值,且最优值为 46。
AK是一家空调制造商,其面临的需求增长很快。
预计2001年,其全国的需求在南部将为180,000单位,在中部为120,000单位,在东部为110,000单位,在西部为100,000单位。
DryIce在设计物流网络时,有四个备选的地点:New York, Atlanta, Chicago和San Diego。
在这四个地点建厂,工厂的生产能力将要么为200,000单位,要么为400,000单位。
工厂的年固定运营成本及从工厂所在地生产出产品并运往四个销售区域的生产和运输的单位成本如表所示。
请为该设施网络的设计建立模型,并请对模型作简要说明。
设定变量如下表所示:其中M11 M12等一系列值为0.1变量,即可得到如下式子:
m12+9200000*m22+232*x12+212*x22+230*x32+280*x42+5600000*m13+9300000*m 23+238*x13+230*x23+215*x33+270*x43+6100000*m14+10200000*m24+299*x14+2 80*x24+270*x34+225*x44;
m11*200000+m21*400000>=x11+x21+x31+x41;
m12*200000+m22*400000>=x12+x22+x32+x42;
m13*200000+m23*400000>=x13+x23+x33+x43;
m14*200000+m24*400000>=x14+x24+x34+x44;
x11+x12+x13+x14>=110000;
x21+x22+x23+x24>=180000;
x31+x32+x33+x34>=120000;
x41+x42+x43+x44>=100000;
@bin(m11);@bin(m21);@bin(m12);@bin(m22);@bin(m13);@bin(m23);@bin(m14)
;@bin(m24);
通过运行LINGO得到如下结果:
Global optimal solution found.
Objective value: 0.1294800E+09
Extended solver steps: 0
Total solver iterations: 131
Variable Value Reduced Cost
M11 0.000000 -6200000.
M21 0.000000 -0.1440000E+08 X11 0.000000 0.000000
X21 0.000000 41.00000
X31 0.000000 31.00000
X41 0.000000 136.0000
M12 0.000000 -2500000.
M22 1.000000 -6800000.
X12 110000.0 0.000000
X22 180000.0 0.000000
X32 110000.0 0.000000
X42 0.000000 95.00000
M13 0.000000 -5400000.
M23 0.000000 -0.1270000E+08 X13 0.000000 21.00000
X23 0.000000 33.00000
X33 0.000000 0.000000
X43 0.000000 100.0000
M14 1.000000 6100000.
M24 0.000000 0.1020000E+08 X14 0.000000 27.00000
X24 0.000000 28.00000
X34 10000.00 0.000000
X44 100000.0 0.000000
Row Slack or Surplus Dual Price
1 0.1294800E+09 -1.000000
2 0.000000 -61.00000
3 0.000000 -40.00000
4 0.000000 -55.00000
5 90000.00 0.000000
6 0.000000 -272.0000
7 0.000000 -252.0000
8 0.000000 -270.0000
9 0.000000 -225.0000
如下表:
总成本为:$129480000。