peterwittek / ncpol2sdpa-cpp

A converter from noncommutative polynomial optimization problems to sparse SDPA input format -- C++ version

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ncpol2sdpa-Cpp

Ncpol2sdpa-Cpp is a C++ library to convert a noncommutative polynomial optimization problem to a sparse semidefinite programming (SDP) problem that can be processed by the SDPA family of solvers. The optimization problem can be unconstrained or constrained by equalities and inequalities.

The objective is to be able to solve very large scale optimization problems. For example, a convergent series of lower bounds can be obtained for ground state problems with arbitrary Hamiltonians.

The implementation has an intuitive syntax for entering Hamiltonians and it scales for a larger number of noncommutative variables using a sparse representation of the SDP problem.

Dependencies

The code requires SymbolicC++ to compile and it relies on the C++11 standard. GCC 4.8.1 is known to compile the code. If Ncpol2sdpa-Cpp is compiled with OpenMP support, SymbolicC++ needs a patch to ensure thread-safety.

Usage

A simple usage example is included in examplencpol.cpp. A more sophisticated application is given in benchmarkCase.cpp, which implements the Hamiltonian of a bosonic system on a 1D line.

The implementation installs as a library. Subsequent use must specify the include directory of the header files and the library for compilation.

Compilation & Installation

From GIT repository first run

$ ./autogen.sh

Then follow the standard procedure:

$ ./configure [options]
$ make
$ make install

Options for configure

--enable-openmp Enable OpenMP support (experimental)

OpenMP support is still experimental and deadlocks occur in larger problems.

--with-symbolicc++-incdir=DIR   SymbolicC++ include directory [default /usr/include]
--with-symbolicc++-libdir=DIR   SymbolicC++ library directory [default /usr/lib]

Specify these directories if the compiler cannot see them in the include and library paths.

Known Issues

Hermicity of noncommuting variables is not handled correctly.

The fast submonomial substitution does not handle some rare cases.

Acknowledgment

This work is supported by the European Commission Seventh Framework Programme under Grant Agreement Number FP7-601138 PERICLES, by the Red Española de Supercomputación grants number FI-2013-1-0008 and FI-2013-3-0004, and by the Swedish National Infrastructure for Computing project number SNIC 2014/2-7.

More Information

For more information refer to the following manuscript:

http://arxiv.org/abs/1308.6029

About

A converter from noncommutative polynomial optimization problems to sparse SDPA input format -- C++ version

License:GNU General Public License v3.0


Languages

Language:C++ 94.8%Language:C 5.0%Language:Shell 0.2%