comparison python/traffic_engineering.py @ 198:c91c8fd8bf1e

simple vehicle model with constant acceleration
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Thu, 16 Feb 2012 18:59:12 -0500
parents 2bf5b76320c0
children aeaaf5579b46
comparison
equal deleted inserted replaced
197:2788b2827670 198:c91c8fd8bf1e
3 3
4 from math import ceil 4 from math import ceil
5 5
6 __metaclass__ = type 6 __metaclass__ = type
7 7
8
9 #########################
10 # Simulation
11 #########################
12
13 class Vehicle:
14 'Generic vehicle class'
15 def __init__(self, position = 0, speed = 0, acceleration = 0, prt = 2.5, leader = None, log=True):
16 self.position = position
17 self.speed = speed
18 self.acceleration = acceleration
19 self.prt = prt
20 self.leader = leader
21 self.log = log
22 if log:
23 self.positions = [position]
24 self.speeds = [speed]
25 self.accelerations = [acceleration]
26 # todo add microModel
27
28 def updatePosition(self, dt):
29 speed = self.speed
30 self.speed += self.acceleration*dt
31 self.position += speed*dt
32 if self.log:
33 self.positions.append(self.position)
34 self.speeds.append(self.speed)
35 self.accelerations.append(self.acceleration)
36
37 def updateAcceleration(self, dt):
38 '''Updates acceleration and speed as a function of leader
39 and other factors'''
40 pass
41
42 def update(self, dt):
43 self.updatePosition(dt)
44 self.updateAcceleration(dt) # function of leader
45
46 def printStats(self):
47 print('{0} {1} {2}'.format(self.position, self.speed, self.acceleration))
8 48
9 ######################### 49 #########################
10 # fundamental diagram 50 # fundamental diagram
11 ######################### 51 #########################
12 52