jijzepttools.modeling.algorithm.dantzig_wolfe_decomposition.utils#
Classes#
DisjointForallHolder is a class to hold disjoint forall expression. |
|
Base class for protocol classes. |
|
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 #