P-中值模型
是指在一个给定数量和位置的需求集合和一个候选设施位置的集合下,分别为 p 个设施找到合适的位置,并指派每个需求点到一个特定的设施,使之达到在工厂和需求点之间的运输费用最低。
P-中值模型一般适用于在工厂或者仓库的选址问题,例如要求在它们和零售商或者顾客之间的费用最少。
数学定义
当然,P-中值模型也可以通过精确的数学语言进行描述,要求准确的表达问题的约束条件、目标以及合理的变量定义。
目标函数:
\[\min \sum_{i \in N} \sum_{j \in M} y_{ij}d_ic_{ij} \]
约束条件:
\[\sum_{j \in M} y_{ij} = 1, \quad i \in N \tag{c-1} \\ \]
\[\sum_{j \in M} x_j = p \tag{c-2} \]
\[y_{ij} \leq x_j, \quad i \in N,j\in M \tag{c-3} \]
\[x_j \in \{0, 1\}, \quad j \in M \]
\[y_{ij} \in \{0, 1\}, \quad i \in N, j \in M \]
其中,
- \(N\):在研究对象中的 n 个客户,\(N = (1, 2, ..., n)\)
- \(M\):在研究对象中的 m 个拟建设施的候选地点,\(M=(1, 2, ..., m)\)
- \(d_i\):第 \(i\) 个客户的需求量
- \(c_{ij}\):从地点 \(i\) 到 \(j\) 的单位运输费用
- \(p\):可以建立的设施总数(\(p<m\))
- \(x_j\):如果在 \(j \in M\) 建立设施,则 \(x_j\) = 1;否则为 0
- \(y_{ij}\):如果客户在 \(i \in N\),由设施 \(j \in M\) 来提供服务时,则其为 1;否则为 0
理解约束
- 约束 c-1:保证每个客户(需求点)只有一个设施来提供相应的服务
- 约束 c-2:限制总的设施数目为 \(p\) 个
- 约束 c-3:有效得保证没有设施的地点不会有客户对应
问题求解
求解 P-中值模型需要解决两个方面的问题:
- 选择合适的设施位置(数学表达式中的变量 \(x\))
- 指派客户到相应的设施中去(数学表达式中的变量 \(y\))
一旦设施的位置确定之后,再确定每个客户到不同的设施中,使费用总和 \(C_{ij}\) 最小就十分简单了。
P-中值模型是 NP-hard 问题,因此其主要有两大类的算法:
- 精确算法
- 启发式算法
由于精确算法通常只能求解规模较小的 p-中值问题,下面介绍一种启发式算法【贪婪取走启发式算法,Greedy Dropping Heuristic Algorithm】用来求解该问题。基本步骤如下:
- 令当前选中设施点数 \(k=m\),即将所有 \(m\) 个候选位置都选中;
- 将每个客户指派给 \(k\) 个设施点中距离最近的一个设施点,求出总费用 \(Z\);
- 若 \(k=p\),则输出 \(k\) 个设施点以及各客户的指派结果;否则,转第 4 步;
- 从 \(k\) 个设施候选点中选择一个取走点,该点要满足将它取走并将它的客户指派给其他的最近设施点后总费用增加量最小,从候选集合中删去刚刚确定的取走点,令 \(k=k-1\),转第 2 步。
参考文献:
[1] p-中值模型