对应各章的习题及Lingo求解

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

Lingo 精选题目及答案

答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。 1、简单线性规划求解

(目标函数)2134m ax

x x z += s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0

,781022122

121x x x x x x x

2、整数规划求解

219040Max

x x z +=

⎪⎩⎪

⎨⎧≥≤+≤+0,7020756

792

12121x x x x x x 3、0-1规划求解

Max 4322

15.18.04.0x x x x f +++=

10106234321≤+++x x x x

10,,,4321或=x x x x

4、非线性规划求解

||4||3||2||m in

4321x x x x z +++=

s.t. ⎪⎪⎩

⎪⎨⎧

-

=+--=-+-=+--2132130432143214321x x x x x x x x x x x x

5、集合综合应用

产生一个集合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;

end

2、

model:

max=40*x1+90*x2;

9*x1+7*x2<56;

7*x1+20*x2<70;

@gin(x1);@gin(x2);

end

3、

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);

end

4、

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;

end

5、

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)); end

6.1、

设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:

⎩⎨

⎧=其他

件工作个工人去做第指派第0

1j i f ij

min

∑∑==⨯4

14

1

i j ij ij

t f

s.t. 14

1=∑=i ij

f

()4,3,2,1=j 每份工作都有一人做

∑==4

1

1j ij

f

()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))); end

6.2

设:煤厂进煤量i s ,居民区需求量为i d ,煤厂i 距居民区j 的距离为ij L ,煤厂i 供给

相关文档
最新文档