Class TrafCOD

java.lang.Object
All Implemented Interfaces:
java.io.Serializable, java.util.EventListener, EventListenerInterface, EventProducerInterface, Identifiable, Drawable, InvisibleObjectInterface, ActuatedTrafficController, TrafficController

public class TrafCOD
extends AbstractTrafficController
implements ActuatedTrafficController, EventListenerInterface
TrafCOD evaluator. TrafCOD is a language for writing traffic control programs. A TrafCOD program consists of a set of rules that must be evaluated repeatedly (until no more changes occurr) every time step. The time step size is 0.1 seconds.

Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Version:
$Revision$, $LastChangedDate$, by $Author$, initial version Oct 5, 2016
Author:
Wouter Schakel
See Also:
Serialized Form
  • Constructor Details

    • TrafCOD

      public TrafCOD​(java.lang.String controllerName, java.net.URL trafCodURL, OTSSimulatorInterface simulator, java.awt.Container display, java.awt.image.BufferedImage displayBackground, java.util.List<java.lang.String> displayObjectLocations) throws TrafficControlException, SimRuntimeException, java.io.IOException
      Construct a new TrafCOD traffic light controller.
      Parameters:
      controllerName - String; name of this TrafCOD traffic light controller
      trafCodURL - URL; the URL of the TrafCOD rules
      simulator - OTSSimulatorInterface; the simulation engine
      display - Container; if non-null, a controller display is constructed and shown in the supplied container
      displayBackground - BufferedImage; background for controller display image
      displayObjectLocations - List<String>; list of sensors and traffic lights and their locations on the displayBackGround
      Throws:
      TrafficControlException - when a rule cannot be parsed
      SimRuntimeException - when scheduling the first evaluation event fails
      java.io.IOException - when loading the TrafCOD rules from the URL fails
    • TrafCOD

      public TrafCOD​(java.lang.String controllerName, java.util.List<java.lang.String> trafCODRules, OTSSimulatorInterface simulator, java.awt.Container display, java.awt.image.BufferedImage displayBackground, java.util.List<java.lang.String> displayObjectLocations) throws TrafficControlException, SimRuntimeException
      Construct a new TrafCOD traffic light controller.
      Parameters:
      controllerName - String; name of this TrafCOD traffic light controller
      trafCODRules - List<String>; the TrafCOD rules
      simulator - OTSSimulatorInterface; the simulation engine
      display - Container; if non-null, a controller display is constructed and shown in the supplied container
      displayBackground - BufferedImage; background for controller display image
      displayObjectLocations - List<String>; list of sensors and traffic lights and their locations on the displayBackGround
      Throws:
      TrafficControlException - when a rule cannot be parsed
      SimRuntimeException - when scheduling the first evaluation event fails
  • Method Details

    • loadTextFromURL

      public static java.util.List<java.lang.String> loadTextFromURL​(java.net.URL url) throws java.io.IOException
      Read a text from a URL and convert it to a list of strings.
      Parameters:
      url - URL; the URL to open and read
      Returns:
      List<String>; the lines read from the URL (trimmed).
      Throws:
      java.io.IOException - when opening or reading the URL failed.
    • checkConsistency

      public void checkConsistency() throws SimRuntimeException, TrafficControlException
      Check the consistency of the traffic control program and perform initializations that require a completely built network.
      Throws:
      SimRuntimeException - when the simulation model is not an OTSModelInterface
      TrafficControlException - when a required traffic light or sensor is not present in the network
    • getSimulator

      public SimulatorInterface<Time,​Duration,​SimTimeDoubleUnit> getSimulator()
      Retrieve the simulator.
      Returns:
      SimulatorInterface<Time, Duration, SimTimeDoubleUnit>
    • getStructureNumber

      public int getStructureNumber()
      Retrieve the structure number.
      Returns:
      int; the structureNumber
    • updateDetector

      public void updateDetector​(java.lang.String detectorId, boolean detectingGTU)
      Tell the traffic controller that the state of a detector has changed.
      Specified by:
      updateDetector in interface ActuatedTrafficController
      Parameters:
      detectorId - String; id of the detector
      detectingGTU - boolean;
    • traceVariablesOfStream

      public void traceVariablesOfStream​(int stream, boolean trace)
      Switch tracing of all variables of a particular traffic stream, or all variables that do not have an associated traffic stream on or off.
      Parameters:
      stream - int; the traffic stream number, or TrafCOD.NO_STREAM to affect all variables that do not have an associated traffic stream
      trace - boolean; if true; switch on tracing; if false; switch off tracing
    • traceVariable

      public void traceVariable​(java.lang.String variableName, int stream, boolean trace)
      Switch tracing of one variable on or off.
      Parameters:
      variableName - String; name of the variable
      stream - int; traffic stream of the variable, or TrafCOD.NO_STREAM to select a variable that does not have an associated traffic stream
      trace - boolean; if true; switch on tracing; if false; switch off tracing
    • notify

      public void notify​(EventInterface event) throws java.rmi.RemoteException
      Specified by:
      notify in interface EventListenerInterface
      Throws:
      java.rmi.RemoteException
    • getFullId

      public java.lang.String getFullId()
      Specified by:
      getFullId in interface InvisibleObjectInterface
    • clone

      public final InvisibleObjectInterface clone​(OTSSimulatorInterface newSimulator, Network newNetwork) throws NetworkException
      Specified by:
      clone in interface InvisibleObjectInterface
      Throws:
      NetworkException
    • getSourceId

      public java.io.Serializable getSourceId()
      Specified by:
      getSourceId in interface EventProducerInterface
      Specified by:
      getSourceId in class EventProducer