Python:从 MATLAB 的 quadprog 移植到 cvxopt 二次规划

标签 python optimization cvxopt

我正在将一个 MATLAB 脚本移植到使用 quadprog 的 Python功能。最好的等价物似乎是 qp .我可以用 doc 计算出等效的符号和一点时间,但我很懒惰,如果只是复制粘贴一些代码而不是考虑它会很好。所以:

  • 这两个函数中哪些参数是等价的?
  • 如何将 quadprog 的上限和下限合并到 cvxopt.solvers.qp 中?

我已经读过 this related question但我比那更懒。

最佳答案

这是一个愚蠢的问题,你这鹅,但由于周围可能有更多懒惰的人,所以采用这行 MATLAB 代码(使用编号参数以提高可读性):

x = quadprog(C1, C2, C3, C4, C5, C6, C7, C8, ...)

Python 中的等价物是:

import numpy
import cvxopt
n = C1.shape[1]   # This is for readability only    

P = C1
q = C2
G = numpy.vstack([C3, -numpy.eye(n), numpy.eye(n)])
h = numpy.hstack([C4, -C7, C8])
A = C5
b = C6

sol = cvxopt.solvers.qp(cvxopt.matrix(P), cvxopt.matrix(q), cvxopt.matrix(G), cvxopt.matrix(h), cvxopt.matrix(A), cvxopt.matrix(b))
x = sol['x']

假设您一直在使用 numpy.arrays。如果您一直在使用矩阵,请检查 this doc找到 G 和 h 的公式:

G = numpy.bmat('C3, -numpy.eye(n), numpy.eye(n)')
h = numpy.bmat('C4, -C7, C8')

关于Python:从 MATLAB 的 quadprog 移植到 cvxopt 二次规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184207/

相关文章:

c - Gcc 中的大数加法结果(阿贝尔群)

c - 给定一个大小为 N 的数组,我需要找到将在最小和最大范围内求和的最小值数

python - 安装 cvxopt

python - 在这种情况下如何避免 Django View 中的硬编码 url?

python - Pandas 重新排列多索引系列

python - 根据另一列检查数据框中的多列的高性能方法

python - 将带有百分比字符串的列更改为 float pandas 数据框

javascript - 用于 http 传输的 html/js/css/jpg/png 的推荐文件大小范围

python - Windows 上 cvxopt 的导入问题

python - Conda 未安装最新版本