27#ifndef WSFRIPRJOBBOARD_HPP
28#define WSFRIPRJOBBOARD_HPP
49 bool aAutoExclusiveMode =
false,
50 double aJobWindowOpenLength = 0,
51 double aBidWindowOpenLength = 0,
52 bool aJobWindowOpen =
true,
53 bool aBidWindowOpen =
true);
88 std::list<WsfRIPRJob*>
GetJobs();
92 void Update(
double aSimTime);
101 std::map<unsigned int, WsfRIPRJob*>
GetWinnerList(
const double aSimTime);
107 void AllocateJobs(
double aSimTime,
bool aForceReallocation);
127 void ClearBidsFor(
double aSimTime,
unsigned int aBidderRIPRProcId);
156 mDependencies[aDependentJobId].insert(aDependedOnJobId);
160 mDependencies[aDependentJobId].erase(aDependedOnJobId);
164 return (mDependencies[aDependentJobId].find(aDependedOnJobId) == mDependencies[aDependentJobId].
end() ?
false :
true);
166 static int DependencyCount(
int aDependentJobId) {
return static_cast<int>(mDependencies[aDependentJobId].size()); }
184 std::map<unsigned int, double>
AllocateJobsCover(
double aSimTime,
bool aStrictPriority =
false);
193 std::map<WsfRIPRJob*, int>& aCurWinners,
194 std::set<int>& aBlockedJobs,
195 std::map<unsigned int, WsfRIPRJob*>& aJobWinners,
196 std::map<unsigned int, double>& aProcProfit);
199 std::map<WsfRIPRJob*, int>& aCurWinners,
200 std::set<int>& aBlockedJobs,
201 std::map<unsigned int, WsfRIPRJob*>& aJobWinners,
202 std::map<unsigned int, double>& aProcProfit);
205 std::map<WsfRIPRJob*, int>& aCurWinners,
206 std::set<int>& aBlockedJobs,
207 std::set<int>& aKnownGood,
208 std::set<int>& aVisitedJobs);
211 std::map<unsigned int, double>
212 AllocateJobsCover(
double aSimTime,
double aOldJobBonus,
int aExtraSlots,
bool aStrictPriority =
false);
219 double mJobWindowOpenLength;
220 double mBidWindowOpenLength;
221 double mJobStickiness;
223 double mPurgeTouchTime;
225 static std::map<int, std::set<int>> mDependencies;
WsfComponentListT< T >::Iterator end(const WsfComponentListT< T > &aList)
Definition WsfComponentList.hpp:546
ut::script::Data UtScriptData
Definition WsfScriptContext.hpp:47
double simTime
Definition WsfScriptTrackClass.cpp:1880
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Definition WsfRIPRJobBoard.hpp:44
WsfSimulation * GetSimulation() const
Definition WsfRIPRJobBoard.cpp:1261
void AddJob(WsfRIPRJob *aJobPtr)
Definition WsfRIPRJobBoard.cpp:285
AllocationMode GetAllocationMode()
Definition WsfRIPRJobBoard.hpp:123
bool IsBidWindowOpen(double aSimTime)
Definition WsfRIPRJobBoard.cpp:168
bool IsJobWindowOpen(double aSimTime)
Definition WsfRIPRJobBoard.cpp:162
int PurgeUntouchedJobs()
Definition WsfRIPRJobBoard.cpp:393
void SetJobStickiness(double aStickiness)
Definition WsfRIPRJobBoard.hpp:141
bool DependencyTest(WsfRIPRJob *aJobPtr, std::map< WsfRIPRJob *, int > &aCurWinners, std::set< int > &aBlockedJobs, std::set< int > &aKnownGood, std::set< int > &aVisitedJobs)
Definition WsfRIPRJobBoard.cpp:1160
double mHighestBid
Definition WsfRIPRJobBoard.hpp:180
static int DependencyCount(int aDependentJobId)
Definition WsfRIPRJobBoard.hpp:166
double NormalizeBid(double)
Definition WsfRIPRJobBoard.cpp:1026
static void DependencyClearAll()
Definition WsfRIPRJobBoard.hpp:167
void SetOwner(const WsfRIPRProcessor *aOwnerPtr)
Definition WsfRIPRJobBoard.hpp:85
void CompletedJobsCallbacks(double simTime)
Definition WsfRIPRJobBoard.cpp:337
AllocationMode mAllocationMode
Definition WsfRIPRJobBoard.hpp:179
WsfRIPRJobBoard & operator=(const WsfRIPRJobBoard &)=delete
void AllocateJobsCoverThenSpread(double aSimTime)
Definition WsfRIPRJobBoard.cpp:891
WsfRIPRJobBoard * Clone() const override
Definition WsfRIPRJobBoard.hpp:56
void SetBidWindowOpenLength(double aBidWindowOpenLength)
Definition WsfRIPRJobBoard.hpp:133
std::list< WsfRIPRJob * > GetJobs()
Definition WsfRIPRJobBoard.cpp:279
WsfRIPRJob * GetJobByData(std::string aDataKey, UtScriptData aDataValue)
Definition WsfRIPRJobBoard.cpp:996
WsfRIPRJobBoard()
Definition WsfRIPRJobBoard.cpp:52
double PurgeTouchTime()
Definition WsfRIPRJobBoard.hpp:149
std::list< WsfRIPRJob * > mJobs
Definition WsfRIPRJobBoard.hpp:175
const WsfRIPRProcessor * GetOwner()
Definition WsfRIPRJobBoard.hpp:86
void SetPurgeTouchTime(double aPurgeTime)
Definition WsfRIPRJobBoard.hpp:148
bool mJobPrioritiesChanged
Definition WsfRIPRJobBoard.hpp:176
void ClearBidsFor(double aSimTime, unsigned int aBidderRIPRProcId)
Definition WsfRIPRJobBoard.cpp:956
void AllocateJobs(double aSimTime, bool aForceReallocation)
Definition WsfRIPRJobBoard.cpp:455
bool DebugEnabled() const
Returns 'true' if debugging is enabled for this instance.
Definition WsfRIPRJobBoard.cpp:152
std::map< unsigned int, WsfRIPRJob * > mJobWinners
Definition WsfRIPRJobBoard.hpp:177
void SetJobWindowOpenLength(double aJobWindowOpenLength)
Definition WsfRIPRJobBoard.hpp:132
WsfRIPRJob * GetJobById(int aJobId)
Definition WsfRIPRJobBoard.cpp:983
void AllocateJobsGreedy(double aSimTime)
Definition WsfRIPRJobBoard.cpp:705
void UpdateWindows(double aSimTime)
Update job and bid window status if necessary.
Definition WsfRIPRJobBoard.cpp:176
static std::set< int > & DependenciesForJob(int aJobId)
Definition WsfRIPRJobBoard.hpp:153
static bool DependencyCheck(int aDependentJobId, int aDependedOnJobId)
Definition WsfRIPRJobBoard.hpp:162
int mAllocationAttempts
Definition WsfRIPRJobBoard.hpp:178
void Update(double aSimTime)
Purge deleted jobs and bidders and reprioritize jobs if necessary.
Definition WsfRIPRJobBoard.cpp:248
double mLowestBid
Definition WsfRIPRJobBoard.hpp:181
void SetBidWindowOpen(bool aOpen)
Sets mBidWindowOpen to aOpen; should be the ONLY place this value is set.
Definition WsfRIPRJobBoard.cpp:232
static void DependencyRemove(int aDependentJobId, int aDependedOnJobId)
Definition WsfRIPRJobBoard.hpp:158
void RemoveJob(WsfRIPRJob *aJobPtr)
Definition WsfRIPRJobBoard.cpp:300
void SetAllocationMode(AllocationMode aMode)
Definition WsfRIPRJobBoard.hpp:125
bool mAutoExclusiveMode
Definition WsfRIPRJobBoard.hpp:182
ripr::RIPRWinnerMap GetWinnerListAsIds() const
Definition WsfRIPRJobBoard.cpp:1238
AllocationMode
Definition WsfRIPRJobBoard.hpp:115
@ Spread
Definition WsfRIPRJobBoard.hpp:116
@ CoverThenSpread
Definition WsfRIPRJobBoard.hpp:119
@ Greedy
Definition WsfRIPRJobBoard.hpp:117
@ CoverThenGreedy
Definition WsfRIPRJobBoard.hpp:118
@ StrictPriority
Definition WsfRIPRJobBoard.hpp:120
void SetJobWindowOpen(bool aOpen)
Sets mJobWindowOpen to aOpen; should be the ONLY place this value is set.
Definition WsfRIPRJobBoard.cpp:226
const WsfRIPRProcessor * mOwnerPtr
Definition WsfRIPRJobBoard.hpp:173
static void DependencyAdd(int aDependentJobId, int aDependedOnJobId)
Definition WsfRIPRJobBoard.hpp:154
std::map< unsigned int, double > AllocateJobsCover(double aSimTime, bool aStrictPriority=false)
Definition WsfRIPRJobBoard.cpp:519
void SetOwner(WsfRIPRProcessor *aOwnerPtr)
Definition WsfRIPRJobBoard.hpp:143
WsfRIPRManager * GetManager() const
Definition WsfRIPRJobBoard.cpp:1266
void AllocateJobsCoverThenGreedy(double aSimTime)
Definition WsfRIPRJobBoard.cpp:792
bool BlockJobsWithFailedDependencies(std::list< WsfRIPRJob * > &aJobs, std::map< WsfRIPRJob *, int > &aCurWinners, std::set< int > &aBlockedJobs, std::map< unsigned int, WsfRIPRJob * > &aJobWinners, std::map< unsigned int, double > &aProcProfit)
check aJobs and block single highest priority job that has failed or blocked dependencies
Definition WsfRIPRJobBoard.cpp:1106
static bool CompareJobPriorities(WsfRIPRJob *firstPtr, WsfRIPRJob *secondPtr)
Definition WsfRIPRJobBoard.cpp:273
bool BlockJobsWithoutMinWinners(std::list< WsfRIPRJob * > &aJobs, std::map< WsfRIPRJob *, int > &aCurWinners, std::set< int > &aBlockedJobs, std::map< unsigned int, WsfRIPRJob * > &aJobWinners, std::map< unsigned int, double > &aProcProfit)
check aJobs and block single highest priority unblocked job without the min number of winners
Definition WsfRIPRJobBoard.cpp:1053
void SetJobWon(const unsigned int aBidder, WsfRIPRJob *aJobPtr)
SetJobWon registers a job as being won and notifies the observer class.
Definition WsfRIPRJobBoard.cpp:1037
void SetAutoExclusiveMode(bool aAutoExclusiveMode)
Definition WsfRIPRJobBoard.hpp:131
static std::map< int, std::set< int > > DependenciesAll()
Definition WsfRIPRJobBoard.hpp:152
void UpdateMinMaxBids(double aBid)
Definition WsfRIPRJobBoard.cpp:1012
int DeleteCompletedJobs()
Definition WsfRIPRJobBoard.cpp:365
void RemoveAllJobs()
Definition WsfRIPRJobBoard.cpp:316
std::map< unsigned int, WsfRIPRJob * > GetWinnerList(const double aSimTime)
Definition WsfRIPRJobBoard.cpp:1249
void SetDirtyJobs()
Definition WsfRIPRJobBoard.hpp:145
WsfRIPRJob * JobFor(double aSimTime, unsigned int aBidderRIPRProcId)
Definition WsfRIPRJobBoard.cpp:940
~WsfRIPRJobBoard() override
Definition WsfRIPRJobBoard.cpp:141
int PurgeDeadBidders(double aSimTime)
Definition WsfRIPRJobBoard.cpp:421
Definition WsfRIPRJob.hpp:57
Definition WsfRIPRManager.hpp:71
Definition WsfRIPRProcessor.hpp:45
The main controller for a simulation.
Definition WsfSimulation.hpp:109
std::map< unsigned int, int > RIPRWinnerMap
Definition WsfRIPRCommon.hpp:31