Class TrafCod
java.lang.Object
org.djutils.event.LocalEventProducer
org.opentrafficsim.trafficcontrol.AbstractTrafficController
org.opentrafficsim.trafficcontrol.trafcod.TrafCod
- All Implemented Interfaces:
EventListener,Identifiable,EventListener,EventProducer,NonLocatedObject,ActuatedTrafficController,TrafficController
public class TrafCod
extends AbstractTrafficController
implements ActuatedTrafficController, EventListener
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-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
- Author:
- Wouter Schakel
-
Field Summary
Fields inherited from interface org.djutils.event.EventProducer
FIRST_POSITION, LAST_POSITIONFields inherited from interface org.opentrafficsim.trafficcontrol.TrafficController
BEING_CLONED, NO_STREAM, OFF, RUNNING, SHUTTING_DOWN, STARTING_UP, TRAFFIC_LIGHT_CHANGED, TRAFFICCONTROL_CONFLICT_GROUP_CHANGED, TRAFFICCONTROL_CONTROLLER_CREATED, TRAFFICCONTROL_CONTROLLER_EVALUATING, TRAFFICCONTROL_CONTROLLER_WARNING, TRAFFICCONTROL_SET_TRACING, TRAFFICCONTROL_STATE_CHANGED, TRAFFICCONTROL_TRACED_VARIABLE_UPDATED, TRAFFICCONTROL_VARIABLE_CREATED -
Constructor Summary
ConstructorsConstructorDescriptionTrafCod(String controllerName, URL trafCodURL, OtsSimulatorInterface simulator, Container display, BufferedImage displayBackground, List<String> displayObjectLocations) Construct a new TrafCOD traffic light controller.TrafCod(String controllerName, List<String> trafCODRules, OtsSimulatorInterface simulator, BufferedImage displayBackground, List<String> displayObjectLocations) Construct a new TrafCOD traffic light controller. -
Method Summary
Modifier and TypeMethodDescriptionvoidCheck the consistency of the traffic control program and perform initializations that require a completely built network.Retrieve the Swing (for now) container in which the controller displays its current state.Retrieve the simulator.intRetrieve the structure number.loadTextFromURL(URL url) Read a text from a URL and convert it to a list of strings.voidtoString()voidtraceVariable(String variableName, int stream, boolean trace) Switch tracing of one variable on or off.voidtraceVariablesOfStream(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.voidupdateDetector(String detectorId, boolean detectingGTU) Tell the traffic controller that the state of a detector has changed.Methods inherited from class org.opentrafficsim.trafficcontrol.AbstractTrafficController
getIdMethods inherited from class org.djutils.event.LocalEventProducer
getEventListenerMapMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.djutils.event.EventProducer
addListener, addListener, addListener, addListener, fireEvent, fireEvent, fireEvent, fireTimedEvent, fireTimedEvent, fireTimedEvent, fireUnverifiedEvent, fireUnverifiedEvent, fireUnverifiedTimedEvent, fireUnverifiedTimedEvent, getEventListenerMap, getEventTypesWithListeners, getListenerReferences, hasListeners, numberOfListeners, removeAllListeners, removeAllListeners, removeListenerMethods inherited from interface org.opentrafficsim.trafficcontrol.TrafficController
getId
-
Constructor Details
-
TrafCod
public TrafCod(String controllerName, URL trafCodURL, OtsSimulatorInterface simulator, Container display, BufferedImage displayBackground, List<String> displayObjectLocations) throws TrafficControlException, nl.tudelft.simulation.dsol.SimRuntimeException, IOException Construct a new TrafCOD traffic light controller.- Parameters:
controllerName- name of this TrafCOD traffic light controllertrafCodURL- the URL of the TrafCOD rulessimulator- the simulation enginedisplay- if non-null, a controller display is constructed and shown in the supplied containerdisplayBackground- background for controller display imagedisplayObjectLocations- list of sensors and traffic lights and their locations on thedisplayBackGround- Throws:
TrafficControlException- when a rule cannot be parsednl.tudelft.simulation.dsol.SimRuntimeException- when scheduling the first evaluation event failsIOException- when loading the TrafCOD rules from the URL fails
-
TrafCod
public TrafCod(String controllerName, List<String> trafCODRules, OtsSimulatorInterface simulator, BufferedImage displayBackground, List<String> displayObjectLocations) throws TrafficControlException, nl.tudelft.simulation.dsol.SimRuntimeException Construct a new TrafCOD traffic light controller.- Parameters:
controllerName- name of this TrafCOD traffic light controllertrafCODRules- the TrafCOD rulessimulator- the simulation enginedisplayBackground- background for controller display imagedisplayObjectLocations- list of sensors and traffic lights and their locations on thedisplayBackGround- Throws:
TrafficControlException- when a rule cannot be parsednl.tudelft.simulation.dsol.SimRuntimeException- when scheduling the first evaluation event fails
-
-
Method Details
-
loadTextFromURL
Read a text from a URL and convert it to a list of strings.- Parameters:
url- the URL to open and read- Returns:
- the lines read from the URL (trimmed).
- Throws:
IOException- when opening or reading the URL failed.
-
checkConsistency
public void checkConsistency() throws nl.tudelft.simulation.dsol.SimRuntimeException, TrafficControlExceptionCheck the consistency of the traffic control program and perform initializations that require a completely built network.- Throws:
nl.tudelft.simulation.dsol.SimRuntimeException- when the simulation model is not an OtsModelInterfaceTrafficControlException- when a required traffic light or sensor is not present in the network
-
getSimulator
Retrieve the simulator.- Returns:
- SimulatorInterface<Time, Duration, SimTimeDoubleUnit>
-
getStructureNumber
public int getStructureNumber()Retrieve the structure number.- Returns:
- the structureNumber
-
updateDetector
Description copied from interface:ActuatedTrafficControllerTell the traffic controller that the state of a detector has changed.- Specified by:
updateDetectorin interfaceActuatedTrafficController- Parameters:
detectorId- id of the detectordetectingGTU- detecting GTU
-
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- the traffic stream number, orTrafCOD.NO_STREAMto affect all variables that do not have an associated traffic streamtrace- if true; switch on tracing; if false; switch off tracing
-
traceVariable
Switch tracing of one variable on or off.- Parameters:
variableName- name of the variablestream- traffic stream of the variable, orTrafCOD.NO_STREAMto select a variable that does not have an associated traffic streamtrace- if true; switch on tracing; if false; switch off tracing
-
notify
- Specified by:
notifyin interfaceEventListener
-
getFullId
- Specified by:
getFullIdin interfaceNonLocatedObject
-
getDisplayContainer
Description copied from interface:ActuatedTrafficControllerRetrieve the Swing (for now) container in which the controller displays its current state.- Specified by:
getDisplayContainerin interfaceActuatedTrafficController- Returns:
- the display of the current state; may return empty
-
toString
-