InstanceClass

InstanceClass#

class InstanceClass#

A set of :class:Instance values represented as a finite union of clauses.

__new__(clauses: Sequence[InstanceClassClause]) InstanceClass#
__repr__() str#
check_membership(instance: Instance) InstanceClassMembershipReport#

Evaluate membership without mutating or preparing instance.

contains(instance: Instance) bool#

Return whether instance belongs to this class.

hubo() InstanceClass#

Class of minimization HUBO formulations accepted by as_hubo_format() after Preparation.

Postconditions#

The target accepts unconstrained minimization Binary HUBO formulations and rejects models outside that class.

>>> from ommx import DecisionVariable, Instance, InstanceClass, Sense
>>> x = DecisionVariable.binary(0)
>>> linear = Instance.from_components(
...     decision_variables=[x], objective=x, constraints={}, sense=Sense.Minimize
... )
>>> cubic = Instance.from_components(
...     decision_variables=[x], objective=x * x * x, constraints={}, sense=Sense.Minimize
... )
>>> maximizing = Instance.from_components(
...     decision_variables=[x], objective=x, constraints={}, sense=Sense.Maximize
... )
>>> continuous = DecisionVariable.continuous(1)
>>> non_binary = Instance.from_components(
...     decision_variables=[continuous], objective=continuous, constraints={}, sense=Sense.Minimize
... )
>>> constrained = Instance.from_components(
...     decision_variables=[x], objective=x, constraints={0: x == 1}, sense=Sense.Minimize
... )
>>> target = InstanceClass.hubo()
>>> assert target.contains(linear)
>>> assert target.contains(cubic)
>>> assert not target.contains(maximizing)
>>> assert not target.contains(non_binary)
>>> assert not target.contains(constrained)
qubo() InstanceClass#

Class of minimization QUBO formulations accepted by as_qubo_format() after Preparation.

Postconditions#

The target accepts unconstrained minimization QUBO formulations and rejects models outside that class.

>>> from ommx import DecisionVariable, Instance, InstanceClass, Sense
>>> x = DecisionVariable.binary(0)
>>> linear = Instance.from_components(
...     decision_variables=[x], objective=x, constraints={}, sense=Sense.Minimize
... )
>>> quadratic = Instance.from_components(
...     decision_variables=[x], objective=x * x, constraints={}, sense=Sense.Minimize
... )
>>> cubic = Instance.from_components(
...     decision_variables=[x], objective=x * x * x, constraints={}, sense=Sense.Minimize
... )
>>> maximizing = Instance.from_components(
...     decision_variables=[x], objective=x, constraints={}, sense=Sense.Maximize
... )
>>> continuous = DecisionVariable.continuous(1)
>>> non_binary = Instance.from_components(
...     decision_variables=[continuous], objective=continuous, constraints={}, sense=Sense.Minimize
... )
>>> constrained = Instance.from_components(
...     decision_variables=[x], objective=x, constraints={0: x == 1}, sense=Sense.Minimize
... )
>>> target = InstanceClass.qubo()
>>> assert target.contains(linear)
>>> assert target.contains(quadratic)
>>> assert not target.contains(cubic)
>>> assert not target.contains(maximizing)
>>> assert not target.contains(non_binary)
>>> assert not target.contains(constrained)
union(other: InstanceClass) InstanceClass#

Return the finite union of two instance classes.

property clauses: list[InstanceClassClause]#

Read-only property.