1 package org.opentrafficsim.road.gtu.lane.tactical.lmrs;
2
3 import org.djunits.value.vdouble.scalar.Length;
4 import org.djunits.value.vdouble.scalar.Speed;
5 import org.opentrafficsim.base.parameters.ParameterException;
6 import org.opentrafficsim.base.parameters.Parameters;
7 import org.opentrafficsim.core.gtu.Stateless;
8 import org.opentrafficsim.core.gtu.plan.operational.OperationalPlanException;
9 import org.opentrafficsim.road.gtu.lane.LaneBasedGtu;
10 import org.opentrafficsim.road.gtu.lane.perception.LanePerception;
11 import org.opentrafficsim.road.gtu.lane.perception.RelativeLane;
12 import org.opentrafficsim.road.gtu.lane.perception.categories.InfrastructurePerception;
13 import org.opentrafficsim.road.gtu.lane.plan.operational.SimpleOperationalPlan;
14 import org.opentrafficsim.road.gtu.lane.tactical.following.CarFollowingModel;
15 import org.opentrafficsim.road.gtu.lane.tactical.util.SpeedLimitUtil;
16 import org.opentrafficsim.road.network.speed.SpeedLimitInfo;
17 import org.opentrafficsim.road.network.speed.SpeedLimitProspect;
18
19
20
21
22
23
24
25
26
27
28
29 public final class AccelerationSpeedLimitTransition
30 implements AccelerationIncentive, Stateless<AccelerationSpeedLimitTransition>
31 {
32
33
34 public static final AccelerationSpeedLimitTransition SINGLETON = new AccelerationSpeedLimitTransition();
35
36 @Override
37 public AccelerationSpeedLimitTransition get()
38 {
39 return SINGLETON;
40 }
41
42
43
44
45 private AccelerationSpeedLimitTransition()
46 {
47
48 }
49
50 @Override
51 public void accelerate(final SimpleOperationalPlan simplePlan, final RelativeLane lane, final Length mergeDistance,
52 final LaneBasedGtu gtu, final LanePerception perception, final CarFollowingModel carFollowingModel,
53 final Speed speed, final Parameters params, final SpeedLimitInfo speedLimitInfo)
54 throws OperationalPlanException, ParameterException
55 {
56 SpeedLimitProspect slp = perception.getPerceptionCategory(InfrastructurePerception.class).getSpeedLimitProspect(lane);
57 simplePlan.minimizeAcceleration(SpeedLimitUtil.considerSpeedLimitTransitions(params, speed, slp, carFollowingModel));
58 }
59
60 @Override
61 public String toString()
62 {
63 return "AccelerationSpeedLimitTransition";
64 }
65
66 }