【发布时间】:2016-06-08 20:53:49
【问题描述】:
我正在尝试解决以下等式:
maximize x^{T}Ax 其中x 是要最大化的变量的3 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.
【问题讨论】:
-
并非所有问题都需要代码,但在这种情况下,看起来更像是您只是放弃了问题并希望有人为您编写解决方案。这实际上不是编程问题,而是数学问题。您需要对 Python 有基本的了解,然后这里的任何答案都可能对您有所帮助。
-
是的,我对 python 的了解不只是初步的。就示例或某些此类事情而言,我只是希望有人指出我正确的方向,因为我对优化或线性编程领域以及python中的相应包完全缺乏任何理解。
-
听起来你需要一个教程,因为这是一个 XY 问题。您真正的问题似乎是“我如何在 Python 中执行线性编程”,它看起来太宽泛了。一个快速的谷歌搜索出现了this tutorial about PuLP,这可能会对你有所帮助。
-
@AdamSmith 我已经看到了。但他们似乎没有在目标中使用二次项,而这正是我在目标函数中所拥有的。
标签: python optimization linear-programming pulp