Python小白的数学建模课---选址问题
* b; ~' p+ `/ g- z( S选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 , u, [ {' Q. I) Z
1. 选址问题
2 f3 ~. b# O* I8 G6 ~选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。5 \7 l5 m) z- M$ i( R6 X
. g/ X9 r& ]5 i2 h: Q4 @' ]
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
; p4 \3 L' S r& X2 v9 L: C2 o# Y1 K& m0 L
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。" s7 @6 {; l, g% h' i7 Z) y
& _7 T3 r/ m+ ^/ @8 P0 w
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
. q t$ J7 H+ f) L1 \4 ^3 {- S, I ?
选址问题有四个基本要素:设施、区域、距离和优化目标。
1 y2 F9 V0 k# _' T1.1 设施8 u- k# q7 x- M, x& V
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。/ v/ v1 ?4 z+ I5 {( j {$ w/ d
- |+ K& @& w( w8 `- P1 Z1.2 区域
. m- T h5 \1 [% N- s& V选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。7 h6 B q) D, S3 v
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
/ v- j8 e! e: e( v5 C8 k, B. r) `2 e& l: C/ A- S$ |. A" e/ V# m; L
1.3 距离
* R: a R+ T8 j7 n7 l选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
4 x* x! Y1 ~7 X7 ^8 d当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。3 X7 m/ X S! |
( }( Y% D; r( k% n: s+ O* a( {1.4 优化目标6 Z( n/ f' [( D! F: r/ M" u- a
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。4 P& W4 Q3 {6 p0 J3 M" {" B
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。
+ S+ j& Q) A' e' T6 Z7 r* f7 F0 [( |* s" x6 m$ q) Z
6 Q% k0 |" ^2 \% ?. V# _+ @; {; Y7 [
2. 常见选址问题及建模
4 Y6 m- z9 f6 r2.1 P-中位问题(P-median problem)* O# w9 P4 Z% w) R, f6 L: a
P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。9 e7 l' F# A! s! o1 t# L0 }
: X8 N0 k) N% k) n/ U' X6 w8 y
这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
: G2 i" o5 A6 Y7 k+ I7 d" Sx j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中
; q9 e6 r, _% k- K+ ^; L0 Tyij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
* O' o# k2 ? H0 E: J( \可以建立数学模型如下:: Y$ ?6 v2 m4 X1 r) l! q h! g
minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
" P: q0 R$ O5 Z' L) q) G+ |1 I$ M6 x+ l+ z
- i( X& y2 z6 x
$ {% }; @$ T" j3 w }( R) C' [: o其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。 C5 C4 I& _* g/ N+ R
: k; k4 I3 P- e1 V8 q4 b7 M
g- u1 {3 \; H1 q) ^) I0 y0 W8 x- [, v
6 ~) R* \: w7 x9 d' I" o t0 I5 K' P+ Z, ~
|