元启发式算法(Metaheuristic algorithm)

元启发式算法(Metaheuristic algorithm)

[转载于]: http://home.ustc.edu.cn/~chh1990/chero/blog/blog.html  

  计算机科学的两大基础目标,就是发现可证明其执行效率良好且可得最佳解或次佳解的算法。而启发式算法则试图一次提供一或全部目标。 例如它常能发现很不错的解,但也没办法证明它不会得到较坏的解;它通常可在合理时间解出答案,但也没办法知道它是否每次都可以这样的速度求解。

    有时候人们会发现在某些特殊情况下,启发式算法会得到很坏的答案或效率极差,然而造成那些特殊情况的数据结构,也许永远不会在现实世界出现。因此现实世界中启发式算法常用来解决问题。启发式算法处理许多实际问题时通常可以在合理时间内得到不错的答案。有一类的通用启发式策略称为元启发式算法(metaheuristic),通常使用乱数搜寻技巧。他们可以应用在非常广泛的问题上,但不能保证效率。

算法原理

​1. 从一个或多个候选解开始作为初始值(pop(t))。

2. 根据初始值计算目标函数值

3. 基于已获得的信息,通过个体变异、组合等方法不断更新候选解域。

4. 新的候选解域进入下一轮迭代(pop(t+1))

如下图:

编程分析

 

    从程序的角度分析,元启发式算法包括以下几个部分:

1. 内部数据结构G,用于描述候选解域X中的候选解。

2. 从数据结构G,创建候选解实例的法则。

3. 如果G ≠ X,需要定义一个函数g2x(),该函数用于将结果从G域映射到X域,g2x()函数往往对结果直接产生较大的影响。

4. 用于改变候选解的算法,如变异,交叉等。

5. 整体循环流程控制函数。

过程图解如下:

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值