Sztuczna_Inteligencja_2020/TaskQueuing.md

1.9 KiB

Kolejkowanie zadań

Metoda uczenia: Drzewa decyzyjne Autor: Dominik Zawadzki

Funkcja kolejkowania zadań jak i drzewo decyzyjne znajdują się w pliku:

decisionTree.py

Funkcje drzewa decyzyjnego:

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
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}
FindAttributesEntropy(self, df, attribute)

Zwraca entropie danego w parametrze atrybutu, gdzie jako prawdopodobieństwo liczona jest ilość wystąpień tego atrybutu w kolejnych priorytetach.

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
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ń:

TasksList(self, name, coordinate):

Funkcja oblicza dystans dzielący kelnera od stolika i razem z nazwą zadania dodawane jest do listy zadań.

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.