diff --git a/WGoracy.md b/WGoracy.md index 0b00d6d..48c12ff 100644 --- a/WGoracy.md +++ b/WGoracy.md @@ -6,14 +6,14 @@ Do realizacji podprojektu wykorzystano drzewa decyzyjne do decydowania, na któr ### Omówienie kodu -Kod podprojektu znajduje się w klasie **whereDecision** w pliku [whereDecision.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/whereDecision.py). Wywołanie metody **recognize** odbywa się w klasie **program** w pliku [program.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/program.py) (linia 79). +Kod podprojektu znajduje się w klasie **whereDecision** w pliku [whereDecision.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/whereDecision.py). Wywołanie metody **recognize** odbywa się w klasie **program** w pliku [program.py](https://git.wmi.amu.edu.pl/s444399/AI/src/master/program.py). ``` whatIsIt = self.neurons.whatIsIt(easygui.fileopenbox("Wybierz zdjęcie paczki", "Wybierz zdjęcie paczki", filetypes = [["*.jpg", "*.jpeg", "*.png", "Pliki graficzne"]])) where = self.whereDecision.recognize(whatIsIt, self.regalsik()) ``` -Do zmiennej **whatIsIt** zostaje zapisany typ otrzymanej paczki, który został rozpoznany dzięki innemu podprojektowi, następnie wywoływana jest metoda **recognize** z parametrami **whatIsIt** i **self.regalsik()**. +Do zmiennej **whatIsIt** zostaje zapisany typ otrzymanej paczki w formie tablicy binarnej, który został rozpoznany dzięki innemu podprojektowi, następnie wywoływana jest metoda **recognize** z parametrami **whatIsIt** i **self.regalsik()**. Do tablicy **regals** zapisywane są dane wszystkich regałów wygenerowanych na planszy. @@ -34,7 +34,7 @@ Metoda **regalsik()** sprawdza czy regał z tablicy **regals** jest pusty i jeż ### Uczenie modelu -Metoda **recognize** rozpoczyna od utworzenia zbioru uczącego na podstawie tabeli zawierającej informacje o pustych półkach na planszy. Dla każdego regału sprawdzany jest typ paczki, który może być na niej przechowywany, a następnie jest on dodawany do odpowiedniej kolumny. Tablica **lokacja** zawiera położenia wszystkich regałów na planszy. +Metoda **recognize** rozpoczyna od utworzenia zbioru uczącego na podstawie tabeli zawierającej informacje o pustych półkach na planszy. Dla każdego regału sprawdzany jest typ paczki, który może być na niej przechowywany, a następnie jest on dodawany do odpowiedniej tablicy. Tablica **lokacja** zawiera położenia wszystkich regałów na planszy. ``` def recognize(self, recognize, regals): @@ -89,7 +89,7 @@ Jeżeli wszystkie półki są zajęte, wózek zatrzyma się w swojej wyjściowej return [1, 2] ``` -Do zmiennej **z** zapisywany jest nasz zbiór uczący, zaś do zmiennej **y** zapisujemy tabelę prenumeratorzy typu DataFrame z biblioteki *pandas*, która zawiera dane lokalizacji. +Do zmiennej **z** zapisujemy połączone tablice wszystkich typów regałów, zaś do zmiennej **y** zapisujemy tabelę prenumeratorzy typu DataFrame z biblioteki *pandas*, która zawiera dane lokalizacji konkretnych regałów. ``` z = list(zip(zwykle, kruche, latwopalne, radioaktywne, niebezpieczne)) @@ -98,9 +98,11 @@ Do zmiennej **z** zapisywany jest nasz zbiór uczący, zaś do zmiennej **y** za y = prenumeratorzy["lokacja"] ``` +Zmienne **z** i **y** są naszym zbiorem uczącym. + ### Implementacja -Do zmiennej drzewko zapisujemy drzewo decyzyjne z biblioteki *sklearn* utworzone za pomocą metody **DecisionTreeClassifier** z parametrem **criterion** ustawionym na **"entropy"**, który pozwala na uzyskiwanie informacji. Na drzewie wywołujemy metodę **fit**, która dopasowuje do drzewa zbiór uczący zadany w tablicach **z** i **y**.Po dopasowaniu danych możemy przewidzieć przynależność nowych przykładów, co robimy wywołując na drzewie metodę **predict** z parametrem uzyskanym na samym początku, który zawiera informację o rodzaju otrzymanej paczki. W ostateczności zwracamy kod lokalizacji na której zostanie umieszczona paczka. +Do zmiennej **drzewko** zapisujemy drzewo decyzyjne z biblioteki *sklearn* utworzone za pomocą obiektu klasy **DecisionTreeClassifier** z parametrem konstruktora **criterion** ustawionym na **"entropy"**. Na drzewie wywołujemy metodę **fit**, która tworzy model danych w oparciu o nasz zbiór uczący. Po utworzeniu modelu danych możemy przewidzieć przynależność nowych przykładów, co robimy wywołując na drzewie metodę **predict** z parametrem uzyskanym na samym początku, który zawiera informację o rodzaju otrzymanej paczki. W ostateczności zwracamy krotkę zawierającą lokalizację, na której zostanie umieszczona paczka. ``` drzewko = DecisionTreeClassifier(criterion="entropy") @@ -108,4 +110,4 @@ Do zmiennej drzewko zapisujemy drzewo decyzyjne z biblioteki *sklearn* utworzone return list(make_tuple(lokacja_kody[drzewko.predict(recognize)][0])) ``` -Ostatecznie lokalizacja, którą zwróciła metoda **recognize** zapisywana jest do zmiennej **where** (klasa **program** linia 79) i na tej podstawie wózek z pomocą algorytmu AStar wybiera odpowiednią ścieżkę do umieszczenia paczki. \ No newline at end of file +Ostatecznie lokalizacja, którą zwróciła metoda **recognize** zapisywana jest do zmiennej **where** (klasa **program**) i na tej podstawie wózek z pomocą algorytmu AStar wybiera odpowiednią ścieżkę do umieszczenia paczki. \ No newline at end of file