CodeReclaimers / neat-python

Python implementation of the NEAT neuroevolution algorithm
BSD 3-Clause "New" or "Revised" License
1.41k stars 490 forks source link

Can't find actual usage of "activation_mutate_rate" in the repository #223

Open BioWar opened 3 years ago

BioWar commented 3 years ago

I was looking for code where activation_mutate_rate IS USED to check what is it actually doing, but when I started the search in the repository I found no code where it was used. Only files which were cited in tests and examples. The same problem with aggregation_default.

Am I wrong or these parameters are not working at all?

TON14 commented 3 years ago

I don't know what's in the code =) i just tested

change config file

activation_default      = sigmoid
activation_options      = abs clamped cube exp gauss hat identity inv log relu sigmoid sin softplus square tanh
activation_mutate_rate  = 0.10
aggregation_default     = sum
aggregation_options     = sum product min max mean median maxabs
aggregation_mutate_rate = 0.10
**enabled_default         = False**

Result

 ****** Running generation 10 ******

Population's average fitness: 48.92647 stdev: 58.04804
Best fitness: 465.59000 - size: (4, 5) - species 2 - id 25649

Best individual in generation 10 meets fitness threshold - complexity: (4, 5)
Key: 25649
Fitness: 465.59
Nodes:
        0 DefaultNodeGene(key=0, bias=-0.04670303683974604, response=1.0, **activation=inv, aggregation=sum)**
        1 DefaultNodeGene(key=1, bias=3.676808386291425, response=1.0, **activation=hat, aggregation=max)**
        717 DefaultNodeGene(key=717, bias=-0.3388114611388613, response=1.0, **activation=sigmoid, aggregation=max)**
        4635 DefaultNodeGene(key=4635, bias=0.3790316257918874, response=1.0, **activation=sigmoid, aggregation=sum)**
Connections:
        DefaultConnectionGene(key=(-4, 0), weight=-4.902753585779983, enabled=True)
        DefaultConnectionGene(key=(-4, 1), weight=2.2233849709628313, enabled=False)
        DefaultConnectionGene(key=(-3, 0), weight=0.1778200566204472, enabled=False)
        DefaultConnectionGene(key=(-3, 1), weight=0.13752071279488415, enabled=False)
        DefaultConnectionGene(key=(-2, 0), weight=-0.7774644217394712, enabled=True)
        DefaultConnectionGene(key=(-1, 717), weight=2.191998100159211, enabled=False)
        DefaultConnectionGene(key=(-1, 4635), weight=2.099197913343026, enabled=True)
        DefaultConnectionGene(key=(717, 1), weight=0.8789818087483005, enabled=True)
        DefaultConnectionGene(key=(4635, 717), weight=1.6229693271726044, enabled=True

When change config tp

**activation_mutate_rate  = 0.0**
**aggregation_mutate_rate = 0.**
**enabled_default         = False**

Result

****** Running generation 7 ******

Population's average fitness: 28.78024 stdev: 40.43288
Best fitness: 466.64000 - size: (4, 5) - species 1 - id 18462

Best individual in generation 7 meets fitness threshold - complexity: (4, 5)
Key: 18462
Fitness: 466.64
Nodes:
        0 DefaultNodeGene(key=0, bias=0.7504180779257384, response=1.0, **activation=sigmoid, aggregation=sum**)
        1 DefaultNodeGene(key=1, bias=-0.9202115238111772, response=1.0, **activation=sigmoid, aggregation=sum**)
        265 DefaultNodeGene(key=265, bias=1.5937972640538778, response=1.0, **activation=sigmoid, aggregation=sum**)
        818 DefaultNodeGene(key=818, bias=0.3289761399347336, response=1.0, **activation=sigmoid, aggregation=sum**)

Conclusion activation_mutate_rate and aggregation_mutate_rate used only if enabled_default = False and mutate rates>0.0

jsykes commented 1 year ago

What if the default is set to random?