Skip to main content
 首页 » 编程设计

python之Scipy 优化 : Set maximum error

2025年05月04日18cyq1162

我正在尝试使用 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
  • 如果最坏的情况发生,只需将随机点放入循环中,让它在午休时间(或通宵)工作

此外,波浪、正弦和余弦 --- 考虑是否可以在傅里叶空间中重新表述问题可能会很有用。