CVX

From HPC users
Jump to navigationJump to search

CVX is a Matlab-based modelling system for convex optimization. CVX turns Matlab into a modelling language, allowing constraints and objectives to be specified using standard Matlab expression syntax.[1] Please read the license information before using CVX on the HPC cluster.

CVX can be used on CARL and EDDY within Matlab. Currently, CFX is usable in version 2016b.

If you use CVX for the first time, you need to add the file

cvx_prefs.mat

to the Matlab settings in your $HOME directory. This can be done by running the commands

module load MATLAB/2016b
matlab -nodisplay -r "cvx_init_prefs( false ); exit"

after you should see the file

$HOME/.matlab/cvx_prefs.mat

You only need to this once.

You can test whether CVX can be used by starting Matlab

matlab -nodisplay

(load the module first if you have not) and then execute these lines of code (taken from [2])

m = 20; n = 10; p = 4;
A = randn(m,n); b = randn(m,1);
C = randn(p,n); d = randn(p,1); e = rand;
cvx_begin
    variable x(n)
    minimize( norm( A * x - b, 2 ) )
    subject to
        C * x == d
        norm( x, Inf ) <= e
cvx_end

which should produce some output ending with

Status: Solved
Optimal value (cvx_optval): +4.77539

Once CVX is working for you you should be able to use it with in your Matlab jobs which you can submit using MDCS.