Projet du cours MPRI 2.24.2 "Résolution de problèmes d'optimisation avec heuristiques de recherche" : https://wikimpri.dptinfo.ens-cachan.fr/doku.php?id=cours:c-2-24-2
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

  1. #ifndef ANALYSIS_H_INCLUDED
  2. #define ANALYSIS_H_INCLUDED
  3. #include <iostream>
  4. #include <chrono>
  5. #include <vector>
  6. #include "SearchHeuristic.h"
  7. std::chrono::time_point<std::chrono::system_clock> start_chrono() {
  8. return std::chrono::system_clock::now();
  9. }
  10. std::chrono::time_point<std::chrono::system_clock> stop_chrono() {
  11. return std::chrono::system_clock::now();
  12. }
  13. int interval_chrono(std::chrono::time_point<std::chrono::system_clock> start, std::chrono::time_point<std::chrono::system_clock> stop) {
  14. return std::chrono::duration_cast<std::chrono::milliseconds>(stop-start).count();
  15. }
  16. struct Statistic {
  17. Statistic(double avg, double mini, double maxi, double med, double dev) :
  18. average{avg}, minimal{mini}, maximal{maxi}, median{med}, deviation{dev} {};
  19. double average;
  20. double minimal;
  21. double maximal;
  22. double median;
  23. double deviation;
  24. };
  25. Statistic avg_calls(SearchHeuristic& algo, MasterMind problem, int nb=100) {
  26. std::vector<double> data;
  27. Statistic stat(0,0,0,0,0);
  28. for(int i=0; i<nb; i++) {
  29. algo.set_problem(&problem);
  30. Result res = algo.run();
  31. delete[] res.solution;
  32. data.push_back(res.nb_calls);
  33. stat.average += res.nb_calls;
  34. if(i == 0) {
  35. stat.minimal = res.nb_calls;
  36. stat.maximal = res.nb_calls;
  37. }
  38. if(res.nb_calls > stat.maximal)
  39. stat.maximal = res.nb_calls;
  40. if(res.nb_calls < stat.minimal)
  41. stat.minimal = res.nb_calls;
  42. }
  43. stat.average /= nb;
  44. for(int i=0; i<nb; i++)
  45. stat.deviation += pow(data[i] - stat.average, 2);
  46. stat.deviation = sqrt(stat.deviation/nb);
  47. return stat;
  48. }
  49. #endif // ANALYSIS_H_INCLUDED