ragraph.analysis.compatibility.bdd#

Binary Decision Diagram implementation of the compatibility problem.

Module Contents#

Functions#

_yield_ranges(→ Generator[range, None, None])

Generate matrix index ranges.

_recursive(→ dd.autoref.Function)

Construct a recursive operation function over all items.

yield_feasible_configurations(→ Generator[Tuple[int, ...)

Get the feasible configurations based on a compatibility matrix between different

ragraph.analysis.compatibility.bdd._yield_ranges(nums: List[int], start: int = 0) Generator[range, None, None]#

Generate matrix index ranges.

ragraph.analysis.compatibility.bdd._recursive(operation: str, bdd: dd.autoref.BDD, items: List[dd.autoref.Function]) dd.autoref.Function#

Construct a recursive operation function over all items.

ragraph.analysis.compatibility.bdd.yield_feasible_configurations(compat: Union[numpy.ndarray, List[List[Union[bool, int]]]], comp_variant_nums: List[int]) Generator[Tuple[int, Ellipsis], None, None]#

Get the feasible configurations based on a compatibility matrix between different variants of elements and the “bucket” sizes (number of variants of each element).

Parameters:
  • compat – Compatibility matrix (square) between different variants of elements. Size is determined by the total number of variants.

  • comp_variant_nums – The number of variants for each element. The matrix has to be sorted accordingly.

Returns:

Feasible configurations as a tuple with a variant’s (absolute) index for each element.