猿问

scipy 优化最接近初始猜测的解决方案

我正在尝试使用 scipy.optimize.minimize 来获得以下问题的解决方案:

假设给定 f(x,y) = x + 2*y,我们有一个初始猜测值 (1,1)。我们想要解决 f(x,y) = 0,但为了我的目标,任何给我 |f(x,y)| 的解决方案 < 耐受性足够好。显然有无数个解决方案,所以我的问题是:在 optimize.minimize 中是否有算法优先考虑最近的(欧几里得距离)解决方案?也就是说,我想象从初始猜测开始,并在初始猜测周围搜索一个圆圈,如果没有解决方案,半径会增加,但是一旦它碰到一个在容差范围内的点,那么它就会返回该点。

任何指针将不胜感激。


慕沐林林
浏览 118回答 1
1回答

慕哥9229398

假设方程 f(x,y) = 0 至少有一个解。那么您可以将其表述为约束优化问题,以获得最接近给定初始猜测的解:from scipy.optimize import minimizeimport numpy as np# We want to minimize ||f(x)-xinit|| subject to f(x) = 0f = lambda x: x[0] + 2*x[1]# the euclidean norm of f-xinitobjfun = lambda x, xinit: np.sqrt(np.sum((f(x)-xinit)**2))# initial guessxinit = [1, 1]# constraint f(x) = 0:constr = {"type": "eq", "fun": f}minimize(fun=objfun, args=(xinit,), x0=xinit, constraints=constr)在方程 f(x,y)=0 无解的情况下,您可以尝试最小化 |f(x,y)| 没有任何限制。
随时随地看视频慕课网APP

相关分类

Python
我要回答