Urbanisme  1.3.0
Projet visant à l'optimisation du placement de routes sur une surface. https://flodavid.github.io/Urbanisme
resolution.h
1 #ifndef RESOLUTION_H
2 #define RESOLUTION_H
3 
4 #include <list>
5 #include <fstream>
6 #include <sstream>
7 
8 #include "Engine/parameters.h"
9 #include "evaluation.h"
10 #include "fieldevaluation.h"
11 #include "localsearch.h"
12 
19 {
20 private:
21  Parameters params;
22 
23  LocalSearch localSearch;
24 
25  std::list<FieldEvaluation> pareto_evals;
26 
27  // Calulated data
28  unsigned nbCells;
29 
30  // Others attributes
31  std::ostringstream evaluations_stream;
32 
33 public:
34  /* Constructeurs */
44  Resolution(unsigned nbCols, unsigned nbRows, unsigned serveDistance, unsigned roadsWidth, std::list<Coordinates>& ins_outs);
45 
51  Resolution(const Field& field, const Parameters& _params);
52 
53  ~Resolution();
54 
55  /* Getters */
60  inline size_t get_nb_not_dominated() const { return pareto_evals.size(); }
61 
62  /* Setters */
63  void changeWorkField(Field* _field, bool newField);
64 
65 private:
69  std::ofstream *openEvaluationsFile(std::string filename_end = "") const;
73  void emptyEvaluationsFile();
74 
75 public:
76  /* Evaluations */
81 
88  bool isNotDominated(const Evaluation &eval);
89 
96  int spread(const Evaluation &eval);
97 
98  /* Recherche locale */
103  FieldEvaluation *localSearchUsableObjective(unsigned maxRoadsToAdd = 10);
108  FieldEvaluation* localSearchAccessObjective(unsigned maxPathsToAdd = 1);
109 
110  /* Résolution */
116 
117  /* Export */
121  void writeDominatedEvaluation(const Evaluation& eval);
127  bool trySaveParetoToTxt(std::string fileName) const;
133  std::string drawParetoJpeg(std::string dataName) const;
134 };
135 
136 #endif // RESOLUTION_H
void evaluateBothObjectives()
Definition: resolution.cpp:97
FieldEvaluation * localSearchAccessObjective(unsigned maxPathsToAdd=1)
Definition: resolution.cpp:217
La classe permettant de stocker une surface et de calculer et mettre à jour son évaluation.
Definition: fieldevaluation.h:12
Resolution(unsigned nbCols, unsigned nbRows, unsigned serveDistance, unsigned roadsWidth, std::list< Coordinates > &ins_outs)
Definition: resolution.cpp:19
Représente les paramètres du problèmes.
Definition: parameters.h:6
Classe représentant la surface -le terrain- et contenant les opérations que l&#39;on effectue sur celui-c...
Definition: field.h:15
void writeDominatedEvaluation(const Evaluation &eval)
Definition: resolution.cpp:278
bool isNotDominated(const Evaluation &eval)
Definition: resolution.cpp:145
bool trySaveParetoToTxt(std::string fileName) const
trySaveParetoToTxt
Definition: resolution.cpp:283
La classe effectuant l&#39;ensemble de la résolution et le front Pareto Elle contient l&#39;intégralité des d...
Definition: resolution.h:18
Classe chargée de travailler sur les données en entrée du problème pour trouver des solution réalisab...
Definition: evaluation.h:19
La classe chargée d&#39;effectuer des recherches locales sur les différentes solutions TODO ajouter les e...
Definition: localsearch.h:12
int spread(const Evaluation &eval)
Definition: resolution.cpp:161
std::string drawParetoJpeg(std::string dataName) const
Definition: resolution.cpp:311
FieldEvaluation * initResolution()
Definition: resolution.cpp:259
void changeWorkField(Field *_field, bool newField)
Definition: resolution.cpp:53
FieldEvaluation * localSearchUsableObjective(unsigned maxRoadsToAdd=10)
Definition: resolution.cpp:192
size_t get_nb_not_dominated() const
Definition: resolution.h:60