【发布时间】:2022-01-13 20:58:04
【问题描述】:
我需要找到一个复杂函数的全局最小值。 我使用来自 scipy.optimize 的盆地跳跃。当我更改方法时,例如 method="nelder-mead" vs "L-BFGS-B" 或初始猜测 x0,它们给了我不同的结果,特别是在我需要在下一步中使用的 x 值中。 x[5] = 0.6,“nelder-mead”,但 x[5]=0.0008,“L-BFGS-B”,尽管函数值类似于 2055.7795 与 2055.7756(所有这些都具有“成功:TRUE”)。我认为盆地跳跃可以找到全局最小值。因此,无论我使用什么方法或初始猜测,它都应该给出相同的结果。 任何人都可以解释为什么?并建议我应该怎么做才能找到全局最小值并检查它是否是全局的(不是本地的)。
谢谢
【问题讨论】:
-
你能展示你的代码吗?
-
您好 Frank Yellin,这是我的代码:
a=([]) -
Hi Frank Yellin, here is my code: a=np.array([0.45275208, 0.32413238, -0.30483703, 0.99848052, 0.55297566, 4.26764045, 1.03994821, 0.25612404, -4.58725626, 0.67264732, 0.17100111, -3.20751967 ]) bnds = ((-1, 1), (-1, 1),(-1,1),(0,None),(0,None),(None,None),(0,None), (0,None),(None,None),(0,None),(0,None),(None,None)) minimumr_kwargs = dict(method="nelder-mead", bounds=bnds) res=basinhopping( neg_loglike,a,minimizer_kwargs=minimizer_kwargs)。对不起,我是新手。我试图阅读如何格式化 cmets,但无法使其工作。
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python scipy minimize scipy-optimize minimization