dodane wyrzucanie paczek i generowanie danych

This commit is contained in:
SaluSL 2021-05-19 23:34:55 +02:00
parent 79463c2044
commit db41867ceb
3 changed files with 359 additions and 3 deletions

View File

@ -187,7 +187,7 @@ Shelf_list = [
Shelf((5, 8), 'Electronic', 5), Shelf((6, 8), 'Electronic', 5), Shelf((7, 8), 'Electronic', 5), Shelf((5, 8), 'Electronic', 5), Shelf((6, 8), 'Electronic', 5), Shelf((7, 8), 'Electronic', 5),
Shelf((8, 8), 'Electronic', 5)] Shelf((8, 8), 'Electronic', 5)]
coord_goals = [(6, 8), (0, 0), (5, 8), (0, 0), (7, 8), (0, 0), (8, 8), (0, 0), coord_goals = [(8, 0), (0, 0), (5, 8), (0, 0), (8, 0), (0, 0), (8, 8), (0, 0),
(5, 6), (0, 0), (6, 6), (0, 0), (7, 6), (0, 0), (8, 6), (0, 8)] (5, 6), (0, 0), (6, 6), (0, 0), (7, 6), (0, 0), (8, 6), (0, 8)]
screen = pygame.display.set_mode([WIDTH, HEIGHT]) screen = pygame.display.set_mode([WIDTH, HEIGHT])
@ -203,7 +203,7 @@ print(a_star_search((6, 8), (0, 0), "down"))
agent.path = a_star_search((agent.pos_coord[1], agent.pos_coord[0]), (0, 0), agent.agent_direction) agent.path = a_star_search((agent.pos_coord[1], agent.pos_coord[0]), (0, 0), agent.agent_direction)
print(agent.path) #print(agent.path)
# Pętla służąca do tworzenia plam oleju na podstawie mapy magazynu # Pętla służąca do tworzenia plam oleju na podstawie mapy magazynu
Stain_list = [] Stain_list = []
@ -230,13 +230,16 @@ while running:
for package in Package_list: for package in Package_list:
if package.pos == (40, 40): if package.pos == (40, 40):
is_dock_empty = False is_dock_empty = False
elif package.pos == get_pix_from_position[(8, 0)] and not package.is_package_up:
print("Paczka wyrzucona")
Package_list.remove(package)
if is_dock_empty: if is_dock_empty:
Package_list.append(generate_package(40, 40)) Package_list.append(generate_package(40, 40))
# PATHING # PATHING
if not agent.goal_achieved: if not agent.goal_achieved:
print(agent.path) # print(agent.path)
agent.move_bfs() agent.move_bfs()
else: else:
@ -257,6 +260,7 @@ while running:
# DRAWING # DRAWING
screen.blit(BACKGROUND, [0, 0]) screen.blit(BACKGROUND, [0, 0])
screen.blit(DOCK, [0, 0]) screen.blit(DOCK, [0, 0])
screen.blit(pygame.transform.flip(DOCK, True, False), [8*size, 0])
screen.blit(board, board.get_rect()) screen.blit(board, board.get_rect())
for shelf in Shelf_list: for shelf in Shelf_list:
screen.blit(shelf.image, shelf.rect) screen.blit(shelf.image, shelf.rect)

View File

@ -0,0 +1,216 @@
# POZIOM WAGI(1-10), TYP, STOPIEN ROZMIARU(1-10), STOPIEN LATWOPALNOSCI(0-5), STOPIEN WYBUCHOWOSCI(0-5), POZIOM CENY(1-10), PRZYJETY DO MAGAZYNU(tak, nie)
# SZYMON \/
#|WAGA|TYP|WYMIAR|LATWOPALNOSC|WYBUCHOWOSC|CENA|PRZYJETY_DO_MAGAZYNU
#
10 builders 2 0 0 4 nie
1 groceries 4 0 0 5 tak
5 groceries 10 0 0 10 nie
2 groceries 2 0 0 3 tak
1 dangerous 9 3 5 3 nie
1 dangerous 2 4 5 2 nie
5 builders 7 0 0 1 tak
1 electronics 4 0 0 7 tak
1 groceries 2 0 0 4 tak
2 dangerous 8 3 4 2 tak
1 builders 2 0 2 3
5 electronics 5 4 0 3
9 electronics 3 0 0 2
6 groceries 1 0 0 5
2 groceries 3 0 0 1
1 electronics 8 0 0 6
5 builders 1 3 1 5
3 dangerous 1 5 4 5
3 dangerous 7 5 5 1
3 electronics 2 0 0 10
1 builders 6 0 0 8
9 dangerous 8 5 4 1
6 dangerous 3 3 5 5
2 builders 9 0 0 3
5 dangerous 2 3 5 5
4 electronics 6 3 0 9
5 dangerous 2 4 3 4
4 dangerous 1 5 5 2
5 electronics 3 0 0 1
5 builders 3 0 0 7
2 builders 1 5 0 4
1 groceries 7 0 0 5
3 builders 4 2 0 5
9 builders 4 0 0 3
10 groceries 5 0 0 3
5 dangerous 10 3 5 5
4 electronics 3 0 0 4
1 builders 3 2 0 9
4 groceries 3 0 0 2
10 electronics 3 0 0 3
# JERZY \/
#|WAGA|TYP|WYMIAR|LATWOPALNOSC|WYBUCHOWOSC|CENA|PRZYJETY_DO_MAGAZYNU
#
10 builders 1 0 0 5
4 dangerous 5 3 2 2
2 electronics 1 0 0 4
8 dangerous 7 5 4 7
3 electronics 7 1 0 4
4 electronics 7 4 0 3
4 builders 6 0 0 2
1 groceries 2 0 0 5
3 electronics 7 5 1 9
8 electronics 3 0 0 6
3 electronics 2 0 0 4
1 builders 7 0 0 5
4 groceries 2 0 0 10
1 dangerous 1 5 2 2
10 electronics 7 0 2 5
9 electronics 3 5 0 1
1 groceries 3 0 0 1
5 groceries 4 0 0 8
4 groceries 1 0 0 1
10 builders 2 0 0 6
2 dangerous 9 4 3 10
9 groceries 2 0 0 5
2 electronics 1 0 0 1
5 dangerous 5 4 2 3
2 electronics 8 3 0 1
9 dangerous 2 5 4 5
8 electronics 5 0 0 3
9 dangerous 3 3 4 1
7 dangerous 6 3 3 2
1 builders 2 4 0 5
3 groceries 3 0 0 10
3 electronics 2 0 0 2
5 builders 7 0 1 1
4 groceries 4 0 0 4
8 dangerous 9 4 3 10
2 groceries 3 0 0 3
3 groceries 6 0 0 2
4 groceries 3 0 0 5
7 electronics 6 5 0 3
3 electronics 2 0 0 10
# MIRON \/
#|WAGA|TYP|WYMIAR|LATWOPALNOSC|WYBUCHOWOSC|CENA|PRZYJETY_DO_MAGAZYNU
#
1 electronics 4 1 0 9
1 dangerous 6 4 3 4
1 electronics 5 0 0 6
9 builders 5 0 0 10
10 builders 5 5 1 3
7 electronics 7 0 0 10
4 electronics 1 0 0 4
6 groceries 6 0 0 2
10 electronics 5 0 0 2
4 builders 7 5 0 2
4 dangerous 10 4 2 9
9 electronics 6 0 0 5
4 builders 1 0 0 3
2 builders 1 1 2 8
10 dangerous 4 4 4 4
7 builders 1 0 0 1
2 dangerous 4 5 2 3
3 electronics 7 4 0 5
1 electronics 1 3 0 1
9 electronics 4 3 0 9
2 groceries 2 0 0 1
2 electronics 3 0 0 2
4 groceries 7 0 0 3
9 electronics 7 0 0 1
3 electronics 6 0 0 4
8 dangerous 4 3 5 2
5 electronics 3 0 0 3
5 groceries 3 0 0 5
1 groceries 4 0 0 1
4 electronics 1 0 0 3
2 builders 9 0 2 9
5 groceries 2 0 0 5
4 dangerous 7 3 3 3
1 dangerous 7 4 4 1
3 groceries 4 0 0 1
1 electronics 3 0 0 4
6 groceries 6 0 0 2
10 groceries 2 0 0 5
7 groceries 3 0 0 4
7 electronics 4 0 0 8
# BOGDAN \/
#|WAGA|TYP|WYMIAR|LATWOPALNOSC|WYBUCHOWOSC|CENA|PRZYJETY_DO_MAGAZYNU
#
1 builders 10 2 0 3
3 electronics 2 2 0 5
3 groceries 10 0 0 1
10 groceries 7 0 0 4
7 dangerous 2 3 3 4
8 builders 7 2 0 4
4 electronics 1 0 0 10
5 builders 1 0 0 9
6 electronics 4 0 0 4
2 groceries 2 0 0 1
9 electronics 1 0 0 4
4 groceries 6 0 0 3
4 builders 7 0 0 5
4 builders 7 0 0 3
4 builders 5 0 1 2
4 groceries 2 0 0 1
1 groceries 9 0 0 4
2 electronics 5 0 0 2
5 groceries 7 0 0 2
1 builders 1 0 0 1
2 electronics 5 0 0 8
3 electronics 5 0 0 4
4 dangerous 9 5 5 10
3 builders 3 1 0 4
1 groceries 7 0 0 4
2 builders 4 0 0 10
7 dangerous 1 3 2 3
9 groceries 1 0 0 1
4 groceries 7 0 0 4
5 groceries 5 0 0 1
3 builders 2 3 2 2
2 groceries 7 0 0 5
1 builders 3 0 2 4
9 builders 5 0 0 2
4 electronics 8 5 0 5
2 builders 6 4 0 1
3 electronics 4 0 2 3
1 electronics 5 0 0 4
2 dangerous 4 3 3 9
1 builders 6 0 0 2
# MACIEJ \/
#|WAGA|TYP|WYMIAR|LATWOPALNOSC|WYBUCHOWOSC|CENA|PRZYJETY_DO_MAGAZYNU
#
1 electronics 7 0 0 2
4 groceries 6 0 0 5
1 electronics 2 0 0 1
3 dangerous 5 4 3 2
2 groceries 2 0 0 1
1 electronics 3 0 2 2
4 dangerous 5 4 3 5
7 electronics 10 0 0 2
2 electronics 8 3 0 4
4 electronics 1 0 0 2
2 electronics 3 0 0 5
3 builders 7 0 0 3
5 builders 7 0 0 8
2 builders 10 3 0 1
2 builders 1 2 0 9
2 builders 1 3 0 2
4 dangerous 5 3 3 3
1 dangerous 1 3 5 5
2 groceries 3 0 0 4
4 electronics 7 0 0 4
2 groceries 7 0 0 5
4 groceries 1 0 0 5
4 dangerous 7 3 5 4
5 builders 5 0 0 3
1 electronics 7 0 0 4
10 electronics 6 1 0 7
3 builders 5 5 0 8
1 groceries 1 0 0 1
3 electronics 6 0 0 3
2 electronics 3 0 0 5
4 builders 3 0 1 10
4 builders 2 0 0 5
3 electronics 7 0 0 5
3 builders 6 5 0 2
9 builders 1 5 1 3
7 groceries 8 0 0 1
2 groceries 9 0 0 3
6 electronics 1 4 0 9
4 electronics 5 0 0 4
5 dangerous 6 3 3 5

View File

@ -0,0 +1,136 @@
from random import randint
#waga,
MAX_WEIGHT = 10
SECOND_BORDER_WEIGHT = 5
MIN_WEIGHT = 1
#kategoria,
DANGEROUS = "dangerous"
GROCERIES = "groceries"
ELECTRONICS = "electronics"
BUILDERS = "builders"
# rozmiar,
MAX_SIZE = 10
SECOND_BORDER_SIZE = 7
MIN_SIZE = 1
# łatwopalność
MAX_FLAMMABILITY = 5
MIN_FLAMMABILITY = 1
NO_FLAMMABILITY = 0
# ,wybuchowość,
MAX_EXPLOSIVENESS = 5
MIN_EXPLOSIVENESS = 1
NO_EXPLOSIVENESS = 0
# cena
MAX_PRICE = 10
SECOND_BORDER_PRICE = 5
MIN_PRICE = 1
QTY_OF_CASES = 200
OUTPUT_FILEPATH = "data/training_list_id3.txt"
def generate_weight():
second_border = SECOND_BORDER_WEIGHT
# 1/omega_size = ODDS TO GET A VERY HEAVY PACKAGE IN RANGE SECOND_BORDER_WEIGHT+1-4000
omega_size = 4
first_rand = randint(1, omega_size)
if first_rand == omega_size:
return randint(second_border+1, MAX_WEIGHT)
else:
return randint(MIN_WEIGHT, second_border)
def generate_category():
# QTY OF CATEGORIES
omega_size = 4
rand = randint(1, omega_size)
if rand == 1:
return DANGEROUS
elif rand == 2:
return GROCERIES
elif rand == 3:
return ELECTRONICS
elif rand == 4:
return BUILDERS
def generate_size():
second_border = SECOND_BORDER_SIZE
# 1/omega_size = ODDS TO GET A VERY BIG PACKAGE IN RANGE SECOND_BORDER_SIZE+1-10000
omega_size = 7
first_rand = randint(1, omega_size)
if first_rand == omega_size:
return randint(second_border+1, MAX_SIZE)
else:
return randint(MIN_SIZE, second_border)
def generate_flammability(category):
if category == GROCERIES:
return NO_FLAMMABILITY
elif category == DANGEROUS:
return randint(3, 5)
# 1/omega_size = ODDS TO GET A FLAMMABLE PACKAGE THAT'S NOT LABELED "DANGEROUS" IN RANGE 1-5
omega_size = 4
first_rand = randint(1, omega_size)
if first_rand == omega_size:
return randint(MIN_FLAMMABILITY, MAX_FLAMMABILITY)
else:
return NO_FLAMMABILITY
def generate_explosiveness(category):
if category == GROCERIES:
return NO_EXPLOSIVENESS
elif category == DANGEROUS:
return randint(2, 5)
# 1/omega_size = ODDS TO GET A EXPLOSIVE PACKAGE THAT'S NOT LABELED "DANGEROUS" IN RANGE 1-2
omega_size = 7
first_rand = randint(1, omega_size)
if first_rand == omega_size:
return randint(MIN_EXPLOSIVENESS, 2)
else:
return NO_EXPLOSIVENESS
def generate_price():
second_border = SECOND_BORDER_PRICE
# 1/omega_size = ODDS TO GET A VERY EXPENSIVE PACKAGE IN RANGE SECOND_BORDER_PRICE+1-100000
omega_size = 6
first_rand = randint(1, omega_size)
if first_rand == omega_size:
return randint(second_border+1, MAX_PRICE)
else:
return randint(MIN_PRICE, second_border)
if __name__ == "__main__":
generated_data = []
for case in range(QTY_OF_CASES):
data_row = []
data_row.append(generate_weight())
data_row.append(generate_category())
data_row.append(generate_size())
data_row.append(generate_flammability(data_row[1]))
data_row.append(generate_explosiveness(data_row[1]))
data_row.append(generate_price())
generated_data.append(data_row)
with open(OUTPUT_FILEPATH, "w") as open_file:
for row in generated_data:
for atribute in row:
open_file.write(str(atribute))
open_file.write(' ')
open_file.write('\n')