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:
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)

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á:”