Ez a Python-program, a Conway-féle Élősejtek szaporodását valósítja meg nagy teljesítményű, vektorizált módon. A szimuláció a komplex rendszerek, mesterséges élet és emergens jelenségek kutatását viselkedését vizsgálja és modellezi. Csak egy dolgot kell tennie: meghatározni a kiindulási pozíciót. A többi már magától következik be: a káoszból rend lesz, a rendből káosz, meg viszont.
------------
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
print("=" * 65)
print("CONWAY-FÉLE")
print("Komplex rendszerek és emergens viselkedés modellje")
print("=" * 65)
# Paraméterek
MERET = 200
KEZDETI_SURUSEG = 0.25
GENERACIOK = 1000
print(f"Rácsméret: {MERET} × {MERET}")
print(f"Kezdeti élő sejtek aránya: {KEZDETI_SURUSEG*100:.1f}%")
print(f"Maximális generációk száma: {GENERACIOK}")
print("\nInicializálás...")
# Véletlen kezdeti állapot
racs = np.random.choice(
[0, 1],
size=(MERET, MERET),
p=[1 - KEZDETI_SURUSEG, KEZDETI_SURUSEG]
)
print("Szimuláció elindult.")
fig, ax = plt.subplots(figsize=(8, 8))
kep = ax.imshow(racs, interpolation='nearest', animated=True)
ax.set_title("Conway-féle ")
ax.axis("off")
def kovetkezo_allapot(r):
"""Vektorizált szomszédszámítás periodikus határokkal."""
szomszedok = (
np.roll(np.roll(r, 1, 0), 1, 1) +
np.roll(np.roll(r, 1, 0), 0, 1) +
np.roll(np.roll(r, 1, 0), -1, 1) +
np.roll(np.roll(r, 0, 0), 1, 1) +
np.roll(np.roll(r, 0, 0), -1, 1) +
np.roll(np.roll(r, -1, 0), 1, 1) +
np.roll(np.roll(r, -1, 0), 0, 1) +
np.roll(np.roll(r, -1, 0), -1, 1)
)
uj = ((szomszedok == 3) |
((r == 1) & (szomszedok == 2))).astype(int)
return uj
def animacio(frame):
global racs
racs = kovetkezo_allapot(racs)
if frame % 50 == 0:
elo = np.sum(racs)
print(
f"Generáció: {frame:4d} | "
f"Élő sejtek: {elo:6d}"
)
kep.set_array(racs)
return [kep]
ani = FuncAnimation(
fig,
animacio,
frames=GENERACIOK,
interval=30,
blit=True
)
plt.show()
print("\nSzimuláció befejeződött.")
print(f"Utolsó generáció élő sejtjeinek száma: {np.sum(racs)}")
-----------
=================================================================
CONWAY-FÉLE ÉLŐSEJTEK SZIMULÁCIÓ
Komplex rendszerek és emergens viselkedés modellje
=================================================================
Rácsméret: 200 × 200
Kezdeti élő sejtek aránya: 25.0%
Maximális generációk száma: 1000
Inicializálás...
Szimuláció elindult.
Generáció: 0 | Élő sejtek: 11290
Generáció: 0 | Élő sejtek: 9662
Szimuláció befejeződött.
Utolsó generáció élő sejtjeinek száma: 9662
Nincsenek megjegyzések:
Megjegyzés küldése