The last time I really tested my SP implementation I was satisfied with how my boosting mechanism seemed to be working.
So, the way you are talking about the active and overlap duty cycles makes it sound like they are binary values. Such as in your visualization here: yellow=1, white=0? The duty cycle data structures in my code are sliding averages of the last activityCycleWindow input patterns, which right now I have set to 100. A 1 is added to the active duty cycle list if the column is active in the current timestep, 0 otherwise. Same for the overlap duty cycle if the overlap meets a complexity threshold. If this sliding average of the last 100 time steps is beneath a certain threshold, then I linearly increase the activity or overlap boost value for the column.
Hopefully that makes sense.