python實現爬山演算法的思路詳解

2022-10-04 17:39:10 字數 1088 閱讀 4534

問題

找圖中函式在區間[5,8]的最大值 

重點思路

爬山演算法會收斂到區域性最優,解決辦法是初始值在定義域上隨機取亂數100次,總不可能100次都那麼倒霉。

實現import numpy as np

import matplotlib.pyplot as p

import math

# 搜尋步長

delta = 0.01

# 定義域x從5到8閉區間

bound = [5,8]

# 隨機取亂數100次

generation = 100

def f(x):

return math.sin(x*x)+2.0*math.cos(2.0*x)

def hillclimbing(x):

while f(x+delta)>f(x) and x+delta<=bound[1] and x+delta>=bound[0]:

x = x+delta

while f(x-delta)>f(x) and x-delta<=bound[1] and程式設計客棧 x-delta=bound[0]:

x = x-delta

return x,f(x)

defzmgcuxf findmax():

highfzmgcuxest = [0,-1000]

for i in range(generation):

x = np.random.rand()*(bound[1]-bound[0])+bound[0]

currentvalue = hillclimbing(x)

print('current value is :',currentvalue)

if currentvalue[1] > highest[1]:

highest[:] = currentvalue

return highest

[x,y] = findmax()

print('highest point is x :{},y:{}'.format(x,y))

執行結果:

總結本文標題: python實現爬山演算法的思路詳解

本文位址:

python課程之猴子爬山演算法

猴子爬山乙隻頑猴在一座有n級台階的小山上爬山跳躍。上山時需從山腳至山頂往上跳n級台階,一步可跳1級,或跳2級,或跳3級,求上山有多少種不同的跳法?n 1000 輸入形式 請輸入台階數 輸出形式 跳法數 x 樣例輸入 請輸入台階數 20 樣例輸出 跳法數 121415 每一次都可以選擇1,2,3有3種...

幾種排序演算法的思路及其Python實現

1.快速排序 def quick sort alist,first,last if first last return mid value alist first low first high last while low while low mid value high 1 alist low a...

爬山法實現 八皇后問題 (Python 實現)

本文主要簡單闡述爬山法的基本演算法思想,並給出用此演算法實現八皇后問題詳細過程 最基本的爬上搜尋演算法表示 節選自 人工智慧 第二版 function hill climbing problem return a state thate is a locak maximum inputs probl...