From b5a2e4bd8b7775ef1f1e47b8e49169a0d86c987a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zuzanna=20W=C3=B3jcik?= Date: Thu, 15 Jun 2023 17:58:27 +0200 Subject: [PATCH] plansza jest generowana --- algorytm_genetyczny.py | 6 +++--- plansza.py | 43 +++++------------------------------------- 2 files changed, 8 insertions(+), 41 deletions(-) diff --git a/algorytm_genetyczny.py b/algorytm_genetyczny.py index 9241f18..14c6fe6 100644 --- a/algorytm_genetyczny.py +++ b/algorytm_genetyczny.py @@ -27,7 +27,7 @@ def wygeneruj_osobnika(zasieg_wspolrzednych, ilosc_wspolrzednych): def wygeneruj_populacje_poczatkowa(liczebnosc_populacji): populacja = list() - zasieg = int(EKRAN_WYSOKOSC / blockSize - 3) + zasieg = int((EKRAN_WYSOKOSC / blockSize) - 3) ilosc_wspolrzednych = (LICZBA_REGALOW + LICZBA_MIEJSC_NA_PACZKE + LICZBA_SKRZYNEK_NA_LISTY) for i in range(liczebnosc_populacji): osobnik = wygeneruj_osobnika(zasieg, ilosc_wspolrzednych) @@ -62,8 +62,8 @@ def ocena_osobnika(osobnik): def mutacja(osobnik): # mutacja poprzez zamiane randomowej pary koordynatow index_osobnika = random.randint(0, len(osobnik) - 1) - x = random.randint(1, EKRAN_SZEROKOSC / blockSize - 2) - y = random.randint(1, EKRAN_WYSOKOSC / blockSize - 2) + x = random.randint(1, (EKRAN_SZEROKOSC / blockSize) - 3) + y = random.randint(1, (EKRAN_WYSOKOSC / blockSize) - 3) osobnik[index_osobnika] = (x, y) def krzyzowanie(rodzic1, rodzic2): diff --git a/plansza.py b/plansza.py index 5029de9..5502a4b 100644 --- a/plansza.py +++ b/plansza.py @@ -1,4 +1,5 @@ import random +import algorytm_genetyczny as genetic def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podanych w kratkach na pixele i = 1 @@ -17,45 +18,11 @@ blockSize = 70 x1, y1, x2, y2, x3, y3, x4, y4 = [None] * 8 -while True: +najlepszy_osobnik = genetic.ewolucja() +print("Generowana plansza:") +genetic.print_board(najlepszy_osobnik) - #wspolrzedne regalow - x1 = random.randint(1, 3) - x2 = random.randint(1, 3) - x3 = random.randint(6, 8) - x4 = random.randint(6, 8) - - y1 = random.randint(1, 3) - y2 = random.randint(6, 8) - y3 = random.randint(1, 3) - y4 = random.randint(6, 8) - - #wspolrzedne miejsca paczek - a = 5 - b = 5 - - #wspolrzedne skrzynki na listy - c = 5 - d = 0 - - #dodane wspolrzedne (0, 0), (4, 4), (4, 6), (6, 4), (6, 6) zeby regaly sie nie stykaly - table = [(0, 0), (4, 4), (4, 6), (6, 4), (6, 6), - (x1, y1), (x1+1, y1), (x1, y1+1), (x1+1, y1+1), - (x2, y2), (x2+1, y2), (x2, y2+1), (x2+1, y2+1), - (x3, y3), (x3+1, y3), (x3, y3+1), (x3+1, y3+1), - (x4, y4), (x4+1, y4), (x4, y4+1), (x4+1, y4+1)] - - #sprawdzenie czy jakies wspolrzedne sie pokrywaja - if len(table) == len(set(table)): - break - -coordinates = [(x1, y1), (x2, y2), (x3, y3), (x4, y4)] - -#przemieszanie koordynatów w parach -random.shuffle(coordinates) - -#przypisanie przemieszanych wartości do zmiennych -(x1, y1), (x2, y2), (x3, y3), (x4, y4) = coordinates +(x1, y1), (x2, y2), (x3, y3), (x4, y4), (a, b), (c, d) = najlepszy_osobnik[:6] x1, x2, x3, x4, y1, y2, y3, y4 = map(int, [x1, x2, x3, x4, y1, y2, y3, y4])