数学模板:随机化
约 48 字
预计阅读 1 分钟
次阅读
爬山法
1
2
3
4
5
6
7
8
9
10
11
|
def climb(p,cal):
eps, step = 1e-7, 1
while step > eps:
for i,w in product(range(len(p)),[step,-step]):
p2 = [a+w*(j==i) for j,a in enumerate(p)]
if cal(p2)<cal(p):
p = p2
break
else:
step *= 0.5
return p
|