1 package org.opentrafficsim.road.gtu.lane.tactical;
2
3 import org.opentrafficsim.base.parameters.ParameterTypeClass;
4 import org.opentrafficsim.base.parameters.ParameterTypeDuration;
5 import org.opentrafficsim.base.parameters.ParameterTypeLength;
6 import org.opentrafficsim.base.parameters.ParameterTypes;
7 import org.opentrafficsim.road.gtu.lane.LaneBasedGtu;
8 import org.opentrafficsim.road.gtu.lane.perception.LanePerception;
9 import org.opentrafficsim.road.gtu.lane.tactical.following.CarFollowingModel;
10 import org.opentrafficsim.road.gtu.lane.tactical.lmrs.Lmrs;
11
12
13
14
15
16
17
18
19
20
21
22
23 public abstract class AbstractLaneBasedTacticalPlanner implements LaneBasedTacticalPlanner
24 {
25
26
27 public static final ParameterTypeClass<LaneBasedTacticalPlanner> LANE_TACTICAL_PLANNER = new ParameterTypeClass<>(
28 "lane tactical planner", "Lane-based tactical planner class.", LaneBasedTacticalPlanner.class, Lmrs.class);
29
30
31 protected static final ParameterTypeLength LOOKAHEAD = ParameterTypes.LOOKAHEAD;
32
33
34 protected static final ParameterTypeDuration DT = ParameterTypes.DT;
35
36
37 private CarFollowingModel carFollowingModel;
38
39
40 private final LanePerception lanePerception;
41
42
43 private final LaneBasedGtu gtu;
44
45
46
47
48
49
50
51 public AbstractLaneBasedTacticalPlanner(final CarFollowingModel carFollowingModel, final LaneBasedGtu gtu,
52 final LanePerception lanePerception)
53 {
54 setCarFollowingModel(carFollowingModel);
55 this.gtu = gtu;
56 this.lanePerception = lanePerception;
57 }
58
59 @Override
60 public final LaneBasedGtu getGtu()
61 {
62 return this.gtu;
63 }
64
65 @Override
66 public final CarFollowingModel getCarFollowingModel()
67 {
68 return this.carFollowingModel;
69 }
70
71
72
73
74
75 public final void setCarFollowingModel(final CarFollowingModel carFollowingModel)
76 {
77 this.carFollowingModel = carFollowingModel;
78 }
79
80 @Override
81 public final LanePerception getPerception()
82 {
83 return this.lanePerception;
84 }
85
86 }