• Github
Table of Contents
0.7.2.0
  • Welcome to PsyNeuLink
  • Basics and Sampler
  • Quick Reference
  • Core
  • Library
  • Contributors Guide
  • Docs >
  • Core >
  • Component >
  • Mechanisms >
  • Modulatory Mechanisms
Shortcuts

Modulatory Mechanisms¶

  • Control Mechanisms
  • Learning Mechanisms

Contents¶

  • Overview
  • Creating a ModulatoryMechanism
  • Structure
  • Execution
  • Class Reference

Overview¶

A ModulatoryMechanism is a type of Mechanism that modifies the operation of one or more other Components. In general, a ModulatoryMechanism receives its input from an ObjectiveMechanism, however this need not be the case.

There are two primary types of ModulatoryMechanism:

  • Control Mechanisms
    modulates the value of a Ports of a Mechanism. Takes an evaluative signal (generally received from an ObjectiveMechanism) and generates a control_allocation, each item of which is assigned to one of its ControlSignals; each of those generates a control_signal that is used by its ControlProjection(s) to modulate the parameter of a function (and thereby the value) of a Ports. ControlSignals have costs, and a ControlMechanism has a costs and a net_outcome that is computed based on the costs of its ControlSignals. A ControlMechanism can be assigned only the ControlSignal class of Modulatory Signals, but can be also be assigned other generic OutputPorts that appear after its ControlSignals in its output_ports attribute.
  • Learning Mechanism
    modulates the matrix parameter of a MappingProjection. Takes an error signal (received from an ObjectiveMechanism or another Learning Mechanism) and generates a learning_signal that is provided to its LearningSignal(s), and used by their LearningProjections to modulate the matrix parameter of a MappingProjection. A LearningMechanism can be assigned only the LearningSignal class of Modulatory Signals as its OuputStates, but can be also be assigned other generic OutputPorts, that appear after its LearningSignals in its output_ports attribute.

See ModulatorySignal for conventions used for the names of Modulatory components.

A single Modulatory Mechanisms can be assigned more than one ModulatorySignal of the appropriate type, each of which can be assigned different control_allocations (for ControlSignals) or learning_signals (for LearningSignals). A single ModulatorySignal can also be assigned multiple ModulatoryProjections; however, as described in ModulatoryProjections, they will all be assigned the same variable.

Creating a ModulatoryMechanism¶

A ModulatoryMechanism can be created by using the standard Python method of calling the constructor for the desired type. ModulatoryMechanisms 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 ModulatoryMechanisms for more specific information about how to create them).

Structure¶

A ModulatoryMechanism has the same basic structure as a Mechanism. In addition, every ModulatoryMechanism has a 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 ModulatoryMechanism for more specific information about their structure and modulatory operation).

Execution¶

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 TRIAL. 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).

Class Reference¶

class psyneulink.core.components.mechanisms.modulatory.modulatorymechanism.ModulatoryMechanism_Base(default_variable, size, modulation, params, name, prefs, context=None, function=None, **kwargs)¶

Subclass of Mechanism that modulates the value(s) of one or more other Component(s). See Mechanism and subclasses for arguments and additional attributes.

Note

ModulatoryMechanism 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.

modulation¶

ModulationParam – determines how the output of the ModulatoryMechanism’s ModulatorySignal(s) are used to modulate the value of the Port(s) to which their ModulatoryProjection(s) project.

Next Previous

© Copyright 2016, Jonathan D. Cohen.

Built with Sphinx using a theme provided by Read the Docs.
  • Modulatory Mechanisms
    • Contents
    • Overview
    • Creating a ModulatoryMechanism
    • Structure
    • Execution
    • Class Reference

To analyze traffic and optimize your experience, we serve cookies on this site. By clicking or navigating, you agree to allow our usage of cookies. As the current maintainers of this site, Facebook’s Cookies Policy applies. Learn more, including about available controls: Cookies Policy.

  • Github