From 3a3838f3e1868d889adcd891e17cbe08da8785e8 Mon Sep 17 00:00:00 2001 From: xkamikoo <58092037+xkamikoo@users.noreply.github.com> Date: Mon, 8 Jun 2020 18:39:01 +0200 Subject: [PATCH] integracja drzewa z projektem --- Kamila.py | 73 ++++++++++++++++++++++++++++++++------------------- collective.py | 32 ++++++++++++++++++---- 2 files changed, 73 insertions(+), 32 deletions(-) diff --git a/Kamila.py b/Kamila.py index 753820e..bdc6989 100644 --- a/Kamila.py +++ b/Kamila.py @@ -9,12 +9,6 @@ work = ["Podlac", "Odchwascic", "Zasadzic", "Zebrac"] # 2 - zasadzenie # 0 - podlanie -def set_order(pogoda): - if pogoda == 1: - order = [3, 1, 2] - else: - order = [3, 1, 2, 0] - return order # przetłumaczenie numerka (0-8) @@ -189,7 +183,12 @@ def print_leaf(counts): return probs - +def set_order(self): + if self.field.get_pogoda_value() == 1: + order = [3, 1, 2] + else: + order = [3, 1, 2, 0] + return order class main(): @@ -201,8 +200,32 @@ class main(): self.best_action = 0 - def main(self): + self.learn_tree() + # ustalamy kolejnosc + order = set_order(self.field.get_pogoda_value()) + for action in order: + self.traktor.set_mode(action) # ustawiamy tryb traktorowi + self.search_field() # szukamy pól + print("Koniec roboty") + + def main_collective(self, pole): + pola = [] + for i in range(len(pole)): + for j in range(len(pole[i])): + coords = i * 10 + j + print("Pole (%d,%d) Przewidziania czynnosc: %s" + % (i, j, print_leaf( + classify(translate(pole[i][j]), self.tree)))) # przewidujemy czynność za pomocą drzewa + if work[self.traktor.get_mode()] in self.work_field( + classify(translate(pole[i][j]), self.tree)): # jezeli zgadza sie z aktualnym trybem: + print("Zgodne z wykonywanym trybem") + pola.append(coords) + print("Koordynaty:", pola) + return pola + + def learn_tree(self): + # tworzymy zbior uczacy, w ktorym podajemy wszystkie mozliwe pola i czynnosci training_data = [[0, 0, 1, 0, "Zasadzic"], [0, 1, 1, 0, "Odchwascic"], @@ -216,40 +239,36 @@ class main(): self.tree = build_tree(training_data) print_tree(self.tree) - print("TEST:") - - print("Przewidziania czynnosc: %s Czynnosc: Zasadzic" - % print_leaf(classify(translate(4), self.tree))) - print("Przewidziania czynnosc: %s Czynnosc: Odchwascic" - % print_leaf(classify(translate(5), self.tree))) - print("Przewidziania czynnosc: %s Czynnosc: Odchwascic" - % print_leaf(classify(translate(7), self.tree))) - - - - # ustalamy kolejnosc - order = set_order(self.field.get_pogoda_value()) - for action in order: - self.traktor.set_mode(action) # ustawiamy tryb traktorowi - self.search_field() # szukamy pól - - print("Koniec roboty") + # print("TEST:") + # print("Przewidziania czynnosc: %s Czynnosc: Zasadzic" + # % print_leaf(classify(translate(4), self.tree))) + # print("Przewidziania czynnosc: %s Czynnosc: Odchwascic" + # % print_leaf(classify(translate(5), self.tree))) + # print("Przewidziania czynnosc: %s Czynnosc: Odchwascic" + # % print_leaf(classify(translate(7), self.tree))) def work_field(self, labels): works = [] + for label in labels: if labels[label] > 0: works.append(label) return works def search_field(self): + + pola = [] + pole = 0 + order = set_order(self.field.get_pogoda_value()) matrix = self.field.get_matrix() # pobieramy pole for i in range(len(matrix)): for j in range(len(matrix[i])): + pole = i * 10 + j print("Pole (%d,%d) Przewidziania czynnosc: %s" % (i, j, print_leaf(classify(translate(matrix[i][j]), self.tree)))) # przewidujemy czynność za pomocą drzewa if work[self.traktor.get_mode()] in self.work_field(classify(translate(matrix[i][j]), self.tree)): # jezeli zgadza sie z aktualnym trybem: - print("Zgodna z aktualnym trybem, czynnosc wykonywana") + print("Zgodne z wykonywanym trybem") + pola.append(pole) self.path.find_path(self.traktor, self.field, self.ui, [j, i]) # szukamy sciezki self.ui.update() # update'ujemy UI time.sleep(0.5) diff --git a/collective.py b/collective.py index 1234080..c77893a 100644 --- a/collective.py +++ b/collective.py @@ -10,9 +10,28 @@ class main(): self.UI = UI self.path = path + # ustalanie kolejnosci wykonywania dzialam na podstwie pogody + # 3 - zbieranie, 2 - sadzenie, 1 - odchwaszczanie, 0 - podlewanie + def set_order(self): + if self.pole.get_pogoda_value() == 1: #jak deszcz, to bez podlewania + order = [3, 1, 2] + else: + order = [3, 1, 2, 0] + return order + + def main(self): - print(self.marcin.main_collective()) - # self.neuro_check_field() To sprawdza cale pole + + #tutaj Justyna decyduje co my w ogole robimy + + order = self.set_order() #wybieramy kolejnosc prac na polu + self.kamila.learn_tree() #uczenie drzewa + for action in order: + self.traktor.set_mode(action) # ustawiamy tryb traktorowi + field = self.neuro_check_field() # sprawdzamy pole + coords = self.kamila.main_collective(field) # zwracam koordynaty pol zgodych z wybranym trybem + # tutaj Piotrek tworzy optymalna sciezke + # traktor wykonuje prace na polu pass @@ -20,13 +39,16 @@ class main(): field = [] row = [] print("Sprawdzanie siecią neuronową całego pola, proszę czekać...") - for i in range(0,10): + for i in range(0, 10): print("Sprawdzam "+str(i+1)+" wiersz") - for j in range(0,10): - row.append(self.marcin.main_collective([i,j])) + for j in range(0, 10): + row.append(self.marcin.main_collective([j,i])) field.append(row) row = [] return field + + + # 1. sprawdza czy opłaca się pracować # 2. sprawdza pole na którym stoi żeby drzewo podjęło decyzje # 3. Uruchamia się drzewo