Python小白的数学建模课---选址问题/ S8 p$ B9 q% G7 y1 P6 E
选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。
( o8 W# u E: u( G% C1. 选址问题 V7 I# f0 P* K0 G! G
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。) D B4 l, u: W( K% _- @6 h7 Y
4 o9 P9 b' f' ]* P8 h6 c) }% _* u8 O2 M
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
( A; k; Y; q8 `( l% X; \0 F. _7 V9 y, J$ C$ r
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。
* [+ e; [! U3 F$ y
/ p- h( R+ }" w' Q9 S; r; X) Y选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。 h, W9 \' i4 f6 A. v# P
" I0 o1 s1 H4 ^% N9 N- t$ P L
选址问题有四个基本要素:设施、区域、距离和优化目标。
6 @5 H0 _; T; d' T( v1.1 设施: p) r( x9 p; e; t d
选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
& s2 n5 @4 T4 U. g4 B- l: o4 T* |: N" v) ?' Y
1.2 区域
# m4 d! o. ~2 n# Q1 k选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。
8 _9 B5 [# N8 \0 p5 i. N按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。$ j; y; A1 W8 A. k0 {1 B$ n T: w
1 E, e" ]8 N2 Y/ _4 a% m: x
1.3 距离- c" _0 r2 k; J1 s: ~+ r
选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。5 o. X7 A$ }4 n- J7 c, r
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
3 f5 _$ i+ E [$ \8 P: k$ g: N: t0 D. M- E
1.4 优化目标8 x' R% p+ B! N( d9 @
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。' `; P* z* A) f1 k/ U( Y. u
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。
; H7 A8 g* _# [* ]3 K+ Z
) o" W9 K* b, }0 Z3 o
& I4 V( d5 B8 \) h# E3 a1 ]6 ~ @3 j! u$ t z& q1 f1 d) B
2. 常见选址问题及建模
3 C% q3 X3 J5 C+ R5 u2.1 P-中位问题(P-median problem)
, f2 m& Y1 P& [: TP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。9 G0 r+ C- b2 y& r
9 Q0 B; p! ~/ }
这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:
+ L0 G5 {6 }: e9 ?& qx j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 ; {7 `6 O( P9 N A+ S$ I
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务0 ]7 e* J4 B' F) e
可以建立数学模型如下:
/ m3 N8 G: D! R0 _! {minDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}
% W- O! |. l+ T4 T1 l& y; Y0 N8 T. m) I1 i! e
& m+ s4 X! A( S5 |& m2 S) n) Q; `( F: c; J2 b& A
其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。
2 r* u% B( N) k- N/ g
* Q, y6 Z- O. z6 U7 O( ], s: B
5 B' F/ n8 {* Y3 {* ]( S F+ _6 ?' k
8 W) t$ O- }8 |2 J5 w ( \7 B& _0 w. B6 j; j0 |( @2 y
|