From ffde8acc7bb0769c26915856a6edf21c9b7e5697 Mon Sep 17 00:00:00 2001 From: Zuzanna Myszczuk Date: Mon, 26 Jun 2023 21:03:39 +0200 Subject: [PATCH] drzewo impl klasy do podlewania --- .vs/VSWorkspaceState.json | 5 ++- ...33f7b126-d31b-4d66-8d4f-3973ee08499f.vsidx | Bin 0 -> 70720 bytes .../FileContentIndex/read.lock | 0 .vs/nowy-inteligentny-traktor/v17/.wsuo | Bin 0 -> 11264 bytes .vs/slnx.sqlite | Bin 90112 -> 90112 bytes classes.py | 13 ++++++++ decisionTree/treemaker.py | 11 ++++--- main.py | 31 ++++++++++++++++-- 8 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 .vs/nowy-inteligentny-traktor/FileContentIndex/33f7b126-d31b-4d66-8d4f-3973ee08499f.vsidx create mode 100644 .vs/nowy-inteligentny-traktor/FileContentIndex/read.lock create mode 100644 .vs/nowy-inteligentny-traktor/v17/.wsuo diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 8c12b97..6fbab55 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -1,8 +1,7 @@ { "ExpandedNodes": [ - "", - "\\decisionTree" + "" ], - "SelectedNode": "\\decisionTree\\decisionTree.sav", + "SelectedNode": "\\C:\\Users\\zmysz\\Desktop\\nowy-inteligentny-traktor", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/nowy-inteligentny-traktor/FileContentIndex/33f7b126-d31b-4d66-8d4f-3973ee08499f.vsidx b/.vs/nowy-inteligentny-traktor/FileContentIndex/33f7b126-d31b-4d66-8d4f-3973ee08499f.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..2c17744de5d3719fd2ead78fc39632f0a9fc471d GIT binary patch literal 70720 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 K-LvuW)BgeG`oweq delta 1030 zcmY+BUr19?9LLY59_QLUzs>3X8v7%mP+fI42#p9MDq712U!oN6?ymFZcBl8=%stdB zda6j}(reU%^$-;?f+9l;dMH8(3X-G;gD|Kdi~c}FXWg!DZ-?*q_x+yF`JM5(s`0t1 zNx!LSs$sXO=}!NJhT13_*~Ug%BkjSq?Hz5Aj%c*-r{ROy6e+9(taejV;cJV-UJjTeY-o5&)KZMaHQw>gXDwp6CfmO%U zfaQ&D`U2EM7Mv7#Q4zCJk1Pm=*XYM6N`o5LSC_9aRF4m%098*63Y^LgODU`2xV;!{ zq>f5E$_%duqYyQQ(_BuF%PqHV@tiDY%jR4pdq;VN9m}N627b_iQA?3Brw(SNZaI5Q z;8j*Enef?lqD(e<@< z;=+`h1`=6LPL}9(RTz1T`ao%kt5Tol6qTbNxz^&S$m>+>sA5n#%^0~UC@Urf&Jb%& z7}XcWl&Bh-6(JO6mJs}e1bl|~un6<;h}d*CBYzJjOlfJ~56a0@OILPE?m^9#-~ pGjJL@$wOutRM-MOk|D22JD5Qrear&+My`@LZ9L2rrcWMO{tGmAHmCpq diff --git a/classes.py b/classes.py index a95f3c4..6e3ad7e 100644 --- a/classes.py +++ b/classes.py @@ -8,6 +8,7 @@ class Field: self.fertilizedTime = fertilizedTime # number + class Plant: def __init__(self, plantType, growthState): self.plantType = plantType # wheat/carrot/cabbage @@ -23,3 +24,15 @@ class Player: x = 0 y = 0 rotation = 0 + + +class Watering: + def __init__(self, rain, planted, temperature, sunny, snowy, moist, rotten, dayTime ): + self.rain = rain # yes/no + self.planted = planted # yes/no + self.temperature = temperature # good/bad + self.sunny = sunny + self.snowy = snowy # yes/no + self.moist = moist # yes/no + self.rotten = rotten # yes/no + self.dayTime = dayTime # 1 2 3 4 diff --git a/decisionTree/treemaker.py b/decisionTree/treemaker.py index 1c8d1c0..12d4dda 100644 --- a/decisionTree/treemaker.py +++ b/decisionTree/treemaker.py @@ -1,3 +1,6 @@ +# -*- coding: utf-8 -*- + + # from sklearn.datasets import load_iris from sklearn.tree import export_text @@ -6,7 +9,7 @@ import joblib X1 = [] view = [] -with open("decisionTree/database.txt", 'r') as f: +with open("database.txt", 'r') as f: for line in f: line = line.strip() test_list = [int(i) for i in line] @@ -50,14 +53,14 @@ with open("decisionTree/database.txt", 'r') as f: view.append(x) X1.append(test_list) -f = open("decisionTree/learning_set.txt", "w") # zapisuje atrybuty s³ownie +f = open("learning_set.txt", "w") # zapisuje atrybuty s³ownie for i in view: f.write(str(i)+"\n") f.close() Y1 = [] -with open("decisionTree/decissions.txt", 'r') as f: # czyta decyzje +with open("decissions.txt", 'r') as f: # czyta decyzje for line in f: line = line.strip() test = int(line) @@ -67,7 +70,7 @@ dataset = X1 decision = Y1 labels = ['Rain', 'Plant', 'Temperature', 'Sun', 'Snow', 'Moisture', 'Rotten', 'Time'] model = DecisionTreeClassifier(random_state=0, max_depth=20).fit(dataset, decision) -filename = 'decisionTree/decisionTree.sav' +filename = 'decisionTree.sav' print("Model trained") print("Decision tree:") print(export_text(model, feature_names=labels)) diff --git a/main.py b/main.py index 780a38e..788dea7 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,5 @@ +import joblib +import numpy as np import pygame import random @@ -10,7 +12,7 @@ from torchvision.transforms import Lambda from PIL import Image import astar -from classes import Field, Player +from classes import Field, Player, Watering from bfs import Istate, succ from bfs import graphsearch from board import Grid, Box, Obstacle, getGridBoxes, gridObjects @@ -406,6 +408,26 @@ def eventHandler(kbdObj, mouseObj): goalNode = [int(posX/50), int(posY/50)] + # drzewo decyzyjne: + W = np.random.randint(2, size=(10, 10, 8)) + + # Wczytywanie modelu z pliku + labels = ['Rain', 'Planted', 'Temperature', 'Sun', 'Snow', 'Moisture', 'Rotten', 'Time'] + loaded_model = joblib.load('decisionTree/decisionTree.sav') + sample = W[goalNode[0]-1][goalNode[1]-1] + + # Klasyfikacja przy użyciu wczytanego modelu + predicted_class = loaded_model.predict([sample]) + print(labels) + print(sample) + print('Predicted class:', predicted_class) + + # Decyzja dotyczÄ…ca podlania grzÄ…dek na podstawie przewidzianej etykiety + if predicted_class == [1]: + print('Podlej grzÄ…dkÄ™') + else: + print('Nie podlewaj grzÄ…dki') + print('goalNode x = ', goalNode[0], 'goalNode y = ', goalNode[1]) # Delay to avoid multiple spawning of objects @@ -694,6 +716,7 @@ T = [[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,2,1,0,0,0),Field(1,3,0,0,0,0 [Field(1,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(0,2,1,0,0,0),Field(0,3,0,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,0,0,0,0),Field(0,1,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,2,1,0,0,0)]] + # ========================================================================================= # no i tutaj mamy główna pÄ™tlÄ™ programu @@ -753,6 +776,10 @@ while running: j = j + 1 i = i + 1 + font = pygame.font.SysFont('comicsans', 22) + labelx = font.render('temp:22 |rain:none |snow:none |sun:cloudy |time:evening', True, (0, 0, 0)) + SCREEN.blit(labelx, (10, 10)) + i = 0 while i < len(T)+1: pygame.draw.line(SCREEN, (0, 0, 0), (50 + i * 50, 50), (50 + i * 50, 50 + len(T) * 50), 1) @@ -775,7 +802,7 @@ while running: # player seen at the beginning SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y)) - font = pygame.font.SysFont('comicsans', 22) + label = font.render('F - cel | X - drzewo', True, (0, 0, 0)) label1 = font.render('ARROWS - rÄ™czne poruszanie', True, (0, 0, 0)) label2 = font.render('A - lewo | D - prawo | W - ruch', True, (0, 0, 0))