我正在尝试使用 scipy 优化 4 维函数。到目前为止一切正常,只是我对解决方案的质量不满意。现在我有地面实况数据,我用它来验证我的代码。到目前为止我得到的是:
End error: 1.52606896507e-05
End Gradient: [ -1.17291295e-05 2.60362493e-05 5.15347856e-06 -2.72388430e-05]
Ground Truth: [0.07999999..., 0.0178329..., 0.9372903878..., 1.7756283966...]
Reconstructed: [ 0.08375729 0.01226504 1.13730592 0.21389899]
错误本身听起来不错,但由于值完全错误,我想强制优化算法 (BFGS) 执行更多步骤。
在文档中,我找到了“gtol”和“norm”选项,我尝试将它们设置为非常小的值(例如 0.0000001),但它似乎没有任何改变。
背景: 问题是,我尝试解调波,所以我有 sin 和 cos 项以及可能的许多局部(或全局)最小值。我使用强力搜索来找到一个好的起点,这很有帮助,但目前看来大部分工作都是通过强力搜索完成的,因为优化通常只使用一个迭代步骤。所以我正在尝试以某种方式改进这部分计算。
请您参考如下方法:
许多局部极小值+在暴力搜索后几乎没有任何改进,这听起来很糟糕。很难说出您在问题中提供的详细程度的非常具体的内容,因此这里有一些模糊的想法可以尝试(基本上,如果我怀疑我的最小化器卡住了我会怎么做):
- 尝试从一堆不同的初始猜测中手动启动最小化器。
- 尝试使用随机最小化器。你正在标记一个问题
scipy,所以试试basinhopping - 如果最坏的情况发生,只需将随机点放入循环中,让它在午休时间(或通宵)工作
此外,波浪、正弦和余弦 --- 考虑是否可以在傅里叶空间中重新表述问题可能会很有用。
