ICM: Final Project, Genetic Crossing

For my final project in Intro to Computational Media, I intend to improve upon my genetic crossing sketches. The sketch already has some rudimentary functions to combine traits from two parents to create offspring. I want to expand the procreation to include an averaging of the parents’ trait values, then adding in randomized “luck” which may skew offspring’s traits quite a bit. Ideally, I also want to implement age, which affects traits over time as well, but this means I’ll also have to code in the phenomenon of death. I might try to make height and weight fluctuate, and have certain traits improve or worsen over time.

Screenshot from the last iteration I worked on

I talked to my professor, Heather Dewey-Hagborg, and she recommended that I look into genetic algorithms to push myself further in this project.  This led me to Professor Daniel Shiffman’s “Nature of Code” class, which does deal with genetic algorithms and has sample sketches with functions named darwin() and classes named DNA, and deals with the concept of “fitness” for evolution.

I am not sure I want to implement “fitness” but I think I understand what it’s for when doing these sorts of sketches.  The ratios of influences upon the development of people (and things) fascinate me.  So I am very interested in how a person’s makeup of traits combines with environment and profound events (breakups, parents divorcing, personal trauma, etc.) and one’s innate personality to lead to how people become successful, mature adults.

I want to implement to a larger degree specific balances of traits within equations and algorithms for defining people, since that directly relates to my eventual thesis project, Galapag.us, an ecosystem for identity and reputation.  I would like the individuals to have loyalties to countries and to communities, and have that reflected in some degree by gravity, pulling them in certain directions.

I would like to have a pan-able interface where you can drag around the screen, like moving around on Google Maps.  Also I’d like to be able to zoom in and out to find interesting areas.  Heather and I talked about visualizing my entities/data better, perhaps changing from the differently-sized circles around a central circle, to more of an amoeba/cell-like look where the traits are contained within the cell’s walls/cytoplasm.

This led me to look at how others are doing data visualization in Processing.  I found Jer Thorp‘s guide, which was very useful.  It made me think about whether I could make the visualizations look more like chromosome staining/karyograms.


Instead of connecting to a MySQL database, which may get tricky, I might dump a comma-separated value document from the MySQL database and then read that into my sketch — the upside of this is that it’ll force me to be more proactive on the Galapag.us/database side of things.  The downside is I don’t want to try to do too much with the limited time I have to complete this project.

Part of my primary challenge is to visualize the data in a manner that makes at least some sense to a viewer, even with context pop-ups and menus, while still using a flexible data input source.  All of this within a framework that accurately demonstrates procreation, attraction, and movement according to human gravitational rules to create some signs of mass-scale life and A.I.