Tentative d'implémentation d'optimisation

Je ne suis pas sûr d'avoir très bien compris le sujet, dans le doute, j'ai mit un Random solver
This commit is contained in:
2025-10-20 16:06:55 +02:00
parent 2dc22d636e
commit f9f950b860
33 changed files with 42667 additions and 97 deletions

24
test/test_optim.cpp Normal file → Executable file
View File

@@ -2,6 +2,7 @@
#include <artis-star/kernel/pdevs/Coordinator.hpp>
#include <artis-star/kernel/pdevs/GraphManager.hpp>
#include <iostream>
#include <random>
#include "FactoryGraphManager.hpp"
#include "Machine.hpp"
@@ -221,9 +222,26 @@ private:
int main() {
Evaluator evaluator;
for (unsigned int i = 0; i < iteration_number; ++i) {
Solution solution{make_po_order(), make_capacities()};
unsigned int best_score = 99999;
std::cout << evaluator.evaluate(solution)[0] << " " << evaluator.evaluate(solution)[1] << std::endl;
for (unsigned int i = 0; i < iteration_number; ++i) {
std::random_device rd;
std::mt19937 generator(rd());
std::vector<unsigned int> liste_po = make_po_order();
std::shuffle(liste_po.begin(), liste_po.end(), generator); // Random solver, pas forcément le meilleur, mais c'est fonctionnel \_(ツ)_/¯
Solution solution{liste_po, make_capacities()}; // Fixer la capacité des stocks à l'infini ? Le but n'est pas de réduire cette variable ?
unsigned int score = evaluator.evaluate(solution)[0];
std::cout << score << " " << evaluator.evaluate(solution)[1] << std::endl;
if (score < best_score)
{
// Diminution du score, je garde cette solution
best_score = score;
std::cout << "^ EST UN NOUVEAU SCORE MINIMAL ^" << std::endl;
}
}
std::cout << "Score minimal : " << best_score <<std::endl;
}