integracja drzewa z projektem

This commit is contained in:
xkamikoo 2020-06-08 18:39:01 +02:00
parent 89388cc215
commit 3a3838f3e1
2 changed files with 73 additions and 32 deletions

View File

@ -9,12 +9,6 @@ work = ["Podlac", "Odchwascic", "Zasadzic", "Zebrac"]
# 2 - zasadzenie # 2 - zasadzenie
# 0 - podlanie # 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) # przetłumaczenie numerka (0-8)
@ -189,7 +183,12 @@ def print_leaf(counts):
return probs 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(): class main():
@ -201,8 +200,32 @@ class main():
self.best_action = 0 self.best_action = 0
def main(self): 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 # tworzymy zbior uczacy, w ktorym podajemy wszystkie mozliwe pola i czynnosci
training_data = [[0, 0, 1, 0, "Zasadzic"], training_data = [[0, 0, 1, 0, "Zasadzic"],
[0, 1, 1, 0, "Odchwascic"], [0, 1, 1, 0, "Odchwascic"],
@ -216,40 +239,36 @@ class main():
self.tree = build_tree(training_data) self.tree = build_tree(training_data)
print_tree(self.tree) print_tree(self.tree)
print("TEST:") # print("TEST:")
# print("Przewidziania czynnosc: %s Czynnosc: Zasadzic"
print("Przewidziania czynnosc: %s Czynnosc: Zasadzic" # % print_leaf(classify(translate(4), self.tree)))
% print_leaf(classify(translate(4), self.tree))) # print("Przewidziania czynnosc: %s Czynnosc: Odchwascic"
print("Przewidziania czynnosc: %s Czynnosc: Odchwascic" # % print_leaf(classify(translate(5), self.tree)))
% print_leaf(classify(translate(5), self.tree))) # print("Przewidziania czynnosc: %s Czynnosc: Odchwascic"
print("Przewidziania czynnosc: %s Czynnosc: Odchwascic" # % print_leaf(classify(translate(7), self.tree)))
% 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")
def work_field(self, labels): def work_field(self, labels):
works = [] works = []
for label in labels: for label in labels:
if labels[label] > 0: if labels[label] > 0:
works.append(label) works.append(label)
return works return works
def search_field(self): def search_field(self):
pola = []
pole = 0
order = set_order(self.field.get_pogoda_value())
matrix = self.field.get_matrix() # pobieramy pole matrix = self.field.get_matrix() # pobieramy pole
for i in range(len(matrix)): for i in range(len(matrix)):
for j in range(len(matrix[i])): for j in range(len(matrix[i])):
pole = i * 10 + j
print("Pole (%d,%d) Przewidziania czynnosc: %s" print("Pole (%d,%d) Przewidziania czynnosc: %s"
% (i, j, print_leaf(classify(translate(matrix[i][j]), self.tree)))) # przewidujemy czynność za pomocą drzewa % (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: 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.path.find_path(self.traktor, self.field, self.ui, [j, i]) # szukamy sciezki
self.ui.update() # update'ujemy UI self.ui.update() # update'ujemy UI
time.sleep(0.5) time.sleep(0.5)

View File

@ -10,9 +10,28 @@ class main():
self.UI = UI self.UI = UI
self.path = path 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): 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 pass
@ -23,10 +42,13 @@ class main():
for i in range(0, 10): for i in range(0, 10):
print("Sprawdzam "+str(i+1)+" wiersz") print("Sprawdzam "+str(i+1)+" wiersz")
for j in range(0, 10): for j in range(0, 10):
row.append(self.marcin.main_collective([i,j])) row.append(self.marcin.main_collective([j,i]))
field.append(row) field.append(row)
row = [] row = []
return field return field
# 1. sprawdza czy opłaca się pracować # 1. sprawdza czy opłaca się pracować
# 2. sprawdza pole na którym stoi żeby drzewo podjęło decyzje # 2. sprawdza pole na którym stoi żeby drzewo podjęło decyzje
# 3. Uruchamia się drzewo # 3. Uruchamia się drzewo