Python 最接近初始猜测的scipy优化解

Python 最接近初始猜测的scipy优化解,python,optimization,scipy,Python,Optimization,Scipy,我正在尝试使用scipy.optimize.minimize来获得以下问题的解决方案: 假设我们得到f(x,y)=x+2*y,我们的初始猜测是(1,1)。我们想要解f(x,y)=0,但对于我的目标,任何能给我| f(x,y)|

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

假设我们得到f(x,y)=x+2*y,我们的初始猜测是(1,1)。我们想要解f(x,y)=0,但对于我的目标,任何能给我| f(x,y)|<容差的解都足够好了。很明显,有无限多的解,所以我的问题是:在optimize.minimize中是否有一个算法可以优先考虑最近的(欧氏距离)解?也就是说,我想象从初始猜测开始,在初始猜测周围搜索一个圆圈,如果没有解,半径会增加,但一旦它到达公差范围内的点,它就会返回该点

任何指点都将不胜感激


谢谢,

假设方程f(x,y)=0至少有一个解。然后,您可以将其表述为约束优化问题,以获得最接近给定初始猜测的解决方案:

from scipy.optimize import minimize
import numpy as np

# We want to minimize ||f(x)-xinit|| subject to f(x) = 0

f = lambda x: x[0] + 2*x[1]
# the euclidean norm of f-xinit
objfun = lambda x, xinit: np.sqrt(np.sum((f(x)-xinit)**2))

# initial guess
xinit = [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)|