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 0000000..2c17744 Binary files /dev/null and b/.vs/nowy-inteligentny-traktor/FileContentIndex/33f7b126-d31b-4d66-8d4f-3973ee08499f.vsidx differ diff --git a/.vs/nowy-inteligentny-traktor/FileContentIndex/read.lock b/.vs/nowy-inteligentny-traktor/FileContentIndex/read.lock new file mode 100644 index 0000000..e69de29 diff --git a/.vs/nowy-inteligentny-traktor/v17/.wsuo b/.vs/nowy-inteligentny-traktor/v17/.wsuo new file mode 100644 index 0000000..7fd75ba Binary files /dev/null and b/.vs/nowy-inteligentny-traktor/v17/.wsuo differ diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index dff4e12..c115fd7 100644 Binary files a/.vs/slnx.sqlite and b/.vs/slnx.sqlite differ 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))