The Delay-Line Coherent Continuous-Variable Machine#

Stochastic differential equations#

The dynamics describing a coherent continuous-variable machine with a delay-line coupling scheme (DL-CCVM) are described by the following system of stochastic differential equations (SDE):

\[\begin{split}dc_i &= \Big[\big(-1+p(t)-c_i^2-s_i^2\big)c_i - \partial_i f(\mathbf{c})\Big]dt + \frac{r(t)}{A_s}\sqrt{c_i^2+s_i^2+\frac{1}{2}} dW_{i}^{c} \\ ds_i &= \Big[\big(-1-p(t)-c_i^2-s_i^2\big)s_i-\partial_i f(\mathbf{s})\Big]dt+\frac{1}{r(t) A_s}\sqrt{c_i^2+s_i^2+\frac{1}{2}}dW_{i}^{s}\end{split}\]
\[c_i(0)=s_i(0)=0, \quad \forall i=1,\ldots,N\]

where \(p(t) = p_0 t/T\) is the amplitude of the pump field amplifying the optical pulses normalized to the photon loss rate and \(\partial_i f(\mathbf{y}) = \frac{\partial f(\mathbf{y})}{\partial y_i}\) is the gradient of the continuous objective function, with \(\mathbf{y}\in\{\mathbf{c}, \mathbf{s}\}\).

In our CCVM simulator, \(f\) refers to the quadratic objective function of a given optimization problem. In the case of the box-constrained quadratic programming (BoxQP) problem, it is given by

\[f(\mathbf{x}) = \frac{1}{2}\sum_{i,j=1}^{N}Q_{ij}x_i x_j+\sum_{i=1}^N V_{i}x_i,\]

subjected to the box constraints \(\ell_i\leq x_i \leq u_i\). The default limits of the box constraint are \(\ell_i=0, \; u_i=1\). To encode the variable of the BoxQP problem \(x_i\) into the optical field amplitudes \(y_i\), we have performed the following change of variables:

\[x_i := \left(\frac{1}{2}\Big(\frac{y_i}{s}+1\Big)\big(u_i-\ell_i\big)+\ell_i\right),\;\;\;\;\forall \mathbf{y}\in\big\{\mathbf{c}, \mathbf{s}, \mathbf{\tilde\mu}\big\}.\]

\(\mathbf{Q}\) is a real symmetric matrix and \(\mathbf{V}\) is a real vector describing the BoxQP problem. The variance of the noise in this system is controlled by scheduling the variable \(r(t)\) via the injection of a squeezed state into the open port of the output coupler. An exponential function of the form

\[r(t)=r_0 \exp\Big(-\beta\frac{t}{T}\Big),\]

has been used as the scheduling function. Here \(T=n_\mathrm{iter}\times N\times T_\mathrm{pulse}\) is the evolution time for a single round trip. \(T_\text{pulse}=100\text{ps}\) by default.

Example script for solving a box-constrained quadratic programming problem using the DL-CCVM solver#

The demo script, ccvm_boxqp_dl.py, in the examples folder simulates the dynamics of the DL-CCVM for an example problem instance. It can be run from the project’s root directory using the following command in the terminal:

$ python ccvm/examples/ccvm_boxqp_dl.py

The script will print the solution, similar to the example output below.

Solution(
   problem_size=20,
   batch_size=1000,
   iterations=15000,
   ...,
   solve_time=15.929,
   optimal_value=152.602,
   best_value=147.96,
   solution_performance={
      'optimal': 0.265,
      'one_percent': 0.457,
      'two_percent': 0.544,
      'three_percent': 0.715,
      'four_percent': 0.995,
      'five_percent': 0.999,
      'ten_percent': 1.0
   }
)