Python小白的数学建模课---选址问题
: ]/ b) [9 |' c选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 H2 e6 z- N1 j: S2 @* ^
1. 选址问题5 j+ F ]# T" x* `; ]5 e# K3 k$ N
选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。3 c5 L4 p2 ]6 B0 G. H
6 Y8 o% ^% H1 D1 K* }
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。4 r. B3 t% v0 ^, c, Y
* f- w$ j) z9 C! c' q# }
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。" h% T( W9 `8 v7 _# ^, }) p3 `( i
. |* t8 k* k4 a y* P4 v+ H
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。. W5 F- y# I' d3 ~: x$ n) x
1 T+ ^* b9 a8 v" s
选址问题有四个基本要素:设施、区域、距离和优化目标。
; H% F0 h1 D1 p; A0 ^3 g$ J1.1 设施
. K# z* B' @/ Y0 R' l6 M/ c" J选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。7 I. e0 k! d4 m, ~) n' }& F; s( k
0 ?, |' U/ G, K. {2 X
1.2 区域2 d, m& w% G+ ~4 r( V9 `( S- F
选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。3 ]# n6 o5 Q; T2 O: g8 J5 \
按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
5 `: S8 n/ @- `: @' G9 {0 w5 {, r2 q( j$ W/ s2 _
1.3 距离 K( m: b! [0 z$ p
选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。
+ }6 l2 Z9 t2 V! i: _当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
5 y/ V- H5 V: v j' U1 x5 A' F3 `* `& @2 W$ b7 o8 b
1.4 优化目标
* t% g: |* T( ?1 }8 k3 p选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。
" }. P" d9 |# @, e7 ~# O按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。
9 v. z0 J, a" W/ d7 j3 v3 c0 n+ A \6 }1 T8 `9 \' }
+ f" n/ J& t) b$ b9 q" w3 g
G, H$ D7 @8 Y5 Z( e1 W3 D; L6 Q
2. 常见选址问题及建模
: A. }) |, B' {* w5 m& |2.1 P-中位问题(P-median problem)6 V8 {: Q4 Z5 m l
P-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。4 {9 q+ t; X/ t. a a
' N3 [9 X4 X7 {
这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:$ h8 {2 F H4 `2 }+ A
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 6 B. Y% v; a5 L# L8 d7 G9 F# C
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务! Y: b7 E+ @/ w9 r
可以建立数学模型如下:
1 _( L" ]8 D: [- m( x3 q/ P. FminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}: Q1 I6 n5 I p* {1 i0 [$ C
/ I* d6 w3 [/ _+ c5 H9 M5 n5 y' j( ?% V9 } f* _
5 U! \( m2 d; K& r+ H
其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。+ r; y x2 Y% ]: C% ?; P% Q; p( D: Z/ A
1 z/ y- c' }# V4 j9 C% Y- u+ D+ B' v* x& f, n
) S; G- G. G: X) L& Q1 S( x7 |
3 K. ]: }8 N0 {+ K* i5 v& U , I+ u4 Y, |! D) h( C
|