python 模拟退火算法 代码实现
时间: 2024-04-03 21:29:21 浏览: 71
用于优化 ATSP(非对称旅行商问题) 的模拟 退火算法 的 python 实现_python_代码_下载
5星 · 资源好评率100%
模拟退火算法(Simulated Annealing)是一种全局优化算法,用于在搜索空间中寻找最优解。它模拟了固体退火的过程,通过控制温度和能量来逐渐降低系统的能量,从而达到找到全局最优解的目的。
下面是一个简单的Python代码实现模拟退火算法的示例:
```python
import math
import random
def simulated_annealing(cost_func, initial_solution, initial_temperature, cooling_rate, num_iterations):
current_solution = initial_solution
best_solution = current_solution
current_temperature = initial_temperature
for i in range(num_iterations):
new_solution = generate_neighbor(current_solution)
current_cost = cost_func(current_solution)
new_cost = cost_func(new_solution)
if new_cost < current_cost:
current_solution = new_solution
if new_cost < cost_func(best_solution):
best_solution = new_solution
else:
probability = math.exp((current_cost - new_cost) / current_temperature)
if random.random() < probability:
current_solution = new_solution
current_temperature *= cooling_rate
return best_solution
# 示例的目标函数为计算x的平方
def cost_func(solution):
return solution ** 2
# 生成邻居解的函数,这里随机生成一个在当前解附近的解
def generate_neighbor(solution):
return solution + random.uniform(-1, 1)
# 调用模拟退火算法进行优化
initial_solution = 10
initial_temperature = 100
cooling_rate = 0.95
num_iterations = 1000
best_solution = simulated_annealing(cost_func, initial_solution, initial_temperature, cooling_rate, num_iterations)
print("最优解:", best_solution)
```
这段代码实现了一个简单的模拟退火算法,目标函数为计算x的平方。在每次迭代中,通过生成邻居解并计算其代价,根据一定的概率接受新解或者保持当前解。随着迭代次数的增加,温度逐渐降低,概率接受较差解的可能性减小,从而逐渐收敛到全局最优解。
阅读全文