离散优化问题搜索框架 overview

本文概要说明基本思路,名字取得不一定恰当:)

启发式搜索算法A* (可参考http://theory.stanford.edu/~amitp/GameProgramming/) 和遗传算法GA分别是精确搜索和近似搜索,两者原理完全不同。但是在研究过程中我发现,它们却有着内在的联系,如数据结构上非常相似,几乎可以一一对应,如下表:

前者原理是在一棵搜索树上,通过启发函数“直捣黄龙”,并尽量“砍枝”;后者原理是“养活”一群物种,通过适应度函数“物竞天择”,尽量保持多样化,让它们交叉,子代尽量继承父代优良基因,并通过变异来跳出局部最优。

若将两个算法并行求解,找到更好的解通知对方:GA可以用来繁殖出更好的解;A*可以提高“砍枝条件”。GA 虽然是近似求解,但是拥有的变异机制常常可以跳出局部最优,因此两种算法结合可以优势互补,我们暂且称此算法为GA*

*注,可能有同学会觉得奇怪,A*是用来规划路径的,怎么拖这里来了,其实改造下它可以用到好多地方。

总体思路如上图,对于一个离散型优化问题:

  1. 在一定条件下,A*, GA, GA*三种算法都可以独立求解;
  2. 若解空间可以组织成树型结构,那么就可以采用A*精确求解(当然其他两种也可以了);
  3. 若解空间可以组织成树型结构,但是解空间太大,那么可以采用GA*混合求解;
  4. 若解空间无法列举,可以尝试设计GA。可以看出,其普适性最广,唯一缺点是不保证最优。

这个搜索框架具备良好的可扩展性,可以解决很多问题,下面简单列出UML类图,后续连载再step by step解释吧:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值