Compare commits
9 Commits
impl_alg_g
...
master
Author | SHA1 | Date | |
---|---|---|---|
ad0e642964 | |||
|
175055c84a | ||
c918e1007b | |||
|
e4d7f6e37d | ||
07340db2b8 | |||
|
e496375238 | ||
c8859b34f8 | |||
f27ff12d88 | |||
1a2c00c6e2 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -17,10 +17,6 @@ def wygeneruj_osobnika(zasieg_wspolrzednych, ilosc_wspolrzednych):
|
||||
x = random.randint(1, zasieg_wspolrzednych)
|
||||
y = random.randint(1, zasieg_wspolrzednych)
|
||||
e = (x, y)
|
||||
while e in osobnik:
|
||||
x = random.randint(1, zasieg_wspolrzednych)
|
||||
y = random.randint(1, zasieg_wspolrzednych)
|
||||
e = (x, y)
|
||||
osobnik.append(e)
|
||||
return osobnik
|
||||
|
||||
|
4
ekran.py
4
ekran.py
@ -109,3 +109,7 @@ def dodaj_na_rampe(p1, p2, l1, l2):
|
||||
p2.update_position(plansza.a_pix, plansza.b_pix)
|
||||
l1.update_position(plansza.a_pix, plansza.b_pix)
|
||||
l2.update_position(plansza.a_pix, plansza.b_pix)
|
||||
|
||||
def dodaj_na_rampe_jedno(order):
|
||||
lista_itemow.append(order)
|
||||
order.update_position(plansza.a_pix, plansza.b_pix)
|
9
grid.py
9
grid.py
@ -9,16 +9,9 @@ class GridCellType(Enum):
|
||||
RACK = 1
|
||||
PLACE = 2
|
||||
|
||||
# class RackCellType(Enum):
|
||||
# OGROD = 0
|
||||
# NARZEDZIA = 1
|
||||
# KUCHNIA = 2
|
||||
# MOTORYZACJA = 3
|
||||
|
||||
|
||||
class SearchGrid:
|
||||
grid: Dict[Tuple[int, int], GridCellType] = {}
|
||||
# rack_grid : Dict[Tuple[int, int], GridCellType] = {}
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._init_grid()
|
||||
@ -32,5 +25,3 @@ class SearchGrid:
|
||||
self.grid[(c,d)] = GridCellType.RACK
|
||||
for e, f in [(plansza.a, plansza.b),(plansza.c, plansza.d)]:
|
||||
self.grid[(e,f)] = GridCellType.PLACE
|
||||
|
||||
|
||||
|
BIN
images/Items_test/test5.jpg
Normal file
BIN
images/Items_test/test5.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
BIN
images/Items_test/test6.jpg
Normal file
BIN
images/Items_test/test6.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 95 KiB |
BIN
images/Items_test/test7.jpg
Normal file
BIN
images/Items_test/test7.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
images/Items_test/test8.jpg
Normal file
BIN
images/Items_test/test8.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 97 KiB |
13
itemList.py
13
itemList.py
@ -1,7 +1,5 @@
|
||||
import pygame
|
||||
|
||||
# from paczka import Paczka
|
||||
|
||||
class listOfItems:
|
||||
list = []
|
||||
item_group = pygame.sprite.Group()
|
||||
@ -13,14 +11,3 @@ class listOfItems:
|
||||
def remove(self):
|
||||
last_item = self.list.pop()
|
||||
self.item_group.remove(last_item)
|
||||
|
||||
|
||||
# def zainicjuj_liste_paczek(init_x, init_y):
|
||||
# packageList = listOfPackages()
|
||||
# demo_paczka = Paczka('duzy', 10, any, False, True, False, any, any, any, any, any)
|
||||
# demo_paczka.update_position(init_x, init_y)
|
||||
# packageList.add(demo_paczka)
|
||||
# return packageList
|
||||
|
||||
|
||||
|
||||
|
163
main.py
163
main.py
@ -1,4 +1,5 @@
|
||||
import sys
|
||||
import random
|
||||
|
||||
import joblib
|
||||
import pygame
|
||||
@ -19,8 +20,10 @@ pygame.init()
|
||||
def main():
|
||||
wozek = Wozek()
|
||||
pred_list = prediction.prediction_keys()
|
||||
p1 = Paczka('duzy', 12, 'narzedzia', False, True, False, any, any, any, any, any, pred_list[3])
|
||||
p2 = Paczka('maly', 1, 'ogród', False, True, False, any, any, any, any, any, pred_list[1])
|
||||
p1 = Paczka('duzy', 12, 'narzedzia', False, True, False,
|
||||
any, any, any, any, any, pred_list[3])
|
||||
p2 = Paczka('maly', 1, 'ogród', False, True, False,
|
||||
any, any, any, any, any, pred_list[1])
|
||||
l1 = Letter(pred_list[0])
|
||||
l2 = Letter(pred_list[2])
|
||||
ekran.dodaj_na_rampe(p2, l1, p1, l2)
|
||||
@ -35,58 +38,15 @@ def main():
|
||||
sys.exit(0)
|
||||
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
|
||||
sys.exit(0)
|
||||
|
||||
if event.type == pygame.KEYDOWN:
|
||||
if event.key == pygame.K_SPACE:
|
||||
while len(ekran.lista_itemow) > 0:
|
||||
wozek_serves_orders(wozek, grid_points, drzewo)
|
||||
|
||||
## wozek jedzie po itemy
|
||||
wiersz = ekran.sprawdz_ktory_wiersz(a_pix)
|
||||
kolumna = ekran.sprawdz_ktora_kolumna(b_pix)
|
||||
docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 1)
|
||||
|
||||
#wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||
|
||||
## sprawdzenie czy lista itemow nie jest pusta
|
||||
if ekran.lista_itemow:
|
||||
if grid_points.grid[(wiersz, kolumna)] is GridCellType.PLACE: #picks up item
|
||||
if wozek.ln == 0:
|
||||
wozek.picks_up_item()
|
||||
wozek.dynamic_wozek_picture()
|
||||
|
||||
przenoszony_item = wozek.storage[-1]
|
||||
if (prediction.predict_one(przenoszony_item.img_path)=='package'):
|
||||
## wozek jedzie odlozyc paczke na regal
|
||||
przenoszona_paczka = przenoszony_item
|
||||
|
||||
array, reg = przenoszona_paczka.tablica_do_drzewa(przenoszona_paczka.kategoria)
|
||||
|
||||
predictions = drzewo.predict([array])
|
||||
|
||||
if predictions == 0:
|
||||
print('odklada na dolna polke!')
|
||||
else:
|
||||
print('odklada na gorna polke!')
|
||||
|
||||
docelowy_stan = wyszukiwanie.Stan(reg.numerWiersza * 70, reg.numerKolumny * 70, 1)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||
|
||||
if wozek.ln != 0: # drops package
|
||||
wozek.drops_package(przenoszona_paczka, reg, predictions)
|
||||
wozek.dynamic_wozek_picture()
|
||||
else:
|
||||
#list przenoszony do skrzynki
|
||||
docelowy_stan = wyszukiwanie.Stan(plansza.c_pix, plansza.d_pix, 1)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||
|
||||
if wozek.ln != 0: # drops letter
|
||||
wozek.drops_letter(przenoszony_item)
|
||||
wozek.dynamic_wozek_picture()
|
||||
if event.key == pygame.K_n:
|
||||
add_another_order(ekran, pred_list)
|
||||
wozek_serves_orders(wozek, grid_points, drzewo)
|
||||
|
||||
|
||||
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||
@ -97,33 +57,94 @@ def main():
|
||||
wiersz = ekran.sprawdz_ktory_wiersz(x)
|
||||
kolumna = ekran.sprawdz_ktora_kolumna(y)
|
||||
|
||||
docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 1)
|
||||
docelowy_stan = wyszukiwanie.Stan(
|
||||
wiersz * 70, kolumna * 70, 1)
|
||||
|
||||
# wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(
|
||||
wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||
|
||||
# if grid_points.grid[(wiersz, kolumna)] is GridCellType.PLACE: #picks up package
|
||||
# if wozek.ln == 0:
|
||||
# wozek.load_package()
|
||||
# wozek.dynamic_wozek_picture
|
||||
# else:
|
||||
# if wozek.ln != 0: # drops package
|
||||
# wozek.drop_package()
|
||||
# wozek.dynamic_wozek_picture()
|
||||
|
||||
# if event.type == pygame.KEYDOWN:
|
||||
# if event.key == pygame.K_SPACE:
|
||||
# if wozek.ln == 0:
|
||||
# wozek.load_package()
|
||||
# wozek.dynamic_wozek_picture()
|
||||
# else:
|
||||
# wozek.drop_package()
|
||||
# wozek.dynamic_wozek_picture()
|
||||
|
||||
ekran.odswiez_ekran(wozek)
|
||||
|
||||
|
||||
|
||||
|
||||
def wozek_serves_orders(wozek, grid_points, drzewo):
|
||||
# wozek jedzie po itemy
|
||||
wiersz = ekran.sprawdz_ktory_wiersz(a_pix)
|
||||
kolumna = ekran.sprawdz_ktora_kolumna(b_pix)
|
||||
docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 1)
|
||||
|
||||
# wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(
|
||||
wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||
|
||||
# sprawdzenie czy lista itemow nie jest pusta
|
||||
if ekran.lista_itemow:
|
||||
if grid_points.grid[(wiersz, kolumna)] is GridCellType.PLACE: # picks up item
|
||||
if wozek.ln == 0:
|
||||
wozek.picks_up_item()
|
||||
wozek.dynamic_wozek_picture()
|
||||
|
||||
przenoszony_item = wozek.storage[-1]
|
||||
if (prediction.predict_one(przenoszony_item.img_path) == 'package'):
|
||||
# wozek jedzie odlozyc paczke na regal
|
||||
przenoszona_paczka = przenoszony_item
|
||||
|
||||
array, reg = przenoszona_paczka.tablica_do_drzewa(
|
||||
przenoszona_paczka.kategoria)
|
||||
|
||||
predictions = drzewo.predict([array])
|
||||
|
||||
if predictions == 0:
|
||||
print('odklada na dolna polke!')
|
||||
else:
|
||||
print('odklada na gorna polke!')
|
||||
|
||||
docelowy_stan = wyszukiwanie.Stan(
|
||||
reg.numerWiersza * 70, reg.numerKolumny * 70, 1)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(
|
||||
wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||
|
||||
if wozek.ln != 0: # drops package
|
||||
wozek.drops_package(
|
||||
przenoszona_paczka, reg, predictions)
|
||||
wozek.dynamic_wozek_picture()
|
||||
else:
|
||||
# list przenoszony do skrzynki
|
||||
docelowy_stan = wyszukiwanie.Stan(
|
||||
plansza.c_pix, plansza.d_pix, 1)
|
||||
wezel = wyszukiwanie.wyszukiwanie_a_star(
|
||||
wozek.obecnyStan, docelowy_stan, grid_points)
|
||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||
|
||||
if wozek.ln != 0: # drops letter
|
||||
wozek.drops_letter(przenoszony_item)
|
||||
wozek.dynamic_wozek_picture()
|
||||
|
||||
def add_another_order(ekran, pred_list):
|
||||
if random.random() < 0.5:
|
||||
if random.random() < 0.5:
|
||||
order = Paczka('duzy', 12, 'motoryzacja', False, True, False,
|
||||
any, any, any, any, any, pred_list[6])
|
||||
else:
|
||||
order = Paczka('maly', 1, 'kuchnia', False, True, False,
|
||||
any, any, any, any, any, pred_list[7])
|
||||
else:
|
||||
if random.random() < 0.5:
|
||||
order = Letter(pred_list[5])
|
||||
else:
|
||||
order = Letter(pred_list[4])
|
||||
|
||||
ekran.dodaj_na_rampe_jedno(order)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -1,4 +1,3 @@
|
||||
import random
|
||||
import algorytm_genetyczny as genetic
|
||||
|
||||
def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podanych w kratkach na pixele
|
||||
|
11
regal.py
11
regal.py
@ -4,7 +4,6 @@ MAX_STORAGE = 3
|
||||
|
||||
def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podanych w kratkach na pixele
|
||||
i = 1
|
||||
# pixele = 100
|
||||
pixele = 73
|
||||
while (i < wymiar):
|
||||
pixele = pixele + 70
|
||||
@ -33,13 +32,6 @@ class Regal(pygame.sprite.Sprite):
|
||||
self.kolumna = obliczPixeleNaPodstawieKratek(numerKolumny)
|
||||
self.dlugosc = obliczPixeleDlugosciRegalu(self)
|
||||
|
||||
package_storage = []
|
||||
shelfs = { # here packages are stored
|
||||
"dolna": package_storage,
|
||||
"gorna": package_storage
|
||||
}
|
||||
|
||||
|
||||
storage_dolna = []
|
||||
storage_gorna = []
|
||||
|
||||
@ -90,6 +82,3 @@ class Regal(pygame.sprite.Sprite):
|
||||
self.dolna.append(package)
|
||||
else:
|
||||
self.gorna.append(package)
|
||||
|
||||
|
||||
|
||||
|
59
wozek.py
59
wozek.py
@ -1,6 +1,5 @@
|
||||
import ekran
|
||||
import pygame,math
|
||||
# from packageList import listOfPackages
|
||||
import pygame
|
||||
from ekran import lista_itemow
|
||||
from letter import Letter
|
||||
import plansza
|
||||
@ -13,40 +12,19 @@ class Wozek(pygame.sprite.Sprite):
|
||||
self.obecnyStan = None
|
||||
self.height = 64
|
||||
self.width = 64
|
||||
self.image = pygame.image.load("images/pusty_wozek.png")
|
||||
self.rect = self.image.get_rect()
|
||||
# Credit: Forklift icons created by Smashicons - Flaticon
|
||||
# https://www.flaticon.com/free-icons/forklift
|
||||
self.image = pygame.image.load("images/pusty_wozek.png")
|
||||
self.rect = self.image.get_rect()
|
||||
self.__zainicjuj_stan_poczatkowy()
|
||||
|
||||
def draw(self):
|
||||
ekran.screen.blit(self.image, (self.obecnyStan.x, self.obecnyStan.y))
|
||||
# self.update_position(self.obecnyStan.x, self.obecnyStan.y)
|
||||
|
||||
#storage = ["none"] * 10
|
||||
storage = []
|
||||
max_size = 10
|
||||
ln = len(storage)
|
||||
|
||||
def add_element(self, element):
|
||||
if self.ln < self.max_size:
|
||||
self.storage.append(element)
|
||||
self.ln=self.ln+1
|
||||
else:
|
||||
print("I'm full!")
|
||||
def remove_element(self):
|
||||
if self.ln > 0:
|
||||
element = self.storage.pop()
|
||||
self.ln=self.ln-1
|
||||
return element
|
||||
else:
|
||||
print("I'm empty!")
|
||||
|
||||
def update_position(self, x, y):
|
||||
self.obecnyStan.x = x
|
||||
self.obecnyStan.y = y
|
||||
self.rect.topleft = (x, y)
|
||||
|
||||
def dynamic_wozek_picture(self):
|
||||
if self.ln == 0:
|
||||
self.image = pygame.image.load("images/pusty_wozek.png")
|
||||
@ -59,37 +37,6 @@ class Wozek(pygame.sprite.Sprite):
|
||||
|
||||
self.rect = self.image.get_rect()
|
||||
|
||||
|
||||
def load_package(self):
|
||||
#for package in listOfPackages.list:
|
||||
# for package in listOfPackages:
|
||||
# dist = math.sqrt((self.obecnyStan.x - package.x)**2 + (self.obecnyStan.y - package.y)**2)
|
||||
# if dist <= 50:
|
||||
# self.add_element(package)
|
||||
# # listOfPackages.list.pop()
|
||||
# listOfPackages.pop()
|
||||
package = listOfPackages.pop()
|
||||
dist = math.sqrt((self.obecnyStan.x - package.x)**2 + (self.obecnyStan.y - package.y)**2)
|
||||
if dist <= 50:
|
||||
self.add_element(package)
|
||||
# listOfPackages.list.pop()
|
||||
|
||||
def load_packages_collision(self):
|
||||
pass
|
||||
# packages_collision = pygame.sprite.spritecollide(self, listOfPackages.package_group, False)
|
||||
# if packages_collision:
|
||||
# for package in packages_collision:
|
||||
# self.add_element(package)
|
||||
# listOfPackages.list.remove(package) # collision doesn't work, collision always happens
|
||||
|
||||
def drop_package(self):
|
||||
package = self.remove_element()
|
||||
if package is not None:
|
||||
package.x = self.obecnyStan.x
|
||||
package.y = self.obecnyStan.y
|
||||
# listOfPackages.list.append(package)
|
||||
listOfPackages.append(package)
|
||||
|
||||
def __zainicjuj_stan_poczatkowy(self):
|
||||
from wyszukiwanie import Stan
|
||||
self.obecnyStan = Stan(0, 0, 1)
|
||||
|
Loading…
Reference in New Issue
Block a user