模拟退火算法python
时间: 2023-09-06 11:10:17 浏览: 42
下面是一个简单的模拟退火算法的Python实现示例:
```python
import random
import math
# 目标函数:求解 x 的平方的最小值
def f(x):
return x ** 2
# 模拟退火算法
def simulated_annealing(f, x0, T0, alpha, epsilon):
x_best = x0
f_best = f(x_best)
x = x0
f_current = f(x)
T = T0
while T > epsilon:
x_new = x + random.uniform(-1, 1) * T
f_new = f(x_new)
delta_f = f_new - f_current
if delta_f < 0 or random.random() < math.exp(-delta_f / T):
x = x_new
f_current = f_new
if f_current < f_best:
x_best = x
f_best = f_current
T *= alpha
return x_best, f_best
# 测试模拟退火算法
x0 = 10 # 初始解
T0 = 1 # 初始温度
alpha = 0.9 # 降温系数
epsilon = 1e-8 # 终止条件
x_best, f_best = simulated_annealing(f, x0, T0, alpha, epsilon)
print("x_best:", x_best)
print("f_best:", f_best)
```
在上面的示例中,我们需要实现目标函数 `f(x)`,这里我们以求解 `x` 的平方的最小值为例。然后我们实现了模拟退火算法 `simulated_annealing`,其中包括了算法的核心逻辑和一些参数,如初始解 `x0`、初始温度 `T0`、降温系数 `alpha` 和终止条件 `epsilon`。最后我们调用 `simulated_annealing` 函数,并输出最优解 `x_best` 和最优解对应的目标函数值 `f_best`。