用布谷鸟算法求解基站选址
0 Jupyter & Python代码
1 问题描述
要求:对于给出的数据集–深圳市楼盘带经纬度—设立基站。每个基站的有效覆盖范围为10Km,欲让基站信号覆盖所有小区,求解最小的基站数目以及其位置。
2 解题思路
2.1 整体思路
- 将经纬度换成km为单位的坐标(1°经度=111.1km, 1°纬度=92km)
- 算出各小区间的距离,称a小区20km以内的小区为a的邻居。做出一个领居链表:形如{a:[b, c], b: [a], c: [a], d:[]}
- 处理有0个邻居的小区:在附近5km内随机地建立基站
- 处理有1个邻居的小区:在此小区与其邻居中间建立基站
- 处理有多个领居的小区:用布谷鸟寻优。
2.2 在当前问题应用布谷鸟寻优
- 设立两个鸟巢(1*m维数组),称为x_nest, y_nest。对应位置的组合即为一个基站位置。m表示当前选用m个基站。
- 适应度函数定义为未被包含的小区数量。
- 按照布谷鸟算法的方式更新与抛弃解。
- 当适应度函数达到0时,m减一进行下类型的布谷鸟迭代。