An AdaptiveMechanism is a type of Mechanism that modifies the parameters of one or more other Components. In general, an AdaptiveMechanism receives its input from an ObjectiveMechanism, however this need not be the case. There are three types of AdaptiveMechanism:
- takes an evaluative signal (generally received from an ObjectiveMechanism) and generates an
control_allocation, each item of which is assigned to one of its ControlSignals; each of those generates a
control_signalthat is used by its ControlProjection(s) to modulate the parameter of a Component.
- Gating Mechanism
- takes an evaluative signal (generally received from an ObjectiveMechanism) and generates a
gating_policy, each item of which is assigned to one of its GatingSignals; each of those generates a
gating_signalthat is used by its GatingProjection(s) to modulate the value of the InputState or OutputState of a Mechanism.
See ModulatorySignal for conventions used for the names of Modulatory components.
Creating an AdaptiveMechanism¶
An AdaptiveMechanism can be created by using the standard Python method of calling the constructor for the desired type.
AdaptiveMechanisms of the appropriate subtype are also created automatically when other Components are created that
require them, or a form of modulation is specified for them. For example, a ControlMechanism is
automatically created as part of a System (for use as its
controller), or when control is specified for the parameter of a
Mechanism; and one or more LearningMechanism are created when learning is
specified for a Process or a System (see the documentation for
subtypes of AdaptiveMechanisms for more specific information about how to create them).
An AdaptiveMechanism has the same basic structure as a Mechanism. In addition, every AdaptiveMechanism
modulation attribute, that determines the default method by which its
ModulatorySignals modify the value of the Components that they modulate (see the modulation for a description of how modulation operates, and the documentation for individual
subtypes of AdaptiveMechanism for more specific information about their structure and modulatory operation).
LearningMechanism and ControlMechanism are always executed at the end of a
TRIAL, after all ProcessingMechanisms in the Process or System to which they belong have been executed; all LearningMechanism
executed first, and then ControlMechanism. All modifications made are available during the next
GatingMechanism are executed in the same manner as ProcessingMechanisms; however, because they almost invariably
introduce recurrent connections, care must be given to their initialization and/or scheduling).
AdaptiveMechanism is an abstract class and should NEVER be instantiated by a call to its constructor. They should be instantiated using the constructor for a subclass.