drzewo impl klasy do podlewania #6
@ -1,8 +1,7 @@
|
|||||||
{
|
{
|
||||||
"ExpandedNodes": [
|
"ExpandedNodes": [
|
||||||
"",
|
""
|
||||||
"\\decisionTree"
|
|
||||||
],
|
],
|
||||||
"SelectedNode": "\\decisionTree\\decisionTree.sav",
|
"SelectedNode": "\\C:\\Users\\zmysz\\Desktop\\nowy-inteligentny-traktor",
|
||||||
"PreviewInSolutionExplorer": false
|
"PreviewInSolutionExplorer": false
|
||||||
}
|
}
|
Binary file not shown.
BIN
.vs/nowy-inteligentny-traktor/v17/.wsuo
Normal file
BIN
.vs/nowy-inteligentny-traktor/v17/.wsuo
Normal file
Binary file not shown.
BIN
.vs/slnx.sqlite
BIN
.vs/slnx.sqlite
Binary file not shown.
13
classes.py
13
classes.py
@ -8,6 +8,7 @@ class Field:
|
|||||||
self.fertilizedTime = fertilizedTime # number
|
self.fertilizedTime = fertilizedTime # number
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Plant:
|
class Plant:
|
||||||
def __init__(self, plantType, growthState):
|
def __init__(self, plantType, growthState):
|
||||||
self.plantType = plantType # wheat/carrot/cabbage
|
self.plantType = plantType # wheat/carrot/cabbage
|
||||||
@ -23,3 +24,15 @@ class Player:
|
|||||||
x = 0
|
x = 0
|
||||||
y = 0
|
y = 0
|
||||||
rotation = 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
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
# from sklearn.datasets import load_iris
|
# from sklearn.datasets import load_iris
|
||||||
from sklearn.tree import export_text
|
from sklearn.tree import export_text
|
||||||
|
|
||||||
@ -6,7 +9,7 @@ import joblib
|
|||||||
|
|
||||||
X1 = []
|
X1 = []
|
||||||
view = []
|
view = []
|
||||||
with open("decisionTree/database.txt", 'r') as f:
|
with open("database.txt", 'r') as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
test_list = [int(i) for i in line]
|
test_list = [int(i) for i in line]
|
||||||
@ -50,14 +53,14 @@ with open("decisionTree/database.txt", 'r') as f:
|
|||||||
view.append(x)
|
view.append(x)
|
||||||
X1.append(test_list)
|
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:
|
for i in view:
|
||||||
f.write(str(i)+"\n")
|
f.write(str(i)+"\n")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
Y1 = []
|
Y1 = []
|
||||||
with open("decisionTree/decissions.txt", 'r') as f: # czyta decyzje
|
with open("decissions.txt", 'r') as f: # czyta decyzje
|
||||||
for line in f:
|
for line in f:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
test = int(line)
|
test = int(line)
|
||||||
@ -67,7 +70,7 @@ dataset = X1
|
|||||||
decision = Y1
|
decision = Y1
|
||||||
labels = ['Rain', 'Plant', 'Temperature', 'Sun', 'Snow', 'Moisture', 'Rotten', 'Time']
|
labels = ['Rain', 'Plant', 'Temperature', 'Sun', 'Snow', 'Moisture', 'Rotten', 'Time']
|
||||||
model = DecisionTreeClassifier(random_state=0, max_depth=20).fit(dataset, decision)
|
model = DecisionTreeClassifier(random_state=0, max_depth=20).fit(dataset, decision)
|
||||||
filename = 'decisionTree/decisionTree.sav'
|
filename = 'decisionTree.sav'
|
||||||
print("Model trained")
|
print("Model trained")
|
||||||
print("Decision tree:")
|
print("Decision tree:")
|
||||||
print(export_text(model, feature_names=labels))
|
print(export_text(model, feature_names=labels))
|
||||||
|
31
main.py
31
main.py
@ -1,3 +1,5 @@
|
|||||||
|
import joblib
|
||||||
|
import numpy as np
|
||||||
import pygame
|
import pygame
|
||||||
import random
|
import random
|
||||||
|
|
||||||
@ -10,7 +12,7 @@ from torchvision.transforms import Lambda
|
|||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
import astar
|
import astar
|
||||||
from classes import Field, Player
|
from classes import Field, Player, Watering
|
||||||
from bfs import Istate, succ
|
from bfs import Istate, succ
|
||||||
from bfs import graphsearch
|
from bfs import graphsearch
|
||||||
from board import Grid, Box, Obstacle, getGridBoxes, gridObjects
|
from board import Grid, Box, Obstacle, getGridBoxes, gridObjects
|
||||||
@ -406,6 +408,26 @@ def eventHandler(kbdObj, mouseObj):
|
|||||||
|
|
||||||
goalNode = [int(posX/50), int(posY/50)]
|
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])
|
print('goalNode x = ', goalNode[0], 'goalNode y = ', goalNode[1])
|
||||||
|
|
||||||
# Delay to avoid multiple spawning of objects
|
# 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,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)]]
|
[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
|
# no i tutaj mamy główna pętlę programu
|
||||||
|
|
||||||
@ -753,6 +776,10 @@ while running:
|
|||||||
j = j + 1
|
j = j + 1
|
||||||
i = i + 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
|
i = 0
|
||||||
while i < len(T)+1:
|
while i < len(T)+1:
|
||||||
pygame.draw.line(SCREEN, (0, 0, 0), (50 + i * 50, 50), (50 + i * 50, 50 + len(T) * 50), 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
|
# player seen at the beginning
|
||||||
SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
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))
|
label = font.render('F - cel | X - drzewo', True, (0, 0, 0))
|
||||||
label1 = font.render('ARROWS - ręczne poruszanie', 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))
|
label2 = font.render('A - lewo | D - prawo | W - ruch', True, (0, 0, 0))
|
||||||
|
Loading…
Reference in New Issue
Block a user