jijzepttools.modeling.algorithm.dantzig_wolfe_decomposition.utils#

Classes#

DisjointForallHolder

DisjointForallHolder is a class to hold disjoint forall expression.

MasterCallbackResult

Base class for protocol classes.

SubCallbackResult

Base class for protocol classes.

Module Contents#

class DisjointForallHolder(disjoint_forall: List[List[Tuple[jijmodeling.Element, jijzepttools.modeling.utils.type.Expr]]])#

DisjointForallHolder is a class to hold disjoint forall expression.

disjoint_forall#

disjoint forall expression

Type:

tp.List[tp.List[tp.Tuple[jm.Element, Expr]]]

forall_indices#

forall indices

Type:

tp.List[jm.Element]

unique_forall_cache#

cache for unique forall

Type:

tp.Dict[tp.Tuple[int, …], tp.Tuple[tp.List[tp.List[tp.Tuple[jm.Element, Expr]]], tp.List[int]]]

Examples

>>> import jijmodeling as jm
>>> from jijzepttools.modeling.algorithm.dantzig_wolfe_decomposition.utils import DisjointForallHolder
>>> i = jm.Element("i", belong_to=(0, 100))
>>> j = jm.Element("j", belong_to=(0, 100))
>>> igroup = jm.Placeholder("igroup", ndim=1)
>>> jgroup = jm.Placeholder("jgroup", ndim=1)
>>> disjoint_forall = [
...     [
...         (i, igroup[i] == 0), (j, jgroup[j] == 0),
...         (i, igroup[i] == 1), (j, jgroup[j] == 0),
...         (i, igroup[i] == 2), (j, jgroup[j] == 0),
...     ],
...     [
...         (i, igroup[i] == 0), (j, jgroup[j] == 1),
...         (i, igroup[i] == 1), (j, jgroup[j] == 1),
...         (i, igroup[i] == 2), (j, jgroup[j] == 1),
...     ],
... ]
>>> disjoint_forall_holder = DisjointForallHolder(disjoint_forall)
>>> disjoint_forall_holder.forall_indices 
[i, j]
>>> disjoint_forall_holder.get_unique_forall([0]) 
([[('i', igroup[i] == 0)], [('i', igroup[i] == 1)], [('i', igroup[i] == 2)]], [0, 1, 2])
>>> disjoint_forall_holder.get_unique_forall([1]) 
([[('j', jgroup[j] == 0)], [('j', jgroup[j] == 1)]], [0, 3])
>>> disjoint_forall_holder.get_unique_forall([0, 1]) 
([[('i', igroup[i] == 0), ('j', jgroup[j] == 0)], [('i', igroup[i] == 1), ('j', jgroup[j] == 0)], [('i', igroup[i] == 2), ('j', jgroup[j] == 0)], [('i', igroup[i] == 0), ('j', jgroup[j] == 1)], [('i', igroup[i] == 1), ('j', jgroup[j] == 1)], [('i', igroup[i] == 2), ('j', jgroup[j] == 1)]], [0, 1, 2, 3, 4, 5])
disjoint_forall#
forall_indices#
unique_forall_cache: Dict[Tuple[int, Ellipsis], Tuple[List[List[Tuple[jijmodeling.Element, jijzepttools.modeling.utils.type.Expr]]], List[int]]]#
get_unique_forall(index_loc: List[int]) Tuple[List[List[Tuple[jijmodeling.Element, jijzepttools.modeling.utils.type.Expr]]], List[int]]#
class MasterCallbackResult#

Bases: Protocol

Base class for protocol classes.

Protocol classes are defined as:

class Proto(Protocol):
    def meth(self) -> int:
        ...

Such classes are primarily used with static type checkers that recognize structural subtyping (static duck-typing), for example:

class C:
    def meth(self) -> int:
        return 0

def func(x: Proto) -> int:
    return x.meth()

func(C())  # Passes static type check

See PEP 544 for details. Protocol classes decorated with @typing.runtime_checkable act as simple-minded runtime protocols that check only the presence of given attributes, ignoring their type signatures. Protocol classes can be generic, they are defined as:

class GenProto(Protocol[T]):
    def meth(self) -> T:
        ...
abstract to_sample_set() jijmodeling.SampleSet#
class SubCallbackResult#

Bases: Protocol

Base class for protocol classes.

Protocol classes are defined as:

class Proto(Protocol):
    def meth(self) -> int:
        ...

Such classes are primarily used with static type checkers that recognize structural subtyping (static duck-typing), for example:

class C:
    def meth(self) -> int:
        return 0

def func(x: Proto) -> int:
    return x.meth()

func(C())  # Passes static type check

See PEP 544 for details. Protocol classes decorated with @typing.runtime_checkable act as simple-minded runtime protocols that check only the presence of given attributes, ignoring their type signatures. Protocol classes can be generic, they are defined as:

class GenProto(Protocol[T]):
    def meth(self) -> T:
        ...
abstract to_sample_set() jijmodeling.SampleSet#