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(); } }