Python小白的数学建模课---选址问题
# a( ^9 \1 X5 c5 F- S选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 6 C" n# B |- N! ~% M1 b6 [1 y, Z
1. 选址问题
7 `8 C' m5 E6 p( l5 k/ B- S6 C$ T选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。
4 U& A! y' G+ B; u* r, S; e& J& _0 c* V! \" F" f
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
+ ` K; D% I0 |* i$ D
9 D- L1 a' T0 j* n" [5 b选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。
p; O! ` B7 R# }
8 u4 W9 t5 C0 n# Z选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。1 e. q& W4 V( ?9 q+ {
% | I' U0 \; T; a选址问题有四个基本要素:设施、区域、距离和优化目标。0 o7 o, I3 n; K) ^( \+ q5 d
1.1 设施# P" K; }/ z- ]0 ^# w
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
! G. }* T3 P3 b3 S* }$ R( M( T5 c% g
1.2 区域
8 u( f5 K" `6 r- [$ t0 ?- h选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。0 g* E( `* g" D) ~
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
% J1 x. |9 B+ r( F% ]* S2 y
" q+ g7 }( x5 j0 g" W* A5 T/ T+ j, ^1.3 距离
4 W: B+ c8 G7 I# K/ m" V选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
- [ b5 q/ D/ t4 L5 s' {当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。- `9 }2 }4 }( q) g! `4 k( o% b$ ^
( k0 g/ M0 R+ E0 h9 J. f; t: W
1.4 优化目标
5 b% C0 i: U. _1 X- {选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。. g: I7 t5 l# N/ o3 g
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。* m0 k" X. o/ y: ~" H
- i& h( _! |$ M5 m3 F
$ D9 l2 ~" r1 J& a$ s$ e2 w8 r+ e% {: H6 l2 K
2. 常见选址问题及建模
: b. w i& c( ~* {1 B, v2.1 P-中位问题(P-median problem)! i/ H) X X3 b( p) j
P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。- L r0 [& s! n9 g! ?1 y
) u4 W. o! ^$ y7 A+ G- e k这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:1 K6 }" V" Q1 E: }1 Y* J
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中
3 a( G" c. t F" Q' d8 @* S/ jyij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务
+ W) E6 L4 I) O2 ^. U& g1 G可以建立数学模型如下:
* G7 P$ o5 Z9 X$ Q2 T: `minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}. q8 q2 z6 u! u8 V/ N$ J: [$ a8 y
8 x4 [% w. V+ r8 T3 o: N1 ?) U8 y; ], f3 M6 O. J) V: A
7 ]9 K" o D8 z f: {5 i其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。# K3 d/ P0 q( X+ G5 O- P: L
) x. c: R2 q& p3 F7 v. L- G/ a2 X$ R) y j
9 V6 t7 S+ N. c1 E: o& ]+ W/ I9 M W) l' l
/ s! l) l9 z- N |