plansza jest generowana

This commit is contained in:
Zuzanna Wójcik 2023-06-15 17:58:27 +02:00
parent ce6bd4c800
commit b5a2e4bd8b
2 changed files with 8 additions and 41 deletions

View File

@ -27,7 +27,7 @@ def wygeneruj_osobnika(zasieg_wspolrzednych, ilosc_wspolrzednych):
def wygeneruj_populacje_poczatkowa(liczebnosc_populacji): def wygeneruj_populacje_poczatkowa(liczebnosc_populacji):
populacja = list() 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) ilosc_wspolrzednych = (LICZBA_REGALOW + LICZBA_MIEJSC_NA_PACZKE + LICZBA_SKRZYNEK_NA_LISTY)
for i in range(liczebnosc_populacji): for i in range(liczebnosc_populacji):
osobnik = wygeneruj_osobnika(zasieg, ilosc_wspolrzednych) osobnik = wygeneruj_osobnika(zasieg, ilosc_wspolrzednych)
@ -62,8 +62,8 @@ def ocena_osobnika(osobnik):
def mutacja(osobnik): def mutacja(osobnik):
# mutacja poprzez zamiane randomowej pary koordynatow # mutacja poprzez zamiane randomowej pary koordynatow
index_osobnika = random.randint(0, len(osobnik) - 1) index_osobnika = random.randint(0, len(osobnik) - 1)
x = random.randint(1, EKRAN_SZEROKOSC / blockSize - 2) x = random.randint(1, (EKRAN_SZEROKOSC / blockSize) - 3)
y = random.randint(1, EKRAN_WYSOKOSC / blockSize - 2) y = random.randint(1, (EKRAN_WYSOKOSC / blockSize) - 3)
osobnik[index_osobnika] = (x, y) osobnik[index_osobnika] = (x, y)
def krzyzowanie(rodzic1, rodzic2): def krzyzowanie(rodzic1, rodzic2):

View File

@ -1,4 +1,5 @@
import random import random
import algorytm_genetyczny as genetic
def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podanych w kratkach na pixele def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podanych w kratkach na pixele
i = 1 i = 1
@ -17,45 +18,11 @@ blockSize = 70
x1, y1, x2, y2, x3, y3, x4, y4 = [None] * 8 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, y1), (x2, y2), (x3, y3), (x4, y4), (a, b), (c, d) = najlepszy_osobnik[:6]
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, x2, x3, x4, y1, y2, y3, y4 = map(int, [x1, x2, x3, x4, y1, y2, y3, y4]) x1, x2, x3, x4, y1, y2, y3, y4 = map(int, [x1, x2, x3, x4, y1, y2, y3, y4])