# Unbounded result

hello there.
I write a program as follow but the result is unbounded. I dont know what the problem is? Can anyone help me?

``````clc;
clear;
close all;

%% Problem Definition

Nt=4;   % Number of Transmit antennas
Nr=8;   % Number of Receive antennas

ang_t = [15;0];   % Target Position
alpha0=20;   % Power of Target (dB)
alpha0=100;

L=3;    % Number of Interference Sources
ang=[-50, -10, 40];    % Location of Interferences (in degree)

alphai=30;   % Power of Each Interference (dB)
alphai=1000;

sigma_v=0;  % Noise Variance (dB)
sigma_v=1;

SNR=alpha0/sigma_v;
INR=alphai/sigma_v;

N=16;   % Number of Samples

w_l = -1; w_u = 1;    % Doppler Range

S0=zeros(Nt,N);     % Reference Waveform Matrix
for k=1:Nt

S0(k,1:N)=(1/sqrt(N*Nt))*exp(1i*2*pi*k*((1:N)-1)/N).*exp(1i*pi*((1:N)-1).^2/N);

end
% Initialize Target Doppler
w=1/2;
P=zeros(Nt,N);     % Including Doppler Effect
for k=1:Nt

P(k,1:N) = exp(1i*w*((1:N)-1));

end

s0=reshape(S0,Nt*N,1);  % Reference Waveform Vector

%% Antenna Parameters

c = physconst('LightSpeed');
fc = 1e9;
lam = c/fc;

% Target Steering Vector

sv_t=SteerVec(Nt,lam,ang_t);     % Transmit Steering Vector

%% Semidefinite Representations ( Obtain SDP Characterizations of Nonnegative Ttrigonometric Polynomial)

n = 2*N - 1;
teta = 2*pi/n;
ExpFunction = @(k) ExFunc(k,n,teta);

F1 = zeros(2*N-1,N);
for k=1:N
F1(1:2*N-1,k)=ExpFunction(k-1)';
end

F2 = F1(:,1:N-1);

alpha = (w_l+w_u)/2;
beta = alpha - w_l;
CosFunction = @(k) CosFunc(k, n, alpha, beta);
d = CosFunction(0:2*N-2)';

e1 = zeros(N,1);
e1(1) = 1;

%% Initialization

sigma_s=0;
for i=1:L

sy_I=sy_theta(N,Nt,Nr,lam,ang(i)); % Equation Related to Interferences

sigma_s1 = INR*(sy_I*s0)*ctranspose(sy_I*s0);

sigma_s=sigma_s+sigma_s1;

end

sy_t=sy_theta(N,Nt,Nr,lam,ang_t); % Equation Related to Target

phi_s = ctranspose(sy_t)*pinv(sigma_s+eye(numel(sigma_s,1)))*sy_t;

%% Main Loop
cvx_clear
cvx_begin sdp
% cvx_solver sdpt3
variable t(1)
variable Z1(16, 16)
variable Z2(15,15)
variable Z(64,64)
expression z(16)
for k=0:N-1

for i=1:N-k
z_k(i) = Z(i+k,i);
end

z(k+1,1) = sum(z_k);

end

maximize (t)
subject to
z ==  e1 * t + ctranspose(F1)* (diag(F1 * Z1 * ctranspose(F1))+...
d .* diag(F2 * Z2 * ctranspose(F2)));
Z1 >= 0;
Z2 >= 0;
% abs((trace(Z*inv(phi_s))))<=10
cvx_end``````

Your problem is not reproducible, because you have not provided all needed inputs.

We don;t know what your model is supposed to be or do, so we can’t tell you whether you have implemented it correctly, and we don;t know what the input data is. Try following thew advice at https://yalmip.github.io/debuggingunbounded/

My model is as follow

here parameter z defined as follow

yes. but my problem is an LMI problem and Yalmip cant solve this kind of problem. I wanna solve it by cvx. if I send you the problem can u help me?
thank u so much for your help.

Actually, YALMIP can solve LMIs. The advice in the link applies to CVX as well as to YALMIP, but is written as a help for YALMIP. Have you at least tried placing bounds on all the variables and see what happens?

Your problem is not reproducible by people such as me who don;t have the Phased Array System Toolbox.

Everything on this forum is done on the forum itself, without external postings or private email.

yes I;ve tried them and found unbounded variable. but I don,t know how can I solve it. I can;t manipulate the theory of the problem. any advice?
thanks.

Place finite lower and upper bounds on all elements of all variables. Is an optimal solution achieved, with at least some variable element at some bound?

Have you checked all input data to see whether any of it is many orders of magnitude from 1? Make sure the finite lower and upper bounds are not too big, for instance+ or - 1e3 might be o.k., but don;t use + or - 1e8.

thanks for your response. I checked my input data, none of them is many orders of 1.
Actually, my objective function is a line (called t). maximization of a line(without any constraint on it) is infinite. But I expect when a constraint applied on it result becomes finite. In fact the constraint that limits the objective function is:
z == e1 * t + ctranspose(F1)* (diag(F1 * Z1 * ctranspose(F1))+…
d .* diag(F2 * Z2 * ctranspose(F2)));
where matrix F1, F2 and d are known. e1 is a zero vector with the first element of one
e1 = zeros(N,1);e1(1) = 1;
I wanna maximize t on z, Z1, Z2. but it seems during solving the problem(by cvx solver) this constraint doesn;t considered, so results become unbounded.

Did you try placing finite lower and upper bounds on every variable element as I have previously suggested on this thread?

yes. in this case, problem is solved and optimal value is upper bound that I defined on the variable.

I suggest you further investigate why the constraint you think should be preventing unboundedness is not. At the optimum solution of the problem with the added bounds, are all your constraints satisfied? If you the increase the added bound which became active, does CVX again report an optimum solution, is the objective function larger, and are all the constraints still satisfied? If so, you should reassess what is happening with your initial constraint. Note that in assessing satisfaction of the constraints, you need to recompute all CVX expressiois starting from the optimal variable values, because the values of CVX expressions after it completes might not be the true values corresponding to the optimal variable values, and which CVX was using internally.