SimSex: Sexual Evolution Simulator Go To Download Page
This description includes major updates through mid-February. The climate now changes, and the eApes are starting to decide for themselves where to live. See below.
For those who came here looking for lurid depictions of moving genitalia, sorry, you're in the wrong place. This program charts sexual and other evolution, population counts and related numbers using line charts. Boring, boring, boring.
This is extremely brief documentation for the SimSex program. It is available for free download from an anonymous ftp site . No functions are guaranteed, since this is a work in progress. No other documentation is available yet, and there is no context help (popup screens) provided. For those not at all familiar with simulation, this does not prove or disprove anything. This is a tool to help understand processes, to clarify thinking, to point inquiries in useful directions. The fact that electronic ape depictions appear to evolve in certain ways does not at all mean that our ancestors did the same.
To install the program, save the downloaded file to any directory (or the desktop) in your Windows PC. There is no installation script. To run the program, doubleClick in Windows Explorer. This program will not create a menu item or a desktop icon, but you can do that if you like. The first time you execute it, you will probably get an error while it tries to find a log file. Ignore it. Eventually I'll care about that.
To execute the simulation, click Run. To pause it, click Pause. On PCs I've run it on, it runs at anywhere from 15,000 years per hour to 40,000 years per hour. Speed depends on the population size and your PC cycle time. As I add complexity, it is slowing down some. It is more exciting than watching paint dry, but less exciting than painting. The Run function will create 20 apes, and they will reproduce (once it starts running) up to a typical population of 50 to 70. My longest run so far created about half a million apes in about 300,000 years.
SimSex is a Bayesian Monto Carlo simulation for human evolution. "Bayesian" means that I start with certain assumptions and they are incorporated into the program. In this case, I presume that human ancestors display certain typical primate behaviors, and much of the coding is devoted to computing those behaviors and how they might interact. In other words, we don't start with the primordial soup and hope to find primates eventually, and once we have a primate we don't presume it will flap its wings and fly. "Monte Carlo" means that the program uses a form of electronic coin-flipping to "mutate" the DNA of the electronic apes inside, and uses coin-flipping to randomly select events and situations. Monto Carlo simulation is a common method for handling complex problems that can't be reduced to a math formula.
SimSex is clock-based rather than generation-based. Some apes will reproduce early in life, some later, and my model is based on the implications of these differences, among other things. Preference for younger partners, for example, is probably not conveniently computed in generation-based programs. The SimSex clock can be adjusted on the fly, but you will probably end up with everyone dead because there are no timed routines for all possible clocks. If you set the clock to a long cycle, for example, everyone will die before they can reproduce. I suggest you leave it alone. The current clock tick rate is one year, and it can range from 20 minutes to 10,000 years. The current "date" is indicated on the main screen, as a year.day combination in the top left corner.
Each trait (I sometimes refer to them as "genes", which is not really correct) value has a range of 0-2000, with neutral being 1000. This used to be a range of 200, but that didn't allow fine enough gradations. The number is essentially meaningless, and takes on meaning only when a computation uses it to decide what's going on. The source code with the computations is not yet available, because I'm not anywhere near done with it. The program starts with an initial population with trait values set to what I think might be useful starting points.
This is all a brutal simplification of real life; people's behavior is not simply a math equation. But we do reduce people to that level when taking a census, or when doing statistical analysis of behaviors, what have you. This program is not an attempt to encapsulate all that people do, as it it were an adequate representation. It is an attempt to take a few fairly simple and intuitively acceptable rules or statements about how people behave, and express them crudely in a digital form so they can be examined. This program is the equivalent of a see-through model car engine - it doesn't prove or disprove anything about the real thing, but it helps see how the moving bits interact.
Gene mutation (i.e., all the genes that make up some inherited trait, treated as a single unit) can be viewed in the Trait Editor window, where you can run large numbers of trials, and each of those can involve a large number of generations where the same gene is mutated and inherited over and over. This can be used to validate the mutation computation, and to see what scattering effect can be expected with different amounts of mutations. Eventually this will be the interface for editing genes on the fly, and for initial definition of genes.
Traits can be simple or complex. A simple trait has a name starting with a lowercase "s", as in "sOrgasmic". This is defined and evaluated in isolation. A "merged" trait is a complex trait that can consist of one or more simple traits, and the merged trait is evaluated as a whole. "mFrontHunger" is a combination of frontal eroticism, skin hunger, and a couple others. A simple trait can participate in more than one merged trait. Simple traits can be edited in the Trait Editor, but merged traits cannot.
The primary way to track progress is in the chart window. Each chart page can have any number (within reason) of charts, and each chart can track different information for different populations. Right-click anywhere in the chart window to see the layout controls you can play with. You can define additional chart pages, and zoom in on desired charts, or layout different populations in adjacent charts to compare them running. Left-click on any line label (the legend at the left side of the chart) for a description of the data being graphed. Left-click on any chart line where it crosses a vertical line, and you'll get the exact reading at that point. Left-click on the title of the chart (the top line) and you can select a different population or a different data set.
The running populations can be drilled into in the Snoop window. The program is designed to support multiple mortal populations (in multiple habitats) so the differences between them can be understood. Use the ellipsis ("...") on the left side to start navigating, and select the population (or habitat) you want to view. There is currently no useful information for viewing in the habitats. In each population there will be a new ellipsis for selecting a census (starts with "#") or an individual ("A"). The census gives summary information at some point in time, and the ape gives the trait values for that instance. Suggest you stop the clock before Snooping. If the clock is running, the ape you try to select will have died before you can read it.
Genetic values can be changed during a run, by injecting new values into the Angels or apes. Each population has a Venus and Mars angel from which infants can take traits. Ok, the name isn't perfect, but it's close enough. These genes are incorporated in new pregnancies, not in living animals. Inject new values via the Trait Editor. When Venus or Mars are "live", and the trait you edit is turned on (using the checkbox), newborn infants will take this value. When you set Venus or Mars to "dead" or turn the trait off, the effect stops and the population continues with the new dose of traits you injected. It's very easy to kill a population this way, particularly if you mess around with their willingness to mate.
Any number of traits can be tracked in the census, and whatever is tracked can be charted. The charts will repaint every time a census is taken, and the census data will be on the chart until the census is purged. (Click where a chart line passes a vertical line to get an exact reading on it.) The duration of a census' life depends on when it is taken, so a century census won't last as long as a 10,000 year census. A million-year census is not purged, so if you run longer than 20 million years the chart will get crowded. This will be clear when you see the charting running, and census lines drop off as the lines move left. The chart can be resized. The chart will look pretty bouncy, because we are dealing with a very small population (to keep the processing reasonably fast). The population is small enough that it's entirely possible for your test tribe to go extinct.
The drop-down and scrollers at the bottom of the chart window can be used to limit the data shown to a range of years, or to the last few years of the run. This can dramatically speed up execution if you are doing annual census-taking. Annual census charts can show pretty dramatic interactions, particularly of a population impacting the carrying-power of their habitat. These interactions are completely invisible in the century-based census.
The current release has added environmental conditions. After some time for the population to stabilize, I initiate a drought, reducing the dependence on the jungle/woodlands and forcing the eApes to the beach and into the water. The water environment encourages the deeper pelvic anatomy, leading to frontal sex and reducing the odds of coital orgasm. Everything else in the model flows from that via a set of rules that do not change. In other words, there is no script that the evolution follows, there are merely constant rules, whose effect changes as evolution continues.
For example, being evaluated as a swimmer means that body hair decreases and pelvic depth increases. Increasing pelvic depth and slipperyness start to make rear-entry sex unworkable, so the population switches fairly quickly to frontal sex (which is always part of their repertoire, but had no adaptive value until the swimming changes made rear-entry sex difficult). Frontal sex results in loss of intromission for some proportion of the coital episodes, so the vagina starts to swing around to orient to the front. This results in loss of G-spot stimulation, which decreases the "mOrgasmic" level. "mOrgasmic" consists of several components, which then start to be adaptive, and so on.
Once the population is swimming, everything else is "naturally selected" by the rules contained in the program.
The propensity to mate at all, for example, comes from the sum or orgasms and passion, so females lacking both of those tend to not reproduce, and the remaining females are those whose upward mutation of passion was able to compensate for loss of orgasms. The value of perceptiveness in males depends on what females seek. When passion is low, females want a male for only a few minutes, perceptiveness in males makes them hot dates, and the male propensity to seek immature females has no value. As passion rises, females want males to stick around, leading to a characteristic typical mating time for the population. (See MateMonths in a census.)
As the mating duration extends, the traits that make males hot dates also lead males to fail to live up to the new expectations of those females. The resulting anger makes promiscuity a bad idea for males, and being a hot date becomes an actual liability. At the same time, it becomes valuable to win the heart of a young female before her first ovulation, because the increasing female bonding time will have her thinking of him as her mate when she does begin ovulating. Groggishness (the propensity to court immature girls) arises in males when there's an advantage in bonding with young females as opposed to courting mature ones.
The eApes are now choosing their habitat, to an extent. Each habitat consists of one or more Neighborhoods, and each Neighborhood consists of a terrain/resource object pair. The habitat exploitation chart shows how much the eApes are depending on the coastal, beach or ocean as time goes by. As pelvic depth increases, the marine resource becomes more useful and the apes tend to abandon the beach.
Future enhancements include dealing with how the eApes remember each other, hear rumors, and bear grudges. Other tasks will include polygamy and polyandry, and lower gradations of emotional/sexual involvement. It is a fascinating process. Eventually I hope to illustrate brain growth and other evolution, and will release the program with selectable scenarios. Perhaps it will have the ability to define other traits of your choice and define the rules, so you can simulate whatever you like. I have no plans to provide little furry images that you can drag and drop.
The counters are mostly a programming tool to catch "memory leaks", a common error that can crash your computer if not fixed. Some of them are of minor interest to you. The "Apes" counter at top left shows the number of apes currently alive, and the total who have ever lived. "Impressions" are created for each male and female each time they date, so Impressions divided by two is the number of dates that have occurred. These last for microseconds (in the computer, and sometimes in real life) so the current value will always be zero, but the total can get pretty impressive, particularly if you extrapolate those to so many martinis and so many pizzas.
Each of these electronic apes goes through its life a year at a time, meeting others, evaluating them as potential partners, checking out their reputations and how much they like them, and maybe have babies, and eventually die. They might have offspring quite early in life, and might continue quite late into life. So the situation where an uncle is younger than a nephew can arise here just like in real life. We can trace a lineage through all the ancestors that were born in the earliest part of their antecedents' lives, and another lineage through the latest births. This is shown in each ape in the GenerationMin and GenerationMax values in the census - how many generations the apes are from the initial seeding of the habitat, counting via early births or late births. That's what the last two numbers in the ape summary show, when reading the census - slowLineage<fastLineage.
New versions will be uploaded when it seems appropriate, and perhaps some real documentation will appear.
