数学建模社区-数学中国
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
[打印本页]
作者:
浅夏110
时间:
2020-6-17 09:20
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
问题描述: 某市消防中心同时接到了三处火警电话。根据当前的火势,三处火警地点分 别需要 2 辆、2 辆和 3 辆消防车前往灭火。三处火警地点的损失将依赖于消防车到达的及时程度:记
为第 j 辆消防车到达火警地点i的时间,则三处火警地点的损失分别为
~; m8 l2 H3 r2 J3 v9 w- z/ [
/ H; }) n4 \. p/ @& D# C! T ~
8 J T# p- ? T; h! s' k6 h) K( q
; 。目前可供消防中心调度的消防车正好有 7辆,分别属于三个消防站(可用消防车数量分别为 3 辆、2 辆、2 辆)。消防车从三个消 防站到三个火警地点所需要的时间如表 6 所示。应如何调度消防车,才能使总损失最 小?
`% \, X9 } G( _
' l9 i3 F" m* U% k# i
/ |( A' R* U2 Z, ]
3 v2 B a3 h9 R$ b# N
问题二:如果三处火警地点的损失分别为
;,调度方案是否需要改变?
' P/ _2 U0 X+ E6 B5 A( A7 P
% Y7 f# N. m n8 t" U( Q4 v) j
, E' i: i) k* u) S! I& V. H- j
, z' p% c: q* D2 n5 r3 j
(1)问题分析
W5 R0 Z8 J6 _8 o" n$ j
; F6 O; k3 z2 [( Z! X
本题考虑的是为每个火警地点分配消防车的问题,初步看来与线性规划中经典的运输问题有些类似。本题的问题可以看成是指派问题和运输问题的一种变形,我们下面首先把它变成一个运输问题建模求解。
G! k8 [" M2 v5 U. @* f
7 B! \, n9 P4 G2 i( D
(2)决策变量
5 h! W8 j7 b: V9 L2 J3 Z; z) K
% a* k& @+ [, Y+ y h% O
为了用运输问题建模求解,我们很自然地把 3 个消防站看成供应点。如果直接把 3 个火警地点看成需求点,我们却不能很方便地描述消防车到达的先后次序,因此难以确 定损失的大小。下面我们把 7 辆车的需求分别看成 7 个需求点(分别对应于到达时间
. 用
表示消防站i是否向第 j 个需求点派车(1 表示派车,0表示不派车),则共有 21 个 0−1 变量.
3 |% T) k7 F$ h6 L# C3 T4 d$ {3 o! r
: z9 q8 F% z' z0 P2 Z: t
(3)模型建立
5 P5 C7 k6 O/ |( q/ K7 T% T
7 w1 F% c' Y$ K9 @# Z
题目中给出的损失函数都是消防车到达时间的线性函数,所以由所给数据进行简 单的计算可知,如果消防站 1 向第 6 个需求点派车(即消防站 1 向火警地点 3 派车但该 消防车是到达火警地点 3 的第二辆车),则由此引起的损失为 72 98 = × 。同理计算,可以得到损失矩阵如表 7 所示(元素分别记为
)。
8 v6 [/ C, y6 ]+ Y3 p& [: h
# h& z0 {( v4 O% k2 E2 Y
4 l+ e# W6 a t/ w) ~ G
7 n$ J- ^1 C% N; |: D- Q
1 h. O& d& m2 M: ]& O
* J8 \3 E, y% _9 m: @- X* u/ j
+ D$ ~0 y0 r% H9 C" k
于是,使总损失最小的决策目标为
a; ^! o% v- ^0 }
+ e, t" l( V' k8 P4 c: P% i" h
( 1 )
7 k* w4 k( q6 r& [- w; j5 E3 ?
+ [, w" T& |( a8 r ^' A
约束条件:
c1 U) b0 ^# \3 b+ M
8 C3 ~7 C3 f" ^: j
约束条件有两类,一类是消防站拥有的消防车的数量限制,另一类是 各需求点对消防车的需求量限制。
- p! p. ]8 _* @3 x6 W* }
记
( i=1,2,3 )为第i个消防站拥有消防车的数量,则消防站拥有的消防车的数量限制可以表示为
+ U) Z3 A% p$ W
( 2 )
% }- W! _2 z' j7 d
/ z2 W) W N6 y* _9 r
各需求点对消防车的需求量限制可以表示为
& I+ Z2 n/ I3 A9 c: j% ?: M
4 t, S0 |( F" X. p3 e8 O( O! ] q
( 3 )
% T, F7 P5 u$ C8 v
1 O6 n$ n+ X, R2 N; v
(4)模型求解 的lingo代码
) H0 S' i8 b6 k4 v1 S# O+ Y1 o
4 U% Y; ^& V' T0 L4 m- I7 L
MODEL:
8 ~, [3 S& |; }+ c7 V; y
TITLE 消防车问题;
% F9 n3 s8 A" u5 q$ P* u) b; O
SETS:
' h7 }% T: j! T
supply/1..3/:b;
' J" g2 i% Z$ D! l
need/1..7/;
) P% ?5 W8 Y& [+ f
links(supply,need):c,x;
8 l( O$ }- J6 X
ENDSETS
7 j, P" R) d* [0 n. P7 N
[OBJ]Min=@sum(links:c*x);
6 G6 Z7 M c/ ^( m1 [: ?: t* C( N
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
: J8 L& N9 O5 V7 l# R% S, g) e
@FOR(need(j):@sum(supply(i):x(i,j))=1);
8 \0 p2 h H' w( m0 h% k
DATA:
+ c/ P1 z; N, s7 r5 g6 r' I
b=3,2,2;
: |5 ^, ~# M/ {% j+ B- x- ~/ T
c=36,24,49,21,81,72,45
% f$ Y$ l2 Z, d' v& i; _) \
30,20,56,24,99,88,55
2 S& q6 L2 K! L. K. k1 i$ ?
36,24,63,27,90,80,50;
0 {4 ?& U+ C+ @5 a' Y
ENDDATA
- N$ B& {3 u% X0 e4 M8 W
END
2 l* ] I& P" G. c% S; ~
求得结果为,消防站 1 应向火警地点 2 派 1 辆车,向火警地点 3 派 2 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 2、3 各派 1 辆车。最小总损失 为 329。
6 h; i' e$ q/ n* I
3 L" z- o e' u; s, j" R" M
(5)讨论
9 N& u6 B5 E! \7 |6 i! u! t, l
# B T7 t) L0 {+ {
1)这个问题本质上仍然和经典的运输问题类似,可以把每辆车到达火场看做需求点,消防站看做供应点。在上面模型中,我们虽然假设 为 0− 1变量,但求解时是采用线性规划求解的,也就是说没有加上 为 0− 1 变量或整数变量的限制条件,但求解得到的结果中 正好是 0−1 变量。这一结果不是偶然的,而是运输问题特有的一种性质.
7 F4 t- a" S+ G1 p5 y' c8 p
7 {* h8 S y% W: {/ J: O9 }
2 )在上面模型中,没有考虑消防车到达各火警地点的先后次序约束,但得到的结果正好满足所有的先后次序约束,这一结果不是必然的,而只是巧合。如对例题后半部 分的情形,结果就不是这样了。显然,此时只需要修改损失矩阵如表 8 所示(所示(元素仍然分别记为
)
4 e R8 O5 j: T* W# I1 Q# _
* R& l7 w! ?: s' y: Y7 A
/ a5 S6 s% V; Z3 ^) T' A+ Q+ M3 a2 H( K
/ ]) ^( _8 ~9 N \& e
此时重新将式( 1 )-( 3 ) 构成的线性规划模型输入 LINGO 求解,可以得到新的最优解
: 其它变量为 0(最小总损失仍为 329)
" U5 T B# X2 H. R$ X) D! }
& p+ t- F L- _
实际上,损失矩阵中只是 1、2 列交换了位置,3、4 列交换了位置,5、7 列 交换了位置,因此不用重新求解就可以直接看出以上新的最优解。
* ]9 I2 c9 O# B% |5 ^1 K7 _/ p2 A/ @( ?
! g$ C+ n# p C2 S8 t; s
但是,以上新的最优解却是不符合实际情况的。例如,
表明火警地点2 的第一辆消防车来自消防站 3,第二辆消防车来自消防站 1,但这是不合理的,因为 火警地点 2 与消费站 3 有 9min 的距离,大于与消防站 1 的 7min 的距离。分配给火警 地点 3 的消防车也有类似的不合理问题。为了解决这一问题,我们必须考虑消防车到达 各火警地点的先后次序约束,也就是说必须在简单的运输问题模型中增加一些新的约 束,以保证以上的不合理问题不再出现。
; q! ^, ?# b5 ~8 ~# `
$ A' _; F9 n4 `7 Z! ]) V% |1 V
首先考虑火警地点 2。由于消防站 1 的消防车到达所需时间(7min)小于消防站 2 的消防车到达所需时间(8 分钟),并都小于消防站 3 的消防车到达所需时间(9 分钟), 因此火警地点 2 的第二辆消防车如果来自消防站 1,则火警地点 2 的第 1 辆消防车也一 定来自消防站 1;火警地点 2 的第 2 辆消防车如果来自消防站 2,则火警地点 2 的第 1 辆消防车一定来自消防站 1 或 2。因此,必须增加以下约束:
( 4 )
9 D+ {" S% c7 s7 \8 ?9 }
- Y3 U$ S# S) O* k
同理,对火警地点 1,必须增加以下约束:
( 5 )
9 ]! S9 G/ X8 n' ]
) z; I" m( M1 {
对火警地点 3,必须增加以下约束:
( 6 )
$ @, a- _- z( Y/ ]# g$ C* J3 }
& U" Q+ A, G" A) Q
重新将式(1)~(6)构成的整数规划模型(
是 1 0− 变量)输入 LINGO 软件如下:
4 g+ `8 M0 n0 q$ `$ e8 D4 K0 _
' Y; T& B- h3 v! [, U {! F
MODEL:
x. n( ~* r. U/ o4 J! F
TITLE 消防车问题;
6 ]3 w% ~- z _
SETS:
# f, K: O8 ~! P1 Q1 w1 g0 U5 n
supply/1..3/:b;
2 A) }; R& s* B
need/1..7/;
! W. i& F4 G. c1 l
links(supply,need):c,x;
h* e0 t+ O7 f) Q/ J2 o
ENDSETS
9 j4 ?& N. K& M! G v
[OBJ]Min=@sum(links:c*x);
H* \- j% t# T: N
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
9 R3 P0 d# a/ r4 q: X
@FOR(need(j):@sum(supply(i):x(i,j))=1);
) j6 U( c7 J* _
x(1,4)<x(1,3);
3 F; r% s6 P l+ Q, d7 n* `. _
x(2,4)<x(1,3)+x(2,3);
0 e6 [8 T5 v" H8 s) w
x(2,2)<x(2,1);
. S4 F8 [: F* D, b
x(1,6)<x(1,5);
" @ v( z3 }2 K7 O3 ]! {
x(1,7)<x(1,6);
8 X& m5 Y9 L% ~' I
x(3,6)<x(1,5)+x(3,5);
1 d) L& \% K# B2 f; a/ w
2*x(3,7)<x(1,5)+x(1,6)+x(3,5)+x(3,6);
- i: j' y3 ^# P! d( Y
@for(links:@bin(x));
4 r8 y; o2 q7 |4 f4 `1 ?
DATA:
# M5 N+ N' v5 I8 Q F) J3 d+ _
b=3,2,2;
# `8 h/ A9 m7 p! R! _: B( V7 ?
c= 24 36 21 49 45 72 81
+ U! C5 @: N3 a; V2 d
20 30 24 56 55 88 99
2 j9 K9 A" ^5 y, \
24 36 27 63 50 80 90;
6 i8 @, Z" d1 o# F9 b, t4 \/ w
ENDDATA
4 E; C. P% N4 n% p2 K3 t0 r
END
$ }. ?0 C: S3 F! s
求解可以得到:
,其它变量为 0(最小总损失仍为 335)。也就是说,消防站 1 应向火警地点 2 派 2 辆车,向火警地点 3 派 1 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 3 派 2 辆车。经过检 验可以发现,此时的派车方案是合理的。
7 Y! j6 y5 K) j! P9 i& V
————————————————
1 {* N0 z' T4 b% J
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
" T# o/ d8 f2 B9 w& D2 ^5 B/ t
原文链接:https://blog.csdn.net/qq_29831163/java/article/details/89388172
' i" C7 p0 p% B
- I! g; }2 Q5 o) g3 w1 t: j. t
4 M7 M' K3 S W/ h, b
" s0 @$ M' G( w' x9 m
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5