semivar defines a semi-continuous variable
x = semivar(n) x = semivar(n,m) x = semivar(n,m,'type') x = semivar(n,m,'type','field')
YALMIP defines a semi-continuous variable as a variable taking either the value 0, or any value between an upper and lower bound. In contrast to the definitions used in most mixed-integer solver, YALMIP allows negative variables, and will reformulate the model accordingly if required.
The following code defines a least squares problem with a constraint that all variables are either 0, or between 0.1 and 0.3.
A = randn(20,10); b = randn(20,1); x = semivar(10,1); e = b-A*x; F = [0.1 <= x <= 0.3]; optimize(F,norm(e,1));
Note that we have defined constraints which cuts away 0 from the feasible set. However, when the variable is defined with semivar, YALMIP understands that the simple bounds relate to the semi-continuous nature of the variable.
semivar requires that the solver used supports semi-continuous variables.