我编写了无法正常工作的嵌套优化函数。具体来说,我的 get_v_1 始终会返回初始猜测。所有其他功能都能正常工作。
代码应该如下工作:
1- get_v_1将 v 和 w 的初始猜测作为输入。它应该与scipy.fmin_slsqp找到v,这样v可以最小化 get_v_0 函数。
2- get_v_0将来自get_v_1的v作为输入,并且对于该值,它找到w,以便w(v)最小化函数的rss。
第一部分不起作用。有什么建议吗?
x
答案 0 :(得分:0)
我认为问题在于SLSQP算法使用目标函数的jacobian来估计下一个测试参数。在您的情况下,在get_v_1
中,您使用fmin_slsqp
作为目标函数调用get_v_0
。反过来,get_v_0
返回的值取决于w_rss
的最小化过程。
很明显,你无法通过分析获得get_v_0
的雅可比,因此雅马比亚将通过数字调用get_v_0
进行估算,其中参数的差异非常小。由于get_v_0
的输出取决于最小化,因此get_v_0
可能为非常相似的输入参数值返回相同的值。这将产生一个零值jacobian,而fmin_slsqp
内的get_v_1
会认为它的初始猜测已经是最小值。