1 package org.opentrafficsim.road;
2
3 import org.djunits.value.vdouble.scalar.Acceleration;
4 import org.djunits.value.vdouble.scalar.Length;
5 import org.djunits.value.vdouble.scalar.Speed;
6 import org.opentrafficsim.base.parameters.ParameterException;
7 import org.opentrafficsim.base.parameters.ParameterSet;
8 import org.opentrafficsim.base.parameters.Parameters;
9 import org.opentrafficsim.core.gtu.GtuType;
10 import org.opentrafficsim.road.FixedCarFollowing.FixedCarFollowingModel;
11 import org.opentrafficsim.road.gtu.lane.perception.PerceptionIterable;
12 import org.opentrafficsim.road.gtu.lane.perception.object.PerceivedObject;
13 import org.opentrafficsim.road.gtu.lane.tactical.following.CarFollowingModel;
14 import org.opentrafficsim.road.gtu.lane.tactical.following.CarFollowingModelFactory;
15 import org.opentrafficsim.road.network.speed.SpeedLimitInfo;
16
17
18
19
20
21
22
23
24
25 public class FixedCarFollowing implements CarFollowingModelFactory<FixedCarFollowingModel>
26 {
27
28 private final Acceleration acceleration;
29
30
31 private final Speed desiredSpeed;
32
33
34 private final Length desiredHeadway;
35
36
37
38
39 public FixedCarFollowing()
40 {
41 this(Acceleration.ZERO, Speed.ONE, Length.ONE);
42 }
43
44
45
46
47
48 public FixedCarFollowing(final Acceleration acceleration)
49 {
50 this(acceleration, Speed.ONE, Length.ONE);
51 }
52
53
54
55
56
57
58
59 public FixedCarFollowing(final Acceleration acceleration, final Speed desiredSpeed, final Length desiredHeadway)
60 {
61 this.acceleration = acceleration;
62 this.desiredHeadway = desiredHeadway;
63 this.desiredSpeed = desiredSpeed;
64 }
65
66 @Override
67 public Parameters getParameters(final GtuType gtuType) throws ParameterException
68 {
69 return new ParameterSet();
70 }
71
72 @Override
73 public FixedCarFollowingModel get()
74 {
75 return new FixedCarFollowingModel();
76 }
77
78
79
80
81 public class FixedCarFollowingModel implements CarFollowingModel
82 {
83
84
85
86
87 public FixedCarFollowingModel()
88 {
89
90 }
91
92 @Override
93 public Length desiredHeadway(final Parameters parameters, final Speed speed) throws ParameterException
94 {
95 return FixedCarFollowing.this.desiredHeadway;
96 }
97
98 @Override
99 public Speed desiredSpeed(final Parameters parameters, final SpeedLimitInfo speedInfo) throws ParameterException
100 {
101 return FixedCarFollowing.this.desiredSpeed;
102 }
103
104 @Override
105 public Acceleration followingAcceleration(final Parameters parameters, final Speed speed,
106 final SpeedLimitInfo speedLimitInfo, final PerceptionIterable<? extends PerceivedObject> leaders)
107 throws ParameterException
108 {
109 return FixedCarFollowing.this.acceleration;
110 }
111
112 @Override
113 public String getName()
114 {
115 return "FixedAcceleration";
116 }
117
118 @Override
119 public String getLongName()
120 {
121 return "FixedAcceleration";
122 }
123
124 }
125 }