```
cvx_begin
variables x_loose(totalbandwidth,num_user) y_loose(timewindow,num_user) ;
variable z(totalbandwidth,timewindow,num_user);
maximize(sum(sum(sum(z,1),2),3));
subject to
for i=1:num_user
z(:,:,i)<=bandmove(:,:,i)*(x_loose(:,i)*y_loose(:,i)').^(1/2)*timemove(:,:,i);
end
0<=x_loose<=1;
0<=y_loose<=1;
sum(x_loose,1)<=1;
sum(y_loose,1)<=1;
for i=1:num_user
forbiddenbandwidth(:,i)'*x_loose(:,i)==0;
forbiddentime(:,i)'*y_loose(:,i)==0;
end
sum(z,3)<=1;
cvx_end
```

1.im not really sure about the convexity

2.if it’s convex, how can i deal with that erring constraint?

3.is there any better form of the objective function? it looks redundant

The error is due to the product of variables `x_loose(:,i)`

and `y_loose(:,i)`

.

This looks non-convex to me. Basically, after reformulating the problem to eliminate `z`

, this amounts to a non-convex QP

The 1st constraint would be a Rotated Second Order Cone constraint if rewritten in terms of a new variable `z_sqrt`

, defined as the square root of `z`

. But then the objective would be the sum over all dimensions of `z_sqrt.^2`

, which is convex, and therefore can’t be maximized in CVX.

This could be turned into a convex optimization problem is you changed what is squared. That would not be an equivalent problem. You would have to determine whether or not that different problem would suit your needs.