Example #1
0
        protected void ResetMatrixAndTrimWeights(int NewSize)
        {
            _matrixOfDistances.ColumnCount = NewSize;
            _matrixOfDistances.Fill(0.0);

            if (NewSize > _weightedAgents.Count)
            {
                int countAdd = NewSize - _weightedAgents.Count;

                _weightedAgents.Capacity += countAdd;

                while (countAdd > 0)
                {
                    _weightedAgents.Add(new WeightOfAgent(_pool.GetAgent(), 0.0));
                    countAdd--;
                }
            }
            else if (_weightedAgents.Count > NewSize)
            {
                for (int i = NewSize; i < _weightedAgents.Count; i++)
                {
                    _pool.AddAgent(_weightedAgents[i].Agent);
                }

                _weightedAgents.RemoveRange(NewSize, _weightedAgents.Count - NewSize);
            }

            for (int i = 0; i < _weightedAgents.Count; i++)
            {
                _weightedAgents[i].Reset();
            }
        }