Python小白的数学建模课---选址问题
5 p; J! v" }5 P. G: n: Y选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 + _0 J2 x* L6 h/ Z0 S5 N
1. 选址问题
# h4 ~" O7 r- w# N选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。6 C/ n) d. n! k- Q
$ W1 C8 H* G. G% ]& X$ Z' g例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。% {. _2 ]% h' B- P# A* [) {
. m2 E. H; j" n6 N3 A, _# w2 F
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。4 v1 p7 i/ B z& z' t
- _; X) f" I5 D6 S3 _选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
+ C! h9 q2 H5 D6 Z' a/ E1 D+ N+ I2 B9 j0 g
选址问题有四个基本要素:设施、区域、距离和优化目标。
+ ]8 F% t( o( ~, l+ l1.1 设施) _! e4 T7 S9 B; N8 l5 |+ n
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。) B& V1 p& U1 @ |* N$ \8 z- V2 i
* v% w4 S7 ^9 C- A( ~, {
1.2 区域* N# }8 c" `+ H$ p7 @
选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。( L4 p c6 E4 P2 K- {
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。: j: K0 a: S+ d9 @; f! [$ [ {0 |
& R9 g7 N3 K2 n0 r+ |' ~1.3 距离
, [5 ^# F. @! V4 H: {选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
( Y1 j p2 C k6 t当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。1 h# W1 o! I( j7 |2 Y! |) s) u
5 ^- z, u! ^7 [2 `7 C" @
1.4 优化目标
9 t) t; P$ V+ \9 S. y: E! w选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。( j3 `8 N4 N( Z. H$ d( u
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。8 D$ A. ]1 c* s8 i( B) e; x
9 G% p3 }0 l) ? Q! V6 [8 W, ^' L8 {1 U0 A$ L9 m; c
" z, d2 V8 d) ]& r5 N! Q1 T* H2. 常见选址问题及建模. T2 n0 V! m" P. `7 c5 E$ K# W
2.1 P-中位问题(P-median problem)
: Z: o. s/ |- v: [6 ?, J4 U: D* U, aP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。( y# [2 a4 K5 N% r+ ~( c: f3 h
& I: [1 s! G; u: M7 j
这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
! ]* v) L. N4 d5 s* I. Nx j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 7 u- L: e5 \: q! e2 Y8 f
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
2 i+ h8 m' X4 U4 I可以建立数学模型如下:
7 u7 i a+ ]5 LminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
0 M# d: p/ x1 R8 P3 j3 a* z+ _! E7 t6 B; L! \
7 g% W8 e/ f) N" {- }! Y
4 V- N, Q6 Z, z; q) m3 ?其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
W: @% x; u# s: w( b4 L" i4 G6 F7 s, P$ `: ?
, T6 p# H) o8 q6 v5 O8 G! T) y, x; j) P: O+ G
# D y. z1 d) _
' n# F; r$ ?; \* z6 P5 d |