Skip to main content

PrimitiveSet

Module: opytimizer.core.graph.primitive_set

Registry of typed primitives, terminals and ephemeral constants.

Constructor​

PrimitiveSet(name: str, root_type: Type) -> None

Parameters​

ParameterTypeDefaultDescription
namestrIdentifier for this set (useful when several problems/typed grammars coexist).
root_typeTypeThe type that a tree generated from this set must produce at its root.

Methods​

add_ephemeral_constant​

add_ephemeral_constant(self, name: str, generator: Callable[[], Any], output_type: Type) -> None

Registers a leaf that is freshly sampled from generator every time it's drawn during tree generation.

Parameters​

ParameterTypeDefaultDescription
namestr—
generatorCallable[[], Any]—
output_typeType—

add_primitive​

add_primitive(self, function: Callable[..., Any], input_types: Tuple[Type, ...], output_type: Type, name: Optional[str] = None) -> None

Registers a typed function node.

Parameters​

ParameterTypeDefaultDescription
functionCallable[..., Any]Callable to be applied to the node's children.
input_typesTuple[Type, ...]Expected type of each child, in order.
output_typeTypeType produced by function.
nameOptional[str]NoneOptional display name (defaults to function.__name__).

add_terminal​

add_terminal(self, value: Any, output_type: Type, name: Optional[str] = None) -> None

Registers a fixed leaf value.

Parameters​

ParameterTypeDefaultDescription
valueAny—
output_typeType—
nameOptional[str]None—

has_terminal​

has_terminal(self, output_type: Type) -> bool

Parameters​

ParameterTypeDefaultDescription
output_typeType—

primitives_of​

primitives_of(self, output_type: Type) -> List[opytimizer.core.graph.primitive.Primitive]

Returns every primitive whose output_type matches.

Parameters​

ParameterTypeDefaultDescription
output_typeType—

terminals_of​

terminals_of(self, output_type: Type) -> List[Union[opytimizer.core.graph.primitive.Terminal, opytimizer.core.graph.primitive.Ephemeral]]

Returns every terminal/ephemeral whose output_type matches.

Parameters​

ParameterTypeDefaultDescription
output_typeType—

validate​

validate(self) -> None

Walks every registered primitive's input_types and raises if any of them has no matching terminal/primitive registered — i.e., the grammar would eventually get stuck trying to close a branch.

Call this once, right after registering everything.