plansza jest generowana #31
@ -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):
|
||||||
|
43
plansza.py
43
plansza.py
@ -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])
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user