具有求和界限的SciPy多变量优化

时间:2014-08-24 20:05:32

标签: python optimization scipy

我正在尝试使用带有约束的scipy.optimize.minimize执行多变量优化,但约束不在每个单独的变量上;相反,它取决于变量的总和。

这是二次目标:

objective

其中Am对称的m矩阵(m是点xy)的维度。< / p>

这个功能的衍生物非常好; A完全消失,使渐变成为我可以预先计算的常量。这是渐变:

gradient

这是我用来执行优化的Python代码:

retval = scipy.optimize.minimize(f, A.flatten(),
    args = (S, dAi.flatten(), A.shape[0]),
    jac = True, method = 'SLSQP')

其中A是矩阵(展平),S是包含成对点xy的集合,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]

然而,这个实现旋转到无穷大,永远不会完成。我无法在任何地方指定求和约束,因为优化方法要求每个变量的约束或不等式约束,而不是聚合。

有没有办法做到这一点,我错过了? This question seemed close但从未得到解决方案。 This question involves multivariate optimization但只是一个不正确推导的问题,this question seems analogous to my problem但涉及到我不使用的Pandas。

0 个答案:

没有答案