python 爬山算法代码实现
时间: 2023-07-25 16:32:09 浏览: 247
下面是一个简单的 Python 爬山算法的代码实现:
```python
import random
# 定义目标函数
def objective_function(x):
return x ** 2
# 定义爬山算法
def hill_climbing(objective_function, bounds, max_iter):
# 初始化当前解
current = [random.uniform(bounds[i][0], bounds[i][1]) for i in range(len(bounds))]
# 迭代
for i in range(max_iter):
# 计算当前解的目标函数值
current_cost = objective_function(current)
# 随机选择一个邻居
neighbor = [random.uniform(bounds[i][0], bounds[i][1]) for i in range(len(bounds))]
# 计算邻居的目标函数值
neighbor_cost = objective_function(neighbor)
# 如果邻居的目标函数值更好,则更新当前解
if neighbor_cost < current_cost:
current = neighbor
current_cost = neighbor_cost
return current
# 测试
bounds = [(-5, 5)]
best = hill_climbing(objective_function, bounds, 100)
print('最优解:', best)
print('最优值:', objective_function(best))
```
这个实现中,目标函数是一个简单的二次函数,bounds 是搜索范围,max_iter 是最大迭代次数。hill_climbing 函数接受这些参数,并返回最优解。算法的实现很简单,每次随机选择一个邻居并计算目标函数值,如果邻居的目标函数值更好,则更新当前解。最后返回当前解即可。这是一个非常基本的爬山算法实现,可以根据需要进行修改和扩展。
阅读全文