Header menu logo Encodings

Optimization Module

Pluggable optimisation framework for selecting the best encoding.

Provides a composable pipeline for encoding selection: users supply a cost function (any PauliRegisterSequence → float) and a set of encoding candidates. The framework evaluates each candidate and returns the one that minimises cost, together with full comparison data.

Built-in cost functions cover the most common metrics: λ-norm (qubitization), total Pauli weight (Trotter CNOT cost), term count (measurement overhead), and maximum Pauli weight (circuit depth). Users can define custom cost functions (e.g., weighted combinations) and pass them directly.

The framework is intentionally strategy-agnostic: it evaluates whatever candidates you give it, so external optimisers (genetic algorithms, Bayesian optimisation, simulated annealing) can generate candidates and use this module for evaluation.

Types

Type Description

CostFunction

A cost function maps an encoded Hamiltonian to a scalar to minimise.

EncodingCandidate

An encoding candidate: a named encoder function.

EvaluationResult

Result of evaluating a single encoding candidate.

OptimizationResult

Result of an optimisation run across multiple candidates.

Functions and values

Function or value Description

combinedCost w1 f1 w2 f2 h

Full Usage: combinedCost w1 f1 w2 f2 h

Parameters:
Returns: float A combined cost function.

Combine two cost functions with weights: w₁·f₁ + w₂·f₂.

w1 : float

Weight for the first cost function.

f1 : CostFunction

First cost function.

w2 : float

Weight for the second cost function.

f2 : CostFunction

Second cost function.

h : PauliRegisterSequence
Returns: float

A combined cost function.

evaluate costFn coefficientFactory n candidate

Full Usage: evaluate costFn coefficientFactory n candidate

Parameters:
    costFn : CostFunction - The cost function to evaluate.
    coefficientFactory : string -> Complex option - Molecular integral lookup.
    n : uint32 - Number of spin-orbitals (qubits).
    candidate : EncodingCandidate - The encoding candidate to evaluate.

Returns: EvaluationResult An EvaluationResult with cost and Hamiltonian data.

Evaluate a single encoding candidate against a cost function.

costFn : CostFunction

The cost function to evaluate.

coefficientFactory : string -> Complex option

Molecular integral lookup.

n : uint32

Number of spin-orbitals (qubits).

candidate : EncodingCandidate

The encoding candidate to evaluate.

Returns: EvaluationResult

An EvaluationResult with cost and Hamiltonian data.

evaluateCustom costFn name encoder coefficientFactory n

Full Usage: evaluateCustom costFn name encoder coefficientFactory n

Parameters:
    costFn : CostFunction - The cost function to evaluate.
    name : string - Display name for the encoding.
    encoder : EncoderFn - The encoder function.
    coefficientFactory : string -> Complex option - Molecular integral lookup.
    n : uint32 - Number of spin-orbitals (qubits).

Returns: EvaluationResult An EvaluationResult.

Evaluate a custom encoder (e.g., from an external optimiser generating trees) without needing to construct a full EncodingCandidate.

costFn : CostFunction

The cost function to evaluate.

name : string

Display name for the encoding.

encoder : EncoderFn

The encoder function.

coefficientFactory : string -> Complex option

Molecular integral lookup.

n : uint32

Number of spin-orbitals (qubits).

Returns: EvaluationResult

An EvaluationResult.

lambdaNormCost h

Full Usage: lambdaNormCost h

Parameters:
Returns: float

LCU 1-norm: Σ|cₖ|. Minimising this minimises qubitization query complexity.

h : PauliRegisterSequence
Returns: float

maxPauliWeightCost h

Full Usage: maxPauliWeightCost h

Parameters:
Returns: float

Maximum Pauli weight across all terms. Proxy for worst-case circuit depth per rotation.

h : PauliRegisterSequence
Returns: float

optimizeOver costFn candidates coefficientFactory n

Full Usage: optimizeOver costFn candidates coefficientFactory n

Parameters:
    costFn : CostFunction - The cost function to minimise.
    candidates : EncodingCandidate[] - Array of encoding candidates to evaluate.
    coefficientFactory : string -> Complex option - Molecular integral lookup.
    n : uint32 - Number of spin-orbitals (qubits).

Returns: OptimizationResult An OptimizationResult with the best candidate and full comparison.

Evaluate all candidates and return the best (lowest cost).

costFn : CostFunction

The cost function to minimise.

candidates : EncodingCandidate[]

Array of encoding candidates to evaluate.

coefficientFactory : string -> Complex option

Molecular integral lookup.

n : uint32

Number of spin-orbitals (qubits).

Returns: OptimizationResult

An OptimizationResult with the best candidate and full comparison.

optimizeStandard costFn coefficientFactory n

Full Usage: optimizeStandard costFn coefficientFactory n

Parameters:
    costFn : CostFunction - The cost function to minimise.
    coefficientFactory : string -> Complex option - Molecular integral lookup.
    n : uint32 - Number of spin-orbitals (qubits).

Returns: OptimizationResult An OptimizationResult.

Optimise over all six standard encodings.

costFn : CostFunction

The cost function to minimise.

coefficientFactory : string -> Complex option

Molecular integral lookup.

n : uint32

Number of spin-orbitals (qubits).

Returns: OptimizationResult

An OptimizationResult.

standardEncodings n

Full Usage: standardEncodings n

Parameters:
    n : uint32 - Number of qubits / spin-orbitals.

Returns: EncodingCandidate[] Array of encoding candidates.

The six standard encodings built into FockMap.

For tree-based encodings (balanced binary, balanced ternary, Vlasov), the tree is rebuilt per call to the encoder function, matching the library's existing convention for these encodings.

n : uint32

Number of qubits / spin-orbitals.

Returns: EncodingCandidate[]

Array of encoding candidates.

termCountCost h

Full Usage: termCountCost h

Parameters:
Returns: float

Number of distinct Pauli terms. Proxy for measurement overhead in VQE.

h : PauliRegisterSequence
Returns: float

totalPauliWeightCost h

Full Usage: totalPauliWeightCost h

Parameters:
Returns: float

Total Pauli weight: Σ weight(Pₖ). Proxy for total CNOT count in Trotter.

h : PauliRegisterSequence
Returns: float

trotterCnotCost dt h

Full Usage: trotterCnotCost dt h

Parameters:
Returns: float A cost function computing the CNOT count.

Actual first-order Trotter CNOT count at the given time step.

dt : float

Time step size for the Trotter decomposition.

h : PauliRegisterSequence
Returns: float

A cost function computing the CNOT count.

Type something to start searching.