From f1f8499c29a1cb9d792d35762d112d8adcea9922 Mon Sep 17 00:00:00 2001 From: hiwis <hiwis@irmb.tu-bs.de> Date: Wed, 13 Mar 2019 18:19:53 +0100 Subject: [PATCH] refactored TrafficMovement, introduced variable "maxAcceleration" --- src/Traffic/TrafficMovement.cpp | 16 +++++++++------- src/Traffic/TrafficMovement.h | 3 +++ src/Traffic/TrafficMovementFactory.cpp | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Traffic/TrafficMovement.cpp b/src/Traffic/TrafficMovement.cpp index c47970898..cd461e835 100644 --- a/src/Traffic/TrafficMovement.cpp +++ b/src/Traffic/TrafficMovement.cpp @@ -68,6 +68,10 @@ void TrafficMovement::setSlowToStart(const real slowStartPossibility) } } +void TrafficMovement::setMaxAcceleration(uint maxAcceleration) +{ + this->maxAcceleration = maxAcceleration; +} void TrafficMovement::setConcentrationOutwriter(std::unique_ptr<ConcentrationOutwriter> writer) { @@ -138,7 +142,7 @@ void TrafficMovement::calculateTimestep(uint step) } } - calculateJunctionStep(); + calculateJunctionStep(); calculateSourceStep(); @@ -192,7 +196,7 @@ void TrafficMovement::applyRules(uint carIndex) void TrafficMovement::accelerateCar(uint & speed) { if (speed < road->maxVelocity) { - speed += 2; //speed += 1; --> dawdle + speed += maxAcceleration; } } @@ -218,11 +222,9 @@ void TrafficMovement::dawdleCar(uint carIndex, uint & speed) } //Standard NaSch - if (randomNumber < dawdlePossibility) { - if (speed > 1) - speed -= 2; //for acceleration +2 - if (speed > 0) - speed -= 1; + if (randomNumber < dawdlePossibility) { + if (speed >= maxAcceleration) + speed -= maxAcceleration; else speed = 0; } diff --git a/src/Traffic/TrafficMovement.h b/src/Traffic/TrafficMovement.h index b02d2ee39..0d14e41c9 100644 --- a/src/Traffic/TrafficMovement.h +++ b/src/Traffic/TrafficMovement.h @@ -22,6 +22,7 @@ public: //setUp void setSlowToStart(const real slowStartPossibility); + void setMaxAcceleration(uint maxAcceleration); void setConcentrationOutwriter(std::unique_ptr<ConcentrationOutwriter> writer); void setSaveResultsTrue(uint timeSteps); @@ -96,6 +97,8 @@ private: uint currentStep; + uint maxAcceleration = 1; + std::mt19937 engine = RandomHelper::make_engine(); std::uniform_real_distribution<real> distFloat{ 0.0, 1.0 }; diff --git a/src/Traffic/TrafficMovementFactory.cpp b/src/Traffic/TrafficMovementFactory.cpp index 5c0f71378..1b8879cfe 100644 --- a/src/Traffic/TrafficMovementFactory.cpp +++ b/src/Traffic/TrafficMovementFactory.cpp @@ -84,6 +84,7 @@ void TrafficMovementFactory::initTrafficMovement(real * pconcArrayStart) //init TrafficMovement this->simulator = std::make_shared<TrafficMovement>(move(roadNetwork), dawdlePossibility); simulator->setSlowToStart(slowToStartPossibility); + simulator->setMaxAcceleration(2); //init ConcentrationOutwriter -- GitLab