рисование дерева
This commit is contained in:
20
lab4/main.py
20
lab4/main.py
@@ -1,16 +1,20 @@
|
||||
"""
|
||||
graphviz должен быть доступен в PATH (недостаточно просто установить через pip)
|
||||
|
||||
Можно проверить командой
|
||||
dot -V
|
||||
"""
|
||||
|
||||
import random
|
||||
from math import log
|
||||
|
||||
import numpy as np
|
||||
from numpy.typing import NDArray
|
||||
|
||||
from gp import Chromosome
|
||||
from gp.crossovers import crossover_subtree
|
||||
from gp.fitness import (
|
||||
MAEFitness,
|
||||
MSEFitness,
|
||||
NRMSEFitness,
|
||||
PenalizedFitness,
|
||||
RMSEFitness,
|
||||
)
|
||||
from gp.ga import GARunConfig, genetic_algorithm
|
||||
@@ -21,10 +25,10 @@ from gp.mutations import (
|
||||
NodeReplacementMutation,
|
||||
ShrinkMutation,
|
||||
)
|
||||
from gp.ops import ADD, COS, DIV, EXP, MUL, NEG, POW, SIN, SQUARE, SUB
|
||||
from gp.ops import ADD, COS, DIV, EXP, MUL, POW, SIN, SQUARE, SUB
|
||||
from gp.population import ramped_initialization
|
||||
from gp.primitive import Const, Var
|
||||
from gp.selection import roulette_selection, tournament_selection
|
||||
from gp.primitive import Var
|
||||
from gp.selection import tournament_selection
|
||||
|
||||
NUM_VARS = 8
|
||||
TEST_POINTS = 10000
|
||||
@@ -34,8 +38,6 @@ SEED = 17
|
||||
np.random.seed(SEED)
|
||||
random.seed(SEED)
|
||||
X = np.random.uniform(-5.536, 5.536, size=(TEST_POINTS, NUM_VARS))
|
||||
# axes = [np.linspace(-5.536, 5.536, TEST_POINTS) for _ in range(NUM_VARS)]
|
||||
# X = np.array(np.meshgrid(*axes)).T.reshape(-1, NUM_VARS)
|
||||
operations = [SQUARE, SIN, COS, EXP, ADD, SUB, MUL, DIV, POW]
|
||||
terminals = [Var(f"x{i}") for i in range(1, NUM_VARS + 1)]
|
||||
|
||||
@@ -74,7 +76,6 @@ config = GARunConfig(
|
||||
fitness_func=fitness_function,
|
||||
crossover_fn=lambda p1, p2: crossover_subtree(p1, p2, max_depth=MAX_DEPTH),
|
||||
mutation_fn=combined_mutation,
|
||||
# selection_fn=roulette_selection,
|
||||
selection_fn=lambda p, f: tournament_selection(p, f, k=3),
|
||||
init_population=init_population,
|
||||
seed=SEED,
|
||||
@@ -83,6 +84,7 @@ config = GARunConfig(
|
||||
elitism=15,
|
||||
max_generations=MAX_GENERATIONS,
|
||||
log_every_generation=True,
|
||||
save_generations=[1, 10, 20, 30, 40, 50, 100, 150, 200],
|
||||
)
|
||||
|
||||
result = genetic_algorithm(config)
|
||||
|
||||
Reference in New Issue
Block a user