Class DateBasedDiscreteEventActivator<A extends AbstractAgent>

java.lang.Object
madkit.kernel.Activator<A>
madkit.simulation.activator.GenericBehaviorActivator<A>
madkit.simulation.activator.DateBasedDiscreteEventActivator<A>
Type Parameters:
A -
All Implemented Interfaces:
Comparable<DateBasedDiscreteEventActivator<A>>

public class DateBasedDiscreteEventActivator<A extends AbstractAgent> extends GenericBehaviorActivator<A> implements Comparable<DateBasedDiscreteEventActivator<A>>
A behavior activator that is designed to work with a DateBasedDiscreteEventScheduler, that is following a discrete-event simulation scheme. This activator activates all the agents of the corresponding CGR for each specific date for which it is activated. It encapsulates an activation date which is coded using a LocalDateTime object.
Author:
Fabien Michel
  • Constructor Details

    • DateBasedDiscreteEventActivator

      public DateBasedDiscreteEventActivator(String community, String group, String role, String theBehaviorToActivate)
  • Method Details

    • compareTo

      public int compareTo(DateBasedDiscreteEventActivator<A> o)
      Defines an ordering so that the scheduler can classify activators according to their date and priority.
      Specified by:
      compareTo in interface Comparable<A extends AbstractAgent>
    • getNextActivationDate

      public LocalDateTime getNextActivationDate()
      Returns the next date at which this activator should be triggered.
      Returns:
      next date at which this activator should be triggered.
    • setNextActivationDate

      public void setNextActivationDate(LocalDateTime nextActivationDate)
      Sets the next date at which the activator will be triggered
      Parameters:
      nextActivationDate - a LocalDateTime which should be greater than the current simulation time
    • execute

      public void execute(List<A> agents, Object... args)
      Description copied from class: GenericBehaviorActivator
      Triggers the corresponding behavior on all the agents which are at the CGR location defined by this activator.
      Overrides:
      execute in class GenericBehaviorActivator<A extends AbstractAgent>
      See Also:
    • toString

      public String toString()
      returns a string containing the CGR location and the number of monitored agents.
      Overrides:
      toString in class Activator<A extends AbstractAgent>
      Returns:
      a string representation of this tool.
    • getDefaultInterval

      public Duration getDefaultInterval()
    • setDefaultInterval

      public void setDefaultInterval(Duration defaultInterval)
    • getCommunity

      public String getCommunity()
      Gets the community to which this activator/probe is binded to.
      Returns:
      a string representing the community's name
    • getGroup

      public String getGroup()
      Gets the group to which this activator/probe is binded to.
      Returns:
      a string representing the group's name
    • getRole

      public String getRole()
      Gets the role to which this activator/probe is binded to.
      Returns:
      a string representing the role's name
    • initialize

      public void initialize()
      Called by the MaDKit kernel when the Activator or Probe is first added. Default behavior is: adding(getCurrentAgentsList());
    • adding

      protected void adding(List<A> agents)
      Called when a list of agents joins the corresponding group and role. This method is automatically called by the MaDKit kernel when agents enter a role due to the use of AbstractAgent.launchAgentBucket(String, int, String...). Override this method when you want to do some initialization on the agents that enter the group/role. Default implementation is:
      
       protected void adding(final List<A> agents) {
              for (A agent : agents) {
                      adding(agent);
              }
       }
       
      Parameters:
      agents - the list of agents which have been added to this group/role at once.
    • removing

      protected void removing(List<A> agents)
      This method is automatically called when a list of agents has leaved the corresponding group and role. This method is empty by default. Override this method when you want to do some initialization on the agents that enter the group/role. Default implementation is:
      
       protected void removing(final List<A> agents) {
              for (A agent : agents) {
                      removing(agent);
              }
       }
       
      Parameters:
      agents - the list of agents which have been removed from this group/role
    • removing

      protected void removing(A agent)
      This method is automatically called when an agent leaves the corresponding group and role. This method is empty by default. Override this method when you want to do some work when an agent leaves the group/role. Note that the role is still handled by the agent when invoked.
      Parameters:
      agent - the agent which is being removed from this group/role
    • size

      public int size()
      Returns the number of the agents handling the group/role couple
      Returns:
      the number of the agents that handle the group/role couple
    • getCurrentAgentsList

      public List<A> getCurrentAgentsList()
      Returns a snapshot at moment t of the agents handling the group/role couple
      Returns:
      a list view (a snapshot at moment t) of the agents that handle the group/role couple (in proper sequence)
      Since:
      MaDKit 3.0
    • getShuffledList

      public List<A> getShuffledList()
      Returns a ListIterator over the agents which is shuffled
      Returns:
      a ListIterator which has been previously shuffled
      Since:
      MaDKit 3.0
    • killAgents

      public void killAgents()
      Kills all the agents which are monitored.
    • allAgentsLeaveRole

      public void allAgentsLeaveRole()
      Makes all the agents leave the corresponding role at once.