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
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

  1. #ifndef SCRIPTS_H_INCLUDED
  2. #define SCRIPTS_H_INCLUDED
  3. #include <vector>
  4. #include <fstream>
  5. #include "analysis/analysis.h"
  6. #include "analysis/ParameterOptimizer.h"
  7. class CrossoverProbaOptimizer : public ParameterOptimizer {
  8. public:
  9. CrossoverProbaOptimizer(int n_init, double obj, std::default_random_engine& randomizer) : ParameterOptimizer(randomizer), n_initial{n_init}, objective{obj} {};
  10. SearchHeuristic* get_context(unsigned int i, double parameter, std::default_random_engine& randomizer) {
  11. GA* algo = new GA(5, 5, PLUS, 1./(n_initial+i), parameter, UNIFORM_CROSSOVER, GA_V1, randomizer);
  12. MasterMind* mm = new MasterMind(n_initial+i, n_initial+i, randomizer);
  13. algo->set_problem(mm);
  14. algo->set_objective(objective);
  15. return algo;
  16. }
  17. std::string display_context(unsigned int context) {
  18. std::stringstream ss;
  19. ss << "n=" << n_initial+context;
  20. return ss.str();
  21. }
  22. std::string get_context_for_csvfile(unsigned int num_context) {
  23. return std::to_string(n_initial+num_context);
  24. }
  25. private:
  26. int n_initial;
  27. double objective;
  28. };
  29. void script_crossover_proba_optim(std::default_random_engine& randomizer) {
  30. std::string namefile = "crossover-proba.csv";
  31. std::ofstream savefile(namefile);
  32. {
  33. int n_init=3, n_final=21;
  34. double p_init=0.01, p_final=0.99, p_step=0.02;
  35. CrossoverProbaOptimizer cpo(n_init, 1.00, randomizer);
  36. cpo.set_nb_contexts(n_final - n_init);
  37. cpo.set_study_interval(p_init, p_final, p_step);
  38. cpo.add_test_wave(40, 2.5419828669, 0);
  39. cpo.add_test_wave(400, 2.4429370465, 1);
  40. cpo.add_test_wave(2000, 2.4344837209, 2);
  41. cpo.save_run(namefile);
  42. cpo.run();
  43. }{
  44. int n_init=21, n_final=40;
  45. double p_init=0.01, p_final=0.3, p_step=0.02;
  46. CrossoverProbaOptimizer cpo(n_init, 1.00, randomizer);
  47. cpo.set_nb_contexts(n_final - n_init);
  48. cpo.set_study_interval(p_init, p_final, p_step);
  49. cpo.add_test_wave(80, 2.4860491262, 0);
  50. cpo.add_test_wave(200, 2.4535822177, 1);
  51. cpo.add_test_wave(400, 2.4429370465, 2);
  52. cpo.save_run(namefile);
  53. cpo.run();
  54. }
  55. }
  56. #endif // SCRIPTS_H_INCLUDED