Edit on GitHub

geneticalgorithm2.callbacks.data

 1from typing import Optional, List, Callable, Tuple
 2
 3from dataclasses import dataclass
 4from typing_extensions import TypeAlias
 5
 6from ..crossovers import CrossoverFunc
 7
 8from ..mutations import MutationFloatFunc, MutationIntFunc
 9from ..selections import SelectionFunc
10from ..utils.aliases import array2D, array1D
11
12from ..data_types.aliases import SetFunctionToMinimize
13from ..data_types.generation import Generation
14from ..data_types.base import DictLikeGetSet
15
16
17@dataclass
18class MiddleCallbackData(DictLikeGetSet):
19    """
20    data object using in middle callbacks
21    """
22
23    # TODO use slots?
24
25    reason_to_stop: Optional[str]
26
27    last_generation: Generation
28
29    current_generation: int
30    report_list: List[float]
31
32    mutation_prob: float
33    mutation_discrete_prob: float
34
35    mutation: MutationFloatFunc
36    mutation_discrete: MutationIntFunc
37    crossover: CrossoverFunc
38    selection: SelectionFunc
39
40    current_stagnation: int
41    max_stagnation: int
42
43    parents_portion: float
44    elit_ratio: float
45
46    set_function: SetFunctionToMinimize
47
48
49SimpleCallbackFunc: TypeAlias = Callable[[int, List[float], array2D, array1D], None]
50"""
51Callback function performs any operations on 
52    (generation number, best scores report list, last population matrix, last scores vector)
53
54Notes: generation number cannot be changed
55"""
56
57MiddleCallbackConditionFunc: TypeAlias = Callable[[MiddleCallbackData], bool]
58"""Function (middle callback data) -> (bool value means whether to call middle callback action)"""
59
60
61MiddleCallbackActionFunc: TypeAlias = Callable[[MiddleCallbackData], MiddleCallbackData]
62"""Function which transforms and returns middle callback data or just uses it some way"""
63
64
65MiddleCallbackFunc: TypeAlias = Callable[[MiddleCallbackData], Tuple[MiddleCallbackData, bool]]
66"""
67Function (input middle callback data) -> (output callback data, changes flag)
68    where input and output data may be same 
69    and changes flag means whether the output data must be read back
70        to the optimization process (to update by flag only one time -- for acceleration purposes)
71"""
class MiddleCallbackData(geneticalgorithm2.data_types.base.DictLikeGetSet):
19class MiddleCallbackData(DictLikeGetSet):
20    """
21    data object using in middle callbacks
22    """
23
24    # TODO use slots?
25
26    reason_to_stop: Optional[str]
27
28    last_generation: Generation
29
30    current_generation: int
31    report_list: List[float]
32
33    mutation_prob: float
34    mutation_discrete_prob: float
35
36    mutation: MutationFloatFunc
37    mutation_discrete: MutationIntFunc
38    crossover: CrossoverFunc
39    selection: SelectionFunc
40
41    current_stagnation: int
42    max_stagnation: int
43
44    parents_portion: float
45    elit_ratio: float
46
47    set_function: SetFunctionToMinimize

data object using in middle callbacks

MiddleCallbackData( reason_to_stop: Union[str, NoneType], last_generation: geneticalgorithm2.data_types.generation.Generation, current_generation: int, report_list: List[float], mutation_prob: float, mutation_discrete_prob: float, mutation: Callable[[float, float, float], float], mutation_discrete: Callable[[int, int, int], int], crossover: Callable[[numpy.ndarray, numpy.ndarray], Tuple[numpy.ndarray, numpy.ndarray]], selection: Callable[[numpy.ndarray, int], numpy.ndarray], current_stagnation: int, max_stagnation: int, parents_portion: float, elit_ratio: float, set_function: Callable[[numpy.ndarray], numpy.ndarray])
reason_to_stop: Union[str, NoneType]
current_generation: int
report_list: List[float]
mutation_prob: float
mutation_discrete_prob: float
mutation: Callable[[float, float, float], float]
mutation_discrete: Callable[[int, int, int], int]
crossover: Callable[[numpy.ndarray, numpy.ndarray], Tuple[numpy.ndarray, numpy.ndarray]]
selection: Callable[[numpy.ndarray, int], numpy.ndarray]
current_stagnation: int
max_stagnation: int
parents_portion: float
elit_ratio: float
set_function: Callable[[numpy.ndarray], numpy.ndarray]
SimpleCallbackFunc: typing_extensions.TypeAlias = typing.Callable[[int, typing.List[float], numpy.ndarray, numpy.ndarray], NoneType]

Callback function performs any operations on (generation number, best scores report list, last population matrix, last scores vector)

Notes: generation number cannot be changed

MiddleCallbackConditionFunc: typing_extensions.TypeAlias = typing.Callable[[MiddleCallbackData], bool]

Function (middle callback data) -> (bool value means whether to call middle callback action)

MiddleCallbackActionFunc: typing_extensions.TypeAlias = typing.Callable[[MiddleCallbackData], MiddleCallbackData]

Function which transforms and returns middle callback data or just uses it some way

MiddleCallbackFunc: typing_extensions.TypeAlias = typing.Callable[[MiddleCallbackData], typing.Tuple[MiddleCallbackData, bool]]

Function (input middle callback data) -> (output callback data, changes flag) where input and output data may be same and changes flag means whether the output data must be read back to the optimization process (to update by flag only one time -- for acceleration purposes)