局部优化算法和全局优化算法 - 知乎 (zhihu.com)
最优化问题及其分类_generalized rosenbrock function图像-CSDN博客
优化技术是一种以数学为基础,用于求解各种工程问题优化解的应用技术。归纳而言,最优化问题分为函数优化问题和组合优化问题两大类,其中函数优化的对象是一定区间的连续变量,而组合优化的对象则是解空间中的离散状态。
最优化方法
最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优化,从而训练出最好的模型。
优化算法及其分类
所谓优化算法,其实就是一种搜索过程或规则,它是基于某种思想和机制,通过一定的途径或规则来得到满足用户要求的问题的解。
就优化机制与行为而分,目前工程中常用的优化算法主要可分为:经典算法、构造型算法、改进型算法,基于系统动态演化的算法和混合型算法等。
1)经典算法
包括线性规划、动态规划、整数规划和分支定界法等运筹学中的传统算法,其算法计算复杂性一般很大,只适合于求解小规模问题,在工程中往往不实用。
2)构造型算法
用构造的方法快速建立问题的解,通常算法的优化质量差,难以满足工程需要。比如调度问题中的典型构造方法有:Johnson法、Palmer法、Gupta法、CDS法、Daunenbring的快速接近法、NEH法等
3)改进型算法
或称领域搜索算法。从任一解出发,对其领域的不断搜索和当前解的替换来实现优化。根据搜索行为,它又可分为局部搜索法和指导性搜索法。
局部搜索法。以局部优化策略在当前解的领域中贪婪搜索,如只接受优于当前解的状态作为下一当前解的爬山法;接受当前邻域中的最好解作为下一当前解的最陡下降法等
指导性搜索法。利用一些指导规则来指导整个解空间中优良解的探索,如SA、GA、EP、ES和TS等
4)基于系统动态演化的方法
将优化过程转化为系统动态的演化过程,基于系统动态的演化来实现优化,如神经网络和混沌搜索等。
5)混合型算法
指上述各算法从结构或操作上相混合而产生的各类算法。
优化算法当然还可以从别的角度进行分类,如确定性算法和不确定性算法,局部优化算法和全局优化算法等。
常见的最优化方法有梯度下降法、牛顿法和拟牛顿法、共轭梯度法、最速下降法等等。
拟牛顿法
拟牛顿法是用于寻找无约束优化问题最优解的一类算法。这些方法被设计来近似牛顿法中使用的Hessian矩阵,从而减少计算量并提高效率。拟牛顿法的基本原理是使用目标函数的一阶导数(即梯度)信息来构造目标函数曲面的近似,从而迭代地逼近最优解。
这种方法在处理中等规模的优化问题时特别有效,尤其是在那些函数梯度容易计算,但Hessian矩阵难以获取或计算量过大的情况。拟牛顿法广泛应用于机器学习、经济模型优化和工程设计中。
全局优化算法
- 目标:全局优化算法旨在寻找目标函数的全局最优解,即在整个搜索空间中找到一个解决方案,该解决方案在全局范围内是最优的。
- 特点:这些算法通常具有更广泛的搜索范围,可以跳出局部最优解并尝试找到更好的解决方案。它们通常采用一些全局搜索策略来遍历整个解空间。
- 适用性:全局优化算法适用于包含多个可能的最优解或目标函数具有复杂多模态结构的问题。
常见的全局优化算法包括遗传算法、模拟退火、粒子群优化、差分进化等,它们具有全局搜索性能,适用于多模态问题和复杂的优化任务。
如果不对问题结构做任何假设的话,没有任何方法可以做全局最优化,模拟退火也不能。
要保证找到全局最优值,我们需要假设函数是凸的。当然凸只是一个充分条件,并不是必要的,有很多非凸的问题也能保证优化算法收敛到全局最优(比如matrix completion问题就被证明了所有局部最优点都有相同的函数值,所以也都是全局最优点)
请问有哪些最优化算法可以做全局优化? - 知乎 (zhihu.com)
遗传算法
《MATLAB神经网络30个案例分析》的13个案例中的GA优化SVM参数 – MATLAB中文论坛 (ilovematlab.cn)
遗传算法学习笔记(一):常用的选择策略 - 依然传奇 - 博客园 (cnblogs.com)
遗传算法(Genetic Algorithm,简称GA)是一种最基本的进化算法,它是模拟达尔文生物进化理论的一种优化模型,最早由J.Holland教授于1975年提出。
遗传算法中种群分每个个体都是解空间上的一个可行解,通过模拟生物的进化过程,从而在解空间内搜索最优解。
遗传算法是具有全局搜索能力的算法,但是传统遗传算法求解调度问题并不是很成功,主要原因在于它的局部搜索能力较差,且容易早熟收敛。
模拟退火
详解模拟退火算法(含MATLAB代码)_模拟退火 matlab-CSDN博客
模拟退火算法(Simulated Annealing, SA)的思想借鉴于固体的退火原理,当固体的温度很高的时候,内能比较大,固体的内部粒子处于快速无序运动,当温度慢慢降低的过程中,固体的内能减小,粒子的慢慢趋于有序,最终,当固体处于常温时,内能达到最小,此时,粒子最为稳定。模拟退火算法便是基于这样的原理设计而成。
粒子群优化
粒子群优化是一种基于群体智能的优化技术。在这种方法中,一群“粒子”在搜索空间中移动,每个粒子代表问题的一个潜在解。粒子们根据自己的经验以及同伴的经验来调整自己的位置,寻找最优解。粒子的移动受到其位置、速度以及最佳位置的历史信息的影响。
粒子群算法特别适用于连续空间的优化问题,如参数优化和工程设计问题。由于其实现简单和调整灵活,这种算法在多目标优化和复杂系统优化中得到了广泛应用。
算法(三)粒子群算法PSO的介绍 - 成都笨笨 - 博客园 (cnblogs.com)
局部优化算法
- 目标:局部优化算法旨在寻找目标函数的局部最优解,即在搜索空间中找到一个解决方案,该解决方案在其附近的区域内是最优的。
- 特点:这些算法通常从一个初始解开始,在解空间中进行小范围的搜索,试图找到使目标函数值最小化或最大化的局部极值点。
- 适用性:局部优化算法适用于那些目标函数具有局部最优解的问题,但不适用于多模态问题,即包含多个局部最优解的问题。
一些常见的局部优化算法包括梯度下降、牛顿法、拟牛顿法等,它们通常用于求解可微函数的局部最优解。
启发式算法和元启发式算法
问题描述:现实中很多问题的优化都可以建模为基于序列的组合优化,如旅行商问题(TSP)、排产问题、各类资源分配问题等。寻找最优序列的问题是NP难问题(NP-Hard问题)(其解空间为n!)。
解决这类问题常用的方法有两种:
启发式算法
启发式算法是基于问题本身的规则得到较好的可行解,本质是贪心算法(贪婪算法,greedy)。
这种方法速度较快,但因与问题本身联系紧密,导致其通用性较差。
启发式算法包括:构造型方法、局部搜索算法、松弛方法、解空间缩减算法、贪婪策略、随机化贪婪策略、近邻策略、最大饱和度策略等。
元启发式算法(Meta-heuristic)
例如遗传算法、禁忌搜索算法、蚁群算法、模拟退火算法等都是元启发式算法。这类方法从生物进化、物理、化学等过程中受到启发,得到一种解空间的搜索策略,因其搜索策略独立于问题本身(problem independent),因此通用性强。
元启发式这类算法有两个最本质的操作:①选择操作(从当前种群中选出优秀的个体,选择的策略有精英保留、轮盘赌、锦标赛等);②改变操作(如交叉、变异、灾变操作等,它们本质上都是从一个可行解改变为另一个可行解,用来扩大搜索范围,避免陷入局部最优)。
元启发式算法的重要研究方向在于防止搜索过早得陷入局部最优,已经有很多人做了相应的工作,例如禁忌搜索(tabu)和非改进转移(模拟退火)。
常见的Meta-Heuristic Algorithms(有基于个体和基于群体两类):
基于个体(Single solution-based heuristics)
1、模拟退火(Simulated Annealing,SA)
2、禁忌搜索(Tabu Search,TS)
3、变邻域搜索(Variable Neighborhood Search)
4、自适应大规模领域搜索(Adaptive Large Neighborhood Search)
基于群体(Population-based heuristics)
1、遗传算法(Genetic Algorithm,GA)
2、蚁群优化算法(Ant Colony Optimization,ACO)
3、粒子群优化算法(Particle Swarm Optimization,PSO)
4、差分进化算法(Differential Evolution, DE)
4、人工蜂群算法(ABC)、人工鱼群算法、狼群算法等
5、人工神经网络算法(ANN)
另外还有:免疫算法、蛙跳算法、帝国竞争算法(Imperialist Competitive Algorithm,ICA)、和声搜索算法、分布估计算法、Memetic算法、文化算法、灰狼优化算法、人工免疫算法、进化规划、进化策略、候鸟优化算法、布谷鸟搜索算法、花朵授粉算法、引力搜索算法、化学反应优化算法、头脑风暴优化算法(Brain Storm Optimization Algorithm,BSO)等等。
如何选择合适的优化算法
优化理论系列:9 - 优化算法 - 知乎 (zhihu.com)
选择优化算法时,应考虑以下几个关键因素:
- 问题类型:确定问题是线性的还是非线性的,是连续的还是离散的,以及是否有特殊的约束条件。例如,线性问题可能更适合使用线性规划方法,而非线性问题可能需要梯度下降或遗传算法。
- 问题规模:对于大规模问题,那些能够有效处理大量变量和约束的算法(如遗传算法)可能更合适。
- 求解精度和速度的权衡:某些算法(如拟牛顿法)能提供较高的精度,但可能在大规模问题上速度较慢;而启发式算法(如粒子群优化)可能更快但精度较低。
- 计算资源:考虑可用的计算资源,如处理器速度和内存容量,以及算法的计算复杂性。
- 算法的灵活性和鲁棒性:在面对问题参数变化时,某些算法可能更具适应性和稳定性。
当前优化算法面临的主要挑战
- 处理大规模问题的能力:随着问题规模的不断增长,如何有效地处理大量数据和变量成为一个主要挑战。这要求算法不仅要高效,还要能够在有限的计算资源下运行。
- 算法的通用性和适应性:不同的优化问题具有不同的特性,找到一个能够适应多种问题类型的算法是一个长期的挑战。
- 局部最优和全局最优之间的权衡:许多优化算法容易陷入局部最优解,特别是在非凸优化问题中。如何设计算法以确保找到全局最优解是一个关键的挑战。
- 算法的鲁棒性和稳定性:在实际应用中,输入数据可能存在不确定性或变化。保持算法在这些条件下的鲁棒性和稳定性是一个重要的挑战。
- 复杂性和可解释性的平衡:随着算法变得越来越复杂,如何保持它们的可解释性和透明度也成为了一个问题。
未来发展趋势和研究方向
- 深度学习和人工智能的融合:将深度学习和人工智能技术与传统优化算法结合,以提高算法的性能和适应性。
- 量子优化算法:随着量子计算的发展,量子优化算法有望在处理特别复杂的优化问题方面展现出巨大潜力。
- 多目标和多学科优化:发展能同时考虑多个目标和跨学科需求的优化方法,以应对更加复杂和多元化的现实世界问题。
- 自适应和自学习算法:设计能够根据问题特性自我调整和学习的算法,以提高效率和准确性。
- 算法的标准化和开源化:推动优化算法的标准化和开源化,以促进算法的共享和应用,加速研究和发展过程。