Status: Inaccurate/Solved

The program can be run.But Status: Inaccurate/Solved!
I can’t figure out why the result I get has status inaccurate/solved.
I have the following optimization problem:


I have formulated the above optimization problem as follows:

%ANTrue:Anchor nodes coordinate matrix(N rows and 2 columns)
%p:The received signal strength(RSS) at the anchor nodes--Column vector
%T:The speed of light multiplied by the time of arrival--T=c*ri Formula 1
%s:Estimated location of the target node

%Speed of light
c=3e8;
%Number of anchor nodes
[N,~] = size(ANTrue);
%Anchor nodes coordinate matrix(2 rows and N columns)
a = ANTrue';
%Signal arrival time at anchor nodes--Column vector
r = T/c;

%Set specific values based on the experimental results of the original text
zeta = 0.1;
mu=0.5;
%Upper bound of NLOS deviation
triangle=4;
%The true value of PLE 
gamma=3;
%See below formula 7 in the original text
eta=10*gamma/log(10);

%weights to RSS and TOA measurements
%wr--RSS
%wt--TOA
wt=zeros(N,1);
wr=zeros(N,1);
sumr=sum(r);
sump=sum(1./p);

for i = 1:N
    wt(i) = 1-r(i)/sumr;
end
for i = 1:N
    wr(i) = 1-1/p(i)/sump;
end

rs=zeros(N,1);
ps=zeros(N,1);
lambda=zeros(N,1);
%See below formula 4 in the original text
for i = 1:N
    rs(i) = c*r(i)-mu*triangle;
end
for i = 1:N
    ps(i) = p(i)+mu*triangle;
end

%%See below formula 7 in the original text
for i = 1:N
    lambda(i)=10^(ps(i)/(10*gamma));
end

cvx_begin
    cvx_solver sedumi
    %cvx_solver sdpt3
    %cvx_precision best
    variable f(N,1)
    variable g(N,1)
    variable h(N,1)
    variable s(2,1)
    variable z(1,1)
    variable d0(1,1)
    variable o(1,1)
    variable psis
    variable theta

    minimize  (sum(f) + sum(g) + zeta*sum(h))
    
    subject to
        for i =1:N
            norm([2*sqrt(wt(i))*(rs(i)^2 - 2*rs(i)*d0 + o - z + 2*a(i)'*s - square_pos(norm(a(i))));
                4*(z - 2*a(i)'*s + square_pos(norm(a(i)))) - f(i)]) <= 4*(z - 2*a(i)'*s + square_pos(norm(a(i)))) + f(i);
        end
        for i = 1:N
                norm([2*sqrt(wr(i))*eta*(lambda(i)^2*(z - 2*a(i)'*s + square_pos(norm(a(i))))) - psis;
                    4*theta - g(i)]) <= 4*theta + g(i);
        end
        
        for i = 1:N
            rs(i) + h(i) >= norm(s-a(i)) + d0;
            h(i) >= 0;
        end
        norm([2*psis;theta - 1]) <= theta + 1;
        norm([2*d0;o - 1]) <= o + 1;
        norm([2*s;z - 1]) <= z + 1;
cvx_end
1 Like

The first thing is to remove
cvx_precision best
which I recommend you never use.

if that resolves things, great. Otherwise, look at the scaling of your input data (which you haven’t provided). Change units, if necessary, so that all non-zero input data is within s small number of orders of magnitude of 1.

You can also try another solver such as SDPT3, or if available to you, Mosek. If you use Mosek, pay attention to any warning it might issue.

1 Like

Hi @LiQing,

Your attempt to solve via CVX is commendable but lack the output
details of both solvers SeDuMi as well as SDPT3 or even Mosek as pointed out
by @Mark_L_Stone. For a start and showcase the benefit of the learning
audience & moderators for constructive particpation , it’s best to include
your full reference paper to best understand your nature of your program.

Supra

I removed cvx_precision best. You’re right.
Status: Solved
However, the final result is still very different from the results in the literature. I’m thinking about why this is happening?

1 Like

Hi, Supra
It seems that there is no function to upload PDF. This is the DOI number of the document:10.1109/LWC.2020.3037095
I removed cvx_precision best. Status: Solved

1 Like

Is there a significant difference in the optimal objective value? if not, but the argmin significantly differs, that could be due to non-uniqueness of the solution.

1 Like

I run it 20 times. The optimal value range is about 100 to 500. This should not be a significant difference.
My input data is as follows:
a:
0 0 0 15 30 30 30 15
0 15 30 30 30 15 0 0
p:
-21.1408019220559
-15.9567884412220
-11.3855986962234
-5.62762122577700
-14.2586878782263
-2.39585300437850
-12.7347481536208
-7.87980405461128
T:
37.4553994233654
23.5213660751275
36.9977306538117
20.5669367581349
22.2233697883558
17.9802567749923
26.3064934347073
22.8021414450153

1 Like

Hi @LiQing, you claimed you had run 20 times.

Can you be kind enough to produce the full solver outputs for both SeDuMi and SDPT 3
for the benefit of the audience and moderators for proper evaluation and assessment.

Supra

Hi @LiQing,

Are you referring to the following paper
Mayur Katwe, Pradnya Ghare, and Prabhat Kumar Sharma , ''Robust NLOS Bias Mitigation for Hybrid RSS-TOA based Source Localization under Unknown Transmission Parameters" to appear IEEE Wireless Communications Letters, Nov. 2020 …

Unfortunately I’m unable to access nor. download . Can you be kind enough to extend the pdf
to my email address at supraletchimi@gmail.com. and thanking you in advance?

Supra

Hi @LiQing,

Are you referring to the following paper
Mayur Katwe, Pradnya Ghare, and Prabhat Kumar Sharma , ''Robust NLOS Bias Mitigation for Hybrid RSS-TOA based Source Localization under Unknown Transmission Parameters" to appear IEEE Wireless Communications Letters, Nov. 2020 …

Unfortunately I’m unable to access nor. download . Can you be kind enough to extend the pdf
to my email address at supraletchimi@gmail.com. and thanking you in advance?

Supra

Since the CVX forum cannot upload PDF files, I will send the PDF to your email. Note that these files are only used for learning and communication, please do not use them for commercial purposes.

1 Like

Hi @supra ,
I found that there is a big gap between the actual coordinates and the estimated coordinates, and I am looking for the problem.
搜狗截图20211218145408

1 Like

What was varied across these runs? Different values of \zeta? Are there random numbers being generated somewhere for the input? If you have not duplicated the inputs used in the paper, you shouldn’t expect to duplicate its output.

1 Like

Each run will generate a node within a certain range. So the p and T used are different each time.Other parameters are unchanged.

1 Like

The final result can be viewed in the picture I responded to supra above. These estimated coordinates are obviously wrong. I was overwhelmed by this problem.

1 Like

you are assumed to be familiar with your model and problem. if the model makes sense and you do exactly as the author told you to do in simulation part, it should work out.

if it doesn’t, i have 2 bold guesses based on your doing estimation : the uncertainty(noise, etc.) you add into the simulation is too big. or 20 times of run is not enough for monte carlo simulation(the paper run 5000?) . it might not be a cvx problem.

1 Like

Thanks! I have solved the problem described above. It turns out that there is a problem with the code. Unfortunately, I still haven’t achieved the effect of the original text.

1 Like