Sztuczna_Inteligencja_2020/TaskQueuing.md

56 lines
1.9 KiB
Markdown
Raw Normal View History

2020-05-19 18:18:03 +02:00
# Kolejkowanie zadań
**Metoda uczenia:** Drzewa decyzyjne
**Autor:** Dominik Zawadzki
Funkcja kolejkowania zadań jak i drzewo decyzyjne znajdują się w pliku:
```sh
decisionTree.py
```
## Funkcje drzewa decyzyjnego:
```sh
BuildDf(self)
```
Buduje Data Frame złożony z trzech atrybutów:
1. actionName - nazwa zadania
2. distance - dystans pomiędzy kelnerem a stolikiem
3. priority - priorytet danej akcji
```sh
FindPriorityEntropy(self,df)
```
Oblicza entropie dla priorytetu za pomocą wzoru:
* ent = pi * log2pi
gdzie i oznacza wartośc priorytetu i = {0, 1, 2, 3, 4}
```sh
FindAttributesEntropy(self, df, attribute)
```
Zwraca entropie danego w parametrze atrybutu, gdzie jako prawdopodobieństwo liczona jest ilość wystąpień tego atrybutu w kolejnych priorytetach.
```sh
FindWinner(self, df):
```
Zwraca atrubut o najwyższym info gain wyliczanym na podstawie wzoru:
* ent(pr) - ent(atr)
gdzie ent(pr) - entropia po priorytecie
a ent(atr) - entropia atrybutu po uwzględnieniu priorytetu
```sh
BuildTree(self, df, tree=None)
```
Rekurencyjna funkcja budująca drzewo decyzyjne. Na początek wyznaczamy atrybut o najwyższym info gain, a następnie budowane jest z niego poddrzewo, jeśli dane poddrzewo jest "puste", dodajemy je do drzewa i kończymy, bo drzewo zostało zbudowane, jesli nie to funkcja wywołuje samą siebie biorąc za parametr poddrzewo.
## Funkcje kolejkowania zadań:
```sh
TasksList(self, name, coordinate):
```
Funkcja oblicza dystans dzielący kelnera od stolika i razem z nazwą zadania dodawane jest do listy zadań.
```sh
Queue(self, tasksList):
```
W tej funkcji wykorzystywane jest drzewo decyzyjne.
Dla każdego zadanie z listy zadań pętla idzie po odpowiednich wierzchołkach i odnajduje priorytet, który z poprzednimi parametrami dodawany jest do listy stanowiącej kolejkę zadań.
Na koniec funkcji kolejka jest sortowana po priorytecie.