MrPandey01 / PySpOpt

Python implementation of SpOpt package (Matlab): Reimannian Optimization on Symplectic Stiefel Manifold

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Python implementation of SpOpt package (originally in Matlab): Reimannian Optimization on Symplectic Stiefel Manifold

PySpOpt

A Python solver for Riemannian Optimization on the Symplectic Stiefel manifold. This was originally written in Matlab by [1].

Problems

Solves the following optimization problem,

$$ \min f(X), \quad s.t. \quad X^{\top} J_{2n} X = J_{2p}, $$

where $X$ is a 2n-by-2p matrix, $J_{2n} = \begin{bmatrix} 0 & I_{n} \\ - I_{n} & 0 \end{bmatrix}$, and $\mathbb{I}_{n}$ is the n-by-n identity matrix.

Applications

  1. The nearest symplectic matrix problem:

$$ \min \Vert X-A \Vert ^{2}{F}, \quad \text{s.t.} \quad X^{\top} J{2n} X = J_{2p}. $$

  1. The extrinsic mean problem:

$$ \min \frac{1}{N} \sum_{i=1}^{i=N} \Vert X - A_{i} \Vert^{2}{\mathrm{F}},\quad \text{s.t.}\quad X^{\top} J{2n} X = J_{2p}. $$

  1. Minimization of the Brockett cost function:

$$ \min \mathrm{Tr}(X^{\top} A X - 2 B X^{\top}),\quad \text{s.t.}\quad X^{\top} J_{2n} X = J_{2p}. $$

  1. Symplectic eigenvalue problem:

$$ \min \mathrm{Tr}(X^{\top} A X),\quad \text{s.t.}\quad X^{\top} J_{2n} X = J_{2p}. $$

  1. Symplectic model order reduction:

$$ \min \Vert M- X X^{\dagger} M \Vert, \quad \text{s.t.} \quad X^{\top} J_{2n} X = J_{2p}, \quad \text{where} \quad X^{\dagger} = J_{2p}^{\top} X^{\top} J_{2n} .$$

References

Bin Gao, Nguyen Thanh Son, P.-A. Absil, Tatjana Stykel

  1. Riemannian optimization on the symplectic Stiefel manifold
  2. Riemannian gradient method on the symplectic Stiefel manifold based on the Euclidean metric

About

Python implementation of SpOpt package (Matlab): Reimannian Optimization on Symplectic Stiefel Manifold

License:GNU General Public License v3.0


Languages

Language:Python 100.0%