I get NaN From the second iteration using MOSEK 10.1.17, cvx_version is 2.2

Hello, This is my code.

clear

num_antenna = 16;
num_user = 2;
num_target = 4;

p_max = 1;
p_circuit = 10^(-0.5);
noise_power = 10^(-11);

path_loss_gain = sqrt(10^(-9.9));

sinr_threshold = 10^(0.5);
sensing_threshold = 10^(-1);
pho = 0.35;
dynamic_power = 10^(-5.6);
epsilon = 10^(-3);

user_direction = [-30 30];
target_direction = [-54, -18, 18, 54];

channel = zeros(num_antenna, num_user);
channel_her = zeros(num_user, num_antenna);

sterring_target = zeros(num_antenna, num_target);
sterring_target_her = zeros(num_target, num_antenna);

for k = 1:num_user

channel(:,k) = path_loss_gain * get_steering_letter(num_antenna, user_direction(k));
channel_her(k,:) = transpose(conj(channel(:,k)));

end

for m = 1:num_target

sterring_target(:,m) = get_steering_letter(num_antenna, target_direction(m));
sterring_target_her(m,:) = transpose(conj(sterring_target(:,m)));

end

[V_l, lambda_l] = get_init_letter(num_user, num_antenna, num_target, channel, channel_her, sinr_threshold, noise_power, sterring_target, sterring_target_her, sensing_threshold, p_max, p_circuit, pho);

sum_rate_current = get_SINR_letter(V_l, channel, channel_her, num_user, noise_power);

while(1)

sum_rate_prev = sum_rate_current;

cvx_begin

    cvx_solver Mosek

    variable V(num_antenna, num_antenna, num_user + 1) hermitian semidefinite;
    variable t
    variable u

    expressions interference_constraint(num_user, 1)
    expressions interference(num_user, 1)
    expressions non_interference(num_user, 1)
    expressions sensing_power(num_target, 1)
    expressions sum_rate_right(num_user, 1)
    expressions sum_rate_left(num_user, 1)

    maximize(t)

    subject to

        V_total = get_precoder_total_letter(num_user + 1, V);
        interference_const = get_interference_const_letter(interference_constraint, interference, non_interference, num_user, channel, channel_her, V, sinr_threshold, noise_power, 1);
        sensing_power_const = get_sensing_power_const_letter(sensing_power, num_target, sterring_target, sterring_target_her, V_total, sensing_threshold, 1);
        sum_rate_const = get_sum_rate_const_letter(sum_rate_right, sum_rate_left, num_user, t, u, lambda_l, V, V_l, channel, channel_her, noise_power, 1);

        u >= real(trace(V_total)) / pho + p_circuit;
        interference_const >= 0;
        real(trace(V_total)) <= p_max;
        sensing_power_const >= 0;
        t >= 0;
        u >= 0;
        sum_rate_const <= 0;

cvx_end

v_opt = zeros(num_antenna, num_user);
V_opt = zeros(num_antenna, num_antenna, num_user + 1);
V_opt_total = 0;

for k = 1:num_user

    v_opt(:,k) = (channel_her(k,:) * V(:,:,k) * channel(:,k))^(-1/2) * V(:,:,k) * channel(:,k);
    V_opt(:,:,k) = v_opt(:,k) * transpose(conj(v_opt(:,k)));

    V_opt_total = V_opt_total + V_opt(:,:,k);

    V_l(:,:,k) = V_opt(:,:,k);
end

V_opt(:,:,end) = get_precoder_total_letter(num_user + 1, V) - V_opt_total;

V_l(:,:,end) = V_opt(:,:,end);

V_l = V;

lambda_l = u / t;

sum_rate_current = get_SINR_letter(V, channel, channel_her, num_user, noise_power);

if abs(sum(sum_rate_current) - sum(sum_rate_prev)) < epsilon
    break;
end

end

V_total_opt = get_precoder_total_letter(num_user + 1, V_opt);

get_BEAM_GAIN_letter(V_total_opt, num_antenna, user_direction, target_direction, sensing_threshold);

Calling Mosek 10.1.17: 790 variables, 17 equality constraints

MOSEK Version 10.1.17 (Build date: 2023-11-10 09:15:33)
Copyright (c) MOSEK ApS, Denmark WWW: mosek.com
Platform: Windows/64-X86

MOSEK warning 54 (MSK_RES_WRN_LARGE_CON_FX): The equality constraint ‘’ (13) is fixed to numerically large value -7e+08.
Problem
Name :
Objective sense : minimize
Type : CONIC (conic optimization problem)
Constraints : 17
Affine conic cons. : 0
Disjunctive cons. : 0
Cones : 4
Scalar variables : 22
Matrix variables : 3 (scalarized: 1584)
Integer variables : 0

Optimizer started.
Presolve started.
Linear dependency checker started.
Linear dependency checker terminated.
Eliminator started.
Freed constraints in eliminator : 0
Eliminator terminated.
Eliminator - tries : 1 time : 0.00
Lin. dep. - tries : 1 time : 0.00
Lin. dep. - primal attempts : 1 successes : 1
Lin. dep. - dual attempts : 0 successes : 0
Lin. dep. - primal deps. : 0 dual deps. : 0
Presolve terminated. Time: 0.00
Optimizer - threads : 12
Optimizer - solved problem : the primal
Optimizer - Constraints : 11
Optimizer - Cones : 4
Optimizer - Scalar variables : 20 conic : 12
Optimizer - Semi-definite variables: 3 scalarized : 1584
Factor - setup time : 0.00
Factor - dense det. time : 0.00 GP order time : 0.00
Factor - nonzeros before factor : 66 after factor : 66
Factor - dense dim. : 0 flops : 2.27e+06
ITE PFEAS DFEAS GFEAS PRSTATUS POBJ DOBJ MU TIME
0 9.5e+01 1.3e+00 3.6e+00 0.00e+00 0.000000000e+00 -2.610204003e+00 1.0e+00 0.00
1 1.8e+01 2.5e-01 5.8e-01 8.53e-02 -1.200389523e+00 -1.714969802e+00 1.9e-01 0.00
2 6.2e+00 8.5e-02 2.2e-01 4.25e-02 -3.692222384e+00 -3.660830281e+00 6.6e-02 0.00
3 3.6e+00 5.0e-02 9.9e-02 6.66e-01 -5.209933083e+00 -5.198395934e+00 3.8e-02 0.02
4 2.3e+00 3.1e-02 9.1e-02 -2.74e-01 -1.146789949e+01 -1.102650378e+01 2.4e-02 0.02
5 1.0e+00 1.4e-02 1.2e-02 1.22e+00 -1.177087553e+01 -1.187328288e+01 1.1e-02 0.02
6 4.7e-01 6.4e-03 4.2e-03 5.46e-01 -1.334430340e+01 -1.338766409e+01 5.0e-03 0.02
7 2.4e-01 3.3e-03 1.5e-03 1.42e+00 -1.159394319e+01 -1.160976063e+01 2.6e-03 0.02
8 1.2e-01 1.6e-03 5.3e-04 1.33e+00 -1.077525745e+01 -1.077999767e+01 1.3e-03 0.02
9 6.4e-02 8.7e-04 2.3e-04 1.20e+00 -1.046685154e+01 -1.046793540e+01 6.8e-04 0.02
10 2.9e-02 4.0e-04 8.7e-05 8.64e-01 -1.035342359e+01 -1.035268515e+01 3.1e-04 0.03
11 1.3e-02 1.7e-04 3.4e-05 6.82e-01 -1.011651662e+01 -1.011464663e+01 1.3e-04 0.03
12 5.6e-03 7.6e-05 1.2e-05 7.05e-01 -9.980710561e+00 -9.979288414e+00 5.9e-05 0.03
13 4.0e-03 5.5e-05 1.1e-05 1.51e-01 -9.896857538e+00 -9.893725734e+00 4.3e-05 0.03
14 2.6e-03 3.5e-05 5.9e-06 3.52e-01 -9.804572560e+00 -9.802236647e+00 2.7e-05 0.03
15 1.0e-03 1.4e-05 1.9e-06 3.36e-01 -9.677289180e+00 -9.675473000e+00 1.1e-05 0.03
16 3.1e-04 4.1e-06 5.2e-07 2.92e-01 -9.481940065e+00 -9.480238183e+00 3.2e-06 0.03
17 1.9e-04 2.6e-06 3.9e-07 -5.00e-02 -9.402454470e+00 -9.400017129e+00 2.0e-06 0.03
18 7.5e-05 1.0e-06 1.4e-07 7.36e-02 -9.239880155e+00 -9.237711663e+00 7.8e-07 0.05
19 2.1e-05 2.8e-07 3.6e-08 1.54e-01 -9.072729131e+00 -9.070780780e+00 2.2e-07 0.05
20 1.3e-05 1.8e-07 2.6e-08 -8.06e-02 -8.998637457e+00 -8.996115645e+00 1.4e-07 0.05
21 4.5e-06 6.2e-08 8.3e-09 3.44e-02 -8.826382049e+00 -8.824103904e+00 4.8e-08 0.05
22 1.2e-06 1.6e-08 2.2e-09 9.42e-02 -8.592267674e+00 -8.589972585e+00 1.2e-08 0.05
23 6.2e-07 8.4e-09 1.3e-09 -3.45e-02 -8.472864045e+00 -8.469908131e+00 6.5e-09 0.05
24 3.7e-07 5.0e-09 7.2e-10 1.42e-01 -8.380900018e+00 -8.378328632e+00 3.9e-09 0.05
25 1.4e-07 1.9e-09 2.4e-10 1.95e-01 -8.254797009e+00 -8.252699096e+00 1.4e-09 0.05
26 5.8e-08 7.9e-10 1.1e-10 5.95e-02 -8.107873990e+00 -8.105449689e+00 6.1e-10 0.05
27 1.6e-08 2.2e-10 2.9e-11 1.28e-01 -7.876607295e+00 -7.874317888e+00 1.7e-10 0.06
28 9.1e-09 1.2e-10 2.0e-11 -1.02e-01 -7.761107899e+00 -7.757950298e+00 9.6e-11 0.06
29 4.2e-09 5.6e-11 8.2e-12 5.93e-02 -7.620478489e+00 -7.617746509e+00 4.4e-11 0.06
30 2.0e-09 2.7e-11 3.8e-12 1.43e-01 -7.473184256e+00 -7.470701857e+00 2.1e-11 0.06
31 5.5e-10 7.5e-12 1.0e-12 1.41e-01 -7.261040129e+00 -7.258712042e+00 5.8e-12 0.06
32 3.7e-10 5.0e-12 7.7e-13 -1.26e-01 -7.175909935e+00 -7.172899742e+00 3.9e-12 0.06
33 8.9e-11 1.2e-12 1.8e-13 -2.99e-02 -6.893931888e+00 -6.890954495e+00 9.4e-13 0.06
34 4.6e-11 6.3e-13 1.0e-13 -6.40e-02 -6.742912723e+00 -6.739379426e+00 4.9e-13 0.06
35 2.7e-11 3.8e-13 5.9e-14 9.72e-02 -6.644319656e+00 -6.641127304e+00 2.9e-13 0.08
36 1.4e-11 2.0e-13 2.9e-14 1.51e-01 -6.485680072e+00 -6.482788414e+00 1.5e-13 0.08
37 4.0e-12 5.7e-14 7.8e-15 1.46e-01 -6.252827435e+00 -6.250122925e+00 4.2e-14 0.08
38 2.6e-12 3.6e-14 5.8e-15 -1.28e-01 -6.147390250e+00 -6.143795473e+00 2.7e-14 0.08
39 6.3e-13 1.4e-14 1.4e-15 -2.22e-02 -5.832758996e+00 -5.829341177e+00 6.6e-15 0.08
40 3.9e-13 7.1e-15 9.2e-16 -7.98e-02 -5.702662827e+00 -5.698691417e+00 4.1e-15 0.08
41 2.0e-13 2.1e-15 4.7e-16 3.63e-02 -5.551486412e+00 -5.547768064e+00 2.1e-15 0.08
42 1.3e-13 1.3e-15 2.9e-16 1.13e-01 -5.405077185e+00 -5.401504914e+00 1.3e-15 0.08
43 3.6e-14 3.8e-16 7.6e-17 1.38e-01 -5.143697740e+00 -5.140543649e+00 3.8e-16 0.08
44 2.4e-14 2.5e-16 5.7e-17 -1.12e-01 -5.034930481e+00 -5.030938061e+00 2.5e-16 0.09
45 5.9e-15 6.3e-17 1.4e-17 -1.66e-02 -4.669386447e+00 -4.665517847e+00 6.3e-17 0.09
Optimizer terminated. Time: 0.09

Interior-point solution summary
Problem status : ILL_POSED
Solution status : PRIMAL_ILLPOSED_CER
Dual. obj: -5.4421665605e-07 nrm: 4e+01 Viol. con: 0e+00 var: 1e-07 barvar: 2e+53 cones: 0e+00
Optimizer summary
Optimizer - time: 0.09
Interior-point - iterations : 45 time: 0.09
Basis identification - time: 0.00
Primal - iterations : 0 time: 0.00
Dual - iterations : 0 time: 0.00
Clean primal - iterations : 0 time: 0.00
Clean dual - iterations : 0 time: 0.00
Simplex - time: 0.00
Primal simplex - iterations : 0 time: 0.00
Dual simplex - iterations : 0 time: 0.00
Mixed integer - relaxations: 0 time: 0.00


Status: Failed
Optimal value (cvx_optval): NaN

The first time I turn the cvx, the value comes out, but after that, NaN comes out.

I think scale is bad because first variable V_l is about 10^(-2)~10^(-3) but after cvx V(:,:,end) is 10^(-6) and the other V(:,:,1:end-1) is about 10^(-2)~10^(-3).

but I don’t know what should i do

I think V_l = V is not good. I wonder V_l = a * V_l + (1-a) * V is better ??

Thank you for reading!!

It looks like you are feeding some data that make the problem horrendously badly scaled and / or likely borderline infeasible. Hence the illposedness status, which by the way looks bad itself. I suggest you try to sanitize your data somehow.

Thank you for your answer

But I’m not sure exactly what to do

Change units so as o make all non-zero input data within a small number of orders of magnitude of 1.