微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scipy 目标函数:溢出错误34,'结果太大'

如何解决Scipy 目标函数:溢出错误34,'结果太大'

我正在使用 scipy 同时查找两个模型的参数。正如 SO 上一位乐于助人的成员所建议的那样,我正在使用 scipy.optimize.minimize 来做到这一点。因此,我的目标函数是从每个真实数据集中减去每个模型的两个范数的 - 这是一个完整的示例:

 model_func_1 = lambda t,total,IRF_1,p1,p2,p3: np.convolve(IRF_1,(1/3*total*(1+2*((p1-p3)*np.exp(-t/p2) + 
 p3))))[:len(t)]
 model_func_2 = lambda t,G,IRF_2,p3: np.convolve(IRF_2,(1/3*total*G*(1-((p1-p3)*np.exp(-t/p2) +
 p3))))[:len(t)]
                  
 objective = lambda p,t,y_1,y_2,w_1,w_2: norm((y_1 - model_func_par(t,p[0],p[1],p[2]))*w_1)**2 +
 norm((y_2 - model_func_perp(t,p[2]))*w_2)**2

显然这个目标在某个时候变得巨大,所以我经常得到

溢出错误:(34,'结果太大')

一些解释:数据(y_1和y_2)是两个不同的指数衰减;我正在将模型与称为 IRF 的信号进行卷积

我正在使用“鲍威尔”优化方法。 我已经为三个参数添加了界限以防止超级不合理的猜测,但我迟早还是会得到错误。我无法在不遇到此错误的情况下完成单个“实验”。

我能想到的几个问题:

  1. 如何在 scipy optimize 中针对此溢出错误实现 try/catch?

  2. 有没有办法在不影响整个优化程序的情况下扩展这个目标函数

  3. 另一种编写多目标优化问题的目标函数方法

  4. 有什么好方法可以将优化过程中发生的情况可视化,以便我能够找到问题的根源?

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。