Python小白的数学建模课---选址问题/ y7 i. s) W& X. z- O ~: d
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。
+ |# f6 I! x# f( |% \1. 选址问题3 J" v; {( d- d7 f/ G; r
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。9 l$ }) b! ?/ q4 b7 B; w, N$ O5 S
* y9 D1 f2 |2 Z% N+ g
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。. Q z* S2 |4 e, {1 }0 I6 U$ ?7 q
% E4 F4 K l' ~+ B% o* ]
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。7 x9 ^; {- F& w! m' [
$ K0 W& [& b5 F: P6 j+ e+ U选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。8 g; D9 T4 T: [! z5 K& c
$ G8 N; Q% h3 @: J, A t
选址问题有四个基本要素:设施、区域、距离和优化目标。( e+ r* H. q. H! J3 T' u8 w
1.1 设施4 _7 o' c% ?0 ?1 n+ w, q' z3 J
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
* L& j4 T% s9 b4 |$ r; |8 x' J& n& ]0 Q# O( P6 i; C9 S
1.2 区域
- W4 C/ ^+ E- d% `/ L% {% b选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。7 a8 F1 w' N8 u5 C/ ~0 g- l
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。9 U4 v6 u; ?6 j( ? D8 x
. |+ `! S5 B8 ~- W3 y8 M1.3 距离
+ I7 [! R W0 l2 L6 s4 x/ U4 ?选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
- u( j' Q1 N2 Y; m: j当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
) |# J# X+ C1 `- t" l) N3 A4 i& i" I1 z" y& Z1 h& \
1.4 优化目标- p& j+ ~7 }$ E; v, g# E
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。 k+ f, X# `( F: H1 Z9 G( Q
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。
) Y: n7 @- I- {8 T, Q
! D2 d( D9 F9 q |; D; }2 |- B8 B8 y/ Z& F( S
$ e' S8 _/ I; |" ^& c8 b2. 常见选址问题及建模
/ e' a1 k# c% W. f2 k2.1 P-中位问题(P-median problem)9 j) b8 @1 G( A( p6 z
P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。% @8 s( A! k* ~ p4 ]/ e( W
7 k- c C% @" a" l+ M* L8 B3 {/ `7 F这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:$ A# q8 S8 t. B8 ?9 f% ~9 {2 C) w9 O
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中
$ L8 F/ u0 q% I; W! e9 W, |yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
- f& i) [6 @5 _3 g可以建立数学模型如下:
( w* { V8 c) T6 S' ~minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
( Y2 i1 }4 I/ x% b0 d6 Y- |+ V6 d5 ?/ ]) I Z8 U
' ^# Q8 Q, E6 J7 V7 I' W& b/ b$ P
: @4 g0 A$ e8 L. U6 [% y其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
9 g: p8 r9 c8 @/ V& m1 W" I. z
+ s0 W. |- Z3 W6 \/ J/ }: T( b! p0 j8 |" C$ ^: ^6 P
! v! G7 q$ j6 p4 P+ C
) R. ?/ c+ z* `4 f0 t! ?
3 J+ P3 n) Z% Y& E$ a% y# x' M |