evolvablehardware / evolvablehardware/BitstreamEvolution

Refactoring Tasks

Open
#15 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
18
Forks
7
PR merge metrics
No merged PRs in 30d

Description

This issue outlines a list of tasks that must be finished to complete the refactor (in branch "develop") into a minimum viable state to be able to run simple experiments.

- [X] "Evolution" top-level class

Protocols:
- [X] GenDataFactory
- [X] GenDataIncrementer: serves both trivial implementation and concrete implementation
- [X] CircuitFactory
- [X] Trivial impl
- [X] Concrete impl - fully tested
- [ ] Reproducer
- [X] Trivial impl
- [ ] Concrete Implementations: Likely start with a generalized "select+mutate" and then implement following selection methods:
- [ ] Single Elite
- [ ] Fractional Elite
- [ ] Classic Tournament
- [ ] Fitness Proportional Selection - priority
- [ ] Rank Proportional Selection
- [ ] Map Elites - may require additional work (possibly a new type of Population), and need to be removed from selection methods
- [ ] GenerateInitialPopulations
- [X] Trivial impl
- [X] Concrete impl - fully tested
- [ ] Existing Population concrete implementation with tests
- [ ] RandomizeUntil - blocked by hardware evaluation
- [x] EvaluatePopulationFitness
- [X] Trivial impl
- [x] Concrete implementations:
- [x] Var-max
- [x] Pulse count
- [x] Tests for all
- [x] GenerateMeasurements
- [X] Trivial impl
- [x] Concrete implementations:
- [x] Var-max
- [x] Pulse count
- [x] Tone discriminator
- [x] Tests for all 3
- [ ] Hardware
- [X] Trivial impl
- [ ] Concrete implementation + tests
- [x] Reading waveform
- [x] Counting pulses
- [ ] Tests: Mock Serial interface
- [ ] Plotting - verify that all plot data is still collected
- [x] Overall high-level evolution view
- [ ] Pulse count generation view
- [x] Varmax heatmap
- [ ] Pulse count heatmap
- [x] Waveform - whenever one is collected we should show it
- [x] Pulse count/varmax violin plots
- [ ] Source population plot
- [ ] Tone discriminator - state
- [ ] Tone discriminator - waveform
- [x] Single epoch - fitness or pulses
- [ ] Tone discriminator:
- [ ] Evaluate Fitness
- [ ] Reading data using hardware

Other/Misc:
- [ ] FullySimCircuit - re-integrate into new system and test
- [ ] File-Based simulated circuit - add a fitness evaluator for this

NOTE: Refactor broke up things into bitstreams and circuits. One current caveat is that crossover will act differently. Previously, crossover selected one point within a tile and performed crossover on every tile at that point. Now, it will select a point in the entire (modifiable) bitstream and perform crossover once. This may involve a change in outcomes - if needed, BitstreamIndividual can be modified or replaced to track the bits within each tile so that this crossover functionality can be restored (and can still externally output/input a single list of bits that is breaks up into tiles as needed).

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.