Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect bounds for I3322 #40

Open
anubhav70747 opened this issue Jul 10, 2018 · 3 comments
Open

Incorrect bounds for I3322 #40

anubhav70747 opened this issue Jul 10, 2018 · 3 comments

Comments

@anubhav70747
Copy link

anubhav70747 commented Jul 10, 2018

Hey,

I tried to obtain an upper bound for the quantum value I3322 inequality introduced in https://journals.aps.org/prl/pdf/10.1103/PhysRevLett.100.210503

The code of the implementation is attached.
TestI3322.py.zip

Now this implementation returns the values with cvxopt and SDPA:
for level = 1: 0.374999
for level = 1 + AB: 0.362010076878
for level = 2: 0.260629

These values are higher than those reported in the paper:
http://iopscience.iop.org/article/10.1088/1367-2630/10/7/073013/meta
(I can also confirm these values using a separate implementation with YALMIP, sdpt3 and Octave.)
for level = 1: 0.3333
for level = 1 + AB: 0.2515
for level = 2: 0.25091

Why do you think this is happening?

Thanks

PS: I also tried to implement it define_objective_with_I(I, P) using I = [[0,-1,0,0],[-2,1,1,1], [-1,1,1,1],[0,1,-1,0]] which leads to completely unrelated results for levels=1,1+AB,2.

@apozas
Copy link
Contributor

apozas commented Jul 12, 2018

Hi,

This is an interesting problem.

First, let me tell you that I have been able to reproduce all the results you mention with the last version of ncpol2sdpa.

Next (the easy part), creating the objective with define_objective_with_I(I, P) gave me the correct objective function by using the transposed of the matrix I that you use.

And now the difficult part. I have exported the level 1 problem to SDPA format, and the problem looks like the following.

"file test.dat-s generated by ncpol2sdpa"
21 = number of vars
1 = number of blocs
(7) = BlocStructure
{1.0, 0, 0, 2.0, 1.0, 0, 0, 0, -1.0, -1.0, -1.0, 0, -1.0, -1.0, 1.0, -1.0, 1.0, 0, 0, 0, 0}
0	1	1	1	-1.0
1	1	1	2	1.0
1	1	2	2	1.0
2	1	1	3	1.0
2	1	3	3	1.0
3	1	1	4	1.0
3	1	4	4	1.0
4	1	1	5	1.0
4	1	5	5	1.0
5	1	1	6	1.0
5	1	6	6	1.0
6	1	1	7	1.0
6	1	7	7	1.0
7	1	2	3	1.0
8	1	2	4	1.0
9	1	2	5	1.0
10	1	2	6	1.0
11	1	2	7	1.0
12	1	3	4	1.0
13	1	3	5	1.0
14	1	3	6	1.0
15	1	3	7	1.0
16	1	4	5	1.0
17	1	4	6	1.0
18	1	4	7	1.0
19	1	5	6	1.0
20	1	5	7	1.0
21	1	6	7	1.0

It makes sense for me, just using orthogonality and commutation constraints. However, when solving I get 0.375 as you do. Do you think you can export the problem that you solve in Octave in a similar format, so we can compare both matrices?

@peterwittek
Copy link
Owner

Please note that Ncpol2sdpa migrated to GitLlab. Discussions should take place there, and please send all pull requests there. Thanks.

@denisrosset
Copy link

Hi @peterwittek , do you include additional nonnegativity (LP) constraints at level 1? That's how the level 1 is defined in the NPA paper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants