Lingo精选题目及参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lingo 精选题目及答案
答题要求:将Lingo 程序复制到Word 文档中,并且附上最终结果。 1、简单线性规划求解
(目标函数)2134max
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||min 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
1i 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 供给