17#ifndef DAISI_CPPS_LOGICAL_ALGORITHMS_ASSIGNMENT_LAYERED_PRECEDENCE_GRAPH_H_
18#define DAISI_CPPS_LOGICAL_ALGORITHMS_ASSIGNMENT_LAYERED_PRECEDENCE_GRAPH_H_
23#include "cpps/common/cpps_logger_ns3.h"
24#include "datastructure/directed_graph.tpp"
25#include "layered_precedence_graph_components.h"
26#include "material_flow/model/material_flow.h"
27#include "utils/structure_helpers.h"
43 const std::string &connection_string);
67 util::Duration getEarliestValidStartTime(
const std::string &task_uuid)
const;
69 util::Duration getLatestFinishTime(
const std::string &task_uuid)
const;
93 bool isTaskFree(
const std::string &task_uuid)
const;
95 std::vector<material_flow::Task> getTasks()
const;
104 void updateLayersSecondToFree(
const LPCVertex &t);
108 void updateLayersHiddenToSecond(
const LPCVertex &t_dash);
115 LPCVertex getVertex(
const std::string &task_uuid)
const;
Helper class to implement the pIA algorithm. A directed graph is layered into a free,...
Definition layered_precedence_graph.h:40
void setTaskScheduled(const std::string &task_uuid)
Setting the scheduled flag of a task.
Definition layered_precedence_graph.cpp:311
void setLatestFinishTime(const std::string &task_uuid, const util::Duration &time)
Setting the latest finish time, in pIA represented as F[t], of a task.
Definition layered_precedence_graph.cpp:245
bool isFreeTaskScheduled(const std::string &task_uuid) const
Checking whether a free task has already been scheduled in this iteration before the layers get updat...
Definition layered_precedence_graph.cpp:327
bool areAllTasksScheduled() const
Checks whether all tasks are on the scheduled layer. The scheduled flag is not considered in this.
Definition layered_precedence_graph.cpp:261
bool areAllFreeTasksScheduled() const
Checks whether for all free tasks the scheduled flag is set. If yes, this means that the iteration is...
Definition layered_precedence_graph.cpp:267
std::vector< material_flow::Task > getAuctionableTasks() const
In this modification of pIA we do not consider prioritizations yet. Therefore, all free tasks are auc...
Definition layered_precedence_graph.cpp:198
void setEarliestValidStartTime(const std::string &task_uuid, const util::Duration &time)
Setting the earliest valid start time, in pIA represented as PC[t], of a task.
Definition layered_precedence_graph.cpp:229
void next()
Taking the next step in the algorithm. Updating the graph by assuming that all tasks of the free laye...
Definition layered_precedence_graph.cpp:123
Definition directed_graph.h:27
Modified Round Robin Algorithm that centrally assigns tasks of incoming material flows to the corresp...
Definition algorithm_config.h:22
PrecedenceGraphLayer
Enum to represent the different layers tasks can be on in this precedence graph. The free layer is al...
Definition layered_precedence_graph_components.h:32
Definition layered_precedence_graph_components.h:34