9#include <dpsim/SequentialScheduler.h>
19#include <unordered_map>
23 const Edges &outEdges) {
24 if (mOutMeasurementFile.size() != 0)
25 Scheduler::initMeasurements(tasks);
28 for (
auto task : mSchedule)
29 SPDLOG_LOGGER_INFO(
mSLog,
"{}", task->toString());
33 if (mOutMeasurementFile.size() != 0) {
34 for (
auto task : mSchedule) {
35 auto start = std::chrono::steady_clock::now();
36 task->execute(time, timeStepCount);
37 auto end = std::chrono::steady_clock::now();
41 for (
auto it : mSchedule) {
42 it->execute(time, timeStepCount);
48 if (mOutMeasurementFile.size() != 0)
void writeMeasurements(CPS::String filename)
Write measurement data to file.
void topologicalSort(const CPS::Task::List &tasks, const Edges &inEdges, const Edges &outEdges, CPS::Task::List &sortedTasks)
Simple topological sort, filtering out tasks that do not need to be executed.
std::unordered_map< CPS::Task::Ptr, std::deque< CPS::Task::Ptr > > Edges
void updateMeasurement(CPS::Task *task, TaskTime time)
CPS::Logger::Log mSLog
Logger.
void stop()
Called on simulation stop to reliably clean up e.g. running helper threads.
void step(Real time, Int timeStepCount)
Performs a single simulation step.
void createSchedule(const CPS::Task::List &tasks, const Edges &inEdges, const Edges &outEdges)
Creates the schedule for the given dependency graph.