1 package org.opentrafficsim.road.gtu.lane.tactical.lmrs;
2
3 import org.opentrafficsim.core.gtu.behavioralcharacteristics.BehavioralCharacteristics;
4 import org.opentrafficsim.core.gtu.behavioralcharacteristics.ParameterException;
5 import org.opentrafficsim.core.gtu.plan.operational.OperationalPlanException;
6 import org.opentrafficsim.road.gtu.lane.perception.LanePerception;
7 import org.opentrafficsim.road.gtu.lane.perception.RelativeLane;
8 import org.opentrafficsim.road.gtu.lane.tactical.following.CarFollowingModel;
9 import org.opentrafficsim.road.gtu.lane.tactical.util.lmrs.Desire;
10 import org.opentrafficsim.road.gtu.lane.tactical.util.lmrs.LmrsUtil;
11 import org.opentrafficsim.road.gtu.lane.tactical.util.lmrs.VoluntaryIncentive;
12
13
14
15
16
17
18
19
20
21
22
23
24 public class IncentiveKeep implements VoluntaryIncentive
25 {
26
27
28 @Override
29 public final Desire determineDesire(final BehavioralCharacteristics behavioralCharacteristics,
30 final LanePerception perception, final CarFollowingModel carFollowingModel, final Desire mandatoryDesire,
31 final Desire voluntaryDesire) throws ParameterException, OperationalPlanException
32 {
33 if (mandatoryDesire.getRight() < 0 || voluntaryDesire.getRight() < 0
34 || !perception.getLaneStructure().getCrossSection().contains(RelativeLane.RIGHT))
35 {
36
37 return new Desire(0, 0);
38 }
39
40 return new Desire(0, behavioralCharacteristics.getParameter(LmrsUtil.DFREE));
41 }
42
43
44 @Override
45 public final String toString()
46 {
47 return "IncentiveKeep";
48 }
49
50 }