Optimization SLSQP优化不收敛于唯一解

Optimization SLSQP优化不收敛于唯一解,optimization,quadratic-programming,scipy-optimize,scipy-optimize-minimize,Optimization,Quadratic Programming,Scipy Optimize,Scipy Optimize Minimize,我正在尝试一个简单的实验来学习scipy的SLSQP优化器 我参加了以下活动: def obj(x): return -1*((x[0]*x[0])+(x[1]*x[1])) 它是雅可比的: def jacj(x): return [-2*x[0],-2*x[1]] 其范围如下: bounds=[(0,1),(0,1)] 一个简单的约束——x[0]+2*x[1]最大化平方和函数是非凸的。解算器通常会收敛到局部最优。对于保证最优的解决方案,您需要使用全局解算器 请注意,最小化

我正在尝试一个简单的实验来学习scipy的SLSQP优化器

我参加了以下活动:

def obj(x):
    return -1*((x[0]*x[0])+(x[1]*x[1]))
它是雅可比的:

def jacj(x):
    return [-2*x[0],-2*x[1]]
其范围如下:

bounds=[(0,1),(0,1)]

一个简单的约束——x[0]+2*x[1]最大化平方和函数是非凸的。解算器通常会收敛到局部最优。对于保证最优的解决方案,您需要使用全局解算器

请注意,最小化平方和目标更容易:这是凸的。在这种情况下,解算器将始终(除了不可行和数值问题)收敛到全局最优

cons2=({'type':'ineq',
         'fun':lambda x: np.array([-(x[0])-2*(x[1])+1]),
          'jac':lambda x: np.array([-1.0,-2.0])})
res=minimize(obj,x0,method='slsqp',jac=jacj,bounds=bounds,
    constraints=cons2,options={'maxiter':100,'ftol':0.000001,'eps':1.0e-08})