Skip to content

FlexQAOA Configuration

PenaltySetting

Bases: BaseModel

Penalty factor settings.

Attributes:

Name Type Description
override PositiveFloat | None

Overrides the automatically evaluated penalty factor.

scaling PositiveFloat

Scales the automatically evaluated penalty factor.

override class-attribute instance-attribute

override: PositiveFloat | None = None

scaling class-attribute instance-attribute

scaling: PositiveFloat = 1.0

PipelineParams

Bases: BaseModel

Define the modular FlexQAOA Pipeline.

Attributes:

Name Type Description
penalty PenaltySetting

General penalty factor settings.

inequality_to_equality InequalityToEqualityConfig

Configuration of the "inequality to equality" transformation.

setpacking_as_onehot SetpackingAsOnehotConfig

Configuration of the "setpacking to onehot" transformation.

xy_mixer XYMixerConfig

Configuration of the XY-mixers.

indicator_function IndicatorFunctionConfig

Configuration of the indicator functions.

sp_quadratic_penalty QuadraticPenaltyConfig

Configuration of the setpacking quadratic penalty function.

quadratic_penalty QuadraticPenaltyConfig

Configuration of the general quadratic penalty function.

indicator_function class-attribute instance-attribute

indicator_function: IndicatorFunctionConfig = Field(
    default_factory=IndicatorFunctionConfig
)

inequality_to_equality class-attribute instance-attribute

inequality_to_equality: InequalityToEqualityConfig = Field(
    default_factory=InequalityToEqualityConfig
)

penalty class-attribute instance-attribute

penalty: PenaltySetting = Field(
    default_factory=lambda: PenaltySetting(scaling=2.0)
)

quadratic_penalty class-attribute instance-attribute

quadratic_penalty: QuadraticPenaltyConfig = Field(
    default_factory=QuadraticPenaltyConfig
)

setpacking_as_onehot class-attribute instance-attribute

setpacking_as_onehot: SetpackingAsOnehotConfig = Field(
    default_factory=SetpackingAsOnehotConfig
)

sp_quadratic_penalty class-attribute instance-attribute

sp_quadratic_penalty: QuadraticPenaltyConfig = Field(
    default_factory=QuadraticPenaltyConfig
)

xy_mixer class-attribute instance-attribute

xy_mixer: XYMixerConfig = Field(default_factory=XYMixerConfig)

IndicatorFunctionConfig

Bases: BaseModel, _EnableMixin

Configuration for indicator functions to implement inequality constraints.

Attributes:

Name Type Description
penalty PenaltySetting

Custom penalty setting for indicator functions.

method Literal['const', 'str']

Indicator function implementation method. Default: "const" Two options are available:

  • "const": Applies a constant penalty for every constraint violation.
  • "if": Applies the objective function only if all constraints are satisfied. Automatically ensures objective to be negative.
enable bool

Toggle to enable or disable this method. Default: True.

enable class-attribute instance-attribute

enable: bool = True

method class-attribute instance-attribute

method: Literal["if", "const"] = Field(
    default="const",
    description="Method of indicator function implementation. Constant Penalty (const) or conditional application of cost function (if).",
)

penalty class-attribute instance-attribute

penalty: PenaltySetting = Field(
    default_factory=lambda: PenaltySetting(scaling=1),
    description="Penalty setting for indicator functions.",
)

XYMixerConfig

Bases: BaseModel, _EnableMixin

Configuration for XY-mixers to implement one-hot constraints.

Attributes:

Name Type Description
trotter int

Number of trotter steps for XY-mixer implementation. Default: 1.

types list[Literal['even', 'odd', 'last']]

Mixer types in XY-ring-mixer. Default: ["even", "odd", "last"].

enable bool

Toggle to enable or disable this method. Default: True.

enable class-attribute instance-attribute

enable: bool = True

trotter class-attribute instance-attribute

trotter: int = Field(
    default=1,
    lt=1000,
    ge=1,
    description="Number of trotter steps for XY-mixer implementation.",
)

types class-attribute instance-attribute

types: list[Literal["even", "odd", "last"]] = Field(
    default=["even", "odd", "last"],
    description='Mixer types in XY-ring-mixer. Default: `["even", "odd", "last"]`',
)

QuadraticPenaltyConfig

Bases: BaseModel, _EnableMixin

Configuration for quadratic penalties.

Adds penalty terms to the objective. Adds slack variables for inequality constraints if neccessaray.

Attributes:

Name Type Description
penalty PenaltySetting

Custom penalty setting for quadratic penalty terms.

enable bool

Toggle to enable or disable this method. Default: True.

enable class-attribute instance-attribute

enable: bool = True

penalty class-attribute instance-attribute

penalty: PenaltySetting = Field(
    default_factory=lambda: PenaltySetting(scaling=2.0),
    description="Penalty setting for quadratic penalties.",
)

SetpackingAsOnehotConfig

Bases: BaseModel, _EnableMixin

Configuration for set-packing to one-hot constraint transformation.

Attributes:

Name Type Description
enable bool

Toggle to enable or disable this method. Default: True.

enable class-attribute instance-attribute

enable: bool = True

InequalityToEqualityConfig

Bases: BaseModel, _EnableMixin

Configuration for inequality to equality constraint transformation.

Attributes:

Name Type Description
max_slack int

Maximum number of slack bits to add for each constraint. Default: 10.

enable bool

Toggle to enable or disable this method. Default: True.

enable class-attribute instance-attribute

enable: bool = True

max_slack class-attribute instance-attribute

max_slack: int = Field(
    default=10,
    description="Maximum number of slack bits to add for each constraint.",
)

CustomConfig

Bases: BaseModel

Additional FlexQAOA circuit configuration.

Attributes:

Name Type Description
max_qubits PositiveInt | None

Maximum number of qubits allowed for the circuit. If None, no limit is applied. Default: None.

minimize_qubits bool

Minimize the number of used qubits in the circuit if set to True. Otherwise, minimize circuit depth. Default: False.

wstate Literal['log', 'bilinear', 'linear']

WState generation cricuit. Choice between:

  • "log": Logarithmic-depth binary tree circuit.
  • "linear": Linear circuit construction.
  • "bilinear": Bi-linear circuit construction, starts in the middle and linearly constructs the circuit outwards.

Default: "log"

qft_synth Literal['line', 'full']

QFT synthesis method. Choice between:

  • "full": Shorter circuit depth implementation that requires all-to-all connectivity.
  • "line": Longer circuit depth implementation that requires linear connectivity.

Default: "full"

max_qubits class-attribute instance-attribute

max_qubits: PositiveInt | None = Field(
    default=None,
    description="Maximum number of qubits allowed for the circuit. If `None`, no limit is applied.",
)

minimize_qubits class-attribute instance-attribute

minimize_qubits: bool = Field(
    default=False,
    description="Minimize the number of used qubits in the circuit if set to `True`. Otherwise, minimize circuit depth.",
)

qft_synth class-attribute instance-attribute

qft_synth: Literal["line", "full"] = Field(
    default="full",
    description="QFT synthesis method. Shorter depth (full) implementation requires all-to-all connectivity. Longer (line) implementation requires only linear connectivity.",
)

wstate class-attribute instance-attribute

wstate: Literal["log", "bilinear", "linear"] = Field(
    default="log",
    description="WState generation cricuit. Choice between: Logarithmic-depth (log) binary tree circuit and linear or bilinear construction. bilinear places the start in the middle and linearly constructs the circuit outwards.",
)