模拟退火算法(Simulated Annealing, SA)是一种启发式搜索算法,常用于解决优化问题。
该算法以概率的方式搜索问题的解空间,并在搜索过程中逐渐降低温度,从而有助于找到全局最优解。模拟退火算法的基本原理如下:
- 初始化:随机生成一个初始解。
- 迭代过程:
- 生成一个新解,这个新解通过一定的方法从当前解中产生,例如随机变动。
- 计算新解的代价(成本)。
- 如果新解的代价更低,则接受新解;否则,根据一定的概率决定是否接受新解。
- 降低温度。
- 重复步骤2,直到达到结束条件(例如达到一定的迭代次数或温度达到阈值)。
下面是一个简单的模拟退火算法的Python实现示例,这里以求解一个简单的函数最小值问题为例:
import math
import random
# 目标函数
def objective_function(x):
return x**2
# 初始解
initial_solution = random.uniform(-10, 10)
# 模拟退火参数
temperature = 1000
cooling_rate = 0.99
# 迭代次数
max_iterations = 1000
# 模拟退火算法
current_solution = initial_solution
current_cost = objective_function(current_solution)
for i in range(max_iterations):