diff --git a/src/Traffic/TrafficMovement.cpp b/src/Traffic/TrafficMovement.cpp index c47970898d41db0be56f0c91f3466841352e308f..cd461e835db9feb921e1d6f781a6df2dc80f505a 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 b02d2ee39ef497e8f636728e64dd1475a463f467..0d14e41c90858b828021e08ab8bf0031bfe842be 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 5c0f71378b39038a7f85ed8257ea65455369b171..1b8879cfec6990b7c8a25eb24871b0b52701b576 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