33// Authors: Patrick Brosi <brosi@informatik.uni-freiburg.de>
44
55#include < algorithm>
6+ #include < random>
7+ #include < chrono>
68#include < unordered_map>
9+
710#include " loom/optim/ExhaustiveOptimizer.h"
811#include " shared/linegraph/Line.h"
912#include " util/log/Log.h"
@@ -14,6 +17,8 @@ using loom::optim::ExhaustiveOptimizer;
1417using shared::linegraph::Line;
1518using shared::rendergraph::HierarOrderCfg;
1619
20+ using util::DEBUG;
21+
1722// _____________________________________________________________________________
1823double ExhaustiveOptimizer::optimizeComp (OptGraph* og,
1924 const std::set<OptNode*>& g,
@@ -127,6 +132,9 @@ void ExhaustiveOptimizer::initialConfig(const std::set<OptNode*>& g,
127132// _____________________________________________________________________________
128133void ExhaustiveOptimizer::initialConfig (const std::set<OptNode*>& g,
129134 OptOrderCfg* cfg, bool sorted) const {
135+ auto seed = std::chrono::system_clock::now ().time_since_epoch ().count ();
136+ auto randEng = std::default_random_engine (seed);
137+
130138 for (OptNode* n : g) {
131139 for (OptEdge* e : n->getAdjList ()) {
132140 if (e->getFrom () != n) continue ;
@@ -140,7 +148,7 @@ void ExhaustiveOptimizer::initialConfig(const std::set<OptNode*>& g,
140148 if (sorted) {
141149 std::sort ((*cfg)[e].begin (), (*cfg)[e].end ());
142150 } else {
143- std::random_shuffle ((*cfg)[e].begin (), (*cfg)[e].end ());
151+ std::shuffle ((*cfg)[e].begin (), (*cfg)[e].end (), randEng );
144152 }
145153 }
146154 }
0 commit comments