CVX status failed

I had solved the convex problem by using SDPT3 and SEDUMI, when I added the following codes the cvx_status changes to Failed.
The code is below:

nStops = 3;
w_k = [400 0 0; 0 0 400];
start_time= [2,3,5]; 
end_time = [5,7,8]; 
S_k = 1e6*ones(1,nStops);

V_max = 50;
area = 500; 
q_GW = [400;400]; 

C_size = 1e6; 
H = 100;
N = 10; 
delta_t = 0.5; 
delta_d = V_max*delta_t;
alpha = 2; 

start_time_max = [2,3,5]; 
end_time_max = [5,7,8]; 

B = 0.5e6; 
B_SC = 15e3; 
M = fix(B/B_SC);
P_U_max = 5; 
P_k_max = 0.1; 
P_U_ave = P_U_max/2;
P_k_ave = P_k_max/2;

% Parameters for LoS and NLoS channels
kappa = 0.2; A = 11.95; D = 0.14; omega_0 = 10^(-5); % -50 dB 
sigma_sq = 10^(-20.4)*B; % 10^(-20.4)*B (-174 dBm/Hz=10log10(Noise)) Noise = 10^(-20.4) W/Hz


rho_RSI = 10^(-10); % Residual SI suppresion = -100dB

K_factor = 10^0.5; % K factor = 5 dB
Mean_value = sqrt(K_factor/(K_factor+1)); % 1e-5
Std_value = sqrt(1/(K_factor+1)); % 1

H_coeff = 0.8716 - 0.0000i ;

%%
Phi_RSI = rho_RSI.*abs(H_coeff)^2;

K = nStops;
epsilon = 1e-4;    err = 1.0;                        
%% Find the Initial Feasible Point
% Step 1: Set initial feasible values
lambda_j = 0.1*ones(1,K);
q_j = q_GW*ones(1,N); 

a_1_j=0.5*ones(M,N,K);
a_2_j=0.5*ones(M,N,K);
p_1_j = P_k_max*ones(M,N,K)/(M*N);
p_2_j = P_U_max*ones(M,N,K)/(M*N);

z_1k_j = zeros(N,K);
z_2k_j = zeros(1,N);
for n=1:N
    for k=1:K
        z_1k_j(n,k) = H^2+sum( (q_j(:,n) - w_k(:,k)).^2 ,1);
    end
    z_2k_j(1,n) = H^2+sum( (q_j(:,n) - q_GW).^2 ,1);
end

%% Initilize for variable t
for m=1:M
   for n=1:N
       for k=1:K
           t_j(m,n,k) = (Phi_RSI*reshape( p_2_j(m,n,[1:(k-1) (k+1):K]),[1 K-1])*reshape((a_2_j(m,n,[1:(k-1) (k+1):K])),[K-1 1])...
               + a_1_j(m,n,k)*sigma_sq)/a_1_j(m,n,k);
                       
       end
   end
end
   

%% Initial feasible point
while 1
    cvx_begin quiet       
        variable lambda(1,K)
        variable q(2,N)
        variable a_1(M,N,K)
        variable a_2(M,N,K)
        variable p_1(M,N,K)
        variable p_2(M,N,K)
        variable z_1k(N,K)
        variable z_2k(1,N)
        variable t(M,N,K)
        variable Tau(1,K) 
        variable sqrt_p1(M,N,K)
        variable sqrt_a2p2(M,N,K)      
        
        expression a_1mn(M,N)
        expression a_2mn(M,N)
        expression p_1_total(1,K)
        expression p_2_total(1,K)
        expression A1(M,N,K)
        expression A2(M,N,K)
        expression A3(M,N,K)
        expression B1(M,N,K)
        expression B2(M,N,K)
        expression B3(M,N,K)
        expression r_1k_lb(M,N,K)
        expression r_2k_lb(M,N,K)
        expression R_1k_lb(1,1,K)
        expression R_2k_lb(1,1,K)
        expression R_1n_lb(1,N)
        expression R_2n_lb(1,N)
        expression R_1n(1,N)
        expression R_2n(1,N)
        expression Sum_mnk_star(1)
        expression A1(M,N,K)
        expression A2(M,N,K)
        expression A3(M,N,K)
        expression B1(M,N,K)
        expression B2(M,N,K)
        expression B3(M,N,K)
        expression LHS_35_1(M,N,K)
        expression LHS_35_2(M,N,K)
        
        maximize (min(Tau))
        
        subject to:
        %% Constraint 21e
        for m=1:M
            for n=1:N
                a_1mn(m,n) = sum(a_1(m,n,:));
                a_2mn(m,n) = sum(a_2(m,n,:));
                a_1mn(m,n) <= 1;
                a_2mn(m,n) <= 1;
            end
        end
        %% Constraint (21i)
        q(1,1) == q_GW(1,1);
        q(2,1) == q_GW(2,1);
        q(1,N) == q_GW(1,1);
        q(2,N) == q_GW(2,1);
        %% Constraint (21j)
        for n = 2: N
           norm(q(:,n) - q(:,n-1)) <= delta_d;
        end
        %% Constraint 21k and 21l
        for k=1:K
             p_1_total(1,k)= sum(sum(p_1(:,:,k),1));
             p_1_total(1,k) <= P_k_max;
             p_1_total(1,k) <= N*P_k_ave;
        end
        %% Constraint 21m and 21n
        for k=1:K
            p_2_total(1,k)=sum(sum(p_2(:,:,k),1));% Summation of all M,N value corresponding to each k value
        end
        sum(p_2_total) <= P_U_max;
        sum(p_2_total) <= N*P_U_ave;
         %% Constraint 25b
         0 <= lambda <=1;
         0 <= a_1 <=1;
         0 <= a_2 <=1;
         %% Constraint 30c
         for n=1:N
             for k=1:K
                H^2 + square(q(1,n) - w_k(1,k)) + square(q(2,n) - w_k(2,k)) <= z_1k(n,k) ;
             end
             H^2 + square(q(1,n) - q_GW(1,1)) + square(q(2,n) - q_GW(2,1)) <= z_2k(1,n) ;
         end
         %% Constraint 35
            for m=1:M
                for n=1:N
                    for k=1:K              
                        LHS_35_1(m,n,k) = sqrt(Phi_RSI)*reshape( sqrt(p_2_j(m,n,[1:(k-1) (k+1):K])./(2*a_2_j(m,n,[1:(k-1) (k+1):K])) ),[1 K-1])*reshape((a_2(m,n,[1:(k-1) (k+1):K])),[K-1 1]);
                        LHS_35_2(m,n,k) = sqrt(Phi_RSI)*reshape( sqrt(a_2_j(m,n,[1:(k-1) (k+1):K])./(2*p_2_j(m,n,[1:(k-1) (k+1):K])) ),[1 K-1])*reshape((p_2(m,n,[1:(k-1) (k+1):K])),[K-1 1]);
                        norm( [LHS_35_1(m,n,k) LHS_35_2(m,n,k) 0.5*( a_1(m,n,k)- (t(m,n,k)-sigma_sq) ) ] ) <= 0.5*(a_1(m,n,k)+( t(m,n,k)-sigma_sq) );
                     end
                end
            end
         %% Constraint 38c
         for m=1:M             
             for k=1:K 
                 for n=1:start_time(k)-1
                    r_1k_lb(m,n,k) = 0;
                    r_2k_lb(m,n,k) = 0; 
                 end
                 for n=start_time(k):end_time(k)
                     theta_1n = 90;
                     P_1LoS = inv_pos(1+A*exp(-D*(theta_1n-A)));
                     P_1NLoS = 1 - P_1LoS;
                     P_1LoS_NLoS = omega_0*(P_1LoS+kappa*P_1NLoS);
                     A1(m,n,k) = log( 1 + p_1_j(m,n,k)*P_1LoS_NLoS*inv_pos( z_1k_j(n,k)*t_j(m,n,k) ) )/0.6931;
                     A2(m,n,k) = P_1LoS_NLoS*(-p_1_j(m,n,k)+2*pow_p(p_1_j(m,n,k),0.5)* sqrt_p1(m,n,k) )*inv_pos(z_1k_j(n,k)*t_j(m,n,k)*0.6931);
                     p_1(m,n,k) >= square(sqrt_p1(m,n,k)); % New constraint for sqrt(p1(m,n,k))
                     
                     A3(m,n,k) = inv_pos(p_1_j(m,n,k)*P_1LoS_NLoS + z_1k_j(n,k)*t_j(m,n,k))*inv_pos(z_1k_j(n,k)*t_j(m,n,k)*0.6931)* p_1_j(m,n,k)*P_1LoS_NLoS*...
                     ( p_1(m,n,k)*P_1LoS_NLoS+ z_1k_j(n,k)*square(t(m,n,k))*inv_pos(2*t_j(m,n,k))+ t_j(m,n,k)*square(z_1k(n,k))*inv_pos(2*z_1k_j(n,k))  );
                     r_1k_lb(m,n,k) = B_SC*(A1(m,n,k)+A2(m,n,k)-A3(m,n,k) );
                     
                     r_2k_lb(m,n,k) = 0;                 
                 end
                 for n=end_time(k)+1:N
                     theta_2n = 90; 
                     P_2LoS = inv_pos(1+A*exp(-D*(theta_2n-A)));
                     P_2NLoS = 1 - P_2LoS;
                     P_2LoS_NLoS = omega_0*(P_2LoS+kappa*P_2NLoS);
                     B1(m,n,k) = log(1 + a_2_j(m,n,k)*p_2_j(m,n,k)*P_2LoS_NLoS*inv_pos(z_2k_j(1,n)*sigma_sq))/0.6931;
                     B2(m,n,k) = P_2LoS_NLoS*inv_pos(z_2k_j(1,n)*sigma_sq*0.6931)*( -a_2_j(m,n,k)*p_2_j(m,n,k)+...
                         2*pow_p(a_2_j(m,n,k)*p_2_j(m,n,k),0.5)*sqrt_a2p2(m,n,k) );
                     norm([2*sqrt_a2p2(m,n,k) a_2(m,n,k)-p_2(m,n,k)]) <= (a_2(m,n,k)+p_2(m,n,k)); % New constraint for sqrt(a_2(m,n,k)*p_2(m,n,k))
                     
                     B3(m,n,k) = a_2_j(m,n,k)*p_2_j(m,n,k)*P_2LoS_NLoS*inv_pos(a_2_j(m,n,k)*p_2_j(m,n,k)*P_2LoS_NLoS+z_2k_j(1,n)*sigma_sq)...
                         * inv_pos(z_2k_j(1,n)*sigma_sq*0.6931)*(a_2_j(m,n,k)*square(p_2(m,n,k))*P_2LoS_NLoS*inv_pos(2*p_2_j(m,n,k))...
                         + p_2_j(m,n,k)*P_2LoS_NLoS*square(a_2(m,n,k))*inv_pos(2*a_2_j(m,n,k))+ z_2k(1,n)*sigma_sq);
                     r_2k_lb(m,n,k) = B_SC*(B1(m,n,k)+B2(m,n,k)-B3(m,n,k));                     
                     r_1k_lb(m,n,k) = 0;
                     
                 end
             end
         end        
         R_1k_lb = sum(sum(r_1k_lb,1),2);% matrix(1,K)
         R_2k_lb = sum(sum(r_2k_lb,1),2);
         
         R_1n_lb = sum(sum(r_1k_lb,1),3);% matrix(1,N)
         R_2n_lb = sum(sum(r_2k_lb,1),3);
         %% Constraint 38c, 38d, 38e, and 38f
         for k=1:K
             lambda(k)*S_k(k) <= R_1k_lb(:,:,k)*(end_time(k)-start_time(k))*delta_t; % 38c
             lambda(k)*S_k(k) <= R_2k_lb(:,:,k)*(N - end_time(k))*delta_t; % 38d
             delta_t * min(R_1k_lb(:,:,k),R_2k_lb(:,:,k)) >= lambda(k)*S_k(k) + Tau(k); % 38e             
         end
         sum(R_2k_lb)>= sum(lambda.*S_k); % 38f
         
         %% Constraint 38g
         R_1n = cumsum(R_1n_lb);
         R_2n = cumsum(R_1n_lb);
         for n=1:N
             if n==1
                sum(lambda.*S_k) -delta_t*R_1n(n) <= C_size; 

             else
                 sum(lambda.*S_k) -delta_t*R_1n(n)- delta_t* R_2n(n-1) <= C_size;
             end
         end
            
    cvx_end
if min(Tau)>=0
    break;
end
end

And the log information during the simulation is shown as below:
SeDuMi 1.34 (beta) by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500
eqs m = 8551, order n = 13152, dim = 17498, blocks = 3357
nnz(A) = 25111 + 18745, nnz(ADA) = 59523, nnz(L) = 35357
Handling 24 + 0 dense columns.
it : by gap delta rate t/tP t/tD* feas cg cg prec
0 : 1.33E+38 0.000
Run into numerical problems.

iter seconds |Ax| [Ay]_+ |x| |y|
0 0.2 4.5e+27 0.0e+00 2.3e+02 0.0e+00
Failed: no sensible solution/direction found.

Detailed timing (sec)
Pre IPM Post
1.680E-01 1.260E-01 1.700E-02
Max-norms: ||b||=1, ||c|| = 3.389681e+10,
Cholesky |add|=0, |skip| = 1, ||L.L|| = 2e+06.

Status: Failed
Optimal value (cvx_optval): NaN

Thank you very much. Hope that this issue can be solved.

Don’t use quiet until everything is debugged and working well.

Show all solver and CVX output.

Try a different solver. Mosek if you can.

it appears that you have some extreme numbers, very small and large. That may be causing numerical problems. Try to improve scaling so that coefficents in the actual optimization problem are within a few orders of magnitude of 1. ||c|| = 3.389681e+10 in the solver output doesn’t sound good.

1 Like

Dear Mark,

In Mosek, I got the log as:
MOSEK Version 8.0.0.60 (Build date: 2017-3-1 13:09:33)
Copyright © MOSEK ApS, Denmark. WWW: mosek.com
Platform: Windows/64-X86

Mosek error: MSK_RES_ERR_HUGE_AIJ (The A matrix contains a huge value of -2.3e+025 in constraint ‘’ (1736) at variable ‘’ (6413).)

Status: Error
Optimal value (cvx_optval): NaN

Reference to non-existent field ‘sol’.

Error in cvx_mosek

Error in cvxprob/solve (line 423)
[ x, status, tprec, iters, y ] = shim.solve( At, b, c, cones, quiet, prec, solv.settings, eargs{:} );

Error in cvx_end (line 88)
solve( prob );

Error in Test_CVX (line 256)
cvx_end

Could you please give me a suggestion for how to improve the scaling.

Many thanks.

I don’t have the time or energy to look in detail at a model as complicated as yours. Determine which units e.g., km, m, hours, sec, etc. lead to numbers closest in magnitude to 1. I tried removing the objective function, the fatal error message remains unchanged…

Look at all the terms in the constraints, and evaluate the numerical coefficient for each term. look for large (and maybe also small) values.See which input data are contributing to the large coefficients, and change the units, or something, to make the coefficients closer to 1 in magnitude.

1 Like