模拟退火算法SA
模拟退火是一种通用概率算法,常用来在一定时间内寻找在一个很大搜寻空间中的近似最优解。
算法得益于材料统计力学的研究成果。统计力学表明材料中粒子的不同结构对应与粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程称为退火),粒子就可以在每个温度中达到热平衡。当系统完全被冷却,最终形成处于低能状态的晶体。
设材料在状态i的能量为E(i),那么材料在温度T时从状态i进入状态j遵循如下规律,其中K是玻尔兹曼常数。
通过缓慢降低温度来重置迭代次数,使之满足终止条件。
如果温度下降的十分缓慢,而在每个温度都有足够多次的状态转移,使之在每一个温度下达到热平衡,则全局最优解将以概率一被找到。
下面推荐一个常用的python库,里面包含模拟退火算法,粒子群算法等等
模拟退火算法python库
多目标模拟算法MOSA
MOSA基本框架
算法步骤
步骤1 对算法的相关参数进行初始化, 如初始温度、迭代次数等。
步骤2 随机产生初始解X, 计算其所有目标函数值并将其加入到Pareto解集中。
步骤3 给定一种随机扰动, 产生X的邻域解Y, 计算其所有目标函数值。
步骤4 比较新产生的邻域解Y与Pareto解集中的每个解并更新Pareto解集。
步骤5 如果新邻域解Y进入Pareto解集, 则用Y替代X, 并转到步骤8。
步骤6 按某种方法计算接受概率。
步骤7 如果Y未进入Pareto解集, 则根据接受概率决定是否接受新解, 如果新解被接受, 则令其为新的当前解X, 如果新解未被接受, 则保留当前解。
步骤8 每隔一定迭代次数, 从Pareto解集中随机选择一个解, 作为初始解, 重新搜索。
步骤9 采取某种降温策略, 执行一次降温。
步骤10 重复步骤3~步骤9, 直到达到最低温度, 输出结果, 算法结束。
归档式模拟退火算法AMOSA
简单介绍一下多目标模拟退火的一种AMOSA算法
归档式多目标模拟退火AMOSA是由Bandyopadhyay等人于2008年提出的一种解决多目标组合优化问题的高效算法。该算法首先初始化相关参数, 如初始温度等, 产生初始解, 计算各解的各个目标函数值, 利用爬山操作和支配关系对解进行迭代提炼, 将非支配解储存于归档集中, 直至归档集中解的个数增至SL (SL表示对解执行聚类操作前归档集中解的最大个数) 。如果归档集中解的个数超过HL (HL表示用户所需非支配解的最大个数) , 执行聚类操作使解的个数减至HL。其次, 从归档集中随机地选择一个解作为当前解, 并计算该解的多个目标函数值。在每个温度下重复执行以下过程若干次:扰动当前解产生新解, 计算该解的多个目标函数值, 并检测新解与当前解及归档集中解的支配关系。基于支配关系的不同, 以不同概率接受新解、当前解或归档集中的某个解。若归档集中解的个数超过SL, 执行聚类操作以减至HL。每个温度以一定冷却率进行退火, 直至达到给定的最低温度, 结束循环。
AMOSA算法分三种情况计算该算法的接受概率: (1) 当前解支配新解, 以概率 p = 1 1 + e x p ( Δ d o m a v g ∗ t e m p ) p=\frac{1}{1+exp(\Delta dom_{avg}*temp)}