1 package org.opentrafficsim.road.gtu.lane.perception.mental;
2
3 import static org.opentrafficsim.base.parameters.constraint.NumericConstraint.POSITIVEZERO;
4
5 import org.djunits.value.vdouble.scalar.Duration;
6 import org.opentrafficsim.base.parameters.ParameterException;
7 import org.opentrafficsim.base.parameters.ParameterTypeDouble;
8 import org.opentrafficsim.base.parameters.ParameterTypes;
9 import org.opentrafficsim.base.parameters.Parameters;
10
11
12
13
14
15
16
17
18
19
20
21 public class AdaptationHeadway extends FactorAdaptation
22 {
23
24
25 public static final ParameterTypeDouble BETA_T =
26 new ParameterTypeDouble("Beta_T", "max headway scaling", 1.0, POSITIVEZERO);
27
28
29 private Duration t0Min;
30
31
32 private Duration t0Max;
33
34
35
36
37 public AdaptationHeadway()
38 {
39
40 }
41
42 @Override
43 public void adapt(final Parameters parameters) throws ParameterException
44 {
45 if (this.t0Min == null)
46 {
47 this.t0Min = parameters.getParameter(ParameterTypes.TMIN);
48 this.t0Max = parameters.getParameter(ParameterTypes.TMAX);
49 }
50 double factor = getFactor(parameters, BETA_T);
51 Duration tMin = this.t0Min.times(factor);
52 Duration tMax = this.t0Max.times(factor);
53 if (tMax.si <= parameters.getParameter(ParameterTypes.TMIN).si)
54 {
55 parameters.setClaimedParameter(ParameterTypes.TMIN, tMin, this);
56 parameters.setClaimedParameter(ParameterTypes.TMAX, tMax, this);
57 }
58 else
59 {
60 parameters.setClaimedParameter(ParameterTypes.TMAX, tMax, this);
61 parameters.setClaimedParameter(ParameterTypes.TMIN, tMin, this);
62 }
63 }
64
65 }