diff --git a/.idea/Sztuczna_Inteligencja_Gr16.iml b/.idea/Sztuczna_Inteligencja_Gr16.iml
index 4335812..658e1d5 100644
--- a/.idea/Sztuczna_Inteligencja_Gr16.iml
+++ b/.idea/Sztuczna_Inteligencja_Gr16.iml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0a4fd2a..353cd96 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/enumy_i_slowniki.py b/enumy_i_slowniki.py
index 42e2a8c..5ded3ce 100644
--- a/enumy_i_slowniki.py
+++ b/enumy_i_slowniki.py
@@ -36,8 +36,8 @@ class ZawartoscPola(Enum):
CEL = 2
DYWAN = 3
KALUZA = 4
- SCIANA2=5
- OSOBA=6
+ SCIANA2 = 5
+ OSOBA = 6
ZawartoscPolaNaKolorPola = {
diff --git a/main.py b/main.py
index a350dca..f5c1a77 100644
--- a/main.py
+++ b/main.py
@@ -1,16 +1,17 @@
import ctypes
import os
+import random
import threading
import pygame.transform
import szafka2
from agent import *
+from neural_network import *
from okno import *
from ramy_czyli_wiedza_agenta import *
from rescue import *
-from neural_network import *
-import random
+
# aby działalo w oknie + rozdzielczość ekranu
# ctypes.windll.shcore.SetProcessDpiAwareness(1)
@@ -39,80 +40,81 @@ def dodaj_szafke(numerSzafki, iloscPolek, iloscMiejscNaPolce, dostepZeStrony, po
poczatek_kolumna, krata_magazynu)
Pomieszczenie.dodajSzafke(szafka)
+
def gdzie_paczka(numerSzafki):
global kolumna, wiersz
if numerSzafki == 1:
- kolumna =random.randint(1,2)
- if kolumna ==1:
- wiersz = random.randint(2,13)
+ kolumna = random.randint(1, 2)
+ if kolumna == 1:
+ wiersz = random.randint(2, 13)
else:
- wiersz = random.choice([1,14])
+ wiersz = random.choice([1, 14])
if numerSzafki == 2:
- kolumna = random.randint(3,4)
+ kolumna = random.randint(3, 4)
if kolumna == 3:
- wiersz = random.choice([1, 14])
+ wiersz = random.choice([1, 14])
else:
wiersz = random.randint(2, 13)
if numerSzafki == 3:
- kolumna = random.randint(5,8)
+ kolumna = random.randint(5, 8)
if kolumna == 5:
- wiersz = random.randint(1,5)
+ wiersz = random.randint(1, 5)
if kolumna == 6:
- wiersz = random.choice([0,6])
+ wiersz = random.choice([0, 6])
if kolumna == 7:
- wiersz = random.choice([0,7])
+ wiersz = random.choice([0, 7])
if kolumna == 8:
- wiersz= random.randint(1,6)
+ wiersz = random.randint(1, 6)
if numerSzafki == 4:
- kolumna = random.randint(5,8)
+ kolumna = random.randint(5, 8)
if kolumna == 5:
- wiersz = random.randint(9,12)
- if kolumna==6:
- wiersz = random.choice([8,13])
- if kolumna ==7:
- wiersz = random.choice([9,13])
- if kolumna==8:
- wiersz = random.randint(10,12)
+ wiersz = random.randint(9, 12)
+ if kolumna == 6:
+ wiersz = random.choice([8, 13])
+ if kolumna == 7:
+ wiersz = random.choice([9, 13])
+ if kolumna == 8:
+ wiersz = random.randint(10, 12)
if numerSzafki == 5:
- kolumna = random.randint(10,12)
+ kolumna = random.randint(10, 12)
if kolumna == 11:
- wiersz = random.choice([2,11])
+ wiersz = random.choice([2, 11])
else:
- wiersz = random.randint(3,10)
+ wiersz = random.randint(3, 10)
if numerSzafki == 6:
- kolumna = random.randint(12,14)
+ kolumna = random.randint(12, 14)
if kolumna == 13:
- wiersz = random.choice([1,12])
+ wiersz = random.choice([1, 12])
else:
- wiersz = random.randint(2,11)
+ wiersz = random.randint(2, 11)
if numerSzafki == 7:
- kolumna = random.randint(17,19)
+ kolumna = random.randint(17, 19)
if kolumna == 18:
- wiersz = random.choice([0,13])
+ wiersz = random.choice([0, 13])
else:
- wiersz =random.randint(1,12)
+ wiersz = random.randint(1, 12)
if numerSzafki == 8:
- kolumna = random.randint(22,24)
+ kolumna = random.randint(22, 24)
if kolumna == 23:
- wiersz =random.choice([4,12])
+ wiersz = random.choice([4, 12])
else:
- wiersz =random.randint(5,11)
+ wiersz = random.randint(5, 11)
if numerSzafki == 9:
- kolumna = random.randint(24,26)
+ kolumna = random.randint(24, 26)
if kolumna == 25:
- wiersz =random.choice([0,13])
+ wiersz = random.choice([0, 13])
else:
- wiersz =random.randint(1,12)
+ wiersz = random.randint(1, 12)
if numerSzafki == 10:
- kolumna =random.randint(27,29)
+ kolumna = random.randint(27, 29)
if kolumna == 28:
- wiersz = random.choice([4,14])
+ wiersz = random.choice([4, 14])
else:
wiersz = random.randint(5, 13)
if numerSzafki == 11:
- kolumna=0
- wiersz=0
- print(wiersz,kolumna)
+ kolumna = 0
+ wiersz = 0
+ print(wiersz, kolumna)
return wiersz, kolumna
@@ -120,7 +122,7 @@ def ustawienie():
ostatnia = recognition()
print(ostatnia)
kierunek = Kierunek(random.randint(0, 3))
- wiersz, kolumna = gdzie_paczka(ostatnia+1)
+ wiersz, kolumna = gdzie_paczka(ostatnia + 1)
return Stan(kierunek, PoleKraty(krata_magazynu, wiersz, kolumna))
@@ -137,18 +139,16 @@ def zaznacz_cel_na_mapie(cel: Stan):
krata_magazynu.krata[wiersz][kolumna] = ZawartoscPola.CEL
-def nadaj_cel_agentowi(agent: Agent):
- agent.cel = ustawienie()
+def nadaj_cel_agentowi(agent: Agent, cel: Cel):
+ agent.cel = cel
zaznacz_cel_na_mapie(agent.cel)
print("CEL:", agent.cel.poleStartoweGorne.wiersz, agent.cel.poleStartoweGorne.kolumna)
-def cel_wroc(agent:Agent):
- agent.cel = wroc()
- zaznacz_cel_na_mapie(agent.cel)
def zdarzenie_osoba():
global flaga1
- flaga1=1
+ flaga1 = 1
+
def losowa_osoba():
wiersz = random.randint(0, krata_magazynu.liczbaPolPionowo - 1)
@@ -195,7 +195,7 @@ def main():
for i in range(LICZBA_POL_W_PIONIE):
krata_magazynu.krata[i][21] = ZawartoscPola.SCIANA2
- krata_magazynu.krata[0][21]=ZawartoscPola.PUSTE
+ krata_magazynu.krata[0][21] = ZawartoscPola.PUSTE
krata_magazynu.krata[7][21] = ZawartoscPola.PUSTE
krata_magazynu.krata[14][21] = ZawartoscPola.PUSTE
@@ -205,20 +205,25 @@ def main():
t = threading.Timer(5.0, zdarzenie_osoba).start()
osoba = PoleKraty(krata_magazynu, 0, 0)
- clf=drzewo_decyzyjne()
+ clf = drzewo_decyzyjne()
global flaga1
flaga1 = 0
while True:
# cel to Stan (pole kraty gdzie ma stać agent, aby położyć paczkę na półkę, w obiekcie klasy Miejsce jest to artybut dostęp + kierunek <-na razie niepotrzebny)
if krata_magazynu.agent.cel is None:
- nadaj_cel_agentowi(krata_magazynu.agent)
+ cel = ustawienie()
+ www = cel.poleStartoweGorne.wiersz
+ rrr = cel.poleStartoweGorne.kolumna
+ list = []
+ list.append((www, rrr))
+ nadaj_cel_agentowi(krata_magazynu.agent, cel)
krata_magazynu.agent.idzDoCelu()
- cel_wroc(krata_magazynu.agent)
+ # powrot
+ cel = wroc()
+ nadaj_cel_agentowi(krata_magazynu.agent, cel)
krata_magazynu.agent.idzDoCelu()
-
-
if flaga1 == 1:
osoba.krata.krata[osoba.wiersz][osoba.kolumna] = ZawartoscPola.PUSTE
okno1.wyswietlOkno()
diff --git a/neural_network.py b/neural_network.py
index 8477cb2..dca1185 100644
--- a/neural_network.py
+++ b/neural_network.py
@@ -1,10 +1,10 @@
import os
-import cv2
-import numpy as np
-import matplotlib.pyplot as plt
-import tensorflow as tf
import random
+import cv2
+import matplotlib.pyplot as plt
+import numpy as np
+import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
@@ -13,21 +13,22 @@ x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential()
-model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
+model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(10, activation='softmax'))
-model.compile(optimizer ='adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])
+model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
-model.fit(x_train, y_train, epochs = 3)
+model.fit(x_train, y_train, epochs=3)
model.save('handwritten.model')
model = tf.keras.models.load_model('handwritten.model')
-numery_paczek=[]
+numery_paczek = []
+
def liczby():
- digits=[]
+ digits = []
for i in range(0, 3):
image_number = random.randint(1, 19)
img = cv2.imread(f"digits/digit{image_number}.png")[:, :, 0]
@@ -44,9 +45,10 @@ def liczby():
numery_paczek.append(liczba)
return numery_paczek[-1]
+
def recognition():
try:
- liczba= liczby()
+ liczba = liczby()
except:
print("Error!")
ostatnia = liczba % 10
diff --git a/rescue.py b/rescue.py
index 2d893fa..dfc481f 100644
--- a/rescue.py
+++ b/rescue.py
@@ -1,46 +1,53 @@
import random
+
import pandas as pd
import pydotplus
-from sklearn.tree import DecisionTreeClassifier
-from krata import *
from sklearn import metrics, tree
+from sklearn.tree import DecisionTreeClassifier
+
+from krata import *
+
def drzewo_decyzyjne():
- columns = ['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary', 'decyzja']
+ columns = ['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary',
+ 'decyzja']
df = pd.read_csv("dataset.csv", header=0, sep=";", names=columns)
- kolumny_x=['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary']
+ kolumny_x = ['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary']
x = df[kolumny_x]
y = df.decyzja
- #df.info()
- #X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
+ # df.info()
+ # X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
clf = DecisionTreeClassifier()
clf = clf.fit(x, y)
# print("Dokładność: ", metrics.accuracy_score(y_test, y_pred))
- # dot_data = tree.export_graphviz(clf, out_file=None, feature_names=kolumny_x, class_names=['0', '1'])
- # graph = pydotplus.graph_from_dot_data(dot_data)
- #graph.write_png('drzewo.png')
+ # dot_data = tree.export_graphviz(clf, out_file=None, feature_names=kolumny_x, class_names=['0', '1'])
+ # graph = pydotplus.graph_from_dot_data(dot_data)
+ # graph.write_png('drzewo.png')
return clf
+
def decyzja_osoba(osoba: PoleKraty, clf: DecisionTreeClassifier):
- z=[]
- z.extend(random.choices([1,2], weights=[1,2], k=1)) #1 kobieta, 2 mężczyzna
- z.append(random.randint(18, 75)) #od 55 osoba starsza
- z.append(random.randint(1, 60)) # jak długo przebywa w pomieszczeniu, od 40 min długo, od 20 min średnio, do 20 min krótko
+ z = []
+ z.extend(random.choices([1, 2], weights=[1, 2], k=1)) # 1 kobieta, 2 mężczyzna
+ z.append(random.randint(18, 75)) # od 55 osoba starsza
+ z.append(random.randint(1,
+ 60)) # jak długo przebywa w pomieszczeniu, od 40 min długo, od 20 min średnio, do 20 min krótko
if osoba.kolumna > 21:
z.append(0) # zimne pomieszczenie
else:
z.append(1) # normalne pomieszczenie
- z.append(random.randint(20, 100)) # poziom kurzu
- z.append(random.randint(20, 100)) # poziom oświetlenia
- if (0<=osoba.wiersz or osoba.wiersz<=13) and (17<=osoba.kolumna or osoba.kolumna<=19): #obok szafki z niebezpiecznymi towarami
+ z.append(random.randint(20, 100)) # poziom kurzu
+ z.append(random.randint(20, 100)) # poziom oświetlenia
+ if (0 <= osoba.wiersz or osoba.wiersz <= 13) and (
+ 17 <= osoba.kolumna or osoba.kolumna <= 19): # obok szafki z niebezpiecznymi towarami
z.append(1)
else:
z.append(0)
columns = ['plec', 'wiek', 'czas_w_pom', 'temp_w_pom', 'poziom_kurzu', 'poziom_oswietlenia', 'niebezp_towary']
- z1 = pd.DataFrame([z],columns=columns)
+ z1 = pd.DataFrame([z], columns=columns)
z_pred = clf.predict(z1)
- #print(z)
- #print(z_pred)
- return (z_pred)
\ No newline at end of file
+ # print(z)
+ # print(z_pred)
+ return (z_pred)
diff --git a/stale.py b/stale.py
index 5398428..ae00342 100644
--- a/stale.py
+++ b/stale.py
@@ -1,4 +1,5 @@
import os
+
import pygame
FPS = 20
@@ -26,12 +27,12 @@ CZARNY = (0, 0, 0)
CIEMNY_BRAZOWY1 = (60, 19, 33)
ZOLTY1 = (231, 213, 69)
NIEBIESKI1 = (65, 125, 225)
-IKONA=pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'osoba2.png')),
- (BOK_AGENTA1, BOK_AGENTA1))
-KALUZA=pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'kaluza.png')),
- (BOK_AGENTA1, BOK_AGENTA1))
-DYWAN=pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'dywan.png')),
- (BOK_AGENTA1, BOK_AGENTA1))
+IKONA = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'osoba2.png')),
+ (BOK_AGENTA1, BOK_AGENTA1))
+KALUZA = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'kaluza.png')),
+ (BOK_AGENTA1, BOK_AGENTA1))
+DYWAN = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'dywan.png')),
+ (BOK_AGENTA1, BOK_AGENTA1))
###
###
diff --git a/stan_nastepnik.py b/stan_nastepnik.py
index 8ab3308..fea3a0f 100644
--- a/stan_nastepnik.py
+++ b/stan_nastepnik.py
@@ -70,7 +70,8 @@ def pole_w_granicach_kraty(pole: PoleKraty):
def mozna_wjechac_na_pole(pole: PoleKraty):
- if pole.krata.krata[pole.wiersz][pole.kolumna] != ZawartoscPola.SCIANA and pole.krata.krata[pole.wiersz][pole.kolumna] != ZawartoscPola.SCIANA2 and pole.krata.krata[pole.wiersz][pole.kolumna] != ZawartoscPola.OSOBA:
+ if pole.krata.krata[pole.wiersz][pole.kolumna] != ZawartoscPola.SCIANA and pole.krata.krata[pole.wiersz][
+ pole.kolumna] != ZawartoscPola.SCIANA2 and pole.krata.krata[pole.wiersz][pole.kolumna] != ZawartoscPola.OSOBA:
return True
else:
return False
diff --git a/szafka2.py b/szafka2.py
index 99b6ced..80e1f93 100644
--- a/szafka2.py
+++ b/szafka2.py
@@ -35,7 +35,3 @@ class Szafka:
self.listaWolnychMiejsc[0].numerUmieszczonejPaczki = numerPaczki
self.listaWolnychMiejsc[0].status = "zajęte"
self.listaWolnychMiejsc.pop(0)
-
-
-
-