2017-04-25 67 views
0

我正在寻找制定具有二次约束的CVXOPT二次编程问题的明确指南。这里有提供了良好的文档:使用CVXOPT进行Python二次编程

的问题陈述我处理的是相同的问题here:什么是矩阵应该看起来像

enter image description here

?我制定了一个线性方程组的系统,但看看这些例子看起来不正确?

我发现的最好的资源是https://courses.csail.mit.edu/6.867/wiki/images/a/a7/Qp-cvxopt.pdf,但最后的链接已经死了更多的阅读。

我有一个IPython的笔记本电脑尝试使用这种编程方法,但它不断地失败:https://gist.github.com/jaredvacanti/62010beda0ccfc20d2eac3c900858e50

编辑:我编辑的数据源文件中的笔记本电脑提供进入这个优化问题中使用的真实数据。

+0

第一个链接告诉你G应该是什么样子。究竟是什么问题?另外:如果您没有使用cvxopt的经验,并且您不需要定制解决方案(cvxopt的优点之一)选项,则可以使用cvxpy,它更易于使用(高级方法)。 – sascha

+0

当我向解算器提供P,q,A和b时,我得到一个类似于我试图拟合样条的样本数据的最佳解决方案,但是当我提供G和h时,我会得到废话/无最优解。由于这个原因,我认为G和h的表述出了问题。 – Jared

回答

0

你已经发布的笔记本似乎已经明白了。我遇到的问题是数据的源文件不可用。

现在你的问题:

什么是矩阵G应该是什么样子的?我已经制定了一个 线性方程的系统,但是看看例子,这看起来不正确?

重写你 “线性方程” 到矩阵形式,即

2x + 2y = 4 
x - y = 1 

相当于

matrix([[2,2],[1,-1]]) * matrix([[x],[y]]) = matrix([[4],[1]]) 

其中matrix是从cvxopt

+0

我已经更新了笔记本以包含数据,因此示例应该能够精确运行。在运行解算器时,如果仅提供P,q,A和B,则可以很好地解决问题。当还提供G和h时,解算器不会终止。这是我的问题 - 它必须是G和h的表述。 – Jared