/** *

* Interface for control functions. These functions change * at discrete time events corresponding to communication rounds, * but do not persist beyond that, influence the next control func, * or feed back into the next communication round. *

* @author Michael Schuresko * @version %I%, %G% * @since 1.0 */ public interface IControlFunc { /** * clones this object (similar to "clone" supported by IClonable * interface). */ public IControlFunc makeCopy(); /** *

* Updates arrLfDerivDst with the instantaneous derivatives * of the continuous-time component of the agent's state * given its current state and sensor readings *

* @param lfCurrTime current time (for time-varying systems) * @param arrLfStateSrc vector of global state of the system * @param sensors sensors * @param env environment * @param logicVars discrete components of agent internal state * @param arrLfDerivDst Destination for storing derivative values. * @param nIdxOffsetState Offset index into the global state vector * corresponding to the beginning of the parameters for this agent. * @since 1.0 */ public void getDerivs(double lfCurrTime, double arrLfStateSrc[], ISensor sensors, IEnvironment env, ILogicVarBundle logicVars, double arrLfDerivDst[], int nIdxOffsetState); public boolean directionConstantQ(double lfCurrTime, double arrLfStateSrc[], ISensor sensors, IEnvironment env, ILogicVarBundle logicVars, int nIdxOffsetState); /** * returns dimensionality of the state vector corresponding to one agent * @return dimensionality of the state vector corresponding to one agent */ public int getNumStateVars(); }