QGA - Quantum Genetic Algorithm
Function that implements the Quantum Genetic Algorithm,
first proposed by Han and Kim in 2000. This is an R
implementation of the 'python' application developed by
Lahoz-Beltra
(<https://github.com/ResearchCodesHub/QuantumGeneticAlgorithms>).
Each optimization problem is represented as a maximization one,
where each solution is a sequence of (qu)bits. Following the
quantum paradigm, these qubits are in a superposition state:
when measuring them, they collapse in a 0 or 1 state. After
measurement, the fitness of the solution is calculated as in
usual genetic algorithms. The evolution at each iteration is
oriented by the application of two quantum gates to the
amplitudes of the qubits: (1) a rotation gate (always); (2) a
Pauli-X gate (optionally). The rotation is based on the theta
angle values: higher values allow a quicker evolution, and
lower values avoid local maxima. The Pauli-X gate is equivalent
to the classical mutation operator and determines the swap
between alfa and beta amplitudes of a given qubit. The package
has been developed in such a way as to permit a complete
separation between the engine, and the particular problem
subject to combinatorial optimization.