繁体   English   中英

python 二次规划的问题

[英]Problem with quadratic programming on python

我在 Matlab 上有一个代码,我使用函数 quadprog 来求解二次优化:

deltaU = quadprog(H,f,M,gamma)

这是 MPC 的一部分,其中 H 是 30x30 矩阵,fa 是 30x1 矩阵,M 是 180x30 矩阵,gamma 是 180x1 矩阵。 在 matlab 上它工作正常,代码返回结果向量(30x1)

但是,当我尝试将此代码传输到 Python 时,我无法使其工作

我正在使用来自 qpsolvers 的 quadprog 求解器:

import numpy as np
import qpsolvers
from qpsolvers import solve_qp 

……

sol_qp = solve_qp(H, f, M, gamma)

其结果是一个 NoneType 对象。 NoneType 对象的图像我已经用求解器网页的示例测试了求解器,它可以工作。 我认为矩阵大小存在一些问题,但是它们与我在 matlab 中使用的完全相同。 你现在知道我该怎么做吗?

对不起我的英语,我还在学习谢谢!


编辑:我用完整的矩阵定义添加完整的代码

由于字符的限制我不能放在这里,这里是矩阵的定义: https ://www.toptal.com/developers/hastebin/xunopeyivi.yaml

我发现了错误,求解器不接受像矩阵 (30,1) 这样的一维矩阵,它们需要是一个数组 (30,)

也许不是最好的方法,但我通过这样做解决了它:

 f2 = f[:,0]
 gamma2 = gamma[:,0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM