Python 具有求和界的SciPy多元优化
我正在尝试使用带有约束的Python 具有求和界的SciPy多元优化,python,optimization,scipy,Python,Optimization,Scipy,我正在尝试使用带有约束的scipy.optimize.minimize,执行多变量优化,但约束并不针对每个单独的变量;相反,它是关于变量的求和 以下是二次目标: 其中A是由m矩阵构成的对称m(m是点x和y的维数) 这个函数的导数很好A完全消失,使梯度成为一个常数,我可以预先计算。这是梯度: 下面是我用来执行优化的Python代码: retval = scipy.optimize.minimize(f, A.flatten(), args = (S, dAi.flatten(), A.
scipy.optimize.minimize
,执行多变量优化,但约束并不针对每个单独的变量;相反,它是关于变量的求和
以下是二次目标:
其中A
是由m
矩阵构成的对称m
(m
是点x
和y
的维数)
这个函数的导数很好A
完全消失,使梯度成为一个常数,我可以预先计算。这是梯度:
下面是我用来执行优化的Python代码:
retval = scipy.optimize.minimize(f, A.flatten(),
args = (S, dAi.flatten(), A.shape[0]),
jac = True, method = 'SLSQP')
其中A
是矩阵(展平),S
是包含点对x
和y
的集合,dAi
是预计算的梯度矩阵(也展平)。目标函数f
如下所示:
def f(A, S, dfA, k):
A = A.reshape((k, k))
return [np.sum([np.dot(x - y, A).dot(x - y) for x, y in S]), dfA]
然而,这种实现会无限延伸,永远不会完成。我无法在任何地方指定求和约束,因为优化方法要求每个变量都有边界或不等式约束,而不是聚合约束
有没有一种方法让我错过了?但从未找到解决办法。但这只是一个错误推导的问题,但涉及熊猫,我不使用