CVX warning with Mosek

I run the cvx setup with licence key. I was using this for few weeks now. But today I encounted one issue.
when I am going to run my code it is givenin below warning and due to warning I cannot execute…

This is warning message I get;
……………………………………………………………………………
Warning: The following errors were issued when initializing the solvers:
Mosek: unexpected error:
Error using cvx_license
Invalid option: -4

Here is the cvx_setup output


CVX: Software for Disciplined Convex Programming ©2014 CVX Research
Version 2.2, Build 1148 (62bfcca) Tue Jan 28 00:51:35 2020

Installation info:
Path: C:\Users\ksugatha\Desktop\CVX_new_version\cvx
MATLAB version: 9.5 (R2018b)
OS: Windows 10 amd64 version 10.0
Java version: 1.8.0_152
Verfying CVX directory contents:
WARNING: The following files/directories are missing:
C:\Users\ksugatha\Desktop\CVX_new_version\cvx\sedumi.travis.yml
These omissions may prevent CVX from operating properly.
Preferences:
Path: C:\Users\ksugatha\AppData\Roaming\MathWorks\MATLAB\cvx_prefs.mat
License host:
Username: ksugatha
Host ID: 00ff119f206c (eth0)
Installed license:
Organization: University of Oulu
Contact: Inosha Sugathapala (inosha.sugathapala@oulu.fi)
License type: academic
Named user: ksugatha
Host ID: 00ff119f206c
Expiration: 2021-09-07 (327 days remaining)
Status: verified

Setting CVX paths…already set!
Searching for solvers…5 shims found.
3 solvers initialized (* = default):
Mosek 9.1.9 {cvx}\mosek\w64

  • SDPT3 4.0 {cvx}\sdpt3
    SeDuMi 1.3.4 {cvx}\sedumi
    2 solvers skipped:
    GLPK
    Could not find a GLPK installation.
    Gurobi unknown {cvx}\gurobi\w64
    No valid Gurobi license was found.
    Saving updated preferences…done.
    Testing with a simple model…done!

To change the default solver, type “cvx_solver <solver_name>”.
To save this change for future sessions, type “cvx_save_prefs”.
Please consult the users’ guide for more information.

I recommend you send a support request per http://cvxr.com/cvx/doc/support.html#bug-reports

Below I am sharing siplified code.

Clear_data_Keep_debug;

%% First model the users
User_type = [1 0 1 1 0 ; 1 1 0 1 0] ; % LU=2; NU=1, No users=0
My_Users= sum(User_type~=0,2)';

LU_index=zeros(2,max(My_Users));
NU_index=zeros(1,max(My_Users));
for ii=1:2
m=1;
n=1;
for j=1:length(User_type)
if User_type(ii,j)==2
LU_index(ii,m) =1;
m=m+1;
else if User_type(ii,j)==1
NU_index(ii,m) =1;
m=m+1;
end
end
if User_type(ii,j)~=1
New_User_type(ii,n)=User_type(ii,j);
n=n+1;
end
end
end
%%%
My_operators=2;

Active_APs= [1 0 1 ; 1 0 1];

My_DAPs=sum((Active_APs==1)'); % Operator 1 and 2 APs
P_max_DAP=1; %%30 dBm

%%%%BS%%%
BW=100;%coherent BW
P_max_SAP=1; %% 42dBm
Tx_AN=2;

noise= 10^-8*ones(My_operators,1);%%% -143 dbW

channel_state=11;
%% USer-AP-locations-----------------

%radius of the cluster
R=75;

%Distance between static AP
%Dis_ST_Ap = 5;

max_Dynamic_AP = max(sum((Active_APs==1)')) ;

ti = 0:pi/200:2*pi;

Cluster_1 = Rcos(ti);
Cluster_2 = R
sin(ti);

%Generate Static AP…
x_static=[0];
y_static=[0];

%Generate Dynamic AP…
x1_dynamic=[0 -30 40 ; 10 -50 60];
y1_dynamic=[40 -40 -35 ; 40 10 -35 ];

x_dynamic=zeros(2,max_Dynamic_AP);
y_dynamic=zeros(2,max_Dynamic_AP);

%Generate Users…
%User_type = [1 0 0 1 0; 0 0 0 1 0];
x1_Users=[20 -30 30 30 -20; 50 -20 62 10 -60];
y1_Users=[ 10 50 50 -20 -5; 25 40 -5 -40 -40];

x_Users=zeros(2,max(My_Users));
y_Users=zeros(2,max(My_Users));

for ii=1:2
mm=1;
nn=1;
for jj=1:3
if Active_APs(ii,jj)~=0;
x_dynamic(ii,mm)=x1_dynamic(ii,jj);
y_dynamic(ii,mm)=y1_dynamic(ii,jj);
mm=mm+1;
end

 end
for jj=1:5
     if User_type(ii,jj)~=0;
        x_Users(ii,nn)=x1_Users(ii,jj);
        y_Users(ii,nn)=y1_Users(ii,jj);
        nn=nn+1;
     end
end

end

for ii=1:2
for jj=1:max(My_Users)
dis_xm(ii,jj)=x_static-x_Users(ii, jj);
dis_ym(ii,jj)=y_static-y_Users(ii, jj);
distance_SAP_User(ii,jj)= sqrt(dis_xm(ii,jj)^2 + dis_ym(ii,jj)^2);
end
end

for mm=1:2
for ii=1:length(x_dynamic(1,:))
for nn=1:2
for jj=1:length(x_Users(1,:))
dis_xm(mm,ii,nn,jj)=x_dynamic(mm,ii)-x_Users(nn,jj);
dis_ym(mm,ii,nn,jj)=y_dynamic(mm,ii)-y_Users(nn,jj);
distance_DAP_User(mm,ii,nn,jj)= sqrt(dis_xm(mm,ii,nn,jj)^2 + dis_ym(mm,ii,nn,jj)^2);
distance_DAP_User(mm,ii,nn,jj)= sqrt(dis_xm(mm,ii,nn,jj)^2 + dis_ym(mm,ii,nn,jj)^2);
end
end
end
end

save location.mat;

%%

%% channel model-----------

%%%%%%%%%%%%%%%
%% channel model-----------

channel_state=channel_state+1;

%%% Here we write PL and Shadowing together
%%% Fixed randn seed if you want to regenerate the same value :
randn(‘state’, channel_state);

Path_loss_SAP_User_dB= 30log10(distance_SAP_User) + 8randn(My_operators, max(My_Users)); % Pathloss model
Path_loss_DAP_User_dB= 30log10(distance_DAP_User)+ 8randn(My_operators, max(My_DAPs), My_operators, max(My_Users)); % Pathloss model

rand(‘state’, channel_state);
%Ray_fading_SAP_AP = sqrt(1/2)(rand(My_operators,Tx_AN, My_operators, max(My_DAPs)))+ 1irand(My_operators,Tx_AN, My_operators, max(My_DAPs));
Ray_fading_SAP_User = sqrt(1/2)((rand(My_operators,Tx_AN, max(My_Users)))+ 1irand(My_operators,Tx_AN, max(My_Users)));
Ray_fading_DAP_User =sqrt(1/2)((rand(My_operators, max(My_DAPs), Tx_AN,My_operators, max(My_Users)))+ 1irand(My_operators, (max(My_DAPs)),Tx_AN, My_operators, max(My_Users)));

My_channel_SAP_User= Ray_fading_SAP_User.*permute (sqrt( 10.^( (repmat(-Path_loss_SAP_User_dB, [1 1 Tx_AN ]) )./10)), [1 3 2 ]);
My_channel_DAP_User= Ray_fading_DAP_User.*permute (sqrt( 10.^( (repmat(-Path_loss_DAP_User_dB, [1 1 1 1 Tx_AN]) )./10)), [1 2 5 3 4 ]); %sqrt( 10.^(-Path_loss_DAP_User_dB./10));

%% FInd feasible set

T_SAP=P_max_SAP / max(My_Users);
T_DAP=P_max_DAP / (max(My_Users*2));

W_mk_mj_ini= T_SAPrand(1,Tx_AN, max(My_Users))+ T_SAP1irand(1,Tx_AN, max(My_Users));
W_mk_ni_ini= T_DAP
rand( max(My_DAPs), Tx_AN, My_operators, max(My_Users) ) + T_DAP1irand(max(My_DAPs), Tx_AN, My_operators, max(My_Users) ) ;

phi_mk_mj_next =;
chi_mk_mj_next =;
real_SAP_User_next=;
imag_SAP_User_next =;
imag_DAP_User_next =;
real_DAP_User_next =;
phi_mk_ni_next =;
chi_mk_ni_next =;

for m_oper=1:My_operators

    if m_oper==1
    opponent=2;
    else
    opponent=1;
    end

W_mk_mj(1, :, find(NU_index(m_oper,:)==0))=0;

% % for k=1: My_DAPs(m_oper)
% % W_mk_ni(k, :, m_oper, find(NU_index(m_oper,:)==0) ) =0;
% % end
% % for k=1: My_DAPs(opponent)
% % W_mk_ni(k, :, opponent, find(NU_index(opponent,:)==0) ) =0;
% % end

for jUser=1:My_Users(m_oper)

real_SAP_User_next(m_oper,jUser)= real(sum( W_mk_mj_ini(1,:,jUser).*My_channel_SAP_User(m_oper,:,jUser)));
imag_SAP_User_next(m_oper,jUser)= imag(sum( W_mk_mj_ini(1,:, jUser).*My_channel_SAP_User(m_oper,:,jUser)));

end
% % for k=1: My_DAPs(m_oper)
% % for n_oper= 1:My_operators
% % for iUser=1: My_Users(n_oper)
% %
% % real_DAP_User_next(m_oper, k, n_oper,iUser)= real(sum (vec( My_channel_DAP_User(m_oper,k, :, n_oper,iUser))‘.*W_mk_ni(k,:, n_oper,iUser)));
% % imag_DAP_User_next(m_oper, k, n_oper,iUser )= imag(sum (vec( My_channel_DAP_User(m_oper,k, :, n_oper,iUser))’.*W_mk_ni(k,:, n_oper,iUser)));
% % end
% % end
% % end

%%All interference terms:
Interference_mk_mj_xx=zeros(1,max(My_Users));
%Interference_mk_ni_xx=zeros(max(My_DAPs),My_operators, max(My_Users));
%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
for jUser=1:My_Users(m_oper)
%%%%%%%%%%%%%%%%% SAP-USer %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for iUser=1: My_Users(m_oper)
if iUser~=jUser
Interference_mk_mj_xx(1, jUser) = Interference_mk_mj_xx(1, jUser) + …
sum_square_abs(My_channel_SAP_User(m_oper,:,jUser).*W_mk_mj_ini(1,:,iUser)); %% SAP-USer
end
end

% % for k=1: My_DAPs(m_oper)
% % for n_oper= 1:My_operators
% % for iUser=1: My_Users(n_oper)
% % Interference_mk_mj_xx(1, jUser) = Interference_mk_mj_xx(1, jUser)+ …
% % sum_square_abs(vec(My_channel_DAP_User(m_oper,k, :, m_oper,jUser))'.*(W_mk_ni(k,:, n_oper,iUser)) ); %%SAP-AP
% %
% % end
% % end
% % end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DAP - User %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% % % for k=1: My_DAPs(m_oper)
% % % for n_oper= 1:My_operators
% % % for iUser=1: My_Users(n_oper)
% % % if m_oper==n_oper
% % % for pUser=1: My_Users(m_oper)
% % % Interference_mk_ni_xx(k, m_oper, iUser) = Interference_mk_ni_xx(k, m_oper, iUser)+…
% % % sum_square_abs(My_channel_SAP_User(m_oper,:,iUser).W_mk_mj(1,:,pUser));
% % %
% % % end
% % % end
% % % for l_oper= 1:My_operators
% % % for pUser=1: My_Users(l_oper)
% % % if l_oper==n_oper & pUser==iUser
% % % Interference_mk_ni_xx(k, n_oper, iUser)=Interference_mk_ni_xx(k, n_oper, iUser)+ 0;
% % % else
% % % Interference_mk_ni_xx(k, n_oper, iUser)= Interference_mk_ni_xx(k, n_oper, iUser)+…
% % % sum_square_abs(vec(My_channel_DAP_User(m_oper,k, :, n_oper,iUser))'.
(W_mk_ni(k,:, l_oper,pUser)) );
% % %
% % % end
% % % end
% % % end
% % % end
% % % end
% % % end

for jUser=1:My_Users(m_oper)
phi_mk_mj_next(m_oper,jUser) = Interference_mk_mj_xx(1, jUser)+ BW*noise(m_oper);
chi_mk_mj_next(m_oper,jUser) = (sum_square_abs(My_channel_SAP_User(m_oper,:,jUser)*W_mk_mj_ini(1,:,jUser)')/ phi_mk_mj_next(m_oper,jUser)) +1 ;

end

% % for k=1:My_DAPs(m_oper)
% % for n_oper=1:My_operators
% % for iUser=1: My_Users(n_oper)
% % phi_mk_ni_next(m_oper, k, n_oper, iUser ) = Interference_mk_ni_xx(k, n_oper, iUser) + BW*noise(m_oper) ;
% % chi_mk_ni_next (m_oper, k, n_oper, iUser ) = (sum_square_abs(vec(My_channel_DAP_User(m_oper,k, :, m_oper,jUser))'.*W_mk_ni(k,:, n_oper,iUser)) / phi_mk_ni_next(m_oper, k, n_oper, iUser ))+1 ;
% % end
% % end
% % end

end
%%

%%% Final code…

run_count=1;
while (run_count==1)

cvx_solver mosek
cvx_begin quiet
cvx_precision low

expressions real_SAP_User(My_operators, max(My_Users)) imag_SAP_User(My_operators, max(My_Users))
expression Interference_mk_mj(My_operators, max(My_Users))
expressions real_DAP_User(My_operators, max(My_DAPs) , My_operators, max(My_Users) ) imag_DAP_User( My_operators, max(My_DAPs) , My_operators, max(My_Users) )
expression Interference_mk_ni(My_operators, max(My_DAPs), My_operators , max(My_Users) )

variable r_mk_mj(My_operators, max(My_Users))
variable r_mk_ni(My_operators, max(My_DAPs), My_operators, max(My_Users) )
%expression R_m(1,1)

variables chi_mk_mj(My_operators, max(My_Users)) phi_mk_mj(My_operators, max(My_Users))
variables chi_mk_ni(My_operators, max(My_DAPs), My_operators, max(My_Users) ) phi_mk_ni(My_operators, max(My_DAPs), My_operators, max(My_Users) )
variable W_mk_mj(My_operators, Tx_AN, max(My_Users)) complex
variable W_mk_ni(My_operators, max(My_DAPs), Tx_AN, My_operators, max(My_Users) ) complex

maximize ( sum( vec(r_mk_mj)) )

subject to

for m_oper=1:My_operators

W_mk_mj(m_oper, :, find( NU_index(m_oper,:)==0))==0;

for jUser=1:My_Users(m_oper)
Interference_mk_mj(m_oper, jUser)=0;
for iUser=1: My_Users(m_oper)
if iUser~=jUser
Interference_mk_mj(m_oper, jUser) = Interference_mk_mj(m_oper, jUser) + …
sum_square_abs(My_channel_SAP_User(m_oper,:,jUser).*W_mk_mj(m_oper,:,iUser)); %% SAP-USer
end
end

end

%%% We have only one SAP:
for jUser=1:My_Users(m_oper) %%% check matrix dimention for phi_mk_mjser

 %find values for expressions............(real and imag)

real_SAP_User(m_oper,jUser)= real(sum( W_mk_mj(m_oper,:,jUser).*My_channel_SAP_User(m_oper,:,jUser)));
imag_SAP_User(m_oper,jUser)= imag(sum( W_mk_mj(m_oper,:, jUser).*My_channel_SAP_User(m_oper,:,jUser)));

%r_mk_mj(m_oper,jUser) <= BW* log(chi_mk_mj(1,jUser))/log(2);

r_mk_mj(m_oper,jUser) <=( BW*( -rel_entr(1,chi_mk_mj(m_oper,jUser)) )/log(2));

    .25*(chi_mk_mj(m_oper, jUser)-1+ phi_mk_mj(m_oper, jUser))^2 <=...  

(real_SAP_User_next(m_oper,jUser))^2 + 2real_SAP_User_next(m_oper,jUser)(real_SAP_User(m_oper,jUser)-real_SAP_User_next(m_oper,jUser))+…
(imag_SAP_User_next(m_oper,jUser))^2 + 2imag_SAP_User_next(m_oper,jUser)(imag_SAP_User(m_oper,jUser)-imag_SAP_User_next(m_oper,jUser))+…
.25*(chi_mk_mj_next(m_oper, jUser)-1 - phi_mk_mj_next(m_oper, jUser))^2 + …
.5*(chi_mk_mj_next(m_oper, jUser)-1 - phi_mk_mj_next(m_oper, jUser))*(chi_mk_mj(m_oper, jUser)-chi_mk_mj_next(m_oper, jUser)-phi_mk_mj(m_oper, jUser)+ phi_mk_mj_next(m_oper, jUser));

  Interference_mk_mj(m_oper, jUser)+ BW*noise(m_oper) <=  phi_mk_mj(m_oper,jUser);
  phi_mk_mj(m_oper,jUser) >=0;

r_mk_mj(m_oper,jUser)  >=0;

end

P_max_SAP >= sum_square_abs(vec(W_mk_mj(m_oper,:,:))) ;

end
cvx_end
cvx_status

% r_mk_mj(1,jUser)+ sum (r_mk_ni(:, m_oper, jUser ))’
if(strfind(cvx_status,‘Solved’))

phi_mk_mj_next =phi_mk_mj;
chi_mk_mj_next = chi_mk_mj;
real_SAP_User_next = real_SAP_User;
imag_SAP_User_next = imag_SAP_User;

r_mk_mj_all(iter, :,:slight_smile: = r_mk_mj;

r_mk_ni_all(iter, :, :, :,:)= r_mk_ni;

% % Interference_mk_mj
% % W_mk_mj
% % chi_mk_mj
% % Interference_mk_ni
% % W_mk_ni
R_m_all(iter)= optimal_output(iter+1)

r_mk_ni_final=r_mk_ni;
r_mk_mj_final=r_mk_mj;
W_mk_mj_all=W_mk_mj;
W_mk_ni_all=W_mk_ni;
else
iter=1;
iter;
run_count=0;
end

run_count=0;
end

%%% Update values for next round


I want to run above code till converge, now it is only for one iteration. This code works with sedumi and sdpt3, but I am not happy with the optimal values. So decide to use mosek. Mosek erro meassage is hard to decode. Anyway, this is simplified code and I have removed some of the things. When I debug the code, once I comment the below matrix and its dependents. Then mosek start to work fine. The matrix is
W_mk_ni_ini= T_DAPrand( max(My_DAPs), Tx_AN, My_operators, max(My_Users) ) + T_DAP1i*rand(max(My_DAPs), Tx_AN, My_operators, max(My_Users) )
Therefore, if you comment above line mosek will answer you without any error, but with above it will give below warning. Then I have to re-run the cvx setup to proceed.
This is the complete error messgae I get,

Warning: The following errors were issued when initializing the solvers:
Mosek: unexpected error:
Error using cvx_license
Invalid option: -4
vvvvvvvvvvvvvvvvvvvvvvvvv
Please check your installation and re-run CVX_SETUP.
These solvers are unavailable for this session.

In cvx_global (line 139)
In cvx_solver (line 36)
In All_in_one_erroe_codem (line 303)
Warning: The default solver has temporarily been changed to SDPT3.
In cvx_global (line 147)
In cvx_solver (line 36)
In All_in_one_erroe_codem (line 303)
Error using cvx_solver (line 49)
Solver unusable due to prior errors: mosek

Error in All_in_one_erroe_codem (line 303)
cvx_solver mosek
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


As I wrote before

I recommend you send a support request per Support — CVX Users' Guide