作者:推球了 | 来源:互联网 | 2023-08-28 21:10
1.简单说明
Twiddle算法可以为一个计算误差的算法A去找到一个好的参数P。比如在PID调参中,一次调整一个参数,最终生成最优参数集,实现最优参数的搜索。
相较于梯度下降之类的算法的话,最大的优点就应该是简单了吧,不用去计算高维函数的梯度。
Talk is cheap, show me the code!
2.代码说明
下面写一段伪Python代码来说明一下,在这里的话以PID为例。
p = [0, 0, 0]
dp = [1, 1, 1]
best_err = A(p)
threshold = 0.1
while sum(dp) > threshold:for i in range(len(p)):p[i] &#43;&#61; dp[i]err &#61; A(p)if err < best_err: best_err &#61; errdp[i] *&#61; 1.1else: p[i] -&#61; 2 * dp[i] err &#61; A(p)if err < best_err: best_err &#61; errdp[i] *&#61; 1.05else: p[i] &#43;&#61; dp[i] dp[i] *&#61; 0.95