0

我正在尝试解决以下等式:

maximize x^{T}Ax 其中x3 X 1要最大化的变量的向量,A是值的3 X 3矩阵。

所以基本上x^{T} = [a,b,c]哪些是要最大化的未知数,A可能类似于

A = [ [29, 29, 79], [28, 28, 48], [9, 40, 0 ]]

有人可以告诉我如何使用 PuLP 或 python 中的其他一些线性编程包以最大化问题的形式表示这一点吗?

任何帮助将非常感激。我对这个领域非常陌生,不知道如何开始表示这个公式。

到目前为止,我已经尝试使用CVXPY来模拟这个函数。我有以下代码,但看到一个错误:

    [1] A = np.array([[29,29,79],[28,28,48],[9,40,0]])
    [2] x=Variable(3)
    [3] objective=Minimize(x.T*A*x)
     Warning: Forming a nonconvex expression (affine)*(affine).
  warnings.warn("Forming a nonconvex expression (affine)*(affine).")
    [4] constraints=[0<=x,x<=1,sum_entries(x)==1] #what I'm trying to say is each entry of x should be between 0 and 1 and all entries should add up to 1.
    [5] prob = Problem(objective, constraints)
    [6] prob.solve()
    DCPError: Problem does not follow DCP rules.
4

1 回答 1

0

我不相信 PuLP 支持二次规划 (QP)。您的模型是二次模型,PuLP 仅适用于线性规划模型(LP 和 MIP)。在 Python 中表达 QP 有很多选择。高性能商业求解器通常提供 Python 绑定,否则您可以查看例如CVXOPT。请注意,只有凸 QP 是“容易”解决的。如果您有一个非凸 QP,事情变得更加困难,您可能需要查看一个全局求解器(没有那么多类型的求解器)。非凸 QP 可以通过 KKT 条件重新表述为线性 MIP 模型,尽管这些模型可能并不总是表现得很好。

于 2016-06-08T22:07:27.927 回答