The Connection class contains the weights which represent the strengths of the relationship between units. Since there are typically many more connections than any other type of object in a simulation, these objects are treated specially to speed up processing speed and reduce their memory consumption.
The main way in which connections are different than other objects, like Units, for example, is that they are usually operated on in a group. Thus, the Con_Group class becomes very important to determining how connections behave, which is not the case with a Unit_Group, for example.
The Con_Group, and not each connection, contains a pointer to the ConSpec which governs the behavior of all of the connections in the group. Also, Con_Groups can contain algorithm-specific parameters, and in general algorithms define their own type of Con_Group. When connections are created by projections, a new Con_Group is created to hold all of the connections for each projection.
The basic Connection class (which is often abbreviated Con when
new types are defined based on it, e.g. BpCon) has only the weight
value, wt
. Other algorithms will add other variables as needed.
The basic ConSpec connection specification has parameters for
determining how a connection's weights are to be initialized. The
rnd
field, which is of type Random (see section 8.5 Random Distributions),
allows for weights to be initialized with random values. To get a
specific weight value, use UNIFORM
with a mean
of the
value you want and a var
of zero. The NONE
type of
randomization will simply not do anything to the weight value. Note
that this may be ignored if the ProjectionSpec which created the
connections has its init_wts
flag set (but most projection specs
just use the ConSpec initialization anyway) (see section 10.3 Projections).
Each ConSpec also has a WeightLimit object which controls how the weights are constrained. This object has min and max fields and a controling field called type which can have the following values:
NONE
GT_MIN
LT_MAX
MIN_MAX
In addition the ConSpec has a boolean field called sym which if true, symmetrizes (sets to the same value) the initial weights across two different connections that reciprocally connect the same two units.
The ConSpec is the place to look for parameters that determine how weights are updated, for example learning rate, etc. These are all defined in algorithm-specific versions of the ConSpec.
Note: the following information should be useful to those who wish to program in PDP++, but is not necessary for the average user to understand.