Program Ensembles

The divi.qprog.ensemble module coordinates parallel execution of multiple quantum programs with automatic circuit batching and progress tracking.

Core Architecture

ProgramEnsemble is the abstract base shared by every workflow class. BatchConfig and BatchMode configure how circuits are grouped for execution.

Classes

BatchConfig([mode, max_batch_size, ...])

Configuration for circuit batching in ProgramEnsemble.run().

BatchMode()

Controls whether circuit submissions are merged across programs.

ProgramEnsemble(backend)

This abstract class provides the basic scaffolding for higher-order computations that require more than one quantum program to achieve its goal.

Workflows

Concrete workflow classes build on ProgramEnsemble. VQEHyperparameterSweep orchestrates parameterized VQE runs over a grid of inputs; PartitioningProgramEnsemble decomposes a large graph problem into solvable sub-problems; TimeEvolutionTrajectory runs a sequence of time-evolution steps to build a trajectory.

Classes

MoleculeTransformer(base_molecule, ...[, ...])

A class for transforming molecular structures by modifying bond lengths.

PartitioningProgramEnsemble(problem, ...[, ...])

Generic orchestrator for partition-solve-aggregate quantum optimization.

TimeEvolutionTrajectory(hamiltonian, ...[, ...])

Run TimeEvolution across multiple time points in parallel.

VQEHyperparameterSweep(ansatze[, ...])

Allows user to carry out a grid search across different values for the ansatz and the bond length used in a VQE program.

Aggregation Strategies

PartitioningProgramEnsemble combines per-partition candidates into global solutions using an AggregationStrategy. BeamSearchStrategy (the default) explores candidates left-to-right across partitions; HierarchicalStrategy solves groups of partitions independently and merges them pairwise.

Strategies for aggregating per-partition solutions into a global solution.

A PartitioningProgramEnsemble solves a decomposed problem by running one quantum program per partition. Each program yields a ranked list of candidate bitstrings for its own variables; an AggregationStrategy stitches those per-partition candidates into scored global solutions.

Two strategies are provided:

Classes

AggregationStrategy()

Combines per-partition candidates into scored global solutions.

BeamSearchStrategy([beam_width, ...])

Left-to-right beam search over partitions.

HierarchicalStrategy([group_size, ...])

Divide-and-conquer beam that delays cross-group commitment.

Partitioning Configuration

GraphPartitioningConfig parameterizes how PartitioningProgramEnsemble splits a graph; it lives in divi.qprog.problems and is documented on the Problems reference page.