我想解决MatLab使用CVXGEN. 我偏爱CVXGENover 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 代码。csolve最后,我可以通过运行以下代码从 MatLab调用此 MEX 代码 ( )
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代码集中params.n = n和params.Q = eye(n,n),然后调用[vars, status] = csolve(params);.