public void TestHashDictionary() { double minOctOverlapCycles = 1.0; int inputBits = 100; int numColumns = 2048; double maxBoost = 5.0; Parameters p = Parameters.getAllDefaultParameters(); p.Set(KEY.RANDOM, new ThreadSafeRandom(42)); p.Set(KEY.INPUT_DIMENSIONS, new int[] { inputBits }); p.Set(KEY.CELLS_PER_COLUMN, 10); p.Set(KEY.COLUMN_DIMENSIONS, new int[] { numColumns }); p.Set(KEY.MAX_BOOST, maxBoost); p.Set(KEY.DUTY_CYCLE_PERIOD, 100); p.Set(KEY.MIN_PCT_OVERLAP_DUTY_CYCLES, minOctOverlapCycles); var mem = new Connections(); List <int[]> inputs = new List <int[]>(); List <int[]> outputs = new List <int[]>(); // Create random vectors with 2% sparsity for (int i = 0; i < 10; i++) { var inp = NeoCortexUtils.CreateRandomVector(inputBits, 20); var outp = NeoCortexUtils.CreateRandomVector(numColumns, 40); inputs.Add(inp); outputs.Add(outp); } bool isBoostOff = true; int learningCycles = 100; HomeostaticPlasticityController hpa = new HomeostaticPlasticityController(mem, inputs.Count * learningCycles, (isStable, numPatterns, actColAvg, seenInputs) => { }); for (int cycle = 0; cycle < 1000; cycle++) { for (int i = 0; i < inputs.Count; i++) { isBoostOff = hpa.Compute(inputs[i], outputs[i]); if (isBoostOff) { Assert.IsTrue(cycle >= learningCycles); } } } Assert.IsTrue(isBoostOff); }