This is a model that explores interactions between set set of simple emotion types. Interactions occur as a result of “compatibility” between an emotion type 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.
The emotion model is extremely simple: there are just two emotions (arbitrarily labeled “positive” and “negative”).
As with the emotion model itself, the attraction model is very simple: agents with postive emotions attract other agents with positive emtotions; negative likewise. Agents with differing emotions repulse.
When any two agents are within an arbitrary (configurable) distance, the degree to which they are attracted or repulsed is based upon the “visibility” parameter that is set in the interface, this being the radius (number of patches distant) one agent is from another.
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 emotions do something unexpected: they disrupt clusters and will cause them to disintegrate. With the default settings, you will see this happen in the model if you let it run for a while, with a positive emotion outlier causing negative emotion clusters to split apart and then prevent them from clustering, even after 10,000+ ticks.
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’ emotions changes the overall behaviour, including moving the visibility to the same or greater than the width of the world.This model’s definition is very simple; there is a great deal of research that has gone into emotional modling over the last 20 years, and some interesting theories which are not computationally expensive. Some of these have been linked in the references section, and offer interesting possibilities for model extension. In particular, the paper “A Model for Personality and Emotion Simulation” offers explicit examples integrating personality and emotion that would require the model to be updated with the following:
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.