Creating an AGTControlMechanism
An AGTControlMechanism can be created in any of the ways used to create a ControlMechanism.
Like all ControlMechanisms, an AGTControlMechanism it receives its input from an ObjectiveMechanism.
However, unlike standard ControlMechanism, an AGTControlMechanism does not have an objective_mechanism argument in its
constructor. When an AGTControlMechanism is created, it automatically creates an ObjectiveMechanism and assigns a
DualAdaptiveIntegrator Function as its
The OutputStates to be monitored by the AGTControlMechanism’s
specified using the monitored_output_states argument of the AGTControlMechanism’s constructor, using any of the ways to
specify the OutputStates monitored by ObjectiveMechanism. The
monitored OutputStates are listed in the LCControlMechanism’s
attribute, as well as that of its
The parameter(s) controlled by an AGTControlMechanism are specified in the control_signals argument of its constructor,
in the standard way for a ControlMechanism.
Input: ObjectiveMechanism and Monitored OutputStates
An AGTControlMechanism has a single (primary) InputState that receives its input via a
MappingProjection from the OUTCOME OutputState of an ObjectiveMechanism.
The ObjectiveMechanism is created automatically when the AGTControlMechanism is created, using a
DualAdaptiveIntegrator as its
function, and is listed in the AGTControlMechanism’s
objective_mechanism attribute. The ObjectiveMechanism aggregates the
of the OutputStates that it monitors, integrates their aggregated value at two different rates, and combines those to
generate the its output, which is used by the AGTControlMechanism as its input. The OutputStates monitored by the
ObjectiveMechanism, listed in its
attribute, are also listed in the AGTControlMechanism’s
attribute. They can be displayed using the AGTControlMechanism’s
An AGTControlMechanism has a ControlSignal for each parameter specified in its
control_signals attribute, that sends a ControlProjection to the ParameterState for the
corresponding parameter. ControlSignals are a type of OutputState, and so they are also listed in the
output_states attribute. The parameters modulated by an
AGTControlMechanism’s ControlSignals can be displayed using its
show method. By default,
all of its ControlSignals are assigned the result of the AGTControlMechanism’s
function, which is
the input it receives from its
allocation is used by the ControlSignal(s) to determine
intensity, which is then assigned as the
value of the
ControlSignal’s ControlProjection. The
value of the ControlProjection is used by the
ParameterState to which it projects to modify the value of the parameter it controls (see
Modulation for description of how a ControlSignal modulates the value of a parameter).
function takes as its input the
input_state, and uses that to determine its
control_allocation which specifies the value assigned to the
allocation of each of
its ControlSignals. An AGTControlMechanism assigns the same value (the input it
receives from its
objective_mechanism to all of its ControlSignals. Each
ControlSignal uses that value to calculate its
intensity, which is used by its
ControlProjection(s) to modulate the value of the ParameterState(s) for the parameter(s) it
controls, which are then used in the subsequent
TRIAL of execution.
A ParameterState that receives a ControlProjection does not update its value until its owner Mechanism
Lazy Evaluation for an explanation of “lazy” updating). This means that even if a
ControlMechanism has executed, a parameter that it controls will not assume its new value until the Mechanism
to which it belongs has executed.