Mapping Genealogy in Neo4J

This summer I've worked on a behavior and trait mapper in C++ that establishes entirely dynamic AI routines, allowing actors to propagate and interact with each other in unique ways. You can think of it as a super sophisticated Langton's Ant, where the goal was to identify the reflective sociological impacts of personal traits from as minute and mundane as a vegan to criminal desires like burglary, sexual preferences like pansexual or uncontrollable hunger desires of a cannibal, etc. The graphing of the application was with Vis.js.

One of the first aspects of the program was birth rate. Whether or not the rate was sustainable heavily depended on whether people were happy or not. Each actor would have general needs such as intimacy and hunger, where happiness was a direct result of whether those needs were being met, and to what level they were being met.

The logs were pruned most of the time to major events, with 50 actors and interactions computed hundreds of times per actor each hour and the simulation running a total of 18 years, it was hard not to run up against general storage or performance constraints quickly otherwise.

All of the actors were stored as nodes with their relationships and interactions being mapped as various edges. Most of the time recently I've found a lot of strange anomalies such as inter-family breeding, polyamory groups growing out of control and other similar cases that are prevented in real life by complex sociological structures and psychological constraints that would make the application too complex to manage. A lot of real conclusions have still be gathered from playing with individual traits though.

An interesting problem is one many D&D players likely haven't thought of: Quicklings with their quick maturity and young death rates could actually lead to immediate overpopulation if their procreation rate matches humans. In the image below we see that Quicklings have the capacity to overpopulate very easily. If health or danger risk is based on time and not normalized across a lifetime for simulation purposes then compressing Quicklings child-bearing years into a small amount of time reduces their risk of premature death and exacerbates the overpopulation possibility. In order to maintain a consistency across races either an external factor like war has to reduce this. Alternatively an internal factor like disease, birth control like self-adjusting abstinence or increasing the risk of complications during pregnancy could help mitigate the chance of overpopulation.

The red outline is Goblins, the green is Kobolds and the Orange is Quicklings. There are 16 races used in this particular simulation.