How can i solve this min --max probem?

image
the code is below:
%% CVX
cvx_begin
variable v(L,1) complex
variables xi C % C is an auxiliary variable
expression max_value(I)
l = sqrt(1.5 * sigma_elta_2 / (N * rho * r_max * r_max))
for i = 1:I
for k = 1:L
a_w(i,k) = exp(-1j * wi(i) * (k-1));
end
real_part = real(xi + a_w(i,:slight_smile: * v);
imag_part = imag(xi + a_w(i,:slight_smile: * v);
a = [real_part.‘, imag_part.’, l * xi]; % Combined as a vector

    max_value(i) = norm(a,2);
end

% minimize C
minimize(C)

% constrain
subject to
    1 + sum(abs(real(v)) + abs(imag(v))) <= M * xi  
    xi >= 0;  

    for i = 1:I
        max_value(i) <= C;   %Make sure this value is below the upper bound C
    end

cvx_end

I’m not sure there’s anything wrong with my code, running this code gives a sparse vector solution that I don’t expect.

I certainly don’t know whether to expect a sparse vector as solution.

hello Mark,can I ask you a question, is there any logical problem in my code for this min-max problem.If there is no logical problem, can I get cvx to give me a solution that is not so sparse without changing the code (although I know that a local optimum for a convex problem is a global optimum)

There’s no magic sparsification or desparsification commands. Changing things such as what norm is used, or penalty terms, might affect that, but could also change the ‘goodness’ of the solution. Of course, the input data could also matter, a lot. It is your problem, so you have to decide what you want.

Thanks for the reply, Mark. i do have some ridiculous requirements for this solution. Because for this problem I used CVX to get a solution about v and xi acting together to get a vector g. And this sparse solution resulted in every term of the objective function associated with g being 0 , which bothered me all day.Here is the code for my objective function and the solution of v and xi.

g = v / xi; %
theta = linspace(-90, 90, 180);
for i = 1 : 180
w = 0.5 * pi * sin(deg2rad(theta(i)));
for k = 1:L
e_jw(k) = exp(-1i * w * (k-1));
end
G_w(i) = e_jw * g ; %get the function G(w)
RNSR(i) = (abs(1 + G_w(i))).^2 * (xi)^2 ;%
end
v=
-0.4344 - 0.0000i
-0.0000 + 0.0000i
0.0000 - 0.0000i
-0.0000 + 0.0000i
0.0000 - 0.0000i
-0.0000 + 0.0000i
0.0000 - 0.0000i
-0.0000 + 0.0000i
-0.0000 - 0.0000i
0.0000 + 0.0000i
-0.0000 - 0.0000i
0.0000 + 0.0000i
-0.0000 - 0.0000i
0.0000 + 0.0000i
-0.0000 - 0.0000i
0.0000 + 0.0000i
xi=
0.4344

Well, maybe the formulation is not wells-suited for your application. But I don’t have any idea what that is. Coming up with a formulation which is suited for what you want to do in the real world is out of scope of this forum.

That may indeed be the case.Thank you for your reply and help, have a great day!