我想用CVXGEN
解決MatLab
中的QP/LP問題。我偏好CVXGEN
而不是CVX
,因爲CVXGEN
要快得多。具體地講,我想解決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代碼。最後,我可以通過運行下面的代碼
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.
這個過程調用從MATLAB這個MEX代碼(csolve
),但是,需要我想要運行的問題n
的每個維度的,我需要去cvxgen.com
,更改n
,編譯代碼,然後運行我的MatLab
代碼。是否可以讓n
作爲參數輸入?這樣,我只需要編譯一次代碼,然後在我的MatLab
代碼集params.n = n
和params.Q = eye(n,n)
中,然後調用[vars, status] = csolve(params);
。