public HTMSegment GetActiveSegment(int t)
{
List<HTMSegment> activeSegs = new List<HTMSegment>();
foreach (HTMSegment seg in _distalSegments)
if (seg.GetActive(-1, false, false))
activeSegs.Add(seg);
if (activeSegs.Count == 0)
return null;
else if (activeSegs.Count == 1)
return activeSegs[0];
// There're more the one active segments so sequence segments given priority.
List<HTMSegment> sequenceSegs = new List<HTMSegment>();
foreach (HTMSegment seg in activeSegs)
if (seg.IsSequence)
sequenceSegs.Add(seg);
if (sequenceSegs.Count == 1)
return sequenceSegs[0];
else if (sequenceSegs.Count > 1)
activeSegs = sequenceSegs;
// Search the segment that had, in the previous step, the highest activity measured by the number of active synapses.
HTMSegment mostActiveSegment = null;
int maxActivity = int.MinValue;
int activity;
foreach (HTMSegment seg in activeSegs)
{
activity = seg.GetActivity(-1);
if (activity > maxActivity)
{
maxActivity = activity;
mostActiveSegment = seg;
}
}
return mostActiveSegment;
}