数学建模社区-数学中国

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

作者: 浅夏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' wMODEL:
/ h' i+ S2 _) }; ?- LTITLE 消防车问题; ' \' T- n- k( w5 q
SETS: 4 d) K- C1 \3 ^+ A6 `- b
supply/1..3/:b;
& |+ a8 v4 U; D0 {* cneed/1..7/;
, [. M0 Y0 K# y; slinks(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/ cDATA: / 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( O2 )在上面模型中,没有考虑消防车到达各火警地点的先后次序约束,但得到的结果正好满足所有的先后次序约束,这一结果不是必然的,而只是巧合。如对例题后半部 分的情形,结果就不是这样了。显然,此时只需要修改损失矩阵如表 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 DSETS: # U. N# E7 U. K1 P3 M% C
supply/1..3/:b;
: R# s7 l5 X8 a- Z, x* kneed/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- ux(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* Z2*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# ac=  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" YENDDATA
' M$ |' J$ t9 h* Q. pEND $ 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/893881722 }; \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