用模拟退火法挑战建立信号基站的问题

挑战建立信号基站问题成功,下面说说具体的想法。

模拟退火法其实很简单,分如下几步:

1、首先确定评价函数。

2、选取初始点,并用评价函数计算初始值,把初始值作为当前值。

3、按步进规则获取新点

4、计算新点的值(也可能是附近的多个值)。

5、比较新值和当前值差距,如果小于预期,执行步骤6,否则按一定概率执行步骤6。

6、那么取把新值作为当前值,新点作为当前点,执行步骤3。

7、更新步进值,执行步骤3。

首先说评价函数,在这个问题中,即为选取点到所有基站的距离和。在这里说一下,网上不少人用欧式空间距离,即sqrt((x1-x0)*(x1-x0),(y1-y0)*(y1-y0)),增加了计算时间。其实没必要,完全可以用max(|x1-x0|,|y1-y0|)。因为作为空间长度的度量只要满足如下几个条件就可以了:

    1、||A,A||=0;

    2、||A,B||=||B,A||

    3、||A,B||+||B,C||>=||A,C||

大家可以证明下,max(|x1-x0|,|y1-y0|)是可以作为空间距离度量的。

初始点选取,我就选择了第一点,没什么道理,随便选的一个,反正最后都会收敛的。

唯一修改的地方就是步进值得选择上,稍稍改进了一下,判断新值和原值的差距,如果相差大,就大幅调整步进,否则小幅调整步进。

贴上代码

package pango.bestdistanc
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值