DirectedFixedLaneChangeModel.java

  1. package org.opentrafficsim.road.gtu.lane.tactical.directedlanechange;

  2. import java.util.Collection;

  3. import org.djunits.value.vdouble.scalar.Acceleration;
  4. import org.djunits.value.vdouble.scalar.Duration;
  5. import org.djunits.value.vdouble.scalar.Length;
  6. import org.djunits.value.vdouble.scalar.Speed;
  7. import org.opentrafficsim.core.gtu.GTUException;
  8. import org.opentrafficsim.core.network.LateralDirectionality;
  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.headway.Headway;
  12. import org.opentrafficsim.road.gtu.lane.tactical.AbstractLaneBasedTacticalPlanner;
  13. import org.opentrafficsim.road.gtu.lane.tactical.following.GTUFollowingModelOld;

  14. /**
  15.  * Dummy lane change model with totally predictable results (used for testing).
  16.  * <p>
  17.  * Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
  18.  * BSD-style license. See <a href="http://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
  19.  * <p>
  20.  * @version $Revision: 1401 $, $LastChangedDate: 2015-09-14 01:33:02 +0200 (Mon, 14 Sep 2015) $, by $Author: averbraeck $,
  21.  *          initial version 11 feb. 2015 <br>
  22.  * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
  23.  */
  24. public class DirectedFixedLaneChangeModel implements DirectedLaneChangeModel
  25. {
  26.     /** {@inheritDoc} */
  27.     @SuppressWarnings("checkstyle:parameternumber")
  28.     @Override
  29.     public final DirectedLaneMovementStep computeLaneChangeAndAcceleration(final LaneBasedGTU gtu,
  30.             final LateralDirectionality direction, final Collection<Headway> sameLaneTraffic,
  31.             final Collection<Headway> otherLaneTraffic, final Length maxDistance, final Speed speedLimit,
  32.             final Acceleration otherLaneRouteIncentive, final Acceleration laneChangeThreshold, final Duration laneChangeTime)
  33.             throws GTUException
  34.     {
  35.         GTUFollowingModelOld gtuFollowingModel =
  36.                 (GTUFollowingModelOld) ((AbstractLaneBasedTacticalPlanner) gtu.getTacticalPlanner()).getCarFollowingModel();
  37.         if (null == direction)
  38.         {
  39.             return new DirectedLaneMovementStep(gtuFollowingModel
  40.                     .computeDualAccelerationStep(gtu, sameLaneTraffic, maxDistance, speedLimit).getLeaderAccelerationStep(),
  41.                     null);
  42.         }
  43.         else
  44.         {
  45.             return new DirectedLaneMovementStep(gtuFollowingModel
  46.                     .computeDualAccelerationStep(gtu, otherLaneTraffic, maxDistance, speedLimit).getLeaderAccelerationStep(),
  47.                     direction);
  48.         }
  49.     }

  50.     /** {@inheritDoc} */
  51.     @Override
  52.     public final String getName()
  53.     {
  54.         return "Fixed lane change model";
  55.     }

  56.     /** {@inheritDoc} */
  57.     @Override
  58.     public final String getLongName()
  59.     {
  60.         return "Fixed lane change model. This model returns a lane change decision that is independent of the actual "
  61.                 + "traffic. It is used mostly for testing.";
  62.     }

  63.     /** {@inheritDoc} */
  64.     @Override
  65.     public final String toString()
  66.     {
  67.         return "DirectedFixedLaneChangeModel [name=" + getName() + "]";
  68.     }

  69.     /** {@inheritDoc} */
  70.     @Override
  71.     public final LanePerception getPerception()
  72.     {
  73.         return null;
  74.     }
  75. }