CVX has employed the mosek solver to solve the MILP. While in MILP, there exists a special ordered set (SOS), which is quite useful for coverting the MINLP (mixed-integer nonlinear program) into a standard MILP. Thus, I’m writing to ask how to specify such kinds of vectors in CVX?

For example, if in the problem, some varoables can only take one values in a set {a1, a2, a3, a4}, how to present this?

Thank your very much. For the SOS, you may refer to the following link on wiki.

The constaint I want to express is shown in the following: where v_i and u_{i,p} are SOS1 but the non-zero elements are not necessary 1, and can be e.g., integers less than 20. The v’*i and u’*{i,p} are binary SOS1 vectors. Thus, can anyone help on how to express this constraints in CVX? Thanks.