ParticleSwarmOptimizationAlgorithm.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections.Generic;
  3. namespace MetaheuristicsPCL
  4. {
  5. public abstract class ParticleSwarmOptimizationAlgorithm : Algorithm
  6. {
  7. protected List<ISolution> currentSolutions;
  8. protected ISolution bestSoFarSolution;
  9. protected ISolution bestActualSolution;
  10. protected const int NB_INDIVIDUALS = 30;
  11. public override sealed void Solve(IProblem _pb, IHM _ihm)
  12. {
  13. base.Solve(_pb, _ihm);
  14. currentSolutions = new List<ISolution>();
  15. for (int i = 0; i < NB_INDIVIDUALS; i++)
  16. {
  17. ISolution newSolution = pb.RandomSolution();
  18. currentSolutions.Add(newSolution);
  19. }
  20. bestActualSolution = pb.BestSolution(currentSolutions);
  21. bestSoFarSolution = bestActualSolution;
  22. while (!Done())
  23. {
  24. UpdateGeneralVariables();
  25. UpdateSolutions();
  26. Increment();
  27. }
  28. SendResult();
  29. }
  30. protected abstract void UpdateSolutions();
  31. protected abstract void UpdateGeneralVariables();
  32. protected abstract bool Done();
  33. protected abstract void Increment();
  34. }
  35. }