Skip to content

Commit fb7cf9a

Browse files
committed
Change seed behavior
1 parent 55097da commit fb7cf9a

File tree

4 files changed

+36
-34
lines changed

4 files changed

+36
-34
lines changed

src/dsm/headers/Dynamics.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ namespace dsm {
132132
public:
133133
/// @brief Construct a new Dynamics object
134134
/// @param graph The graph representing the network
135-
Dynamics(Graph& graph, const unsigned int seed);
135+
Dynamics(Graph& graph, std::optional<unsigned int> seed);
136136

137137
virtual void setAgentSpeed(Size agentId) = 0;
138138
virtual void evolve(bool reinsert_agents = false) = 0;
@@ -283,12 +283,14 @@ namespace dsm {
283283

284284
template <typename delay_t>
285285
requires(is_numeric_v<delay_t>)
286-
Dynamics<delay_t>::Dynamics(Graph& graph, const unsigned int seed)
286+
Dynamics<delay_t>::Dynamics(Graph& graph, std::optional<unsigned int> seed)
287287
: m_graph{std::move(graph)},
288288
m_time{0},
289289
m_previousSpireTime{0},
290290
m_generator{std::random_device{}()} {
291-
m_generator.seed(seed);
291+
if (seed.has_value()) {
292+
m_generator.seed(seed.value());
293+
}
292294
}
293295

294296
template <typename delay_t>

src/dsm/headers/FirstOrderDynamics.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace dsm {
1111
public:
1212
/// @brief Construct a new First Order Dynamics object
1313
/// @param graph, The graph representing the network
14-
FirstOrderDynamics(Graph& graph, const unsigned int seed = 69)
14+
FirstOrderDynamics(Graph& graph, std::optional<unsigned int> seed)
1515
: RoadDynamics<delay_t>(graph, seed), m_speedFluctuationSTD{0.} {};
1616
/// @brief Set the speed of an agent
1717
/// @param agentId The id of the agent

src/dsm/headers/RoadDynamics.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ namespace dsm {
8282
public:
8383
/// @brief Construct a new RoadDynamics object
8484
/// @param graph The graph representing the network
85-
RoadDynamics(Graph& graph, const unsigned int seed);
85+
RoadDynamics(Graph& graph, std::optional<unsigned int> seed);
8686

8787
/// @brief Set the minim speed rateo, i.e. the minim speed with respect to the speed limit
8888
/// @param minSpeedRateo The minim speed rateo
@@ -151,7 +151,7 @@ namespace dsm {
151151

152152
template <typename delay_t>
153153
requires(is_numeric_v<delay_t>)
154-
RoadDynamics<delay_t>::RoadDynamics(Graph& graph, const unsigned int seed)
154+
RoadDynamics<delay_t>::RoadDynamics(Graph& graph, std::optional<unsigned int> seed)
155155
: Dynamics<delay_t>(graph, seed),
156156
m_previousOptimizationTime{0},
157157
m_errorProbability{0.},

test/Test_dynamics.cpp

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ TEST_CASE("Dynamics") {
5454
graph.importMatrix("./data/matrix.dsm");
5555
graph.buildAdj();
5656
WHEN("A dynamics object is created") {
57-
Dynamics dynamics(graph);
57+
Dynamics dynamics{graph, 69};
5858
THEN("The node and the street sets are the same") {
5959
CHECK_EQ(dynamics.graph().nNodes(), 3);
6060
CHECK_EQ(dynamics.graph().nEdges(), 4);
@@ -72,22 +72,22 @@ TEST_CASE("Dynamics") {
7272
}
7373
WHEN("We transform a node into a traffic light and create the dynamics") {
7474
auto& tl = graph.makeTrafficLight(0, 2);
75-
Dynamics dynamics(graph);
75+
Dynamics dynamics{graph, 69};
7676
THEN("The node is a traffic light") {
7777
CHECK(dynamics.graph().nodeSet().at(0)->isTrafficLight());
7878
CHECK_EQ(tl.cycleTime(), 2);
7979
}
8080
}
8181
WHEN("We transform a node into a roundabout and create the dynamics") {
8282
graph.makeRoundabout(0);
83-
Dynamics dynamics(graph);
83+
Dynamics dynamics{graph, 69};
8484
THEN("The node is a roundabout") {
8585
CHECK(dynamics.graph().nodeSet().at(0)->isRoundabout());
8686
}
8787
}
8888
WHEN("We transorm a street into a spire and create the dynamcis") {
8989
graph.makeSpireStreet(8);
90-
Dynamics dynamics(graph);
90+
Dynamics dynamics{graph, 69};
9191
THEN("The street is a spire") {
9292
CHECK(dynamics.graph().streetSet().at(8)->isSpire());
9393
}
@@ -98,7 +98,7 @@ TEST_CASE("Dynamics") {
9898
GIVEN("A dynamics object and a destination node") {
9999
auto graph = Graph{};
100100
graph.importMatrix("./data/matrix.dat");
101-
Dynamics dynamics{graph};
101+
Dynamics dynamics{graph, 69};
102102
WHEN("We add a span of destination nodes") {
103103
std::array<uint32_t, 3> nodes{0, 1, 2};
104104
dynamics.setDestinationNodes(nodes);
@@ -122,7 +122,7 @@ TEST_CASE("Dynamics") {
122122
GIVEN("A dynamics object, a source node and a destination node") {
123123
auto graph = Graph{};
124124
graph.importMatrix("./data/matrix.dsm");
125-
Dynamics dynamics{graph};
125+
Dynamics dynamics{graph, 69};
126126
dynamics.addItinerary(Itinerary{2, 2});
127127
WHEN("We add the agent") {
128128
dynamics.addAgent(0, 2);
@@ -150,7 +150,7 @@ TEST_CASE("Dynamics") {
150150
GIVEN("A dynamics object and an itinerary") {
151151
auto graph = Graph{};
152152
graph.importMatrix("./data/matrix.dsm");
153-
Dynamics dynamics(graph);
153+
Dynamics dynamics{graph, 69};
154154
WHEN("We add agents without adding itineraries") {
155155
THEN("An exception is thrown") {
156156
CHECK_THROWS_AS(dynamics.addAgentsUniformly(1), std::invalid_argument);
@@ -174,7 +174,7 @@ TEST_CASE("Dynamics") {
174174
GIVEN("A dynamics object and many itineraries") {
175175
auto graph = Graph{};
176176
graph.importMatrix("./data/matrix.dsm");
177-
Dynamics dynamics(graph);
177+
Dynamics dynamics{graph, 69};
178178
Itinerary Itinerary1{0, 2}, Itinerary2{1, 1};
179179
dynamics.addItinerary(Itinerary1);
180180
dynamics.addItinerary(Itinerary2);
@@ -229,7 +229,7 @@ TEST_CASE("Dynamics") {
229229
GIVEN("A graph object") {
230230
auto graph = Graph{};
231231
graph.importMatrix("./data/matrix.dat");
232-
Dynamics dynamics{graph};
232+
Dynamics dynamics{graph, 69};
233233
WHEN("We add one agent for existing itinerary") {
234234
std::unordered_map<uint32_t, double> src{{0, 1.}};
235235
std::unordered_map<uint32_t, double> dst{{2, 1.}};
@@ -283,7 +283,7 @@ TEST_CASE("Dynamics") {
283283
GIVEN("A dynamics object and one itinerary") {
284284
auto graph = Graph{};
285285
graph.importMatrix("./data/matrix.dsm");
286-
Dynamics dynamics{graph};
286+
Dynamics dynamics{graph, 69};
287287
Itinerary itinerary{0, 2};
288288
dynamics.addItinerary(itinerary);
289289
WHEN("We add an agent with itinerary 1") {
@@ -315,7 +315,7 @@ TEST_CASE("Dynamics") {
315315
Graph graph2;
316316
graph2.addStreets(s);
317317
graph2.buildAdj();
318-
Dynamics dynamics{graph2};
318+
Dynamics dynamics{graph2, 69};
319319
Itinerary itinerary{0, 1};
320320
dynamics.addItinerary(itinerary);
321321
dynamics.updatePaths();
@@ -338,7 +338,7 @@ TEST_CASE("Dynamics") {
338338
Graph graph2;
339339
graph2.addStreets(s1);
340340
graph2.buildAdj();
341-
Dynamics dynamics{graph2};
341+
Dynamics dynamics{graph2, 69};
342342
WHEN("We add a topologically impossible itinerary") {
343343
Itinerary itinerary{0, 0};
344344
dynamics.addItinerary(itinerary);
@@ -354,7 +354,7 @@ TEST_CASE("Dynamics") {
354354
Graph graph2;
355355
graph2.addStreets(s1, s2, s3);
356356
graph2.buildAdj();
357-
Dynamics dynamics{graph2};
357+
Dynamics dynamics{graph2, 69};
358358
Itinerary itinerary{0, 2};
359359
WHEN("We add an itinerary and update the paths") {
360360
dynamics.addItinerary(itinerary);
@@ -389,7 +389,7 @@ TEST_CASE("Dynamics") {
389389
Itinerary it2{1, 118};
390390
Itinerary it3{2, 118};
391391
Itinerary it4{3, 118};
392-
Dynamics dynamics{graph2};
392+
Dynamics dynamics{graph2, 69};
393393
dynamics.addItinerary(it1);
394394
dynamics.addItinerary(it2);
395395
dynamics.addItinerary(it3);
@@ -414,7 +414,7 @@ TEST_CASE("Dynamics") {
414414
Graph graph;
415415
graph.addStreets(s1, s2, s3, s4);
416416
graph.buildAdj();
417-
Dynamics dynamics{graph};
417+
Dynamics dynamics{graph, 69};
418418
Itinerary itinerary{0, 2};
419419
dynamics.addItinerary(itinerary);
420420
WHEN("We update the paths") {
@@ -450,7 +450,7 @@ TEST_CASE("Dynamics") {
450450
Graph graph;
451451
graph.addStreets(s1, s2, s3);
452452
graph.buildAdj();
453-
Dynamics dynamics{graph};
453+
Dynamics dynamics{graph, 69};
454454
Itinerary itinerary{0, 2};
455455
dynamics.addItinerary(itinerary);
456456
dynamics.updatePaths();
@@ -484,7 +484,7 @@ TEST_CASE("Dynamics") {
484484
Graph graph2;
485485
graph2.addStreets(s1, s2);
486486
graph2.buildAdj();
487-
Dynamics dynamics{graph2};
487+
Dynamics dynamics{graph2, 69};
488488
Itinerary itinerary{0, 1};
489489
dynamics.addItinerary(itinerary);
490490
dynamics.updatePaths();
@@ -511,7 +511,7 @@ TEST_CASE("Dynamics") {
511511
Graph graph2;
512512
graph2.addStreets(s1, s2);
513513
graph2.buildAdj();
514-
Dynamics dynamics{graph2};
514+
Dynamics dynamics{graph2, 69};
515515
Itinerary itinerary{0, 1};
516516
dynamics.addItinerary(itinerary);
517517
dynamics.updatePaths();
@@ -554,7 +554,7 @@ TEST_CASE("Dynamics") {
554554
graph2.addNode(std::make_unique<TrafficLight>(tl));
555555
graph2.addStreets(s1, s2, s3, s4);
556556
graph2.buildAdj();
557-
Dynamics dynamics{graph2};
557+
Dynamics dynamics{graph2, 69};
558558
Itinerary itinerary{0, 2};
559559
dynamics.addItinerary(itinerary);
560560
dynamics.updatePaths();
@@ -619,7 +619,7 @@ TEST_CASE("Dynamics") {
619619
nodes.at(4)->setCoords({1., 0.});
620620
graph2.buildStreetAngles();
621621

622-
Dynamics dynamics{graph2};
622+
Dynamics dynamics{graph2, 69};
623623

624624
std::vector<uint32_t> destinationNodes{0, 2, 3, 4};
625625
dynamics.setDestinationNodes(destinationNodes);
@@ -690,7 +690,7 @@ TEST_CASE("Dynamics") {
690690
nodes.at(4)->setCoords({1., 0.});
691691
graph2.buildStreetAngles();
692692

693-
Dynamics dynamics{graph2};
693+
Dynamics dynamics{graph2, 69};
694694

695695
std::vector<uint32_t> destinationNodes{0, 2, 3, 4};
696696
dynamics.setDestinationNodes(destinationNodes);
@@ -746,7 +746,7 @@ TEST_CASE("Dynamics") {
746746
tl.setCycle(11, dsm::Direction::ANY, {4, 0});
747747
tl.setComplementaryCycle(16, 11);
748748
tl.setComplementaryCycle(21, 11);
749-
Dynamics dynamics{graph2};
749+
Dynamics dynamics{graph2, 69};
750750
std::vector<dsm::Id> destinationNodes{0, 2, 3, 4};
751751
dynamics.setDestinationNodes(destinationNodes);
752752
dynamics.addAgents(0, 7, 2);
@@ -810,7 +810,7 @@ TEST_CASE("Dynamics") {
810810
graph2.buildAdj();
811811
auto& rb = graph2.makeRoundabout(1);
812812
graph2.adjustNodeCapacities();
813-
Dynamics dynamics{graph2};
813+
Dynamics dynamics{graph2, 69};
814814
Itinerary itinerary{0, 2};
815815
Itinerary itinerary2{1, 0};
816816
dynamics.addItinerary(itinerary);
@@ -848,7 +848,7 @@ TEST_CASE("Dynamics") {
848848
Graph graph2;
849849
graph2.addStreets(s1, s2);
850850
graph2.buildAdj();
851-
Dynamics dynamics{graph2};
851+
Dynamics dynamics{graph2, 69};
852852
Itinerary itinerary{0, 2};
853853
dynamics.addItinerary(itinerary);
854854
dynamics.updatePaths();
@@ -881,7 +881,7 @@ TEST_CASE("Dynamics") {
881881
node->setCapacity(4);
882882
node->setTransportCapacity(4);
883883
}
884-
Dynamics dynamics{graph2};
884+
Dynamics dynamics{graph2, 69};
885885
dynamics.setMinSpeedRateo(0.5);
886886
Itinerary itinerary{0, 2};
887887
dynamics.addItinerary(itinerary);
@@ -948,7 +948,7 @@ TEST_CASE("Dynamics") {
948948
graph2.addStreet(sOC);
949949
graph2.addStreet(sOD);
950950
graph2.buildAdj();
951-
Dynamics dynamics{graph2};
951+
Dynamics dynamics{graph2, 69};
952952
dynamics.graph().nodeSet().at(0)->setCapacity(3);
953953
Itinerary itinerary{0, 2};
954954
Itinerary itinerary2{1, 1};
@@ -1011,7 +1011,7 @@ TEST_CASE("Dynamics") {
10111011
graph2.addStreet(s);
10121012
graph2.buildAdj();
10131013
graph2.makeSpireStreet(1);
1014-
Dynamics dynamics{graph2};
1014+
Dynamics dynamics{graph2, 69};
10151015
Itinerary itinerary{0, 2};
10161016
dynamics.addItinerary(itinerary);
10171017
dynamics.updatePaths();
@@ -1043,7 +1043,7 @@ TEST_CASE("Dynamics") {
10431043
graph2.addStreet(s);
10441044
graph2.buildAdj();
10451045
graph2.makeSpireStreet(1);
1046-
Dynamics dynamics{graph2};
1046+
Dynamics dynamics{graph2, 69};
10471047
Itinerary itinerary{0, 2};
10481048
dynamics.addItinerary(itinerary);
10491049
dynamics.updatePaths();

0 commit comments

Comments
 (0)