Heuristics

Heuristics that allows to find new potential auxiliary points in a problem.

class HeuristicName(*values)

Bases: str, Enum

LINE_INTERSECTIONS = 'line_intersections'
CENTERS = 'centers'
ANGLE_VERTICES = 'angle_vertices'
MIDPOINT = 'midpoint'
EQDISTANCE = 'eqdistance'
FOOT = 'foot'
REFLECT_ON_CENTER = 'reflect_on_center'
THREE_CIRCUMCIRCLES_FOR_EQANGLE_GOAL = 'three_circumcircles_for_eqangle_goal'
class Heuristic

Bases: ABC

abstractmethod new_clauses(setup, max_new_points, rng)

Find new clauses to add to the problem by applying the heuristic.

Return type:

list[JGEXClause]

class HeuristicSetup(**data)

Bases: BaseModel

Problem given to a heuristic to deduce new JGEX clauses.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

points: tuple[NewType(PredicateArgument, str), ...]
free_points: tuple[NewType(PredicateArgument, str), ...]
lines: tuple[LineHeuristic, ...]
circles: tuple[CircleHeuristic, ...]
angles: tuple[AngleHeuristic, ...]
goals: tuple[PredicateConstruction, ...]