Bootstrap

scipy.optimize.minimize()最优化函数失效问题

       在使用minimize()函数最优化时,有时候会遇到输出的解和设定的初始值一样,即似乎该函数失效了,并没有求出最优的解。对于这种情况,很可能是因为误差容忍度的设置问题。对于最优化,其利用的数值算法是有停止条件的,不可能一直运算下去,其中误差容忍度就是这个停止条件,即当两次值的差值小于这个容忍度的时候,其就会停止运算,返回结果了。因此,对于这种情况,有可能是目标函数值太小,甚至已经小于了容忍度,这样刚开始运算就停止了,就会让人误以为是函数失效了。对此解决办法有两个,一是重新设置容忍度,即minimize()的tol参数,把其设的小一点,比如你的目标函数值再1e-5左右,则你可以设为1e-8或1e-10之类的,其默认值似乎是1e-5还是1e-6;第二个办法是加大你的目标函数值的尺度,比如乘以1e5或1e6之类的。总之只要保证你的目标函数值和tol相差一定的数量级即可,具体的数量级取决于你对误差的要求,一般5个左右的数量级就可以了。

;