Python小白的数学建模课---选址问题- M! I/ |$ g, }; L$ g* n
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 4 P6 M! n* @6 Z5 t) l* i
1. 选址问题$ _3 y0 [! h6 `) d. o
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。: [1 z) c/ u: }# D
; J& B# S3 h/ p, ?" k
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。" z3 d' o# H$ }7 p
2 `- K7 |+ ?) T5 V8 W3 _选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。
. N9 g) s! D2 H, ~% h2 ?' G
3 J0 j- T! j& l& o( z0 }" U选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
: b( Z7 [( w& V2 O1 J) v* S B% i1 B5 d$ N
选址问题有四个基本要素:设施、区域、距离和优化目标。9 d# Q' U3 y! V6 x
1.1 设施
- l7 p9 k0 U' l0 C Y选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
6 T5 D1 j7 P% s6 u$ M) |7 s) @' h' ^, p$ ?6 X/ X
1.2 区域- h% M4 r. M2 E/ N1 j
选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。" @' U* ?; C( E6 j; u
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。% V' m9 Q. [8 O# T- y% D
% M8 |1 h, S( R3 k, t+ G* _4 k
1.3 距离
2 Q$ }$ H7 l# F选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
' G5 L" K+ g$ d& x$ S/ [当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。: g; ^$ \+ N; |# d+ M! F/ A4 P
# L/ i& L0 G2 ]2 S' M
1.4 优化目标. q. L8 T6 |: S. G0 X- N! k3 Y
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。
4 S, K: T0 _! @8 y) c) N, R: [! F按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。0 m4 B, b) O/ s7 O5 g
" M9 k3 l: Q6 K L3 ?2 K: M+ R. U8 A8 t9 C. |3 y
2 z# W# X$ r+ N R4 {
2. 常见选址问题及建模
2 [$ b! w7 f( H) a/ t2.1 P-中位问题(P-median problem)8 V1 A2 e) T& c3 b
P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。, R$ v6 L1 U. D
+ G" g6 N7 F2 G' a! a. U# c& _
这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:7 v5 u( T- o: M, V! {
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 " @3 T* v9 b1 f' D' K, v* @
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务4 u8 X! H* _. S; k7 k6 C
可以建立数学模型如下:
) @4 f) v$ q6 w% W$ a4 `* [minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
3 s/ e4 C7 J) B. ^/ j2 q' w+ O) I3 S$ f7 C5 W/ c
4 j1 j$ K, q7 e. `6 f( r+ f' u! i5 d5 t
, G: _2 Y. c& N9 p. w) c+ a& d) I其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
! H8 K7 }# S' h1 U
3 v/ _8 I, ^8 E) s" I! x4 ~7 l. r8 B- R$ t
: L {7 K9 t9 V7 ?
+ J: T3 ^4 @' v2 m* g! F" U
4 F* V( c- r1 P: l |