Matlab CVXGEN程序的任意维数
我想使用Matlab CVXGEN程序的任意维数,matlab,mathematical-optimization,hessian-matrix,cvx,Matlab,Mathematical Optimization,Hessian Matrix,Cvx,我想使用CVXGEN在MatLab中解决一个QP/LP问题。我更喜欢CVXGEN而不是CVX,因为CVXGEN要快得多。我特别想解决这个问题 min f(x) s.t. x in X 其中,f(x)为二次型,x为紧凸型,由线性函数定义。问题的大小因运行而异。我想尽可能地自动化这个过程。为了举例说明,CVXGEN代码的示例如下: dimensions n = 10 end parameters Q (n,n) psd # quadratic penalty. end varia
CVXGEN
在MatLab
中解决一个QP/LP问题。我更喜欢CVXGEN
而不是CVX
,因为CVXGEN
要快得多。我特别想解决这个问题
min f(x) s.t. x in X
其中,f(x)
为二次型,x
为紧凸型,由线性函数定义。问题的大小因运行而异。我想尽可能地自动化这个过程。为了举例说明,CVXGEN
代码的示例如下:
dimensions
n = 10
end
parameters
Q (n,n) psd # quadratic penalty.
end
variables
x (n)
end
minimize
quad(x, Q)
end
此代码输入到cvxgen.com
。在这个网站上,我可以生成C代码,这给了我一个唯一的数字。然后我可以使用唯一的编号将其编译成MEX代码。最后,通过运行以下代码,我可以从MatLab调用此MEX代码(csolve
)
n=10; % dimension of the problem
params.Q = eye(n,n); % assume that the Hessian is the identity
[vars, status] = csolve(params); % this outputs optimal x* = 0.
n=10; % dimension of the problem
params.Q = eye(n,n); % assume that the Hessian is the identity
[vars, status] = csolve(params); % this outputs optimal x* = 0.
但是,这个过程要求我要运行的问题的每个维度
n
,我需要转到cvxgen.com
,更改n
,编译代码,然后运行我的MatLab
代码。是否可以让n
作为参数输入?这样,我只需要编译一次代码,然后在我的MatLab
code集合params.n=n
和params.Q=eye(n,n)
,然后调用[vars,status]=csolve(params)代码>简而言之,我认为不可能在cvxgen.com
上指定任意维度。我有一个解决方案:首先,在MatLab中,允许用户为cvxgen.com
指定他/她的电子邮件地址和密码。接下来,使用MatLab
中的system
命令,调用执行以下步骤的python
或javascript
程序:
1) 用户登录cvxgen.com
2) 转到网站上的编辑选项卡
3) 复制并粘贴cvxgen
代码
4) 转到生成c
选项卡
5) 单击生成代码
6) 转到matlab
tab
7) 复制要下载的已编译C代码的唯一标识号
8) 将唯一标识号传回MatLab
,并通过调用标识号编译MatLab
中的Mex
文件
现在可以通过以下命令在MatLab
中调用Mex
文件:
简而言之,我认为不可能在cvxgen.com
上指定任意维度。我有一个解决方案:首先,在MatLab中,允许用户为cvxgen.com
指定他/她的电子邮件地址和密码。接下来,使用MatLab
中的system
命令,调用执行以下步骤的python
或javascript
程序:
1) 用户登录cvxgen.com
2) 转到网站上的编辑选项卡
3) 复制并粘贴cvxgen
代码
4) 转到生成c
选项卡
5) 单击生成代码
6) 转到matlab
tab
7) 复制要下载的已编译C代码的唯一标识号
8) 将唯一标识号传回MatLab
,并通过调用标识号编译MatLab
中的Mex
文件
现在可以通过以下命令在MatLab
中调用Mex
文件: