This is a model that explores interactions between set set of simple personality types and subtypes. Interactions occur as a result of “compatibility” between a type/subtype combination in two or more agents. The interaction itself is manifested by agents moving in the world: higher compatibility leads to movement towards, lower compatibility leads to movement away.
In order to model attractions between models of similar and dissimilar types, where there is attraction and repulsion for both, we’ve defined an arbitrary personality model that has two types and two subtypes:
Ia
Ib
IIa
IIb
All possible personality type interactions are given by the right triangular matrix:
with the following rules for attraction/repulsion:
I
’s are attracted to each other.II
’s are repulsed from each other.a
’s of different types are attracted.b
’s of different types are repulsed.Ia
personalities are attracted to their opposite in type and subtype.Ib
personalities are repulsed from their opposite in type and subtype.This gives us the following table of attraction/repulsion interactions for the personality types and subtypes from the right triangular matrix:
| Ia | Ib | IIa | IIb |
|-----+----|----|-----|-----|
| Ia | + | + | + | + |
| Ib | | + | - | - |
| IIa | | | - | - |
| IIb | | | | - |
Attraction and repulsion between agents is “visibility” based (in the user interface, this is controlled by the variable interaction-radius
): agents within range of each other, affect each other; outside of that range, no effect is experienced.1
When agents are within the interaction radius, the cummulative effects of all agents on an agent in question is caluclated using the same math as done in introdiuctory physics courses where elemtns of vectors are summed: essentially this is simplified center of mass.
Reuplusion is a special case of attraction: the repulsion “center of mass” is calculated, then flipped 180 degrees around the agent in question and added to the attraction “center of mass” for the total motivating effect of all agents within the radius of interaction.
Section Footnotes
[1] Initially, the plan was for attraction and repulsion between agents to be modeled on Coulomb’s law [2], while combining the effects of multiple agents is modeled with the center of mass. In our case, instead of a mass we wanted to use the inverse square of the distance to the agent in question (this provides the magnitude of the interaction: the closer the agents, the more they would have an impact).
[2] Originally we’d thought of gravitation as our model for attraction, and just inverting it for repulsion. However, Andreas Sjöstedt recommended using Coulomb’s law instead, which was of course an excellent idea, with electrically charged particles providing a more consistent analogy for the personality attraction and repulsion in our model.
Click “Setup” and then “Go” to watch the default number of agents with the default emotion normal distribution interact with each other.
The expected resuilt with such a simple model is the collapse of like-to-like into clusters. However, outliers that aren’t pulled into clusters of agents with similar personality do something unexpected: they disrupt clusters, causing them to disintegrate or preventing them from assembling in the first place.
Different initial placements of agents as well as different normal distributions of personalities will result in indifferent clusters beingn formed and as well as the degree to which outliers that don’t cluster are present in the world.
interaction-radius
) to 0
while the model is running to allow clusters to dissipate and agents to difuse across the world, then increase visibility in tiny increments to watch how gradually increasing the sensitivity to others’ personality types changes the overall behaviour, including moving the visibility to the same or greater than the width of the world.By increasing the number of personality types, and thus increasing the number of ways in which agents may be attracted to or repulsed from each other, a wider range of behaviours would be exhibited and new patterns observed. In fact, the temptation to explore this was too strong, and one successful attempt was made in this same package (see the model PEMBAs-and-Crowds-Personality-Complex.nlogo
). In a sampling of several world configurations, no long-term, fully-stable patterns were observed under the default settings, unlike in this simple personal model.
This model’s definition of attraction between types was especially designed to provide balance across all permutations and ensure that at least one type was attracted to another; exploring a model that had a universal repulsor that no agent was attracted to (even those of its own type) would be an interesting exercise.
There are agent models that combine personality with emotions and moods (see “A Model for Personality and Emotion Simulation” for more details), and this would be an extremely interesting extension for this model. The Emotional model in this package disusses some of this in more detail.
in-radius
function from performing correctly under various circumstances. The Github issue for the bug mentions another ticket which provides a workaround for this problem. That workaround was applied in this project (the procedure was named in-radius2
).__includes
feature in order to better manage source code in separate files. It was noticed that updates to the separate source files required reloading the model twice via the File
-> Recent Files
menu.histogram
function was very convenient in the development of this model, there were noted absences of other functions, in particular the frequencies function from Clojure. This was implemented in Netlogo (as well as a sorted tuples function) for better introspection of data. You may review the functions by viewing the src/netlogo/util/general.nls file.If you mention this model in a publication, we ask that you include the citation below.
McGreggor, D. (2019). NetLogo Personality, Emotion, and Mood Bearing Agents. https://github.com/oubiwann/abm-personality-and-emotions/tree/master/project.
Copyright © 2019 Duncan McGreggor.
Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.