jijzepttools.modeling.algorithm.series_decomposition.utils#

Classes#

DisjointForallHolder

DisjointForallHolder is a class to hold disjoint forall expression.

Module Contents#

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

DisjointForallHolder is a class to hold disjoint forall expression.

disjoint_forall#

disjoint forall expression

Type:

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

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, ConditionalExpr]]], tp.List[int]]]

Examples

>>> import jijmodeling as jm
>>> from jijzepttools.modeling.algorithm.series_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
[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))]
>>> disjoint_forall_holder.get_unique_forall([0])
([[(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=0))], [(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=1))], [(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=2))]], [0, 1, 2])
>>> disjoint_forall_holder.get_unique_forall([1])
([[(Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=0))], [(Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=1))]], [0, 3])
>>> disjoint_forall_holder.get_unique_forall([0, 1])
([[(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=0)), (Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=0))], [(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=1)), (Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=0))], [(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=2)), (Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=0))], [(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=0)), (Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=1))], [(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=1)), (Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=1))], [(Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='igroup', ndim=1)[Element(name='i', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=2)), (Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100))), Placeholder(name='jgroup', ndim=1)[Element(name='j', belong_to=(NumberLit(value=0), NumberLit(value=100)))] == NumberLit(value=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.ConditionalExpr]]], List[int]]]#
get_unique_forall(index_loc: List[int]) Tuple[List[List[Tuple[jijmodeling.Element, jijzepttools.modeling.utils.type.ConditionalExpr]]], List[int]]#