数学建模社区-数学中国
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
[打印本页]
作者:
浅夏110
时间:
2020-6-17 09:20
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
问题描述: 某市消防中心同时接到了三处火警电话。根据当前的火势,三处火警地点分 别需要 2 辆、2 辆和 3 辆消防车前往灭火。三处火警地点的损失将依赖于消防车到达的及时程度:记
为第 j 辆消防车到达火警地点i的时间,则三处火警地点的损失分别为
( I/ C, x+ ]9 @) y& \1 f* D
5 G6 u t0 r; _9 ]0 Z& @
/ f" a" a+ w' `4 `; d
; 。目前可供消防中心调度的消防车正好有 7辆,分别属于三个消防站(可用消防车数量分别为 3 辆、2 辆、2 辆)。消防车从三个消 防站到三个火警地点所需要的时间如表 6 所示。应如何调度消防车,才能使总损失最 小?
( {0 y8 P- O3 O# X7 K# N
1 q2 q; l# [/ N4 q' B
4 l3 |% V; m: E4 F- _0 V9 B9 `
' N6 H) Q' P, E1 F8 J J
问题二:如果三处火警地点的损失分别为
;,调度方案是否需要改变?
+ E" v, m* `& G9 _3 x' N+ i7 K
; d4 @; [9 I) i6 O# i3 b
7 t5 e# z) L- V
' }) D/ H7 r5 @1 E
(1)问题分析
5 D4 |( j( `2 E
! }' O- M( q) W! d" b8 y o$ F
本题考虑的是为每个火警地点分配消防车的问题,初步看来与线性规划中经典的运输问题有些类似。本题的问题可以看成是指派问题和运输问题的一种变形,我们下面首先把它变成一个运输问题建模求解。
* D3 F+ A6 L' ?. W0 d+ N2 y
/ u9 f, u* C. b5 \
(2)决策变量
( r' E) A3 l) L: G: I% [
! |- h" b S9 b0 M1 V
为了用运输问题建模求解,我们很自然地把 3 个消防站看成供应点。如果直接把 3 个火警地点看成需求点,我们却不能很方便地描述消防车到达的先后次序,因此难以确 定损失的大小。下面我们把 7 辆车的需求分别看成 7 个需求点(分别对应于到达时间
. 用
表示消防站i是否向第 j 个需求点派车(1 表示派车,0表示不派车),则共有 21 个 0−1 变量.
) M# F0 o! N$ F* K( _* y
/ `9 |0 W9 e6 J* [/ p
(3)模型建立
$ m: t9 B, }* O
+ d2 \0 z& a9 M" k; Q7 [+ V6 Z$ k
题目中给出的损失函数都是消防车到达时间的线性函数,所以由所给数据进行简 单的计算可知,如果消防站 1 向第 6 个需求点派车(即消防站 1 向火警地点 3 派车但该 消防车是到达火警地点 3 的第二辆车),则由此引起的损失为 72 98 = × 。同理计算,可以得到损失矩阵如表 7 所示(元素分别记为
)。
9 Y! b' B2 a( Q3 a
$ w3 o. _% E1 @. K& c1 Y" V
1 x. V( T1 ^! {3 ~9 I/ j
4 _; X& A. ]; B1 O
# {2 b# p; T* k8 t3 B! r1 d4 r
3 T/ a) L! q! L9 L8 L9 j
+ `7 P% f+ }- @) f
于是,使总损失最小的决策目标为
# b2 l7 a R0 G( U
9 x0 ?. O& ^, y' H7 V
( 1 )
8 Y0 g0 H2 O2 h0 G- S2 L' s
% Q$ C! X# G7 \
约束条件:
- Q$ F6 l2 P8 A* w% u5 o
$ \! b8 J5 a8 j6 z
约束条件有两类,一类是消防站拥有的消防车的数量限制,另一类是 各需求点对消防车的需求量限制。
' p/ E; q% `) D/ b( y, ^
记
( i=1,2,3 )为第i个消防站拥有消防车的数量,则消防站拥有的消防车的数量限制可以表示为
9 v$ D/ l% y* C! T5 X
( 2 )
4 F9 s I4 y$ q e: ]" g7 j, h
( l2 T% \6 X, e; b6 c
各需求点对消防车的需求量限制可以表示为
9 ~8 U2 U4 m$ P
3 m* V6 U+ i: Z3 I+ m
( 3 )
4 }: Z6 s0 k6 [, t' e' M" Q/ I
5 f. i$ T% U0 v3 r- C* X. f/ e
(4)模型求解 的lingo代码
6 a# v3 p7 u6 q3 s
/ B$ M$ ~; d0 p. W8 O% t' w
MODEL:
/ h' i+ S2 _) }; ?- L
TITLE 消防车问题;
' \' T- n- k( w5 q
SETS:
4 d) K- C1 \3 ^+ A6 `- b
supply/1..3/:b;
& |+ a8 v4 U; D0 {* c
need/1..7/;
, [. M0 Y0 K# y; s
links(supply,need):c,x;
; R. ]7 }1 x \" F
ENDSETS
1 N9 v2 Y }& W
[OBJ]Min=@sum(links:c*x);
H7 _% D- l, `/ L) X7 n& r
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
$ p3 R, S2 H/ C/ s
@FOR(need(j):@sum(supply(i):x(i,j))=1);
/ Q3 V7 N5 Q8 H/ c
DATA:
/ f, w, z6 P! \3 \3 v
b=3,2,2;
) D! B+ r8 ^- y" X* T
c=36,24,49,21,81,72,45
7 H; @* T5 B" [9 |
30,20,56,24,99,88,55
0 s# f* q' S3 f6 g3 O/ w
36,24,63,27,90,80,50;
f2 }) r' v& |: n" a c: X
ENDDATA
4 r( L$ y) f. B7 n3 k/ r1 m
END
5 i! f* |2 y$ o" w3 u" s3 s3 G7 o+ I
求得结果为,消防站 1 应向火警地点 2 派 1 辆车,向火警地点 3 派 2 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 2、3 各派 1 辆车。最小总损失 为 329。
' g+ _- K; u5 t- A3 u
6 n! `& ?! ?' b; _1 G
(5)讨论
) o1 B4 i# H9 t$ Z. W* z
2 t- B3 V' h2 {! {! [
1)这个问题本质上仍然和经典的运输问题类似,可以把每辆车到达火场看做需求点,消防站看做供应点。在上面模型中,我们虽然假设 为 0− 1变量,但求解时是采用线性规划求解的,也就是说没有加上 为 0− 1 变量或整数变量的限制条件,但求解得到的结果中 正好是 0−1 变量。这一结果不是偶然的,而是运输问题特有的一种性质.
, s9 s9 L1 |) J2 V* M- q8 X
1 t% V$ \1 D% R( O
2 )在上面模型中,没有考虑消防车到达各火警地点的先后次序约束,但得到的结果正好满足所有的先后次序约束,这一结果不是必然的,而只是巧合。如对例题后半部 分的情形,结果就不是这样了。显然,此时只需要修改损失矩阵如表 8 所示(所示(元素仍然分别记为
)
4 d. c- d- E4 Y; i# k
$ e! P& N1 v* B- @! Z0 C
# c1 w4 X8 K8 e1 S
. o6 k2 Y( o$ t' L ~* R4 Q& }
此时重新将式( 1 )-( 3 ) 构成的线性规划模型输入 LINGO 求解,可以得到新的最优解
: 其它变量为 0(最小总损失仍为 329)
M) F z6 T; S$ {1 ^5 l
2 B0 L4 \$ R0 K
实际上,损失矩阵中只是 1、2 列交换了位置,3、4 列交换了位置,5、7 列 交换了位置,因此不用重新求解就可以直接看出以上新的最优解。
+ p1 i3 h6 s* ~' B# R
3 H3 T; D6 b X3 T2 q
但是,以上新的最优解却是不符合实际情况的。例如,
表明火警地点2 的第一辆消防车来自消防站 3,第二辆消防车来自消防站 1,但这是不合理的,因为 火警地点 2 与消费站 3 有 9min 的距离,大于与消防站 1 的 7min 的距离。分配给火警 地点 3 的消防车也有类似的不合理问题。为了解决这一问题,我们必须考虑消防车到达 各火警地点的先后次序约束,也就是说必须在简单的运输问题模型中增加一些新的约 束,以保证以上的不合理问题不再出现。
; @3 i6 |9 e3 h* b* A! u; S l
3 W) c9 E4 \2 q1 _
首先考虑火警地点 2。由于消防站 1 的消防车到达所需时间(7min)小于消防站 2 的消防车到达所需时间(8 分钟),并都小于消防站 3 的消防车到达所需时间(9 分钟), 因此火警地点 2 的第二辆消防车如果来自消防站 1,则火警地点 2 的第 1 辆消防车也一 定来自消防站 1;火警地点 2 的第 2 辆消防车如果来自消防站 2,则火警地点 2 的第 1 辆消防车一定来自消防站 1 或 2。因此,必须增加以下约束:
( 4 )
1 g: [0 T- o4 g6 v/ M
4 h1 ^0 q1 e2 k2 U: Q
同理,对火警地点 1,必须增加以下约束:
( 5 )
d; I* p4 j9 Y
$ @+ R5 R7 G" L
对火警地点 3,必须增加以下约束:
( 6 )
0 a' S3 X% l( Y" i( k; u( o
0 _3 o/ s. l: O) G4 M' ~0 a$ l8 F; l
重新将式(1)~(6)构成的整数规划模型(
是 1 0− 变量)输入 LINGO 软件如下:
5 W" b2 y: t7 M* q& i: E
# m9 J( j9 i7 L3 T8 Q7 \
MODEL:
9 y$ ]) [$ v+ j a$ ]
TITLE 消防车问题;
& [8 Y/ X( T; u8 {3 I( I4 D
SETS:
# U. N# E7 U. K1 P3 M% C
supply/1..3/:b;
: R# s7 l5 X8 a- Z, x* k
need/1..7/;
8 H3 b. C* ~- y& d
links(supply,need):c,x;
6 ?2 l3 [& w- q& v( ]$ ?- h& F4 d' {
ENDSETS
4 k7 ?4 F$ [- K2 K3 m: ], T
[OBJ]Min=@sum(links:c*x);
; _4 o! ]4 s3 |6 y
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
! p3 _8 N" B# C4 I! q
@FOR(need(j):@sum(supply(i):x(i,j))=1);
) _/ i+ A, x% t" g0 {
x(1,4)<x(1,3);
" p' e4 T4 g+ d- l' t1 _
x(2,4)<x(1,3)+x(2,3);
- {5 c5 L9 u& c- u
x(2,2)<x(2,1);
) Y3 T% \, v9 A+ f" \- j: x/ m
x(1,6)<x(1,5);
5 v" [0 }5 h0 B4 E9 x; H/ X+ j
x(1,7)<x(1,6);
/ u, L: z2 C) T. Y4 X0 n( O, |
x(3,6)<x(1,5)+x(3,5);
9 n8 [7 i+ P- [5 A* Z
2*x(3,7)<x(1,5)+x(1,6)+x(3,5)+x(3,6);
" d6 ^, x# I1 |( H. }! V8 Y" t3 e
@for(links:@bin(x));
6 N) n7 T& m4 G6 x
DATA:
$ L* R! }7 k$ [+ d
b=3,2,2;
5 B4 w- K4 ^" b( A# a
c= 24 36 21 49 45 72 81
. H7 y8 U7 S+ {$ L& F
20 30 24 56 55 88 99
! U( D$ l" C0 v. z- |
24 36 27 63 50 80 90;
1 }, O5 ~" ^: u' n }( J" Y
ENDDATA
' M$ |' J$ t9 h* Q. p
END
$ k" }1 d& B- K' T8 z
求解可以得到:
,其它变量为 0(最小总损失仍为 335)。也就是说,消防站 1 应向火警地点 2 派 2 辆车,向火警地点 3 派 1 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 3 派 2 辆车。经过检 验可以发现,此时的派车方案是合理的。
) u$ G D* m) d f3 m) ` u. g
————————————————
' j$ C+ c( c) p6 K) \+ H
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
; b& @4 L* d: l G
原文链接:https://blog.csdn.net/qq_29831163/java/article/details/89388172
2 }; \5 T' A) t4 J& b% o3 h% g
8 f2 V1 E3 f/ B# v" m8 M9 T3 I
# d% ?9 P0 N2 I! H
, _; Z% s) Y d0 T( d5 B5 h
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5