mindquantum.algorithm.qaia.SimCIM
- class mindquantum.algorithm.qaia.SimCIM(J, h=None, x=None, n_iter=1000, batch_size=1, dt=0.01, momentum=0.9, sigma=0.03, pt=6.5)[source]
Simulated Coherent Ising Machine.
Reference: Annealing by simulating the coherent Ising machine.
Note
For memory efficiency, the input array 'x' is not copied and will be modified in-place during optimization. If you need to preserve the original data, please pass a copy using x.copy().
- Parameters
J (Union[numpy.array, scipy.sparse.spmatrix]) – The coupling matrix with shape \((N x N)\).
h (numpy.array) – The external field with shape \((N, )\).
x (numpy.array) – The initialized spin value with shape \((N x batch_size)\). Will be modified during optimization. If not provided (
None
), will be initialized as zeros. Default:None
.n_iter (int) – The number of iterations. Default:
1000
.batch_size (int) – The number of sampling. Default:
1
.dt (float) – The step size. Default:
1
.momentum (float) – momentum factor. Default:
0.9
.sigma (float) – The standard deviation of noise. Default:
0.03
.pt (float) – Pump parameter. Default:
6.5
.
Examples
>>> import numpy as np >>> from mindquantum.algorithm.qaia import SimCIM >>> J = np.array([[0, -1], [-1, 0]]) >>> solver = SimCIM(J, batch_size=5) >>> solver.update() >>> print(solver.calc_cut()) [1. 1. 1. 0. 0.] >>> print(solver.calc_energy()) [-1. -1. -1. 1. 1.]