Prehľadávací potenciál – experiment¶

In [1]:
import random
import matplotlib.pyplot as plt
In [2]:
# vytvorenie rodicov

DLZKA = 100

R1 = [0] * DLZKA
R2 = [1] * DLZKA
In [3]:
# krizenie - DOPLNIT ZADANU KRIZIACU METODU

parameter_krizenia = [...TBD...]  # zadane hodnoty parametrov

def cross(rodic1, rodic2, par):
    ...
    TBD
    ...
    return pot1, pot2
In [4]:
# vzdialenost potomka od rodicov

def hammingova_vzdialenost(a, b):
    return sum(1 for x, y in zip(a, b) if x != y)

def vzdialenost(potomok, rodic1, rodic2):
    v1 = hammingova_vzdialenost(potomok, rodic1)
    v2 = hammingova_vzdialenost(potomok, rodic2)

    return v1 if v1 < v2 else v2
In [5]:
# experiment pre jednu hodnotu parametra

OPAKOVANIA = 1000

def experiment(par):
    vzdialenosti = []
    for i in range(OPAKOVANIA):
        p1, p2 = cross(R1, R2, par)
        v1 = vzdialenost(p1, R1, R2)
        v2 = vzdialenost(p2, R1, R2)
        vzdialenosti.extend([v1, v2])
    return min(vzdialenosti), sum(vzdialenosti)/len(vzdialenosti), max(vzdialenosti)
In [6]:
# experiment pre vsetky hodnoty parametra

minima = []
priemery = []
maxima = []

for par in parameter_krizenia:
    a, b, c = experiment(par)
    print(f"{par:4}  min : {a:2}  avg : {b}  max : {c}")
    minima.append(a)
    priemery.append(b)
    maxima.append(c)
In [7]:
plt.figure(figsize=(10, 6))
plt.plot(parameter_krizenia, minima, marker="o", label="min")
plt.plot(parameter_krizenia, priemery, marker="o", label="avg")
plt.plot(parameter_krizenia, maxima, marker="o", label="max")

plt.xlabel("Hodnoty parametra")
plt.ylabel("Vzdialenosť")
plt.xticks(parameter_krizenia)
plt.legend()
plt.grid(True)
plt.show()
No description has been provided for this image