From aac7845d4bcd24d5b3bc563b3b40d288c1663b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kinga=20Jagodzi=C5=84ska?= Date: Wed, 20 May 2020 09:10:18 +0000 Subject: [PATCH] =?UTF-8?q?Usu=C5=84=20'Kinga=20Jagodzi=C5=84ska=5FAlgoryt?= =?UTF-8?q?m=20genetyczny.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kinga Jagodzińska_Algorytm genetyczny.py | 156 ---------------------- 1 file changed, 156 deletions(-) delete mode 100644 Kinga Jagodzińska_Algorytm genetyczny.py diff --git a/Kinga Jagodzińska_Algorytm genetyczny.py b/Kinga Jagodzińska_Algorytm genetyczny.py deleted file mode 100644 index 5ce0567..0000000 --- a/Kinga Jagodzińska_Algorytm genetyczny.py +++ /dev/null @@ -1,156 +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 = [] - - def empty(self): - for x in range(25): - if self.game.fields[x] == "puste": - self.length = self.length + 1 - self.index_gen.append(x) - - # 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 = True - self.empty() - self.dna_create() - while True: - if first == True: - for x in range(len(self.dna)): - l.append(self.l_score(self.dna[x])) - first = False - elif first == False: - 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: - return self.dna[l.index(max(l))] - # 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: - for x in range(3): - 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 - - 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] - 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