运筹学实例分析及lingo求解.docx
- 文档编号:7225089
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:21
- 大小:101.48KB
运筹学实例分析及lingo求解.docx
《运筹学实例分析及lingo求解.docx》由会员分享,可在线阅读,更多相关《运筹学实例分析及lingo求解.docx(21页珍藏版)》请在冰豆网上搜索。
运筹学实例分析及lingo求解
运筹学实例分析及lingo求解
一、线性规划
某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。
各供货仓库到8个客户处的单位货物运输价见表
V1
V2
V3
V4
V5
V6
》
V7
V8
W1
6
2
6
7
4
2
5
!
8
W2
4
9
5
3
8
5
8
2
|
W3
5
2
1
9
7
4
3
3
W4
¥
7
6
7
3
9
2
7
1
W5
2
、
3
9
5
7
2
6
5
W6
5
5
?
2
2
8
1
4
3
试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。
解:
设
表示从第
个仓库到第
个客户的货物运量。
表示从第
个仓库到第
个客户的单位货物运价,
表示第
个仓库的最大供货量,
表示第
个客户的订货量。
目标函数是使总运输费用最少,约束条件有三个:
1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束
数学模型为:
》
编程如下:
model:
Sets:
Wh/w1..w6/:
ai;
Vd/v1..v8/:
dj;
links(wh,vd):
c,x;
endsets
Data:
>
ai=60,55,51,43,41,52;
dj=35,37,22,32,41,32,43,38;
c=6,2,6,7,4,2,5,9
4,9,5,3,8,5,8,2
5,2,1,9,7,4,3,3
7,6,7,3,9,2,7,1
2,3,9,5,7,2,6,5
5,5,2,2,8,1,4,3;
Enddata
Min=@sum(links(i,j):
c(i,j)*x(i,j));
《
@for(wh(i):
@sum(vd(j):
x(i,j))<=ai(i));
@for(vd(j):
@sum(wh(i):
x(i,j))=dj(j));
end
Globaloptimalsolutionfound.
Objectivevalue:
Totalsolveriterations:
0
VariableValueReducedCost
]
AI(W1)
AI(W2)
AI(W3)
AI(W4)
AI(W5)
AI(W6)
DJ(V1)
DJ(V2)
DJ(V3)
DJ(V4)
《
DJ(V5)
DJ(V6)
DJ(V7)
DJ(V8)
C(W1,V1)
C(W1,V2)
C(W1,V3)
C(W1,V4)
C(W1,V5)
C(W1,V6)
:
C(W1,V7)
C(W1,V8)
C(W2,V1)
C(W2,V2)
C(W2,V3)
C(W2,V4)
C(W2,V5)
C(W2,V6)
C(W2,V7)
C(W2,V8)
&
C(W3,V1)
C(W3,V2)
C(W3,V3)
C(W3,V4)
C(W3,V5)
C(W3,V6)
C(W3,V7)
C(W3,V8)
C(W4,V1)
C(W4,V2)
>
C(W4,V3)
C(W4,V4)
C(W4,V5)
C(W4,V6)
C(W4,V7)
C(W4,V8)
C(W5,V1)
C(W5,V2)
C(W5,V3)
C(W5,V4)
、
C(W5,V5)
C(W5,V6)
C(W5,V7)
C(W5,V8)
C(W6,V1)
C(W6,V2)
C(W6,V3)
C(W6,V4)
C(W6,V5)
C(W6,V6)
"
C(W6,V7)
C(W6,V8)
X(W1,V1)
X(W1,V2)
X(W1,V3)
X(W1,V4)
X(W1,V5)
X(W1,V6)
X(W1,V7)
X(W1,V8)
—
X(W2,V1)
X(W2,V2)
X(W2,V3)
X(W2,V4)
X(W2,V5)
X(W2,V6)
X(W2,V7)
X(W2,V8)
X(W3,V1)
X(W3,V2)
/
X(W3,V3)
X(W3,V4)
X(W3,V5)
X(W3,V6)
X(W3,V7)
X(W3,V8)
X(W4,V1)
X(W4,V2)
X(W4,V3)
X(W4,V4)
、
X(W4,V5)
X(W4,V6)
X(W4,V7)
X(W4,V8)
X(W5,V1)
X(W5,V2)
X(W5,V3)
X(W5,V4)
X(W5,V5)
X(W5,V6)
!
X(W5,V7)
X(W5,V8)
X(W6,V1)
X(W6,V2)
X(W6,V3)
X(W6,V4)
X(W6,V5)
X(W6,V6)
X(W6,V7)
X(W6,V8)
RowSlackorSurplusDualPrice
1
2
3
4
5
6
7
8
}
9
10
11
12
13
14
15
由以上结果可以清楚的看到由各仓库到各客户处的货物调运数量,由此得出的符合条件的最佳运货方案,而使运费最低,最低为664。
二、运输规划
重庆有三家电子厂分别是新普,隆宇和恒华,生产的笔记本电脑将要运向北京,天津,广东,上海四个城市销售,其产量和销售量见下表:
(单位:
万台)
<
表:
1-1
北京
天津
广东
上海
产量
新普
6
2
。
6
7
30
隆宇
4
9
5
3
25
恒华
。
8
8
1
5
21
销量
15
17
22
12
&
-
问:
哪种销售方案将会取得最少的运输费用,费用为多少
针对该运输问题,为了方便计算,可以设新普(A1),隆宇(A2)和恒华(A3)分别销往北京(B1)、天津(B2)、广东(B3)和上海(B4)四个城市销售量为
.建立以下模型:
表:
1-2
B1
B2
B3
B4
产量
)
A1
6
2
6
7
30
A2
4
9
5
>
3
25
A3
8
8
1
5
21
销量
15
>
17
22
12
-
目标(Theobjective)最少费用:
约束条件:
供应限制(Thesupplyconstrains)指标约束(Thedamandconstrains)
LINGO模型:
$
model:
sets:
origin/1..3/:
a;
sale/1..4/:
b;
routes(origin,sale):
c,x;
endsets
data:
a=30,25,21;
b=15,17,22,12;
c=6,2,6,7,4,9,5,3,8,8,1,5;
\
enddata
[OBJ]min=@sum(routes:
c*x);
@for(origin(i):
[SUP]
@sum(sale(j):
x(i,j))<=a(i));
@for(sale(j):
[DEM]
@sum(origin(i):
x(i,j))=b(j));
end
lingo结果:
Globaloptimalsolutionfound.
Objectivevalue:
-
Infeasibilities:
Totalsolveriterations:
6
VariableValueReducedCost
X(1,1)
X(1,2)
X(1,3)
X(1,4)
X(2,1)
X(2,2)
X(2,3)
、
X(2,4)
X(3,1)
X(3,2)
X(3,3)
X(3,4)
RowSlackorSurplusDualPrice
OBJ
SUP
(1)
SUP
(2)
SUP(3)
\
DEM
(1)
DEM
(2)
DEM(3)
DEM(4)
从计算结果可以得出,新普(A1)分别销往北京(B1)、天津(B2)、广东(B3)和上海(B4)四个城市销售量为分别为2万台,17万台,1万台,0万台,剩余10万台;隆宇(A2)分别销往北京(B1)、天津(B2)、广东(B3)和上海(B4)四个城市销售量为别为13万台,0万台,0万台,12万台,剩余0万台;恒华(A3)分别销往北京(B1)、天津(B2)、广东(B3)和上海(B4)四个城市销售量为分别为0万台,0万台,21万台,0万台,剩余0万台;总费用为161个单位.
三、整数规划
某公司打算向它的3个营业区增设6个销售店,每个营业区至少增设一个。
从各区赚取的利润与增设的销售店个数有关,其数据如下表所示。
试求各区应分配几个增设的销售店,才能使总利润最大。
销售点增加数
0
1
;
2
3
4
A区利润/万元
100
200
280
330
340
B区利润/万元
】
200
210
220
225
230
C区利润/万元
150
160
170
180
(
200
要设置集合zone/A,B,C/,表示三个地区。
因为获得的利润与地区和各地的销售点增加数均相关,所以可以仿照运输模型,用number/1..4/表示每个地区可选的销售点增加数,然后用一个派生集links(zone,number):
c,profit,定义
profit(i,j)为在i地区新增j个销售点能获得的利润。
可写出约束条件为:
~
所求函数为max=@sum(links:
c*profit);
Lingo程序如下:
model:
sets:
zone/A,B,C/;!
A,B,C三个地区;
number/1..4/;!
各地区可选择新建的销售点数目,可选1~4中的一个数,通过links把zone和number联系起来;
links(zone,number):
c,profit;!
若在i地区新建j个销售点,则c(i,j)=1,否则c(i,j)=(i,j)表示在i地区新建j个销售点的利润;
endsets
data:
profit=200280330340
]
210220225230
160170180200;
enddata
max=@sum(links:
c*profit);
@for(zone(I):
@sum(number(J):
c(I,J))=1);!
对于每一个地区,新建销售点的数目是一定的,c的和为1;
@sum(zone(I):
@sum(number(J):
c(I,J)*J))=6;!
三个地区新建的销售点总数为6;
@for(links(i,j):
@bin(c(i,j)));!
每一个c(i,j)只能取0或1;
end
》
用Lingo求解,结果如下:
Globaloptimalsolutionfound.
Objectivevalue:
Extendedsolversteps:
0
Totalsolveriterations:
0
VariableValueReducedCost
C(A,1)
C(A,2)
C(A,3)
C(A,4)
|
C(B,1)
C(B,2)
C(B,3)
C(B,4)
C(C,1)
C(C,2)
C(C,3)
C(C,4)
则在A,B,C区域应分别新增3,1,2个销售点,可获得的最大利润为710万元。
四、目标规划
…
有11件任务(A—K)分配到4个工作站(1—4),任务的优先次序如下图。
每件任务所花费的时间如下表。
任务
A
B
C
D
E
<
F
G
H
I
J
K
时间
45
11
9
$
50
15
12
12
12
12
8
9
解:
用变量
表示任务
分配给工作站
的情况,
表示分配,
表示不分配,
表示完成各项任务所需时间,则目标函数为
¥
约束条件
(1):
每项任务只能且必须分配至一个工作站来做,可以表示为:
;
约束条件
(2):
各项任务间如果有优先关系,则排在前面的任务
对应的工作站(序号)应当小于(或等于)排在后面的任务
所对应的工作站(序号),即对所有有顺序的任务
:
;
约束条件(3):
。
这是一个非线性规划(目标函数非线性),但可以化为线性规划,增加一个变量,再增加四个约束条件:
,目标函数变为
。
LINGO程序为:
model:
sets:
task/ABCDEFGHIJK/:
t;
pred(task,task)/A,BB,CC,FC,GF,JG,JJ,KD,EE,HE,IH,JI,J/;
|
station/1..4/;
tsx(task,station):
x;
endsets
data:
T=4511950151212121289;
enddata
@for(task(i):
@sum(station(k):
x(i,k))=1);
@for(pred(i,j):
@sum(station(k):
k*x(j,k)-k*x(i,k))>=0);
@for(station(k):
@sum(txs(i,k):
t(i)*x(i,k))<=cyctime);
[
min=cyctime;
@for(txs:
@bin(x));
end
计算的部分结果为
Globaloptimalsolutionfoundatiteration:
1255
Objectivevalue:
VariableValueReducedCost
CYCTIME
X(A,1)
X(A,2)
@
X(A,3)
X(A,4)
X(B,1)
X(B,2)
X(B,3)
X(B,4)
X(C,1)
X(C,2)
X(C,3)
X(C,4)
!
X(D,1)
X(D,2)
X(D,3)
X(D,4)
X(E,1)
X(E,2)
X(E,3)
X(E,4)
X(F,1)
X(F,2)
《
X(F,3)
X(F,4)
X(G,1)
X(G,2)
X(G,3)
X(G,4)
X(H,1)
X(H,2)
X(H,3)
X(H,4)
:
X(I,1)
X(I,2)
X(I,3)
X(I,4)
X(J,1)
X(J,2)
X(J,3)
X(J,4)
X(K,1)
X(K,2)
·
X(K,3)
X(K,4)
五、非线性规划
现要做一百套钢管,每套要长为、和的钢管各一根。
已知原料长,问应如何下料,使用的原料最省。
$
2
1
1
1
0
0
#
0
0
0
2
1
0
3
2
1
:
0
1
0
1
3
0
2
3
4
~
料头
0
设用方案Ⅰ,Ⅱ,…,Ⅷ分别裁原料钢管
根,则:
!
上题中,如果每套的钢管要70根,要求使用的切割模式不超过3种.问应如何下料,使用的原料最省。
解:
设xi—按第i种模式切割的原料钢管根数(i=1,2,3)r1i,r2i,r3i,r4i—第i种切割模式下,每根原料生产、和,的钢管的数量.
目标函数(总根数)
按第i种切割模式下,每根钢管的长度限制:
因三种切割模式的排列顺序无关紧要,所以不妨增加以下约束:
又钢管的总根数有明显的上界和下界。
首先,原料钢管的总根数不可能少于
其次,考虑第一种切割模式下只生产钢管,一根原料钢管切割成2根钢管,100套钢管需要50根原料;如此可计算出钢管的上界:
所以可以增加以下约束:
因此进行lingo编程:
model:
title钢管下料;
min=x1+x2+x3;
x1*r11+x2*r12+x3*r13>=100;
x1*r21+x2*r22+x3*r23>=100;
x1*r31+x2*r32+x3*r33>=100;
x1*r41+x2*r42+x3*r43>=70;
x1+x2+x3>=105;
x1+x2+x3<=152;
*r11+*r21+*r31+*r41>=;
*r12+*r22+*r32+*r42>=;
*r13+*r23+*r33+*r43>=;
*r11+*r21+*r31+*r41<=;
*r12+*r22+*r32+*r42<=;
*r13+*r23+*r33+*r43<=;
x1>=x2;x2>=x3;
@gin(x1);@gin(x2);@gin(x3);
@gin(r11);@gin(r21);@gin(r31);@gin(r41);
@gin(r12);@gin(r22);@gin(r32);@gin(r42);
@gin(r13);@gin(r23);@gin(r33);@gin(r43);
End
运行结果为:
Feasiblesolutionfound.
Extendedsolversteps:
12
Totalsolveriterations:
346
ModelTitle:
钢管下料;
VariableValueRowSlackorSurplus
X11
R112
X23
R124
X35
R136
R217
R228
R239
R3110
R3211
R3312
R4113
R4214
R43
@
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运筹学 实例 分析 lingo 求解