目录
优化算法综述
依据 | 分类 | 具体算法 |
1 | 全局优化 | 遗传算法(GA)、帝国竞争算法(ICA)、 粒子群优化(PSO) |
局部优化 | 模拟退火(SA)、贪婪算法(Greedy)、 邻域搜索(NS) | |
2 | 精确算法 | 线性规划(LP)、分支定界法(BB) |
模拟进化算法 | v | |
群体仿生类算法、又称为群体智能优化算法 | GA、PSO | |
数学规划方法: | 动态规划(DP)、线性规划、整数规划、 混合整数规划、 分支定界法、 割平面法 | |
v | ||
v | ||
启发式算法(Heuristic Algorithms) | v | |
元启发式算法(Meta-Heuristic Algorithms) | v |
数学规划法
数学规划法:通常将多目标问题转化为单目标问题来解决。
精确算法(exact algorithm)
精确算法:通常将待解决的优化问题转换为数学规划问题,进行精确求解。如:分支定界法(BB)。
- 优点:在问题规模较小时,精确算法能在合理的时间内找到问题的最优解;
- 缺点:但当问题规模较大时(是NP-Hard问题),精确算法的计算复杂度高,求解时间呈指数级增长,不能容忍(指数爆炸)。
启发式 VS. 元启发式
问题描述:现实中很多问题的优化都可以建模为基于序列的组合优化,如旅行商问题(TSP)、排产问题、各类资源分配问题等。寻找最优序列的问题是NP难问题(NP-Hard问题)(其解空间为n!)。
解决这类问题常用的方法有两种:
- (1)一种方法是启发式算法,启发式算法是基于问题本身的规则得到较好的可行解,本质是贪心算法(贪婪算法,greedy)。这种方法速度较快,但因与问题本身联系紧密(problem specific, problem dependent),导致其通用性较差。
- (2)另一种方法是元启发式算法,例如遗传算法、禁忌搜索算法、蚁群算法、模拟退火算法等都是元启发式算法。这类方法从生物进化、物理、化学等过程中受到启发,得到一种解空间的搜索策略,因其搜索策略独立于问题本身(problem independent),因此通用性强。元启发式这类算法有两个最本质的操作:①选择操作(从当前种群中选出优秀的个体,选择的策略有精英保留、轮盘赌、锦标赛等);②改变操作(如交叉、变异、灾变操作等,它们本质上都是从一个可行解改变为另一个可行解,用来扩大搜索范围,避免陷入局部最优)。(详见:元启发式算法常用操作详解:https://bbs.huaweicloud.com/blogs/195717)
启发式算法
启发式策略(heuristic)是一类在求解某个具体问题时,在可以接受的时间和空间内能给出其可行解(或近优解),但又不保证求得最优解(以及可行解与最优解的偏离)的策略的总称。
许多启发式算法是相当特殊的,它依赖于某个特定问题。启发式策略在一个寻求最优解的过程中能够根据个体或者全局的经验来改变其搜索路径,当寻求问题的最优解变得不可能或者很难完成时(e.g. NP-C问题),启发式策略就是一个高效的获得可行解(即近优解)的办法。
启发式算法包括:包括构造型方法、局部搜索算法、松弛方法、解空间缩减算法、贪婪策略、随机化贪婪策略、近邻策略、最大饱和度策略等。
元启发式算法
元启发式策略(Meta-heuristic)则不同,元启发式策略通常是一个通用的启发式策略,它们通常不借助于某种问题的特有条件,从而能够运用于更广泛的方面。元启发式是启发式策略的增强改进版,它是随机算法与局部搜索算法相结合的产物。“元”可以理解为一个哲学概念,大概是“事物的本原”。
元启发式策略通常会对搜索过程提出一些要求,然后按照这些要求实现的启发式算法便被称为元启发式算法。许多元启发式算法都从自然界的一些随机现象取得灵感(e.g. 模拟退火、遗传算法、粒子群算法)。现在元启发式算法的重要研究方向在于防止搜索过早得陷入局部最优,已经有很多人做了相应的工作,例如禁忌搜索(tabu)和非改进转移(模拟退火)。
元启发式算法是相对于最优化算法提出来的,一个问题的最优化算法可以求得该问题的最优解,而元启发式算法是一个基于直观或经验构造的算法,它可以在可接受的花费(指计算时间和空间)下给出问题的一个可行解(近优解)&