11class RRRAgent :
public Agent
18 PyObject *get_state(PyObject *)
override;
20 void setMinIterations(uint);
21 void setMaxIterations(uint);
22 void setMaxIterationsStagnant(uint);
23 void setNumTidyIterations(uint);
24 void setCheckStagnationBeforeSuccess(
bool);
25 void setHistoryCostDecay(
float);
26 void setHistoryCostIncrement(
float);
27 void setHistoryCostMax(
float);
28 void setRandomizeOrder(
bool);
31 uint mMinIterations{1};
32 uint mMaxIterations{256};
33 uint mMaxIterationsStagnant{1};
34 uint mNumTidyIterations{2};
35 bool mCheckStagnationBeforeSuccess{
false};
36 bool mRandomizeOrder{
true};
37 bool mPostrouteStage{
false};
38 float mHistoryCostDecay{1.0f};
39 float mHistoryCostIncrement{0.125f};
40 float mHistoryCostMax{std::numeric_limits<float>::infinity()};
41 std::vector<uint> mConnectionOrder;
42 std::mt19937 RNG{unsigned(std::chrono::system_clock::now().time_since_epoch().count())};
45 void initParameters();
46 bool routeHistoryAll();
47 bool rerouteHistoryOneByOne();
48 void unrouteHistoryAll();
53 void saveTracks(std::vector<Track>&);
54 void restoreTracks(std::vector<Track>&);
55 uint mIterationsStagnant;
58 std::vector<Track> mScoreMaxTracks;
59 std::vector<Track> mSavedTracks;
62 uint rasterize(
const Connection&, int8_t value,
bool updateHistoryCost)
const;
63 void decayHistoryCosts(
float);
73 void restoreTrack(uint i,
Track&);