JSFiddle - React, Tailwind, and code Playground

JavaScript

var pop_size = 256; // 2048;
var max_iterations = 512; // 16384;
var elite_rate = 0.10;
var mutation_rate = 0.25;
var mutation = function() {
    return mutation_rate;
}
var target = 'Hello world!';

var struct = function( str, fitness ) {
    return {
        str: str,
        fitness: fitness
    };
}

var init_population = function ( population, buffer ) {
    var size = target.length;

    for ( var i = 0; i < pop_size; i++ ) {
        var citizen = struct('', 0);
        var str = [];

        for ( j = 0; j < size; j++ ) {
            str[j] = String.fromCharCode(Math.floor(Math.random() * 256));

        }

        citizen.str = str.join('');

        population.push(citizen);
        buffer.push(citizen);
    }
}

var calc_fitness = function ( population ) {
    var size = target.length;

    for( var i = 0; i < pop_size; i++ ) {
        var fitness = 0;
        var str = population[i].str;

        for ( j = 0; j < size; j++ ) {
            fitness += Math.abs( str.charCodeAt(j) - target.charCodeAt(j) );
        }

        population[i].fitness = fitness;
    }
}

var fitness_sort = function ( x, y ) {
    return x.fitness - y.fitness;
}

var sort_by_fitness = function ( population ) {
    population.sort(fitness_sort);
}

var elitism = function ( population, buffer, esize )
{
    for ( var i = 0; i < esize; i++ ) {
        buffer[i].str = population[i].str;
        buffer[i].fitness = population[i].fitness;
    }
}

var mutate = function ( member ) {
    var size = target.length;
    var ipos = Math.floor(Math.random() * size);
    var delta = Math.floor(Math.random() * 256);
    var str = member.str.split('');

    str[ipos] = String.fromCharCode((member.str.charCodeAt(ipos) + delta) % 255 );

    member.str = str.join('');
}

var mate = function ( population, buffer ) {
    var esize = pop_size * elite_rate;
    var tsize = target.length;

    elitism ( population, buffer, esize );

    for ( var i = Math.floor(esize); i < pop_size; i++ )
    {
      ...