1 package org.opentrafficsim.road.gtu.generator.od;
2
3 import org.djunits.value.vdouble.scalar.Acceleration;
4 import org.opentrafficsim.base.parameters.ParameterTypes;
5 import org.opentrafficsim.core.gtu.GTUException;
6 import org.opentrafficsim.core.gtu.GTUType.DEFAULTS;
7 import org.opentrafficsim.core.network.Node;
8 import org.opentrafficsim.core.parameters.ParameterFactoryByType;
9 import org.opentrafficsim.road.gtu.lane.tactical.LaneBasedTacticalPlanner;
10 import org.opentrafficsim.road.gtu.lane.tactical.LaneBasedTacticalPlannerFactory;
11 import org.opentrafficsim.road.gtu.lane.tactical.following.IDMPlusFactory;
12 import org.opentrafficsim.road.gtu.lane.tactical.lmrs.DefaultLMRSPerceptionFactory;
13 import org.opentrafficsim.road.gtu.lane.tactical.lmrs.LMRSFactory;
14 import org.opentrafficsim.road.gtu.strategical.LaneBasedStrategicalPlannerFactory;
15 import org.opentrafficsim.road.gtu.strategical.od.Category;
16 import org.opentrafficsim.road.gtu.strategical.route.LaneBasedStrategicalRoutePlannerFactory;
17 import org.opentrafficsim.road.gtu.strategical.route.RouteGeneratorOD;
18
19 import nl.tudelft.simulation.jstats.streams.StreamInterface;
20
21
22
23
24
25
26
27
28
29
30
31
32 public interface StrategicalPlannerFactorySupplierOD
33 {
34
35
36
37
38
39
40
41
42
43
44 LaneBasedStrategicalPlannerFactory<?> getFactory(Node origin, Node destination, Category category,
45 StreamInterface randomStream) throws GTUException;
46
47
48
49
50
51 static StrategicalPlannerFactorySupplierOD lmrs()
52 {
53 return new StrategicalPlannerFactorySupplierOD()
54 {
55
56 @Override
57 public LaneBasedStrategicalPlannerFactory<?> getFactory(final Node origin, final Node destination,
58 final Category category, final StreamInterface randomStream) throws GTUException
59 {
60 ParameterFactoryByType params = new ParameterFactoryByType();
61 params.addParameter(origin.getNetwork().getGtuType(DEFAULTS.TRUCK), ParameterTypes.A,
62 Acceleration.createSI(0.4));
63 return new LaneBasedStrategicalRoutePlannerFactory(
64 new LMRSFactory(new IDMPlusFactory(randomStream), new DefaultLMRSPerceptionFactory()), params,
65 RouteGeneratorOD.getDefaultRouteSupplier(randomStream));
66 }
67 };
68 }
69
70
71
72
73
74
75
76
77
78 static StrategicalPlannerFactorySupplierOD route(final TacticalPlannerFactorySupplierOD tacticalPlannerFactorySupplierOD)
79 {
80 return new StrategicalPlannerFactorySupplierOD()
81 {
82
83 @Override
84 public LaneBasedStrategicalPlannerFactory<?> getFactory(final Node origin, final Node destination,
85 final Category category, final StreamInterface randomStream) throws GTUException
86 {
87 return new LaneBasedStrategicalRoutePlannerFactory(
88 tacticalPlannerFactorySupplierOD.getFactory(origin, destination, category, randomStream));
89 }
90 };
91 }
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 public interface TacticalPlannerFactorySupplierOD
107 {
108
109
110
111
112
113
114
115
116 LaneBasedTacticalPlannerFactory<? extends LaneBasedTacticalPlanner> getFactory(Node origin, Node destination,
117 Category category, StreamInterface randomStream);
118 }
119
120 }