Čím viac červených, tým menšia šanca ďalšej červenej. Prečo? Ľudia sa skrátka vyzabíjajú a prevážia zdroje na planéte. Klasická anihilácia druhu. Toto nás čaká:

Čím viac červených, tým menšia šanca ďalšej červenej. Prečo? Ľudia sa skrátka vyzabíjajú a prevážia zdroje na planéte. Klasická anihilácia druhu. Toto nás čaká:

Podľa simulácií máme 8 násobnú šancu, že vyhynieme. Ak s pravdepodobnosťou P1 rastie množstvo ľudí červený bod, tak s pravdepodobnosťou P2=1-P1 rastú zdroje zelený bod. Je jasné, čo sa stane takejto spoločnosti alebo druhu? Čaká nás anihilácia? Vyhynutie? Simulácia: https://hrubos.tech/blogy/content/images/20260210164416-geneticky-algoritmus4.gif
Vidíme, že s časom modrá krivka dokonca klesá, čo potvrdzuje možnú anihiláciu druhu a opätovný rast zdrojov:

anihilacia-planety https://hrubos.tech/blogy/content/images/20260210170536-planeta-anihilacia.gif

Je zaujímavé, že zdroje planéty a počet obyvateľov sa vôbec nepretnú, čím je civilizácia vyspelejšia ^^^ Simulácia naznačuje, že hoci je spoločnosť vyspelejšia, žerie sa medzi sebou natoľko, že sa vyvražďuje á modrá a červená krivka sa nikdy nepretnú. Všimnite si aj schody na modrej krivke grafu, tie vodorovne naznačujú, že spočiatku spoločnosť prestane rodiť deti a postupne sa stáva totalitou, ktorá vyrovná seba aj zdroje.

using Pkg

Pkg.add("Plots")
Pkg.add("Random")
using Random
using Plots

# =====================
# KONŠTANTY
# =====================
const EMPTY = 0
const RED   = 1
const GREEN = -1

N = 50                    # veľkosť siete
P_RED = rand()             # pravdepodobnosť červenej pri vyžieraní
GREEN_DECAY = 1-P_RED        # pravdepodobnosť prežratia zelenej → červená
FPS = 30                  # snímky za sekundu
DURATION = 30             # sekundy
FRAMES = FPS * DURATION

# =====================
# INICIALIZÁCIA SIETE
# =====================
grid = fill(EMPTY, N, N)


function grid_to_howmany(grid)
    Reddish = 0
    Greenish = 0

    for v in grid
        if v == RED
            Reddish += 1
        elseif v == GREEN
            Greenish += 1
        end
    end

    return Reddish, Greenish
end


# =====================
# JEDEN KROK VYŽRATIA
# =====================
function step!(grid)
    empty_cells = findall(x -> x == EMPTY, grid)
    isempty(empty_cells) && return

    idx = rand(empty_cells)
    grid[idx] = rand() < P_RED ? RED : GREEN
end

# =====================
# PREŽIERANIE ZELENEJ
# =====================
function green_decay!(grid)
    for i in eachindex(grid)
        if grid[i] == GREEN && rand() < GREEN_DECAY
            #grid[i] = RED
            grid[i] = GREEN
        end
    end
end



# =====================
# PREVOD NA FARBY
# =====================
function grid_to_colors(grid)
    colors = Array{RGB{Float64}}(undef, size(grid))
    for i in eachindex(grid)
        colors[i] = grid[i] == RED   ? RGB(1,0,0) :
                    grid[i] == GREEN ? RGB(0,1,0) :
                                       RGB(1,1,1)
    end
    colors
end

# =====================
# ANIMÁCIA
# =====================
anim = @animate for frame in 1:FRAMES
    step!(grid)
    green_decay!(grid)
    r, g = grid_to_howmany(grid)
    heatmap(
        grid_to_colors(grid),
        axis=nothing,
        legend=false,
        aspect_ratio=1,
        size=(1024,768),
        title="Vyčerpanie zdrojov planéty–čas: $(round(frame/FPS, digits=1)) s Reddish/Greenish: $r/$g"
    )
end

# =====================
# ULOŽENIE GIFU
# =====================
gif(anim, "geneticky-algoritmus4.gif", fps=FPS)

using Pkg

Pkg.add("Plots")
Pkg.add("Random")
using Random
using Plots

# =====================
# KONŠTANTY
# =====================
const EMPTY = 0
const RED   = 1
const GREEN = -1

N = 50
P_RED = rand()                # náhodná pravdepodobnosť červenej
FPS = 30
DURATION = 30                 # sekundy
FRAMES = FPS * DURATION

println("P_RED = ", round(P_RED, digits=3))

# =====================
# INICIALIZÁCIA SIETE
# =====================
grid = fill(EMPTY, N, N)

# =====================
# POČÍTANIE FARIEB
# =====================
function grid_to_howmany(grid)
    r = 0
    g = 0
    for v in grid
        if v == RED
            r += 1
        elseif v == GREEN
            g += 1
        end
    end
    return r, g
end

# =====================
# JEDEN KROK VYŽRATIA
# =====================
function step!(grid)
    empty_cells = findall(==(EMPTY), grid)
    isempty(empty_cells) && return
    idx = rand(empty_cells)
    grid[idx] = rand() < P_RED ? RED : GREEN
end

# =====================
# PREVOD NA FARBY
# =====================
function grid_to_colors(grid)
    colors = Array{RGB{Float64}}(undef, size(grid))
    for i in eachindex(grid)
        colors[i] = grid[i] == RED   ? RGB(1,0,0) :
                    grid[i] == GREEN ? RGB(0,1,0) :
                                       RGB(1,1,1)
    end
    colors
end

# =====================
# HISTÓRIA PRE GRAFY
# =====================
red_history   = Int[]
green_history = Int[]
time_history  = Float64[]

# =====================
# ANIMÁCIA
# =====================
anim = @animate for frame in 1:FRAMES
    step!(grid)

    r, g = grid_to_howmany(grid)
    t = frame / FPS

    # ochrana proti log(0)
    push!(red_history,   max(r, 1))
    push!(green_history, max(g, 1))
    push!(time_history,  t)

    # --- sieť ---
    p1 = heatmap(
        grid_to_colors(grid),
        axis=nothing,
        legend=false,
        aspect_ratio=1,
        title="Vyžieranie siete | t=$(round(t,digits=1)) s | R/G=$r/$g"
    )

    # --- logaritmický rast ---
    p2 = plot(
        time_history,
        red_history;
        yscale=:log10,
        label="Red",
        linewidth=2,
        xlabel="čas (s)",
        ylabel="počet buniek (log)",
        title="Logaritmický rast"
    )

    plot!(
        p2,
        time_history,
        green_history;
        label="Green",
        linewidth=2
    )

    plot(p1, p2, layout=(1,2), size=(1200,600))
end

# =====================
# ULOŽENIE GIFU
# =====================
gif(anim, "planeta-anihilacia.gif", fps=FPS)


Author: AarNoma

The first Slovak cyborg 1 system

Comments “Čím viac červených, tým menšia šanca ďalšej červenej. Prečo? Ľudia sa skrátka vyzabíjajú a prevážia zdroje na planéte. Klasická anihilácia druhu. Toto nás čaká:”