Simulation of pleasure and orgasm

Evolutionary simulations of sexual pleasure, comparing worlds where experience is ignored, epiphenomenal or causal.

Author
Manu Herrán
Code
gaiabasic-projects/pleasure-evolution
Status
Concept and simulation design
Started at
Sentience Research
Open draft. This project is being developed in the open. The text is incomplete and the code uses the planned GaiaBasic API, so it will change. Comments and collaboration are welcome on GitHub.

The question

Can artificial-life simulations that include pleasure help explain sexual experience and behaviour across species? Even if orgasm is specific to mammals, simulating it can reduce uncertainty by analogy, add evidence on whether insects have subjective experience, and help understand and prevent sexual aggression.

Three ways to represent sentience

An agent has two parts: rules of behaviour (including memory) and a generator of experiences. The body and the environment feed both. With that structure, sentience can be represented in three ways:

CaseSentienceRelated theory
1Ignored: there is no experience layer.Eliminativism
2Present but without causal effect: an emergent epiphenomenon.Monist emergentism
3Experiences change behaviour.Dualism (interactive)

Cases 2 and 3 can be formally equivalent. If A causes B and B causes C, it makes no observable difference whether B is "an experience" or "a physical state that comes with an experience". Making that equivalence explicit is part of the project.

Design in GaiaBasic

Agents have rules to approach pleasure and a rule to stop when satisfied. The project lets anorgasmia, single orgasm and multiple orgasm evolve, and then checks what happens when the copulation rules are removed from part of the population: those behaviours should disappear.

import gaiabasic as gb

for model in (gb.Eliminativism(), gb.Epiphenomenalism(), gb.Dualism.interactive()):
    w = gb.World("pleasure", seed=5)
    w.sentience = model
    w.populate(gb.species.SexualAgent, n=1_000,
               rules=[gb.rules.ApproachPleasure(), gb.rules.StopWhenSatisfied()])
    w.populate(gb.species.SexualAgent, n=1_000, tag="control",
               rules=[gb.rules.StopWhenSatisfied()])   # no copulation rule
    r = w.run(steps=200_000)
    print(type(model).__name__, r.distribution("orgasm_pattern", by="tag"))

What would count as a result

The simulation succeeds if it reproduces the known patterns and distributions of human orgasm. It can then be tested on other species, and used to explore questions such as the relation between promiscuity and testicle size.

Status

Concept and simulation design. Next step: implement the required GaiaBasic components and publish the code and results here.

Related: Short version in Examples · Concepts · Documentation.