1 package org.opentrafficsim.road.gtu.lane.perception.mental;
2
3 import org.opentrafficsim.base.Identifiable;
4 import org.opentrafficsim.base.parameters.ParameterException;
5 import org.opentrafficsim.base.parameters.Parameters;
6 import org.opentrafficsim.core.gtu.GtuException;
7 import org.opentrafficsim.road.gtu.lane.LaneBasedGtu;
8 import org.opentrafficsim.road.gtu.lane.perception.LanePerception;
9
10 /**
11 * Interface for tasks, where each describes a fundamental relation between exogenous inputs causing a mental task demand. The
12 * concept of anticipation reliance can be included, which is a reduction of mental task demand by prioritizing a primary task
13 * and relying more on anticipation regarding secondary tasks. Control over the amount of anticipation reliance is
14 * implementation dependent, but is typically not part of the task itself.
15 * <p>
16 * Copyright (c) 2013-2023 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
17 * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
18 * </p>
19 * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
20 * @author <a href="https://tudelft.nl/staff/p.knoppers-1">Peter Knoppers</a>
21 * @author <a href="https://dittlab.tudelft.nl">Wouter Schakel</a>
22 */
23 public interface Task extends Identifiable
24 {
25
26 /**
27 * Returns the gross task demand to be managed by a task manager.
28 * @param perception LanePerception; perception
29 * @param gtu LaneBasedGtu; gtu
30 * @param parameters Parameters; parameters
31 * @return double; gross task demand
32 * @throws ParameterException if a parameter is missing or out of bounds
33 * @throws GtuException exceptions pertaining to the GTU
34 */
35 double calculateTaskDemand(LanePerception perception, LaneBasedGtu gtu, Parameters parameters)
36 throws ParameterException, GtuException;
37
38 /**
39 * Sets (gross) task demand.
40 * @param taskDemand double; set task demand
41 */
42 void setTaskDemand(double taskDemand);
43
44 /**
45 * Returns the gross demand of this task, i.e without considering anticipation reliance.
46 * @return double; gross demand of this task, i.e. without considering anticipation reliance
47 */
48 double getTaskDemand();
49
50 /**
51 * Set anticipation reliance.
52 * @param anticipationReliance double; set anticipation reliance
53 */
54 void setAnticipationReliance(double anticipationReliance);
55
56 /**
57 * Returns the level of anticipation reliance.
58 * @return double; anticipation reliance
59 */
60 double getAnticipationReliance();
61
62 }