zmiana nadaj_cel_agentowi(); ustawienie(); wroc()
This commit is contained in:
parent
dc9cfef284
commit
d15203280d
@ -4,7 +4,7 @@
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.8 (Sztuczna_Inteligencja_Gr16)" jdkType="Python SDK" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.9 (Sztuczna_Inteligencja_Gr16)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (Sztuczna_Inteligencja_Gr16)" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (Sztuczna_Inteligencja_Gr16)" project-jdk-type="Python SDK" />
|
||||
</project>
|
@ -36,8 +36,8 @@ class ZawartoscPola(Enum):
|
||||
CEL = 2
|
||||
DYWAN = 3
|
||||
KALUZA = 4
|
||||
SCIANA2=5
|
||||
OSOBA=6
|
||||
SCIANA2 = 5
|
||||
OSOBA = 6
|
||||
|
||||
|
||||
ZawartoscPolaNaKolorPola = {
|
||||
|
113
main.py
113
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()
|
||||
|
@ -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
|
||||
|
47
rescue.py
47
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)
|
||||
# print(z)
|
||||
# print(z_pred)
|
||||
return (z_pred)
|
||||
|
13
stale.py
13
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))
|
||||
###
|
||||
|
||||
###
|
||||
|
@ -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
|
||||
|
@ -35,7 +35,3 @@ class Szafka:
|
||||
self.listaWolnychMiejsc[0].numerUmieszczonejPaczki = numerPaczki
|
||||
self.listaWolnychMiejsc[0].status = "zajęte"
|
||||
self.listaWolnychMiejsc.pop(0)
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user