This repository was archived by the owner on Sep 1, 2023. It is now read-only.

Description
Relevant code: https://github.com/numenta/nupic.core/blob/8a846d1d897440bc6ca1e46120520da166bc551a/src/nupic/experimental/ExtendedTemporalMemory.cpp#L616
I didn't change the algorithm at all, I just put all the logic for "learning cell" selection in one place.
When a column is bursting, we choose a cell to learn on. The current selection process is:
- if the column has matching basal segments
- use the cell with the best matching basal segment
- else use the least used cell.
We should start also considering apical segments. Here's a trivial addition:
- if the column has matching basal segments
- use the cell with the best matching basal segment
- if the column has matching apical segments
- use the cell with the best matching apical segment
- else use the least used cell.
We could go further and give preference to a cell that has both a matching apical and basal segment. Or maybe a different change makes sense. (e.g. allowing multiple learning cells per segment in some cases?)
I haven't thought through the effects on experiments. It just seems pretty clear that this code is incomplete.