数学建模社区-数学中国

标题: 消防车调度问题 :用数学建模优化生产与服务运作中的管理问题 [打印本页]

作者: 浅夏110    时间: 2020-6-17 09:20
标题: 消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
问题描述: 某市消防中心同时接到了三处火警电话。根据当前的火势,三处火警地点分 别需要 2 辆、2 辆和 3 辆消防车前往灭火。三处火警地点的损失将依赖于消防车到达的及时程度:记  为第 j 辆消防车到达火警地点i的时间,则三处火警地点的损失分别为
8 _) T9 G) [% f4 U6 \# @: W: ]$ o

8 ?1 j1 P- w: _( ?' D; g, M7 s   ; 。目前可供消防中心调度的消防车正好有 7辆,分别属于三个消防站(可用消防车数量分别为 3 辆、2 辆、2 辆)。消防车从三个消 防站到三个火警地点所需要的时间如表 6 所示。应如何调度消防车,才能使总损失最 小?
5 _6 z9 ^  H- E9 ]
( ]* a4 T, R4 R  r2 h0 \1 R; w6 N8 C

0 c5 p. p9 h% k问题二:如果三处火警地点的损失分别为 ;,调度方案是否需要改变?
' U$ k+ r" U" s  N8 ^" Y, y& J# X. i
0 w3 D8 c% k) n1 {0 s. `. \- H2 P) U/ y" \

# {& t# z1 N' I% j(1)问题分析
" Q5 f) y8 O& c! R, d! O% ]
1 M6 j; O9 E4 K9 L7 e3 w% p本题考虑的是为每个火警地点分配消防车的问题,初步看来与线性规划中经典的运输问题有些类似。本题的问题可以看成是指派问题和运输问题的一种变形,我们下面首先把它变成一个运输问题建模求解。5 ]7 q; z0 v; Q  M: u% g1 M% c
+ k5 Z& l* K& Q9 G3 t6 p$ X3 o
(2)决策变量
1 @. j. {* k* a6 j1 _9 U# V' S9 Y3 F8 G( ]. q
为了用运输问题建模求解,我们很自然地把 3 个消防站看成供应点。如果直接把 3 个火警地点看成需求点,我们却不能很方便地描述消防车到达的先后次序,因此难以确 定损失的大小。下面我们把 7 辆车的需求分别看成 7 个需求点(分别对应于到达时间 . 用   表示消防站i是否向第 j 个需求点派车(1 表示派车,0表示不派车),则共有 21 个  0−1 变量.7 T9 n; m8 z* y
& c: K/ ?- r; \3 s* n
(3)模型建立
  K3 D0 ]$ U9 m) q8 a& m
7 I0 e6 Y+ g$ q" V题目中给出的损失函数都是消防车到达时间的线性函数,所以由所给数据进行简 单的计算可知,如果消防站 1 向第 6 个需求点派车(即消防站 1 向火警地点 3 派车但该 消防车是到达火警地点 3 的第二辆车),则由此引起的损失为 72 98 = × 。同理计算,可以得到损失矩阵如表 7 所示(元素分别记为 )。
( |; _# k* p6 v" C: e8 d  l% T% O4 Z7 n& _/ E8 A* ~- E

' M6 A7 s; V- n  H
1 y& k) x1 W% a
7 p' u2 P% q/ U+ r: r7 h& r; r7 B. p0 |, _

/ ~: n3 ~+ T/ D; v  \7 y于是,使总损失最小的决策目标为
8 @9 ?8 R4 ?. \3 P8 U
% R% c6 b7 y. g3 s  ?3 v                     ( 1 )* v" y+ i9 w/ I# [$ Z. N
' ]/ \* U, d# U. p! P
约束条件:$ V* v2 p7 x7 K1 n; C  x9 ]

2 I% W. i7 p1 E0 P7 t, e0 f约束条件有两类,一类是消防站拥有的消防车的数量限制,另一类是 各需求点对消防车的需求量限制。 1 N/ m- h: s' E
记   ( i=1,2,3 )为第i个消防站拥有消防车的数量,则消防站拥有的消防车的数量限制可以表示为
. M3 k; \* W3 U( Z' _! h                        (  2 )
, n7 {9 N1 k. O  A& `9 H/ u/ Q+ A1 q6 C3 F
各需求点对消防车的需求量限制可以表示为 3 N: V9 I/ X* g& ?' j) U

0 v! X0 n, D6 i/ u8 |           (  3 )3 R7 `- ~) A2 [

& V* [! `! {7 q: I(4)模型求解 的lingo代码/ x0 r* Z3 E; ~% Q% R/ D2 b6 K

8 Z0 \+ w: o% DMODEL: $ W9 D% [8 s) C$ u' S  X; P+ w: r  m, y
TITLE 消防车问题; ( ]( F8 d/ i0 o$ b7 o1 W
SETS:
8 o( u9 K/ Y0 y( s4 w$ Vsupply/1..3/:b; + ]3 O: \% t4 l5 w; d
need/1..7/; ( d( L( r  P& |+ ]& D2 y& i
links(supply,need):c,x; * B9 l2 m) }& }8 N" I% U
ENDSETS
, t% U) L( {: z6 m8 u- _8 x; q[OBJ]Min=@sum(links:c*x);
  |4 ?% q1 _  g. J@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
7 i* H8 r8 `6 S% f$ t9 d: h% _@FOR(need(j):@sum(supply(i):x(i,j))=1);
1 e) L5 \5 V; X% h, b! bDATA:
' v! r9 c3 o8 e4 f# d; h( ub=3,2,2; * I0 Y% O- s& \7 ?
c=36,24,49,21,81,72,45   
9 h) E* b( N+ D5 n8 q  l3 E4 D' @6 h    30,20,56,24,99,88,55   
# I! Y4 k: ?6 T" f8 j2 ]    36,24,63,27,90,80,50;
+ s; g" S' |4 \ENDDATA # i: y! V9 m, _" T0 r
END
$ u) V3 n% q5 e& j% ?0 z3 ?求得结果为,消防站 1 应向火警地点 2 派 1 辆车,向火警地点 3 派 2 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 2、3 各派 1 辆车。最小总损失 为 329。
, v& v! ~, N9 b- X2 T3 x( I! `  w  r5 V- H. Q& K
(5)讨论
6 p% z& |. W1 M( o2 M% w( j. h& \. w" ]7 |/ o) p4 J0 {
1)这个问题本质上仍然和经典的运输问题类似,可以把每辆车到达火场看做需求点,消防站看做供应点。在上面模型中,我们虽然假设   为 0− 1变量,但求解时是采用线性规划求解的,也就是说没有加上 为 0− 1 变量或整数变量的限制条件,但求解得到的结果中   正好是 0−1 变量。这一结果不是偶然的,而是运输问题特有的一种性质.
$ H2 |" ]- W$ E. S2 P4 ^
: b* V4 u; _$ q2 )在上面模型中,没有考虑消防车到达各火警地点的先后次序约束,但得到的结果正好满足所有的先后次序约束,这一结果不是必然的,而只是巧合。如对例题后半部 分的情形,结果就不是这样了。显然,此时只需要修改损失矩阵如表 8 所示(所示(元素仍然分别记为 )! t6 b' @0 f$ C. {

3 u& N6 [6 i9 `3 ^  f% S9 e, W- \- Z# j" b* D4 {, A
* }6 G! s8 ?/ y3 Z4 G: R& a
此时重新将式( 1 )-( 3 ) 构成的线性规划模型输入 LINGO 求解,可以得到新的最优解: 其它变量为 0(最小总损失仍为 329)# _7 \# e7 G8 v3 G

& }1 `+ r8 C: x8 g实际上,损失矩阵中只是 1、2 列交换了位置,3、4 列交换了位置,5、7 列 交换了位置,因此不用重新求解就可以直接看出以上新的最优解。
, {5 y2 t6 w: P2 c* `7 Y3 r4 Y4 p6 e/ S! t: P
但是,以上新的最优解却是不符合实际情况的。例如,  表明火警地点2 的第一辆消防车来自消防站 3,第二辆消防车来自消防站 1,但这是不合理的,因为 火警地点 2 与消费站 3 有 9min 的距离,大于与消防站 1 的 7min 的距离。分配给火警 地点 3 的消防车也有类似的不合理问题。为了解决这一问题,我们必须考虑消防车到达 各火警地点的先后次序约束,也就是说必须在简单的运输问题模型中增加一些新的约 束,以保证以上的不合理问题不再出现。! s4 i& P' R" k  R1 s
* e) _3 `. }6 G, I! X
首先考虑火警地点 2。由于消防站 1 的消防车到达所需时间(7min)小于消防站 2 的消防车到达所需时间(8 分钟),并都小于消防站 3 的消防车到达所需时间(9 分钟), 因此火警地点 2 的第二辆消防车如果来自消防站 1,则火警地点 2 的第 1 辆消防车也一 定来自消防站 1;火警地点 2 的第 2 辆消防车如果来自消防站 2,则火警地点 2 的第 1 辆消防车一定来自消防站 1 或 2。因此,必须增加以下约束:   (  4 ); k) d8 \7 w+ c+ q9 \# i
7 Q, l" ^. V$ `. B
同理,对火警地点 1,必须增加以下约束:    (  5 )  w- B# Z' M- \$ _

- O+ t9 E! b: `9 D1 g对火警地点 3,必须增加以下约束:     ( 6 )
+ H6 Q* d0 B$ }) D. o2 h' E
, s. _- w9 t3 u  M重新将式(1)~(6)构成的整数规划模型(   是 1 0− 变量)输入 LINGO 软件如下:
2 J. ]# C6 X) E8 P/ L$ z7 I, M
4 W+ y0 l- I, mMODEL: & h$ s( \" s4 L6 H
TITLE 消防车问题;
# H3 Y  G# E' k/ ~* KSETS:
1 b4 z0 f* m  F  N  r0 ~supply/1..3/:b; & p: v" F) p; s" [
need/1..7/;
8 u" l9 m! K' A& I) e) T* }: H/ ?4 glinks(supply,need):c,x; # S, O% n1 |5 J3 p& ?) u: Q) B
ENDSETS # p- {7 |% ^8 Q& ~* i" E" c3 }
[OBJ]Min=@sum(links:c*x);
) q" C1 W+ a$ M" _6 O$ [@FOR(supply(i):@sum(need(j):x(i,j))=b(i)); 4 A2 }- M! K. |8 Y
@FOR(need(j):@sum(supply(i):x(i,j))=1); " q- Z8 T+ O& I! y* |, g( @# O6 s  O
x(1,4)<x(1,3); # U1 d2 B# T; t' b0 |- H6 w
x(2,4)<x(1,3)+x(2,3);
9 q) \3 L) j9 V7 Ox(2,2)<x(2,1);
, r, |+ g* C! Lx(1,6)<x(1,5);
2 V9 [9 D6 G  ^( ^( jx(1,7)<x(1,6);
0 ?9 O1 d8 N- J. jx(3,6)<x(1,5)+x(3,5);
) r/ C5 V8 Z2 |( o2 Z: e2*x(3,7)<x(1,5)+x(1,6)+x(3,5)+x(3,6); * I. W3 o* b  B" L9 u  R( L
@for(links:@bin(x)); + U# R; M+ L$ k' f  m
DATA:4 ?7 ^' g3 H' a$ M
b=3,2,2;
4 r  Q, a' Q5 N, N3 E9 o- Z) @c=  24    36    21    49    45    72    81     % x" _! |' K6 g0 A+ ^. I" ?6 z
    20    30    24    56    55    88    99     
, H' x- H' A( l* U  f8 A    24    36    27    63    50    80    90;
8 y! ^2 t: C8 c) Z; TENDDATA
( ?; C! J" K  T- g/ BEND ' W4 l* ]  X2 L. M& I7 g
求解可以得到: ,其它变量为 0(最小总损失仍为 335)。也就是说,消防站 1 应向火警地点 2 派 2 辆车,向火警地点 3 派 1 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 3 派 2 辆车。经过检 验可以发现,此时的派车方案是合理的。 3 O5 Y0 K' u- M- J* G  ~9 T
————————————————: I. d+ B, h. E! I* C- g, p7 l$ ]/ {% F
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。/ W- _  D8 C2 I* r% @  E
原文链接:https://blog.csdn.net/qq_29831163/java/article/details/89388172
4 F8 ?1 B4 @8 w$ g3 p, }7 N' q; K; x0 Z

) n( }, J: I. w7 q" b9 X9 R6 a5 y% l! e, _, y9 Y





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5