SUMO - Simulation of Urban MObility
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
MSCFModel_Kerner.cpp
Go to the documentation of this file.
1
/****************************************************************************/
9
// car-following model by B. Kerner
10
/****************************************************************************/
11
// SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
12
// Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors
13
/****************************************************************************/
14
//
15
// This file is part of SUMO.
16
// SUMO is free software: you can redistribute it and/or modify
17
// it under the terms of the GNU General Public License as published by
18
// the Free Software Foundation, either version 3 of the License, or
19
// (at your option) any later version.
20
//
21
/****************************************************************************/
22
23
24
// ===========================================================================
25
// included modules
26
// ===========================================================================
27
#ifdef _MSC_VER
28
#include <
windows_config.h
>
29
#else
30
#include <
config.h
>
31
#endif
32
33
#include <
microsim/MSVehicle.h
>
34
#include <
microsim/MSLane.h
>
35
#include "
MSCFModel_Kerner.h
"
36
#include <
utils/common/RandHelper.h
>
37
38
39
// ===========================================================================
40
// method definitions
41
// ===========================================================================
42
MSCFModel_Kerner::MSCFModel_Kerner
(
const
MSVehicleType
* vtype,
SUMOReal
accel,
43
SUMOReal
decel,
SUMOReal
headwayTime,
SUMOReal
k,
SUMOReal
phi)
44
:
MSCFModel
(vtype, accel, decel, headwayTime), myK(k), myPhi(phi), myTauDecel(decel* headwayTime) {
45
}
46
47
48
MSCFModel_Kerner::~MSCFModel_Kerner
() {}
49
50
51
SUMOReal
52
MSCFModel_Kerner::followSpeed
(
const
MSVehicle
*
const
/*veh*/
,
SUMOReal
speed,
SUMOReal
gap,
SUMOReal
predSpeed,
SUMOReal
/*predMaxDecel*/
)
const
{
53
return
MIN2
(
_v
(speed,
maxNextSpeed
(speed), gap, predSpeed),
maxNextSpeed
(speed));
54
}
55
56
57
SUMOReal
58
MSCFModel_Kerner::stopSpeed
(
const
MSVehicle
*
const
veh,
SUMOReal
gap)
const
{
59
const
SUMOReal
speed = veh->
getSpeed
();
60
return
MIN2
(
_v
(speed,
maxNextSpeed
(speed), gap, 0),
maxNextSpeed
(speed));
61
}
62
63
64
SUMOReal
65
MSCFModel_Kerner::_v
(
SUMOReal
speed,
SUMOReal
vfree,
SUMOReal
gap,
SUMOReal
predSpeed)
const
{
66
if
(predSpeed == 0 && gap < 0.01) {
67
return
0;
68
}
69
// !!! in the following, the prior step is not considered!!!
70
SUMOReal
G =
MAX2
((
SUMOReal
) 0, (
SUMOReal
)(
SPEED2DIST
(
myK
* speed) +
myPhi
/
myAccel
* speed * (speed - predSpeed)));
71
SUMOReal
vcond = gap > G ? speed +
ACCEL2SPEED
(
myAccel
) : speed +
MAX2
(
ACCEL2SPEED
(-
myDecel
),
MIN2
(
ACCEL2SPEED
(
myAccel
), predSpeed - speed));
72
SUMOReal
vsafe = (
SUMOReal
)(-1. *
myTauDecel
+ sqrt(
myTauDecel
*
myTauDecel
+ (predSpeed * predSpeed) + (2. *
myDecel
* gap)));
73
SUMOReal
va =
MAX2
((
SUMOReal
) 0,
MIN3
(vfree, vsafe, vcond)) +
RandHelper::rand
();
74
SUMOReal
v =
MAX2
((
SUMOReal
) 0,
MIN4
(vfree, va, speed +
ACCEL2SPEED
(
myAccel
), vsafe));
75
return
v;
76
}
77
78
79
MSCFModel
*
80
MSCFModel_Kerner::duplicate
(
const
MSVehicleType
* vtype)
const
{
81
return
new
MSCFModel_Kerner
(vtype,
myAccel
,
myDecel
,
myHeadwayTime
,
myK
,
myPhi
);
82
}
build
buildd
sumo-0.16.0~dfsg
src
microsim
cfmodels
MSCFModel_Kerner.cpp
Generated on Tue Apr 16 2013 01:32:17 for SUMO - Simulation of Urban MObility by
1.8.3.1