This project is about Ising Machines, which are programs/devices which settle naturally to the ground state of a given Ising Hamiltonian:
Many NP-Complete problems like Number Partioning and the Max-cut problem can be reframed into an Ising Hamiltonian which we can optimize. We attempt to create different Ising Machines and benchmark them versus classical heuristic methods like Metropolis Monte-Carlo (MC) Sampling Methods. At present, we are close to creating a Coherent Ising Machine. We have also worked on MC Sampling (Python Code for the Number Partioning (NP-complete) and the Max-cut (NP-Complete) Problems) and an initial attempt at using GPUs for the same.
The details of the Ising Machines/ simulations/ heuristics that have been implemented so far is as follows:
The first physical Ising Machine we are implementing is a Coherent Ising Machine. We implement a setup along the lines of the work done in this paper by Bohm. et al.. We use an Opto-Electronic Oscillator (OEO), whose state naturally settles at or very near the optimum solution to the problem. Our Repository contains Python code for our simulation of the experiment. It also contains C-code which was used to program the FPGA used in our experimental setup.
Python code was written to simulate the thermodynamics of an Ising Hamiltonian. With different techniques like simulated annealing, we can make the system settle very close to the optimum. More details are within the folders.