aimclub / GOLEM

Graph Optimiser for Learning and Evolution of Models
https://thegolem.readthedocs.io
BSD 3-Clause "New" or "Revised" License
63 stars 7 forks source link

Check structural diversity #131

Closed maypink closed 1 year ago

maypink commented 1 year ago
  1. Refactored mutation, elitism and inheritance operators to provide higher level of structural diversity.
  2. Refactored tests for ReproductionController since it was based on none mutation and after changes in mutation operator, ReproductionController could not reproduce population of specified size due to no changes in it.
  3. Added saving of descriptive_id to save computational recources.
aim-pep8-bot commented 1 year ago

Hello @maypink! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers:

Comment last updated at 2023-07-05 13:24:27 UTC
codecov-commenter commented 1 year ago

Codecov Report

Merging #131 (43fc06d) into main (d34288e) will increase coverage by 1.06%. The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #131      +/-   ##
==========================================
+ Coverage   72.34%   73.41%   +1.06%     
==========================================
  Files         128      128              
  Lines        7336     7394      +58     
==========================================
+ Hits         5307     5428     +121     
+ Misses       2029     1966      -63     
Impacted Files Coverage Δ
...lem/core/optimisers/genetic/operators/selection.py 35.80% <ø> (ø)
golem/core/optimisers/genetic/evaluation.py 94.23% <100.00%> (+0.68%) :arrow_up:
golem/core/optimisers/genetic/operators/elitism.py 97.22% <100.00%> (+0.44%) :arrow_up:
...m/core/optimisers/genetic/operators/inheritance.py 86.66% <100.00%> (+0.95%) :arrow_up:
...olem/core/optimisers/genetic/operators/mutation.py 91.00% <100.00%> (+0.37%) :arrow_up:
.../core/optimisers/genetic/operators/reproduction.py 100.00% <100.00%> (ø)
golem/core/optimisers/optimizer.py 94.44% <100.00%> (+0.15%) :arrow_up:
golem/core/optimisers/populational_optimizer.py 96.03% <100.00%> (+5.45%) :arrow_up:

... and 10 files with indirect coverage changes

gkirgizov commented 1 year ago

@YamLyubov , а можешь построить такой же график доли уникальных, как ты строила, чтобы проверить изменения?

image

YamLyubov commented 1 year ago

Сейчас пропал тренд на снижение разнообразия, но все-равно наследование будто тянет разнообразие вниз diversity diversity_2

maypink commented 1 year ago

Сейчас пропал тренд на снижение разнообразия, но все-равно наследование будто тянет разнообразие вниз diversity diversity_2

а мутации вне поля зрения теперь? или куда они там попрятались

YamLyubov commented 1 year ago

а мутации вне поля зрения теперь? или куда они там попрятались

У нас цикл репродукции теперь в ReproductionController спрятан. Но могу и с этой инфой графики построить - сейчас займусь

nicl-nno commented 1 year ago

Можно сделать так: graph.nodes[0].content['something'] = "evil_change" и обойти кэширование id

Так а если nodes обернуть в setter и в нем сбрасывать закэшированный - это не решит проблему?

gkirgizov commented 1 year ago

Можно сделать так: graph.nodes[0].content['something'] = "evil_change" и обойти кэширование id

Так а если nodes обернуть в setter и в нем сбрасывать закэшированный - это не решит проблему?

Мы можем просто через getter изменить любую ноду и список об этом не узнает. Сам список то не меняется. Так что за этим простыми средствами не обойтись