diff --git a/Kinga b/Kinga deleted file mode 100644 index 3de6543..0000000 --- a/Kinga +++ /dev/null @@ -1,162 +0,0 @@ -import random -import pygame - - -class Gen(object): - - def __init__(self, game): - self.game = game - - self.pokolenie = 0 - self.length = 0 - self.max_gen = 99 - self.index_gen = [] - self.empty() - - def empty(self): - for x in range(25): - if self.game.fields[x][0] == "puste": - self.length = self.length + 1 - self.index_gen.append(x) - - def bbrrr(self): - return self.index_gen - - # tworzenie dna - def dna_create(self): - self.dna = [] - for x in range(self.max_gen): - temp = [] - for y in range(self.length): - temp.append(random.choice(["żyto", "jęczmień", "owies", "marchew", "rzodkiew", "pietruszka"])) - self.dna.append(temp) - - def algorytm(self): - l = [] - first = False - self.dna_create() - while True: - if first == False: - for x in range(len(self.dna)): - l.append(self.l_score(self.dna[x])) - first = True - elif first == True: - for x in range(int(self.max_gen * 1 / 3)): - l.append(self.l_score(self.dna[x + int(self.max_gen * 2 / 3)])) - if max(l) >= self.length or self.pokolenie > 200: - break - # usuwamy najmniej odpowiadające nam dna - for x in range(int(self.max_gen * 1 / 3)): - del self.dna[l.index(min(l))] - l.remove(min(l)) - for x in range(int(self.max_gen * 1 / 3)): - temp = [] - for y in range(self.length): - if y % 2 == 0: - temp.append(self.dna[x][y]) - if y % 2 == 1: - temp.append(self.dna[int(self.max_gen * 2 / 3) - 1 - x][y]) - # mutacja - if random.randint(0, 100) <= 40: - temp[random.randint(0, self.length - 1)] = random.choice(["żyto", "jęczmień", "owies", "marchew", "rzodkiew", "pietruszka"]) - temp[random.randint(0, self.length - 1)] = random.choice(["żyto", "jęczmień", "owies", "marchew", "rzodkiew", "pietruszka"]) - temp[random.randint(0, self.length - 1)] = random.choice(["żyto", "jęczmień", "owies", "marchew", "rzodkiew", "pietruszka"]) - self.dna.append(temp) - self.pokolenie = self.pokolenie + 1 - print(self.dna[l.index(max(l))]) - return self.dna[l.index(max(l))] - - def l_score(self, tab): - suma1 = 0 - for x in range(len(tab)): - suma = 1 - for y in self.game.neighbours[self.index_gen[x]]: - if y in self.index_gen: - som = tab[self.index_gen.index(y)] - else: - som = self.game.fields[y][0] - if tab[x] == "żyto": - if som == "żyto": - suma = suma * 0.5 - elif som == "jęczmień": - suma = suma * 1 - elif som == "owies": - suma = suma * 0.7 - elif som == "marchew": - suma = suma * 0 - elif som == "rzodkiew": - suma = suma * 1 - elif som == "pietruszka": - suma = suma * 0.6 - - elif tab[x] == "jęczmień": - if som == "żyto": - suma = suma * 1 - elif som == "jęczmień": - suma = suma * 0.8 - elif som == "owies": - suma = suma * 0.2 - elif som == "marchew": - suma = suma * 1 - elif som == "rzodkiew": - suma = suma * 0.2 - elif som == "pietruszka": - suma = suma * 0.9 - - elif tab[x] == "owies": - if som == "żyto": - suma = suma * 0.7 - elif som == "jęczmień": - suma = suma * 0.2 - if som == "owies": - suma = suma * 1 - if som == "marchew": - suma = suma * 0.3 - if som == "rzodkiew": - suma = suma * 0 - if som == "pietruszka": - suma = suma * 1 - - if tab[x] == "marchew": - if som == "żyto": - suma = suma * 0 - if som == "jęczmień": - suma = suma * 1 - if som == "owies": - suma = suma * 0.3 - if som == "marchew": - suma = suma * 0.9 - if som == "rzodkiew": - suma = suma * 1 - if som == "pietruszka": - suma = suma * 0.8 - - if tab[x] == "rzodkiew": - if som == "żyto": - suma = suma * 1 - if som == "jęczmień": - suma = suma * 0.2 - if som == "owies": - suma = suma * 0 - if som == "marchew": - suma = suma * 1 - if som == "rzodkiew": - suma = suma * 0.9 - if som == "pietruszka": - suma = suma * 0.7 - - if tab[x] == "pietruszka": - if som == "żyto": - suma = suma * 0.6 - if som == "jęczmień": - suma = suma * 0.9 - if som == "owies": - suma = suma * 1 - if som == "marchew": - suma = suma * 0.8 - if som == "rzodkiew": - suma = suma * 0.7 - if som == "pietruszka": - suma = suma * 0.4 - suma1 = suma1 + suma - return suma1