18 #ifndef HLIDAC_PES_HEURISTIC_ALGORITHMS_H
19 #define HLIDAC_PES_HEURISTIC_ALGORITHMS_H
KnowledgeBase & mKB
Access to the shared data of the heuristic.
HeuristicAlgorithms(KnowledgeBase &kb, const RoboticLine &line, const PrecalculatedMapping &mapping)
Constructor makes references to the required data, i.e. the robotic cell, its mapping, and shared data of the heuristic.
The structure representing a solution found by an algorithm.
double scaleGanttToCycleTime(std::vector< ActivityModeInfo > &robotGantt) const
It scales durations of activities in such a way that the robot cycle time is met. Updated start times...
CollisionResolution resolveTheWorstCollision(const PartialSolution &ps, const OptimalTiming &ot, const Solution &s) const
It finds the worst collision, i.e. with the longest time of active collision, and returns how to reso...
std::vector< std::vector< Location * > > initializePartialSolution(PartialSolution &ps) const
It appends the fixed movements (implied from fixed locations), and optionally fastest power saving mo...
Declares LP solver which deals with partially fixed energy optimization problems created by the paral...
The structure stores how to resolve one collision between robots.
The structures and methods suitable for fast searching in the data structure of the robotic cell...
double heuristicPowerModeSelection(const OptimalTiming &ot, PartialSolution &ps, TabuList &tabuList, bool &solutionChanged) const
The sub-heuristic tries to switch from one power saving mode to another one for a location in order t...
Protected access to the shared data of the threads of the parallel heuristic.
Various data structures used by the heuristic.
A short-term memory, containing a list of forbidden moves, that mitigates the risk of cycling...
CollisionResolution resolveCollision(ActivityMode *m1, double s1, double d1, ActivityMode *m2, double s2, double d2) const
It checks whether there is a collision between two specified activities, and eventually returns how t...
const PrecalculatedMapping & mMapping
Fast searching in the data structure of the robotic cell.
Defines the optimization part of the parallel heuristic, i.e. sub-heuristics and the evaluation of tu...
A partially fixed problem, i.e. tuple.
Fixed locations, power saving modes, and movements.
const RoboticLine & mLine
Access to the robotic cell to be optimized.
const double mPenaltyMultiplier
Aggregated breakage time (see calculateBreakagePenalty) is multiplied by this constant to get the pen...
double heuristicLocationChanges(OptimalTiming &ot, PartialSolution &ps, const std::vector< std::vector< Location * >> &fixed, bool &solutionChanged) const
The sub-heuristic locally optimizes the robot paths (change locations) to reduce energy consumption...
Algo
Defining constants for different states of the heuristic.
Declares the class storing the best found solutions, tuples, and information about the heuristic perf...
OptimalTiming convert(const PartialSolution &ps, const Solution &s) const
Auxiliary method that converts a general form of the solution to the timing of the robotic cell...
Either a movement or location.
The robotic cell corresponds to an instance of this class.
The structure contains the maps for fast searching in the robotic cell.
OptimalTiming solvePartialProblem(const PartialSolution &ps, const CircuitTuple &t, Algo algo)
Employs Linear Programming to obtain energy-efficient timing for a given tuple.
Obtained timing for a partial problem.
double calculateBreakagePenalty(const std::vector< ActivityModeInfo > &robotGantt, const OptimalTiming &ot) const
It calculates the penalty for the violation of time lags and collisions.