数学建模社区-数学中国
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
[打印本页]
作者:
浅夏110
时间:
2020-6-17 09:20
标题:
消防车调度问题 :用数学建模优化生产与服务运作中的管理问题
问题描述: 某市消防中心同时接到了三处火警电话。根据当前的火势,三处火警地点分 别需要 2 辆、2 辆和 3 辆消防车前往灭火。三处火警地点的损失将依赖于消防车到达的及时程度:记
为第 j 辆消防车到达火警地点i的时间,则三处火警地点的损失分别为
9 a& i7 O4 {+ I
3 V0 Q: A1 o$ Q9 {# r7 Z+ s
0 |# J( S. I/ R7 R3 Y- ]% ]
; 。目前可供消防中心调度的消防车正好有 7辆,分别属于三个消防站(可用消防车数量分别为 3 辆、2 辆、2 辆)。消防车从三个消 防站到三个火警地点所需要的时间如表 6 所示。应如何调度消防车,才能使总损失最 小?
( B# o# S e1 R6 x6 P5 g4 u
% F2 k- F0 S8 _* [ b9 E
. S' S+ }( y4 M3 k- [' x u9 x
' K, Y9 n8 M4 F4 Z* c
问题二:如果三处火警地点的损失分别为
;,调度方案是否需要改变?
$ M; Y: R0 X0 |) L
( q; _2 _* T+ G5 B& K
" i3 D3 n& L# ]2 v
5 `: f: r( V/ f& R, F% s
(1)问题分析
( ^9 @% F* ?5 G, |% q! t2 m
0 j8 N$ I! K2 V/ r
本题考虑的是为每个火警地点分配消防车的问题,初步看来与线性规划中经典的运输问题有些类似。本题的问题可以看成是指派问题和运输问题的一种变形,我们下面首先把它变成一个运输问题建模求解。
9 _, N {: \1 i' T8 r. r4 ~
4 t' M7 a& t5 m
(2)决策变量
! S+ W/ F z( V! [0 k( g2 i) F
5 M8 O" J& l. V' {" p
为了用运输问题建模求解,我们很自然地把 3 个消防站看成供应点。如果直接把 3 个火警地点看成需求点,我们却不能很方便地描述消防车到达的先后次序,因此难以确 定损失的大小。下面我们把 7 辆车的需求分别看成 7 个需求点(分别对应于到达时间
. 用
表示消防站i是否向第 j 个需求点派车(1 表示派车,0表示不派车),则共有 21 个 0−1 变量.
7 I% P* w5 m3 u1 o
- j0 w& ^8 N+ L; b* ]
(3)模型建立
' i% a# ]7 R: X3 W# W8 F$ v) ?
% s& E* G5 M- ]( C+ [. r- w
题目中给出的损失函数都是消防车到达时间的线性函数,所以由所给数据进行简 单的计算可知,如果消防站 1 向第 6 个需求点派车(即消防站 1 向火警地点 3 派车但该 消防车是到达火警地点 3 的第二辆车),则由此引起的损失为 72 98 = × 。同理计算,可以得到损失矩阵如表 7 所示(元素分别记为
)。
7 _# A' P3 G4 o+ x6 p! {
. H) K; w: y8 p3 l& H' L6 P/ Y
- }! D9 [4 Y! C" O3 ]# d* }9 R
: L. e, E q$ ?6 B6 L: O6 S6 \
9 W; v) m" P v2 ?
; m$ V) F) O0 |$ ]$ ]( z0 |2 ~, N
) e/ [/ W$ P5 T; b f+ o& a# h' _
于是,使总损失最小的决策目标为
/ F) Y- O+ r N& X; j
* z# @. g2 Z( h5 w' G
( 1 )
6 W& u8 U c( n1 i( ?( n
X8 _, U5 o6 I
约束条件:
* A% W& H0 T8 \& u2 E. M$ Q
* g8 k0 `. G% ^1 t( r) [
约束条件有两类,一类是消防站拥有的消防车的数量限制,另一类是 各需求点对消防车的需求量限制。
" ]1 A: o% `, \% T# {- }) d8 R( S
记
( i=1,2,3 )为第i个消防站拥有消防车的数量,则消防站拥有的消防车的数量限制可以表示为
6 ^/ d {4 X% s% C
( 2 )
; x' Y9 f' a# @
$ V% u2 l3 w& a. |# Q( \' H4 D
各需求点对消防车的需求量限制可以表示为
6 a3 Z/ l: ?3 a% V+ k+ z
0 e- e# V' I- x( |( j
( 3 )
( ?+ d/ E% m2 {' G
+ T$ m4 o5 ^' O) Y* b7 a" J" l
(4)模型求解 的lingo代码
' q7 n4 i; O. x7 a2 |
6 m) H# D- s# n: j0 T$ }* X
MODEL:
, l/ v' r6 _8 M
TITLE 消防车问题;
A# ^, ^+ j8 y; W' B( N
SETS:
$ W+ e/ J5 a% G
supply/1..3/:b;
' d. v; Q9 P3 s, i' ?& b/ y/ W1 T& X
need/1..7/;
6 ^7 W5 \/ I, C! E& V R6 l
links(supply,need):c,x;
( K8 b. Y% [: w& ^7 J
ENDSETS
4 b' \4 U% B/ A: ^% d+ s# l
[OBJ]Min=@sum(links:c*x);
7 Y# L: c( D8 {5 g* B
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
; a4 K& V0 x2 y6 [( S l: b7 x
@FOR(need(j):@sum(supply(i):x(i,j))=1);
, S& f$ c/ k& W* d5 n
DATA:
/ |/ h2 G% h+ p# |- \. _5 d- U4 b
b=3,2,2;
/ Y8 N: {1 _: e( Z# N/ |' K
c=36,24,49,21,81,72,45
' U4 R0 \: P5 @
30,20,56,24,99,88,55
4 ?! G G( S& ~( J9 @- f6 a
36,24,63,27,90,80,50;
0 ]* G# h& P8 N% d9 `- D4 q. T4 ~1 ]& V2 K
ENDDATA
: J8 s; ]* I2 G) @5 `# J6 G, k
END
4 F* T) N' B4 ~# @0 I j* _/ h- F) z
求得结果为,消防站 1 应向火警地点 2 派 1 辆车,向火警地点 3 派 2 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 2、3 各派 1 辆车。最小总损失 为 329。
* B! Z9 K; L3 M$ p% A8 }, _% Q
& j0 G/ S1 h/ W% h& q- a3 T
(5)讨论
. k, I. \% Z, {
, h! `) `7 I& s- G1 j6 T
1)这个问题本质上仍然和经典的运输问题类似,可以把每辆车到达火场看做需求点,消防站看做供应点。在上面模型中,我们虽然假设 为 0− 1变量,但求解时是采用线性规划求解的,也就是说没有加上 为 0− 1 变量或整数变量的限制条件,但求解得到的结果中 正好是 0−1 变量。这一结果不是偶然的,而是运输问题特有的一种性质.
3 j" N# [, i" l$ W- @# |
+ W" h1 B' K7 ?% p$ p. l) w# s
2 )在上面模型中,没有考虑消防车到达各火警地点的先后次序约束,但得到的结果正好满足所有的先后次序约束,这一结果不是必然的,而只是巧合。如对例题后半部 分的情形,结果就不是这样了。显然,此时只需要修改损失矩阵如表 8 所示(所示(元素仍然分别记为
)
+ |; _! i2 E( t( S' |' ~
' _8 }( z( u$ J
, P Z+ F+ ]5 m9 [4 m8 N- r0 F$ `
7 y+ o s, H3 h2 r
此时重新将式( 1 )-( 3 ) 构成的线性规划模型输入 LINGO 求解,可以得到新的最优解
: 其它变量为 0(最小总损失仍为 329)
9 G' ^1 B9 w. L. L! U% i/ q1 d4 Z
! H* @8 f5 K& `7 j# t
实际上,损失矩阵中只是 1、2 列交换了位置,3、4 列交换了位置,5、7 列 交换了位置,因此不用重新求解就可以直接看出以上新的最优解。
( h1 L: x# I2 F! ?
& b. y& H# w. \1 g
但是,以上新的最优解却是不符合实际情况的。例如,
表明火警地点2 的第一辆消防车来自消防站 3,第二辆消防车来自消防站 1,但这是不合理的,因为 火警地点 2 与消费站 3 有 9min 的距离,大于与消防站 1 的 7min 的距离。分配给火警 地点 3 的消防车也有类似的不合理问题。为了解决这一问题,我们必须考虑消防车到达 各火警地点的先后次序约束,也就是说必须在简单的运输问题模型中增加一些新的约 束,以保证以上的不合理问题不再出现。
/ R! m( j& o/ g7 K0 K
+ ]1 V: }8 P1 @; K
首先考虑火警地点 2。由于消防站 1 的消防车到达所需时间(7min)小于消防站 2 的消防车到达所需时间(8 分钟),并都小于消防站 3 的消防车到达所需时间(9 分钟), 因此火警地点 2 的第二辆消防车如果来自消防站 1,则火警地点 2 的第 1 辆消防车也一 定来自消防站 1;火警地点 2 的第 2 辆消防车如果来自消防站 2,则火警地点 2 的第 1 辆消防车一定来自消防站 1 或 2。因此,必须增加以下约束:
( 4 )
- p/ I4 J. z2 b; E% h
' E1 ?4 Y% [% K: C& H
同理,对火警地点 1,必须增加以下约束:
( 5 )
) R) i* @/ _' Q9 t/ `4 K: i8 N" L
/ r: ] k5 N( w- H) ^& r: A* G
对火警地点 3,必须增加以下约束:
( 6 )
6 B0 t$ {4 q; B8 l& N
9 W+ y! i- _) ^0 ~% O# C! Z) w
重新将式(1)~(6)构成的整数规划模型(
是 1 0− 变量)输入 LINGO 软件如下:
% M& d: W) A) c; f
5 k9 B ~1 n2 E1 E+ _8 \
MODEL:
1 D Q8 E: H1 @5 A7 X& G8 s
TITLE 消防车问题;
1 ?' q& A2 ^( x
SETS:
" N1 x7 k+ V) [9 ^
supply/1..3/:b;
5 |3 ^0 D& Z) t- x; |! `. t
need/1..7/;
! t4 y) U' H8 L" t
links(supply,need):c,x;
2 N/ B# I( ]6 S) Y5 N! L: g
ENDSETS
7 g7 F2 W5 ?, g" o
[OBJ]Min=@sum(links:c*x);
9 H v! \8 g& K
@FOR(supply(i):@sum(need(j):x(i,j))=b(i));
5 Q7 L- ~/ |+ x' Q+ a. Y
@FOR(need(j):@sum(supply(i):x(i,j))=1);
% N9 b6 X) Y' o# E
x(1,4)<x(1,3);
: F# j6 r. e. m) \
x(2,4)<x(1,3)+x(2,3);
, b* O4 M9 g: H* X& g0 C! f7 |' @
x(2,2)<x(2,1);
9 k) B7 |8 Y6 Y$ L3 B0 B9 `
x(1,6)<x(1,5);
3 `" t u, y- z1 N8 h. R6 y g
x(1,7)<x(1,6);
$ b. z; W& ~ ?
x(3,6)<x(1,5)+x(3,5);
. u, P5 G2 m2 s7 O) l* e' o
2*x(3,7)<x(1,5)+x(1,6)+x(3,5)+x(3,6);
+ @, a% I3 s4 G) Q
@for(links:@bin(x));
% t! x" a% e( M( J
DATA:
2 c& W9 U* @9 K+ D
b=3,2,2;
- V& n3 l6 J4 _( g% a$ h5 K9 [) r
c= 24 36 21 49 45 72 81
3 L" B8 i) o6 a
20 30 24 56 55 88 99
( p4 g$ |1 A: l4 T
24 36 27 63 50 80 90;
2 [0 U+ j- i; h5 U( @5 @. C
ENDDATA
: `9 _- l1 w1 q7 h o, T) U
END
" o, B1 y0 G! U1 g6 \
求解可以得到:
,其它变量为 0(最小总损失仍为 335)。也就是说,消防站 1 应向火警地点 2 派 2 辆车,向火警地点 3 派 1 辆车;消防站 2 应向火警地点 1 派 2 辆车;消防站 3 应向火警地点 3 派 2 辆车。经过检 验可以发现,此时的派车方案是合理的。
; r; N3 F. O- F6 N7 g9 H/ n
————————————————
7 ?; f: j5 l* x8 }& l, b3 R
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
0 N$ R) O- o3 R! h; Q% o
原文链接:https://blog.csdn.net/qq_29831163/java/article/details/89388172
& G4 w- `8 ^' a- m
+ m6 l d2 u* _2 p5 o4 e! [: l
( c% _' B. [& }$ F. b5 K
0 Y/ {/ z9 ?" P3 p ~8 R, @
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5