evolvablehardware / evolvablehardware/BitstreamEvolution
Refactoring Tasks
- 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.