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):
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
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:
\(\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
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
}
)