Compare commits
2 Commits
7a14a94b1e
...
0b494d694d
Author | SHA1 | Date | |
---|---|---|---|
0b494d694d | |||
3713ccc8ff |
@ -44,4 +44,4 @@ class Condition:
|
|||||||
|
|
||||||
|
|
||||||
def getCondition(self):
|
def getCondition(self):
|
||||||
print(f"Aktualny czas: {Climate.time[self.currentTime]},opady: {Climate.rain[self.rain]},temperatura: {Climate.temperature[self.temperature]}, pora roku: {Climate.seasons[self.season]}")
|
return ([Climate.temperature[self.temperature],Climate.rain[self.rain],Climate.seasons[self.season],Climate.time[self.currentTime]])
|
||||||
|
@ -15,7 +15,7 @@ class Drzewo:
|
|||||||
self.tree=self.tree.fit(x.values,decision)
|
self.tree=self.tree.fit(x.values,decision)
|
||||||
|
|
||||||
def plotTree(self):
|
def plotTree(self):
|
||||||
plt.figure()
|
plt.figure(figsize=(10,15))
|
||||||
skltree.plot_tree(self.tree,filled=True,feature_names=atributes)
|
skltree.plot_tree(self.tree,filled=True,feature_names=atributes)
|
||||||
plt.title("Drzewo decyzyjne wytrenowane na przygotowanych danych")
|
plt.title("Drzewo decyzyjne wytrenowane na przygotowanych danych")
|
||||||
plt.savefig('tree.png')
|
plt.savefig('tree.png')
|
||||||
@ -23,6 +23,6 @@ class Drzewo:
|
|||||||
def makeDecision(self,values):
|
def makeDecision(self,values):
|
||||||
action=self.tree.predict([values]) #0- nie podlewac, 1-podlewac
|
action=self.tree.predict([values]) #0- nie podlewac, 1-podlewac
|
||||||
if(action==[0]):
|
if(action==[0]):
|
||||||
return "Nie podlewac"
|
return "Nie"
|
||||||
if(action==[1]):
|
if(action==[1]):
|
||||||
return "Podlewac"
|
return "Tak"
|
@ -118,3 +118,6 @@ class Roslina:
|
|||||||
|
|
||||||
def report_status(self):
|
def report_status(self):
|
||||||
return f"Nazwa rosliny: {self.nazwa} "+self.stan.report_all()
|
return f"Nazwa rosliny: {self.nazwa} "+self.stan.report_all()
|
||||||
|
|
||||||
|
def return_status_tree(self):
|
||||||
|
return self.stan.return_stan_for_tree()
|
1
Stan.py
1
Stan.py
@ -63,3 +63,4 @@ class Stan:
|
|||||||
|
|
||||||
def report_all(self):
|
def report_all(self):
|
||||||
return f"Nawodnienie: {self.nawodnienie} Zyznosc: {self.zyznosc} Wzrost: {self.wzrost} Choroba: {self.return_disease_as_string()}"
|
return f"Nawodnienie: {self.nawodnienie} Zyznosc: {self.zyznosc} Wzrost: {self.wzrost} Choroba: {self.return_disease_as_string()}"
|
||||||
|
|
||||||
|
33
Tractor.py
33
Tractor.py
@ -13,6 +13,8 @@ import Drzewo
|
|||||||
condition=Condition.Condition()
|
condition=Condition.Condition()
|
||||||
drzewo=Drzewo.Drzewo()
|
drzewo=Drzewo.Drzewo()
|
||||||
|
|
||||||
|
format_string = "{:<25}{:<25}{:<25}{:<10}{:<10}{:<10}{:<25}{:<15}{:<20}{:<10}{:<15}"
|
||||||
|
|
||||||
|
|
||||||
tab = [-1, 0, 0, 0, 0, 1, 1, 1, 1, 1,
|
tab = [-1, 0, 0, 0, 0, 1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1, 0, 1, 0, 1, 1,
|
1, 1, 1, 1, 1, 0, 1, 0, 1, 1,
|
||||||
@ -65,17 +67,22 @@ class Tractor:
|
|||||||
|
|
||||||
def tree_move(self, pole):
|
def tree_move(self, pole):
|
||||||
drzewo.treeLearn()
|
drzewo.treeLearn()
|
||||||
print("test")
|
|
||||||
drzewo.plotTree()
|
drzewo.plotTree()
|
||||||
|
self.snake_move_irrigation(pole, drzewo)
|
||||||
|
|
||||||
|
def get_attributes(self):
|
||||||
slot_attributes=self.slot.return_stan_for_tree()
|
slot_attributes=self.slot.return_stan_for_tree()
|
||||||
climate_attributes=condition.return_condition()
|
climate_attributes=condition.return_condition()
|
||||||
attributes=[]
|
attributes=[]
|
||||||
attributes=attributes+slot_attributes+[self.waterLevel]+climate_attributes
|
attributes=attributes+slot_attributes+[self.waterLevel]+climate_attributes
|
||||||
print("Decyzja czy podlac:",drzewo.makeDecision(attributes),"Atrybuty tego stanu to:",attributes)
|
return attributes
|
||||||
self.snake_move_irrigation(pole, drzewo)
|
|
||||||
#TODO SNAKE MOVE AND USING drzewo.makeDecision(attributes)for each slot. Also we need to cycle climate for each slot change
|
def get_attributes_for_print(self):
|
||||||
#condition.cycle()
|
slot_attributes=self.slot.return_plant().return_status_tree()
|
||||||
#condition.getCondition()
|
climate_attributes=condition.getCondition()
|
||||||
|
slot_attributes=slot_attributes+[self.waterLevel]
|
||||||
|
return slot_attributes+climate_attributes
|
||||||
|
|
||||||
def turn_right(self):
|
def turn_right(self):
|
||||||
# zmiana kierunku w prawo
|
# zmiana kierunku w prawo
|
||||||
direction_map = {
|
direction_map = {
|
||||||
@ -157,16 +164,15 @@ class Tractor:
|
|||||||
|
|
||||||
|
|
||||||
def snake_move_irrigation(self, pole, drzewo):
|
def snake_move_irrigation(self, pole, drzewo):
|
||||||
|
headers=['Wspolrzedne','Czy podlac','Poziom nawodnienia','Wzrost','Choroba','Zyznosc','Poziom wody w traktorze','Temperatura','Opady','Pora Roku','Aktualny czas']
|
||||||
|
print(format_string.format(*headers))
|
||||||
initPos = (self.slot.x_axis, self.slot.y_axis)
|
initPos = (self.slot.x_axis, self.slot.y_axis)
|
||||||
counter = 0
|
counter = 0
|
||||||
for i in range(initPos[1], dCon.NUM_Y):
|
for i in range(initPos[1], dCon.NUM_Y):
|
||||||
for j in range(initPos[0], dCon.NUM_X):
|
for j in range(initPos[0], dCon.NUM_X):
|
||||||
slot_attributes=self.slot.return_stan_for_tree()
|
attributes=self.get_attributes()
|
||||||
climate_attributes=condition.return_condition()
|
|
||||||
attributes=[]
|
|
||||||
attributes=attributes+slot_attributes+[self.waterLevel]+climate_attributes
|
|
||||||
decision = drzewo.makeDecision(attributes)
|
decision = drzewo.makeDecision(attributes)
|
||||||
print("Slot:", str("({:02d}, {:02d})").format(self.slot.x_axis, self.slot.y_axis),"Decyzja czy podlac:",decision,"Atrybuty slotu:",attributes)
|
self.pretty_print_tree([str("({:02d}, {:02d})").format(self.slot.x_axis, self.slot.y_axis),decision,*self.get_attributes_for_print()])
|
||||||
if decision == "Podlewac":
|
if decision == "Podlewac":
|
||||||
self.slot.irrigatePlant()
|
self.slot.irrigatePlant()
|
||||||
counter += 1
|
counter += 1
|
||||||
@ -181,6 +187,7 @@ class Tractor:
|
|||||||
self.turn_left()
|
self.turn_left()
|
||||||
self.move_forward(pole, False)
|
self.move_forward(pole, False)
|
||||||
self.turn_left()
|
self.turn_left()
|
||||||
|
pygame.time.delay(50)
|
||||||
print("podlanych slotów: ", str(counter))
|
print("podlanych slotów: ", str(counter))
|
||||||
|
|
||||||
def snake_move(self,pole,x,y):
|
def snake_move(self,pole,x,y):
|
||||||
@ -227,9 +234,11 @@ class Tractor:
|
|||||||
print("- Typ:", akcja.typ)
|
print("- Typ:", akcja.typ)
|
||||||
else:
|
else:
|
||||||
print("Brak akcji przypisanych do tego sprzętu.")
|
print("Brak akcji przypisanych do tego sprzętu.")
|
||||||
|
|
||||||
|
def pretty_print_tree(self,attributes):
|
||||||
|
print(format_string.format(*attributes))
|
||||||
def irrigateSlot(self):
|
def irrigateSlot(self):
|
||||||
try:
|
try:
|
||||||
self.slot.irrigatePlant()
|
self.slot.irrigatePlant()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user