Python小白的数学建模课---选址问题
* a" P* [. a1 r; C& P. n选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。
! t0 X: ~/ g5 B. Z, P% n5 v1. 选址问题
+ n3 `+ V+ Z, c3 r选址问题是指在某个区域内选择设施的位置使所需的目标达到最优。选址问题也是一种互斥的计划问题。. Z8 I% D* F4 @) a* i
+ B) X9 p) Z3 M. M% N8 B# S. H
例如投资场所的选址:企业要在 m 个候选位置选择若干个建厂,已知建厂费用、运输费及 n 个地区的产品需求量,应如何进行选址。
3 \ R* Q _4 J) v0 `8 l# @1 V4 x) d9 G$ |* N
选址问题是运筹学中经典的问题之一,选址问题在生产生活、物流、甚至军事中都有着非常广泛的应用,如工厂、仓库、急救中心、消防站、垃圾处理中心、物流中心、导弹仓库的选址等。更重要的,选址问题也是数模竞赛的热点问题。
9 f) s; y: H& Q6 S* {; u5 u/ ]$ v! n. g! P' K$ ?- Z
选址是重要的长期决策,选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力,选址问题的研究有着重大的经济、社会和军事意义。
& ]; J" i8 j% A, j/ r' t1 h" n; l
选址问题有四个基本要素:设施、区域、距离和优化目标。3 u2 h, i% b# [$ J/ G. x/ z1 Y
1.1 设施
# S' H$ D) C/ U& j1 |选址问题加粗样式中所说的设施,在具体题目中可以是工厂、仓库、服务站等形式。
1 J2 B! ?* ]' E
5 ^5 f n% X! B* w- R2 R# Q1.2 区域
5 R8 g; r$ l' e/ x6 r选址问题中所说的区域,在具体题目中可以是工厂、车间的内部布局,也可以是给定的某个地区、甚至空间范围。
! s9 X6 P0 S2 D7 t" C' A# V0 B+ J4 {按照规划区域的特征,可以分为连续选址问题和离散选址问题。连续选址问题,设施可以布局在区域内的任意位置,就要求出最优选址的坐标;离散选址问题,只能从若干候选位置中进行选择,运筹学中的选址问题通常是这类离散选址问题。
) w1 h$ w w6 [' ]4 K$ b) t$ |2 j7 Z& v \
1.3 距离8 s. i5 S& v+ ]- |
选址问题中所说的距离,是指设施到服务对象之间的距离,在具体题目中也可以是某个选址位置的服务时间、成本、覆盖范围。如果用图论方法求解,通常就是连接顶点的边的权值。3 H7 V* y1 N- p4 A% D+ R
当问题所关注的是设施到服务对象之间的距离时,如果问题给出的不是顶点之间的距离,而是设施的位置坐标,要注意不是只有欧式距离,对于不同问题也可能是球面距离、曼哈顿距离、切比雪夫距离。
0 Y$ G2 S: Q2 y; U( X
% T" j# w) _0 x8 n n1.4 优化目标5 R, \3 V+ M5 X% g( e
选址问题要求选择最好的选址位置,但选址位置只是决策变量,选择的最终目的通常是实现加权距离最短、费用最小、利润最大、时间最短,这才是优化问题的目标函数。/ s; |& x: s3 @" G
按照目标函数的特点,可以分为:中位问题,要求总成本最小;中心问题,服务于每个客户的最大成本最小;反中心问题:服务于每个客户的最小成本最大。
; ] f! H- Z& n- s. x
1 `9 S9 j* j* r! c* z/ V4 i/ Y; L/ k9 t# ^
* X p6 V7 e0 @ u
2. 常见选址问题及建模- O7 z! P. E2 m1 L7 ?; d
2.1 P-中位问题(P-median problem)
- m6 t. o& g7 O6 b0 t8 W2 RP-中位问题,假设有 N 个候选服务站和 M 个需求点,要从 N 个候选服务站中选择 P 个,使所有需求点到最近的服务站的加权距离 dij的总和最小。需求点 i 的权值,通常是指该需求点的需求量。
- o' q5 E+ r4 ]9 _
1 g2 a/ z1 K/ w m; S5 c6 h这是一个 MinSum 问题,定义决策变量 xj为选中的服务站,yij将各需求点匹配到最近的服务站:- [4 m) p$ `4 X( \: K8 k" P
x j = { 1 , 服务站 j 被 选 中 0 ,服 务 站 j 未 被 选 中 9 |3 O! \: g% R: g) y6 i2 l
yij={1,需要点i由服务站j服务 0,需要点i不由服务站j服务- F& G- t$ B8 C6 C9 N
可以建立数学模型如下:
1 b" u% m! E2 O3 ^& O" uminDs.t.:⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑j∈Nwidijyij≤D,∀i∑j∈Nxj=P∑j∈Nyij=1,∀iyij−xj≤0,∀i,jxj∈{0,1},yij∈{0,1}( n; u$ X: D8 D% g8 b: \* d( ?. q/ s
/ y! m0 x0 ^4 y. r7 w; h* x7 f% ^$ g2 t8 y1 G
5 {) t5 {$ y; V# B& g- Y3 r其中:j 为服务站,i 为需求点,dij为需求点 i 到服务站 j 的距离。如果只求需求点到最近的服务站的最大距离,则wi=1;如果要求任一需求点到最近的服务站的最大运费,则wi为需求点 i 的需求量,即加权最大距离。0 h V' n' K) c3 ~+ R- h+ T" A
) Q0 M* F2 t; t1 R# F
5 ]' b. Y/ ^0 C/ P& v. N
2 y/ W& s3 N d! j6 S: e, x! |9 u( M8 C- [) e
2 \0 y* A2 P$ W0 l. e4 l3 I |