Plusieurs PO peuvent arriver au Sink

This commit is contained in:
2025-10-13 14:24:27 +02:00
parent 494d4dfde4
commit afae863f68
11 changed files with 28760 additions and 28752 deletions

View File

@@ -25,6 +25,7 @@
*/
#include "PoolRouter.hpp"
#include "Sink.hpp"
namespace artis::factory {
@@ -47,7 +48,15 @@ void PoolRouter::dint(const Time & /* t */) {
} else if ((*it)->current_operation().get_type() == CHANGE_POOL_TYPE) {
_available_machines[(*it)->previous_operation()->get_loc_index()] = true;
} else {
_available_machines[(*it)->current_operation().get_loc_index()] = false;
//_available_machines[(*it)->current_operation().get_loc_index()] = false;
auto idx = (*it)->current_operation().get_loc_index();
// Modifié pour gérer le Sink
if (idx == _available_machines.size()-1) {// Par simplicité, je considère que la dernière machine connectée est le Sink
_available_machines[idx] = true;// Et si idx est le dernier index, alors cette "machine" reste disponible
} else {
_available_machines[idx] = false;
}
}
_pending_po.erase(it);
if (std::find_if(_pending_po.cbegin(), _pending_po.cend(), [this](const auto &e) {
@@ -150,4 +159,4 @@ PoolRouter::ProductionOrders::const_iterator PoolRouter::next_po() const {
}
}
} // namespace artis::factory
} // namespace artis::factory