qplex.algorithms.mixers package

Submodules

qplex.algorithms.mixers.cardinality_mixer module

class qplex.algorithms.mixers.cardinality_mixer.CardinalityMixer[source]

Bases: QuantumMixer

XY-mixer implementation for problems with cardinality constraints.

Implements an XY-mixing Hamiltonian that preserves the Hamming weight of the quantum state, suitable for problems with fixed-sum or cardinality constraints.

generate_circuit(n_qubits: int, theta: str) List[str][source]

Generate circuit for XY-mixing operation.

Creates a series of controlled operations between qubit pairs to implement the XY-mixer while preserving total number of 1s in the state.

Parameters:
  • n_qubits (int) – Number of qubits

  • theta (str) – Mixing angle parameter

Returns:

OpenQASM3 instructions for XY-mixer

Return type:

List[str]

qplex.algorithms.mixers.composite_mixer module

class qplex.algorithms.mixers.composite_mixer.CompositeMixer(mixers: List[QuantumMixer])[source]

Bases: QuantumMixer

Mixer combining multiple constraint-preserving mixers.

Allows composition of multiple mixer types to handle problems with multiple types of constraints simultaneously.

generate_circuit(n_qubits: int, theta: str) List[str][source]

Generate composite mixing circuit.

Concatenates the circuits from all component mixers in sequence.

Parameters:
  • n_qubits (int) – Number of qubits

  • theta (str) – Mixing angle parameter

Returns:

Combined OpenQASM3 instructions from all mixers

Return type:

List[str]

qplex.algorithms.mixers.inequality_mixer module

class qplex.algorithms.mixers.inequality_mixer.InequalityMixer[source]

Bases: QuantumMixer

Mixer implementation for inequality-constrained problems.

Implements controlled rotations based on cumulative weights to preserve inequality constraints while mixing quantum states.

generate_circuit(n_qubits: int, theta: str) List[str][source]

Generate circuit for inequality-preserving mixing.

Creates a sequence of controlled operations that respect inequality constraints during state mixing.

Parameters:
  • n_qubits (int) – Number of qubits

  • theta (str) – Mixing angle parameter

Returns:

OpenQASM3 instructions for inequality mixer

Return type:

List[str]

qplex.algorithms.mixers.mixer_factory module

class qplex.algorithms.mixers.mixer_factory.ConstraintType(value)[source]

Bases: Enum

An enumeration.

CARDINALITY = 'cardinality'
INEQUALITY = 'inequality'
MULTIPLE = 'multiple'
PARTITION = 'partition'
UNCONSTRAINED = 'unconstrained'
class qplex.algorithms.mixers.mixer_factory.MixerFactory[source]

Bases: object

Factory class for creating appropriate quantum mixers.

Creates mixer instances based on problem constraints, supporting single constraint types and composite mixers for multiple constraints.

classmethod get_mixer(constraint_info: ConstraintInfo) QuantumMixer[source]

Create appropriate mixer based on constraint information.

Parameters:

constraint_info (ConstraintInfo) – Problem constraint metadata

Returns:

Appropriate mixer instance for given constraints

Return type:

QuantumMixer

qplex.algorithms.mixers.partition_mixer module

class qplex.algorithms.mixers.partition_mixer.PartitionMixer[source]

Bases: QuantumMixer

Mixer implementation for partition/grouping problems.

Implements SWAP-based mixing operations suitable for problems requiring partition of items into groups while preserving group sizes.

generate_circuit(n_qubits: int, theta: str) List[str][source]

Generate circuit for partition-preserving mixing.

Creates SWAP operations between adjacent qubits followed by rotations to mix states while maintaining partition structure.

Parameters:
  • n_qubits (int) – Number of qubits

  • theta (str) – Mixing angle parameter

Returns:

OpenQASM3 instructions for partition mixer

Return type:

List[str]

qplex.algorithms.mixers.quantum_mixer module

class qplex.algorithms.mixers.quantum_mixer.QuantumMixer[source]

Bases: ABC

Abstract base class defining the interface for quantum mixers.

Provides a template for implementing various mixing operators that preserve problem constraints while exploring the solution space.

abstract generate_circuit(n_qubits: int, theta: str) List[str][source]

Generate OpenQASM3 circuit instructions for the mixing operation.

Parameters:
  • n_qubits (int) – Number of qubits in the circuit

  • theta (str) – Mixing angle parameter name/value

Returns:

OpenQASM3 instructions implementing the mixer

Return type:

List[str]

qplex.algorithms.mixers.standard_mixer module

class qplex.algorithms.mixers.standard_mixer.StandardMixer[source]

Bases: QuantumMixer

Standard X-mixer implementation for QAOA.

generate_circuit(n_qubits: int, theta: str) List[str][source]

Generate RX rotation gates for each qubit.

Parameters:
  • n_qubits (int) – Number of qubits

  • theta (str) – Mixing angle parameter

Returns:

OpenQASM3 RX rotation instructions

Return type:

List[str]

Module contents