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