模拟退火

17 Mar 2025 | 5 分钟阅读

模拟退火算法是一种灵活有效的优化算法,灵感来源于冶金学中的物理退火方法。它广泛应用于解决各种领域的组合优化问题,包括工程、运筹学、机器学习和人工智能。在本文中,我们将深入探讨模拟退火算法背后的概念、其应用以及它如何工作以找到复杂优化问题的近似最优解。

模拟退火算法基于模拟退火过程的理念,该过程用于使固体材料达到最低能量状态。在冶金学中,退火包括将材料加热到高温,然后逐渐冷却以减少缺陷并优化其晶体结构。类似地,在模拟退火中,算法从一个初始解开始,迭代地探索解空间,逐渐降低“温度”以收敛到最优或接近最优的解。

模拟退火的工作原理

算法通过设置温度并创建初始解来开始。然后它迭代地执行以下步骤:

  1. 扰动:通过对现有解进行微小的随机修改来创建一个邻近解。这种扰动增加了搜索过程的探索性。
  2. 评估:使用能量函数确定新解的能量。如果新解需要更少的能量(质量更高)则接受该解。否则,可以根据温度和能量差异以概率方式接受它。
  3. 温度更新:根据冷却计划更新温度,在迭代过程中逐渐降低其值。这降低了随着搜索进行而接受较差替代方案的可能性。

代码

现在我们将向您展示,一个简单的模拟退火算法如何能够解决一个经典的优化问题:旅行商问题

导入库

我们将定义各种函数,其中第一个是作用于距离矩阵的基本距离计算。第二个将用于为下一个迭代分配一个新的邻居。

接下来,我们将每个城市的坐标添加为 (n,2) 矩阵数组,计算距离矩阵,并生成一个随机的起始路径。

简单的模拟退火需要某些初始温度设置,例如最差解选择系数和马尔可夫链长度。

需要执行一次模拟退火;一旦进入马尔可夫链,就可以定义实际优化的正确初始温度和系数。

在确定初始系数后,我们可以开始优化循环。

得到问题的答案。

输出

Simulated Annealing

绘制一张图表,描述所有发现的解的行为方式。

输出

Simulated Annealing

然后是最终轨迹的可视化。

输出

Simulated Annealing

现在我们找到了推销员的最短路径。

结论

模拟退火是一种多功能优化算法,为解决复杂的优化问题提供了一种健壮而灵活的方法。通过模拟冶金学中发现的退火过程,它有效地探索了广阔的解空间,以找到接近最优的解。作为优化工具包中的一个重要工具,模拟退火在各个领域持续推动进步,为具有挑战性的实际问题提供解决方案,并突破优化和人工智能领域中可能性的界限。