超启发式算法的分类
- 根据搜索空间的性质,可以分为:
- 选择式启发式(Heuristic Selection):选择现有低层次启发式方法
- 生成式启发式(Heuristic Generation): 用于从现有启发式方法的组成部分生成新的启发式方法
- 根据反馈信息来源不同,可以分为:
- 不学习:随机选择
- 收敛性差,问题规模较大时很难获取高质量的解
- 离线学习:学习系统训练样本数据,通过反复的评价测试以优化求解模型。
- 通常能较快获得高质量的解,但是需要额外的学习系统训练样本数据,设计与实现难度大
- 在线学习:每次选择都要获取低层启发式算法的运行信息
- 设计难度适中,同时也能获得很好的解,但是仅利用了计算过程中的信息进行策略改进,忽略了大量有用的问题领域信息,因此收敛速度较慢
- 不学习:随机选择
- 低层启发式算法根据其特性可以分为构造型启发式和扰动型启发式。其中:
- 构造型启发式(Construction Heuristics):通过考虑完整的候选解并通过修改其中一个或多个解的分量来进行更改
- 扰动型启发式(Perturbation Heuristics):通过考虑部分的候选解并对其进行迭代扩展
选择式超启发算法
- 选择式超启发算法分为
- 基于构造的选择式超启发算法:
- 构造问题可行解。从一个空解开始,有高层控制策略从一组预先提供的低层构造启发式算法中选择算法逐步建立问题的可行解。
- 能够快速获取问题的可行解,在小规模案例时也能获取质量不错的解,但是大规模案例时质量较差。
- 基于扰动的选择式超启发算法:
- 利用构造启发式算法或其他方法构造初始解,然后通过迭代方式不断尝试改善当前解直到满足终止条件。
- 根据超启发算法同时处理解的数量,可以将基于扰动的超启发式算法分为单点搜索和多点搜索:
- 单点搜素:同一时刻处理一个解
- 多点搜索:允许同时搜索改进多个解,具有良好的全局搜索能力,不会陷入局部最优,但局部搜索能力较差,计算后期搜索效率较低。
- 基于构造的选择式超启发算法:
生成式超启发算法
-
利用现有组件生成新的启发式算法,而不是预先定义的完整的启发式算法,通常采用遗传编程(Genetic Programming)技术求解。
-
原理是将一些规则表达为具有交叉、变异功能的树形结构或字符串,然后利用这些规则和启发式算法组件生成新的启发式算法进行求解。
-
搜索空间是启发式算法组件
-
比选择式超启发算法更加灵活,理论上可以得到质量很高的解,但是设计和使用比较复杂
总结
-
需要提高或改进的地方:
-
实际应用研究不足
-
缺少对搜索空间的理论分析
-
当涉及到领域屏蔽时缺乏灵活性
-