Genes & Mating Systems Simulator
Genetic Invasion Theory

This article, its sequel (The Science of Admixture), and its future sequels, collectively form a body of work referred to as Genetic Invasion Theory or GI Theory; it is the foundational theory of genopolemology – the study of gene war. For more information, please visit the Research Institute of Genopolemology.

Notice: The statements herein are to be interpreted as purely descriptive claims, rather than prescriptive ones. The research makes no ethical or practical arguments in favor or against admixture, any particular mating system, or the superiority / inferiority of any genetic cluster. Genopolemelogy is solely concerned with understanding the nature, causes, and consequences, of genetic warfare – a biological phenomenon that is real and occurs to varying degrees of intensity 100% of the time. Genopolemology is not a moral or political ideology. Instead, ideologies would be wise to base their arguments (in favor of or against) any genopolemological position on truthful information.

It should also be noted that the terms “elite” and “commoner” are not used in a pejorative sense and are not to be interpreted as an indication of moral judgements or as insults against any particular group. Exceptional people – elites – are born good-looking, intelligent, healthy, wealthy, and capable of statecraft, innovation, and institution-building. Typical common people – commoners – are not born that way and this fact has no bearing whatsoever on their moral standing in society; as the research demonstrates, it does have implications for evolutionary outcomes, due to hypergamous female sexual selection – the female sexual preference of elite men.

Women choose which men get to pass on their genes and which men get weeded out of the gene pool. This is an inalienable right of all women and commoner men will simply have to accept and respect women as they are.

The following is a computer model for simulating genetic changes over multiple generations, given a certain mating system. It is built over an MIT-licensed JavaScript framework to allow other researchers to freely copy, edit, & use. The framework can be found below the data interpretation, along with an MIT-licensed example of its use immediately after. For those who wish to host this simulator on their own websites, the example is the same code that powers this very simulator and may be copy / pasted to the desired webpage.

Credible researchers only: feel free to dm me for any questions, assistance, bug reports, or improvement suggestions. “Apollonian Regime” or “@ApolloRegime” are both suitable for citations. What follows is an exercise in Apollonian speculation; thus, researchers are encouraged to subject this work to empirical data.

Lexical clarification: GQS is Genetic Quality Score. The researcher will note that the unit is omitted. This is because the model is not concerned with how the score is obtained, so long as it is a composite measure of allele frequency and that the “basket of genes” is sufficiently inclusive so as to correlate with genetic distance. The actual measure, unit, and methods of obtaining the GQS is at the discretion of the researcher – it may change the absolute values of the data generated but it will not change the inter-generational trends observed (which is what we care about).

On defining the elite:

genopolemology uses the genocentric definition of the elite which is simply that of a genetic cluster. Culture and religion is understood as a collection of memes made by brains made by genes. Thus, the genetic cluster of an elite is easily defined by the genes which develop the worldview of a particular hierarchy.

Under genocentrism, one does not become elite. Instead, the elite is born. Just because an elite cannot evidence eliteness with socioeconomic conditions does not make the elite a commoner.

Genocentrism Is The Future

Note: the settings below are the parameters by which we define the state of a founding population. The data will be inserted in-between the “Generate Data” button and the data interpretation.

Warning: the amount of computer resources needed to generate data increases exponentially with population size, which is why there is a limit of 9 generations; the limit can be overridden by right-clicking on the generation input, clicking “inspect”, and editing or removing the “max” attribute in the element that appears. Going above that limit or simply setting a high initial population can cause the browser to freeze or crash.

Interpreting the Data

Firstly, it should be noted that the model has been thoroughly tested with various settings and it has reliably produced similar values per dataset (given the same settings) – similar but not identical, due to the mutation rate and the pseudo-randomness of gender determination. Whereas the values differ by dataset, the trends observed are identical from one dataset to another (when generated with the same settings).

Monogamy

Important

What follows is a discussion of strict monogamy, as opposed to serial monogamy; i.e. what would happen if humans were strictly monogamous?

Contrary to popular belief, pre-historic polygynous humans did not become strictly monogamous. As mentioned in the Altruistic Matricide Hypothesis:

Before the advent of modern medicine, marital vows were made with the very reasonable assumption that death shall indeed “do us part” […] some men would have more than one wife throughout their lifetimes, albeit not at the same time.

In other words, strict monogamy is impossible in the face of maternal mortality. What really happened in the past is that humans transitioned from synchronous polygyny to asynchronous polygyny which we refer to as serial monogamy.

Mathematically, the numbers (for gene cluster admixture) play out in almost the same way between polygyny and serial monogamy. As such, the subsequent section on polygyny is the one that is most informative for mating patterns in pre-industrial conditions, particularly before 1930.

The advent of modern medicine (i.e. OBGYNs) has reduced maternal mortality rates to negligible levels, in the West. As a result, we have become relatively more strictly monogamous. As such, this monogamy section is most informative for post-1930 mating patterns.

In monogamous mode (with default settings), we can observe a slow and steady decrease in the genetic quality of the elites (~%40 change over 9 generations) and a slow and steady increase (~7% over 9 generations) in the genetic quality of the commoners, consistent with the weak hypergamy of a monogamous system. There is, therefore, a convergence towards the middle consistent with egalitarian systems in other domains, such as in economics. While the genetic quality converges towards the middle, monogamous mating systems largely exacerbate the genetic distance between the initial elites and the commoners, thereby inhibiting ethnocentrism. While the initial stock of commoners are not bred out, the least fit male commoners are; the very minor upward shift in genetic quality correlates with the genetic drift of the commoner class under hypergamous selective pressures. Furthermore, the minor downward shift in the genetic quality of the elites is consistent with the hypergamous breeding patterns of commoner women.

Arguably, this model might be demonstrating the mechanism that leads to the creation of a genetic middle class. This is not only because of the convergence towards the middle, but also because the founding stock remains mostly intact. Among the elites of this simulated society, there remains a subset of pure-blooded individuals – unmixed descendants of the initial elites – who preserve and even increase their genetic quality, despite the general decrease of the elite group as a whole. This is consistent with Ed Dutton’s observation that, in the West, there remains a stock of individuals who are sufficiently low in mutational load to survive Darwinian conditions. In both the simulated reality and Dutton’s example, this elite nucleus is dwarfed by the rise in low-quality genes.

This elite nucleus eventually finds itself in a position where its genetic distance is continuously diverging from the middle and lower classes. Since genetic distance is a strong predictor of social distrust, disorder, and conflict, the growing genetic distance of the founding nucleus and the future generations would predict low ethnocentrism. Since the hostility is anti-elitist in nature, we can credibly say that populism is, therefore, a manifestation of low ethnocentrism caused by the rise of low-GQS individuals.

The genetic evidence contradicts the notion that monogamy increases social trust. While there is undoubtedly an immediate short-term ethnocentric benefit to monogamy (due to the reduction of male competition), the inter-generational increase in societal bottom-heaviness leads to a genetic divergence which lessens inward cooperation.

Note: Near-total population replacement of commoners via downward mobility is still possible if elite couples consistently outproduce common couples 4:1. If commoner women average 2 babies, elite women would be required to produce 8 babies (who actually make it to breeding age) – a big ask.

Polygyny

In polygynous mode (with default settings), we can observe a slow and steady increase in the genetic quality of the elites (< 1% change over 9 generations) and a MAJOR increase (99.99% over 9 generations) in the genetic quality of the commoners, consistent with the strong hypergamy of a polygynous system. In each attempt, the elites maintained their genetic supremacy, albeit by a smaller margin per generation. There is, via the intermixing of elite men and commoner women, a new hybrid population being created in each generation with the % of commoner genes being diluted by ~50% every time a new hybrid class is created. The repetitive dilution of commoner genes go hand-in-hand by the genes diluting them, namely elite genes. As the frequency of elite genes increases in the commoner class, a decrease in the genetic distance between commoners and elites will necessarily be observed, thereby leading to an increase in ethnocentrism. Ultimately, polygyny is a humane form of population replacement of commoners with the offspring of the elites, or in other words, downward mobility.

It should be noted that opponents of this theory point to the average IQ of the Muslim population as a demonstration of polygyny’s effects. However, this is entirely baseless as Islam encourages consanguineous marriages; to blame an in-bred population’s average IQ of 83 on polygyny rather than in-breeding depression is an absurd and unserious proposition. Moreover, Islamic educational practices have been shown to severely affect intelligence by converging natural variations in intelligence; children born with a genetic upper limit at an IQ level below 83 see an increase of IQ to that level and those born with an upper limit above 83 see a decrease of IQ to that level as well.

Polyandry

In polyandrous mode (with default settings), we can observe a cataclysmic collapse in genetic quality of ~60% in a single generation, regardless of class and gender. Feminists are encouraged to attempt a successful polyandrous society with the simulator. The results will demonstrate why there are no polyandrous cultures in existence.

 Pre-Islamic Arabia

It is known that polyandry was an acceptable form of relationship among pre-Islamic Arabs. It has been suggested that the female incentive for such an arrangement lies in the ability to exploit fatherhood uncertainty to extract resources. More simply, women are better able to secure resources for their children in a polyandrous group consisting of men from the same tribe or who are consanguineously related (e.g. cousins), given that all of the men involved can be certain that the offspring is, at least, closely related to them.

If a sufficient number of women have the power to demand such an arrangement in the sexual market, some men will simply have to take what they can get, as it offers them some chance of passing on their genes directly and a definite chance of passing on their genes indirectly via kin selection.

This is consistent with the prevailing theory pertaining to the emergence of cousin marriages as an evolutionary adaptation to cuckoldry and low positive ethnocentrism. Similarly, the emergence of Islam (i.e. extreme mate-guarding) is very plausibly explained as an adaptation to female promiscuity.

In a genetic cluster where women are promiscuous, the most extreme mate-guarders are the most likely to directly pass on their genes and get the most evolutionary reward for their parental investment. In turn, the genes which create brains which are prone to extreme mate-guarding are the ones which comprise and replace future populations. Once a critical number of these extreme mate-guarders is reached, they will have the ability to influence the dominant culture according to their preferences. This is the evolutionary mechanism behind the emergence of Islam, in Arabia.

The Framework

/*
Mating Systems Computer Model Framework
Apollonian Regime (c) 2022
https://apollonianregime.com/wp-content/mating-systems.js
License: MIT
*/
function MS(func)
{
    // mode, gens, mutationRate, children, eliteGQS, commonerGQS, eliteMaleBudget, commonerMaleBudget, costPerChild <= names of .ms-var
    Array.from( document.getElementsByClassName('ms-var') ).forEach((e)=>{
        MS[e.name] = parseInt(e.value || e.dataset.default);
    });
    MS.idx = 0;
    MS.data = [ Generation.first() ];
    for( let i = 0; i < MS.gens; i++ )
    {
        func(MS.simulate);
    }
}
MS.simulate = function()
{
    var gen = Generation.populate();
    MS.data.push(gen);
    MS.idx++;
    return gen.statistics();
};
function Human(isMale, geneticQuality)
{
    this.isMale = isMale;
    this.geneticQuality = geneticQuality;
}
function Woman(geneticQuality)
{
    Human.call(this, false, geneticQuality);
}
function Man(geneticQuality)
{
    Human.call(this, true, geneticQuality);
}
Man.prototype.randBool = function()
{
    return Math.random() < 0.5;
};
Man.prototype.impregnate= function(woman)
{
    var score = woman.geneticQuality + this.geneticQuality;
    var avg = score / 2;
    var rate = MS.mutationRate;
    if( this.randBool() )
    {
        rate *= -1;
    }
    var difference = avg * rate;
    var geneticQuality = avg + difference;
    if( this.randBool() )
    {
        return new Man(geneticQuality);
    }
    return new Woman(geneticQuality);
};
Man.prototype.breed = function(woman, maxChildren)
{
    var children = [];
    for (var i = 0; i < Math.min(MS.children, maxChildren); i++)
    {
        var child = this.impregnate(woman);
        children.push(child);
    }
    return children;
};
function Generation()
{
    this.men = [];
    this.women = [];
    this.pos = MS.idx + 1;
}
Generation.prototype.statistics = function()
{
    var commonerMen = parseInt(this.men.length * 0.8);
    var commonerWomen = parseInt(this.women.length * 0.8);
    var eliteMen = parseInt(this.men.length * 0.2);
    var eliteWomen = parseInt(this.women.length * 0.2);
    
    var commonerMaleScore = 0;
    for(let i = 0; i < commonerMen; i++)
    {
        commonerMaleScore += this.men[i].geneticQuality;
    }
    var commonerMaleAvg = commonerMaleScore / commonerMen;
    
    var eliteMaleScore = 0;
    for(let i = commonerMen; i < this.men.length; i++)
    {
        eliteMaleScore += this.men[i].geneticQuality;
    }
    var eliteMaleAvg = eliteMaleScore / eliteMen;
    
    var commonerFemaleScore = 0;
    for(let i = 0; i < commonerWomen; i++)
    {
        commonerFemaleScore += this.women[i].geneticQuality;
    }
    var commonerFemaleAvg = commonerFemaleScore / commonerWomen;
    
    var eliteFemaleScore = 0;
    for(let i = commonerWomen; i < this.women.length; i++)
    {
        eliteFemaleScore += this.women[i].geneticQuality;
    }
    var eliteFemaleAvg = eliteFemaleScore / eliteWomen;
    var self = this;
    return {
        "Generation": self.pos,
        "Pop. Size of Generation": self.men.length + self.women.length,
        "Number of Men": self.men.length,
        "Number of Women": self.women.length,
        "Elite Male Average GQS": eliteMaleAvg,
        "Elite Female Average QGS": eliteFemaleAvg,
        "Commoner Male Average GQS": commonerMaleAvg,
        "Commoner Female Average GQS": commonerFemaleAvg
    };
};
Generation.prototype.ascending = function(a, b)
{
    return a.geneticQuality - b.geneticQuality;
}
Generation.prototype.sortMen = function()
{
    this.men.sort(this.ascending);
};
Generation.prototype.sortWomen = function()
{
    this.women.sort(this.ascending);
};
Generation.prototype.sortAll = function()
{
    this.sortMen();this.sortWomen();
};
Generation.prototype.shuffle = function(people){
    people.sort(() => Math.random() - 0.5);
};
Generation.prototype.randomize = function(){
    this.shuffle(this.men);
    this.shuffle(this.women);
};
Generation.first = function()
{
    var self = new this();
    for( let i = 0; i < MS.commoners / 2; i++ )
    {
        self.men.push( new Man( MS.commonerGQS ) );
        self.women.push(  new Woman( MS.commonerGQS ) );
    }
    for( let i = 0; i < MS.elites / 2; i++ )
    {
        self.men.push( new Man( MS.eliteGQS ) );
        self.women.push( new Woman( MS.eliteGQS ) );
    }
    return self;
};
Generation.monogamy = function()
{
    var self = new Generation();
    var gen = MS.data[MS.idx];
    var children = [];
    var lenWomen = gen.women.length;
    var lenMen = gen.men.length;
    var genderGap;
    if( lenWomen > lenMen )
    {
        genderGap = lenWomen - lenMen;
        lenWomen -= genderGap;
    }
    if( lenMen > lenWomen )
    {
        genderGap = lenMen - lenWomen;
        lenMen -= genderGap;
    }
    var eliteThreshold = parseInt(gen.men.length * 0.2);
    for( let i = 0; i < lenWomen; i++ )
    {
        var woman = gen.women[i];
        var man = gen.men[i];
        var budget;
        if( i > eliteThreshold )
        {
            budget = MS.eliteMaleBudget;
        }
        else
        {
            budget = MS.commonerMaleBudget;
        }
        var maxChildren = parseInt(budget / MS.costPerChild);
        
        man.breed(woman, maxChildren).forEach((child)=>{
            children.push(child);
        });
    }
    children.forEach((child)=>{
        if(child.isMale)
        {
            self.men.push(child);
            return;
        }
        self.women.push(child);
    });
    self.sortAll();
    return self;
};
Generation.polygyny = function()
{
    var self = new Generation();
    var gen = MS.data[MS.idx];
    var children = [];
    var lenWomen = gen.women.length;
    var lenMen = parseInt(gen.men.length * 0.2 );
    var lenIncels = gen.men.length - lenMen;
    var lenFeminists = lenWomen % lenMen;
    lenWomen -= lenFeminists
    var women = gen.women.slice(lenFeminists);
    var men = gen.men.slice(lenIncels);
    var ratio = lenWomen / lenMen;
    
    for( var i = 0; i < lenMen; i++ )
    {
        var man = men[i];
        var maxChildren = parseInt(MS.eliteMaleBudget / MS.costPerChild);
        var maxPerWoman = parseInt(maxChildren / ratio);
        
        var harem = [];
        var idx = 0;
        while(idx < ratio)
        {
            harem.push( women.shift() );
            idx++;
        }
        harem.forEach((woman)=>{
            man.breed(woman, maxPerWoman).forEach((child)=>{
                children.push(child);
                if(child.isMale)
                {
                    self.men.push(child);
                    return;
                }
                self.women.push(child);
            });
        });
    }
    self.sortAll();
    return self;
};
Generation.polyandry = function()
{
    var self = new Generation();
    var gen = MS.data[MS.idx];
    var children = [];
    var lenWomen = gen.women.length;
    var lenMen = gen.men.length;
    var lenFeminists;
    if(lenMen < lenWomen)
    {
        lenFeminists = lenWomen - lenMen;
        lenWomen -= lenFeminists;
    }
    else
    {
        lenFeminists = 0;
    }
    var lenIncels = lenMen % lenWomen;
    lenMen -= lenIncels;
    var men = gen.men.splice(0, lenMen);
    var women = gen.women.splice(0, lenWomen);
    var ratio = lenMen / lenWomen;
    
    for( let i = 0; i < lenWomen; i++)
    {
        var woman = women[i];
        var harem = [];
        var idx = 0;
        while(idx < ratio)
        {
            harem.push( men.shift() );
            idx++;
        }
        var count = 0;
        while(MS.children > count)
        {
            harem.forEach((man)=>{
                count++;
                if(MS.children < count){return;}
                var child = man.impregnate(woman);
                children.push(child);
                if(child.isMale)
                {
                    self.men.push(child);
                    return;
                }
                self.women.push(child);
                
            });
        }
    }
    self.randomize();
    return self;
};
Generation.populate = function()
{
    return this.systems[MS.mode]();
};
Generation.mode = function()
{
    return this.systemNames[MS.mode];
};
Generation.systems = [Generation.polygyny, Generation.monogamy, Generation.polyandry];
Generation.systemNames = ["Polygyny", "Monogamy", "Polyandry"];
// MS(func);

Example Use of Framework

Dependencies: Mating Systems Computer Model Framework & Bootstrap

<!-- 
| Mating Systems Simulator 
| Apollonian Regime (c) 2022 
| https://apollonianregime.com/genes-mating-systems-simulator
| License: MIT
 -->
<script type="text/javascript">
var css = {
    head: document.getElementsByTagName('head')[0],
    insert: function(file)
    {
        var css = document.createElement("link");
        css.href = "/wp-content/bootstrap-v5.2.0/".concat(file);
        css.rel="stylesheet";
        this.head.appendChild(css);
    },
};
css.insert('min.css');
</script>
<div class="row col-md-8 d-block mx-auto">
    <div class="form-group mb-1"><select class="ms-var form-control" name="mode" data-default="1">
        <option value="" selected="" disabled="" hidden="">--- Select mating system (Default: monogamy)</option>
        <option value="0">Polygyny</option>
        <option value="1">Monogamy</option>
        <option value="2">Polyandry</option>
    </select></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="gens" type="number" min="1" max="9" placeholder="Number of generations (Default: 9)" data-default="9"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="mutationRate" type="number" min="0" max="1" step="0.0001" placeholder="Mutation rate (Default: 0.0025)" data-default="0.0025"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="children" type="number" min="0" max="12" placeholder="Maximum children per woman (Default: 4)" data-default="4"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="elites" type="number" min="10" placeholder="Initial elite population (Default: 20)" data-default="20"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="commoners" type="number" min="0" max="100" placeholder="Initial commoner population (Default: 80)" data-default="80"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="eliteGQS" type="number" min="0" max="100" placeholder="Avg GQS of elites (Default: 2)" data-default="2"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="commonerGQS" type="number" min="0" max="100" placeholder="Avg GQS of commoners (Default: 1)" data-default="1"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="eliteMaleBudget" type="number" min="0" placeholder="Avg budget of elite men (Default: $1000000)" data-default="1000000"></div>
    <div class="form-group mb-1"><input class="ms-var form-control" name="commonerMaleBudget" type="number" min="0" placeholder="Avg budget of commoner men (Default: $100000)" data-default="100000"></div>
    <div class="form-group mb-2"><input class="ms-var form-control" name="costPerChild" type="number" min="10000" max="500000" placeholder="Cost per child (Default: $50000)" data-default="50000"></div>
    <button onclick="control.exe()" class="btn btn-xl btn-warning mb-5"><b>Generate Data</b></button>
    <div id="ms-box">
    </div>
</div>
<script type="text/javascript" src="/wp-content/bootstrap-v5.2.0/bundle.min.js"></script>
<script type="text/javascript" src="/wp-content/mating-systems.js"></script>
<script type="text/javascript">
var control = {
    view: document.getElementById('ms-box'),
    flow: function(simulate)
    {
        var data = simulate();
        var html = [];
        for( var key in data )
        {
            ['<p class="mb-0 pb-0"><b>', key, ':</b> ', data[key], '</p>'].forEach((str)=>{
                html.push(str);
            });
        }
        html.push('<p>----------</p>');
        control.view.innerHTML += html.join('');
    },
    exe: function()
    {
        this.view.innerHTML = '';
        MS(this.flow);
        this.view.innerHTML += '<p><b>Success:</b> <u>simulation complete</u></p>';
    }
};
</script>
Apollonian Regime Telegram Channel

Click to view.