最近每个周末都有好多作业,上周趁有空就参加了数学建模校赛,就用今年“深圳杯”数学建模挑战赛作题目。连续打了两天,最后已经没有时间做结果分析了,写的论文也不算理想,不过我觉得模型做得还不错,所以想记录一下。
我们选了B题——无线回传拓扑规划,其实就是一道图论题,重点是设计算法。题目输入为1000
个节点的位置,用经纬度表示,输出为各节点的布置、连接关系以及总体成本。题目限制各节点只能为宿主站或者子站,所以可以用0
和1
来区分。计算节点间距要使用球面距离公式,距离不超过50
的两个宿主站可以连接,距离不超过20
的宿主站和子站可以连接,距离不超过10
的两个子站可以连接。每个子站最多只能连接2
个节点,任意子站只能归属一个宿主站,任意子站到达所属宿主站有且仅有一条通路,且跳数不能超过3
。宿主站有两种站型,分别有一个扇区和两个扇区,节点站型已经在输入中确定。每个扇区第一级最大接入子站数为4
,最大总接入子站数为6
。任意宿主站都有且只有一颗卫星负责回传,成片连接的宿主站可以共享一颗卫星,但一颗卫星最多负责8
个宿主站。题目给出了各站点的成本,子站5
,宿主站10
,卫星50
,总体成本越小越好,各节点的布置要满足所有限制条件,而连接关系要求子站回传距离的对数和越小越好。
我们决定采用模拟退火算法,用1000
位表示各节点设置为宿主站还是子站,然后在每一次迭代中求当前