I have a linear constraint in the form below

\zeta_u\ge\sqrt{\sum_{c=1}^C(1-x_{u,c})y_{u,c}+z},\hspace{2mm}\forall u=1,\cdots,U

Here, \zeta_u (continuous) and x_{u,c} (binary) are optimization variables.

z is a constant.

How to write it in CVX format? Can we use norm or any other operator?

Is this valid in CVX?

```
variable X(U,C) binary
variable S(U,C) binary
variable Zeta(U)
for c=1:C
for u=1:U
S(u,c)==1-X(u,c);
end
end
for u=1:U
Zeta(u)>=norm[z;S(u,:).*Y(u,:)];
end
```

Your original formulation, which you have now edited out, will not be accepted by CVX, because it is

`affine expression >= concave expression`

.

Presuming y_{n,c} are constants, which seems to be the case, and are nonegative, you ought to be able to adapt my answer at https://or.stackexchange.com/questions/1052/linearize-or-approximate-a-square-root-constraint/1053#1053 to express the right-hand side using `norm`

. I believe you will need to introduce a new binary variable constrained to equal one minus the existing variable, and use that in the `norm`

.

The constraint is not linear, but formulated per my answer, is a convex SOCP constraint.

Sorry, my mistake, yes, it is a conic constraint. Also, y_{u,c} are constants (>0)

Would you please have a look at my edit. Is this valid now. Or I should use the square root of y_{u,c}.

For example,

```
T(u,c)=sqrt(Y(u,c))
for u=1:U
Zeta(u)>=norm[z;S(u,:).*T(u,:)];
end
```

You need square root on `z`

.

You can more simply and efficiently use

S == 1-X

instead of the double for loop.