From 4a9d18f710ad443ef80d52e37bd8d233485ce9f1 Mon Sep 17 00:00:00 2001 From: yanny Date: Tue, 20 Jun 2023 03:32:12 +0200 Subject: [PATCH] decision tree integration + some fixes --- requirements.txt | 4 +++- src/ANN/test-predict.py | 4 ++-- src/Field.py | 4 ++++ src/main.py | 35 +++++++++++++++++++++++++++++++---- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/requirements.txt b/requirements.txt index ec8df16d..5879b5b9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,6 @@ scikit-learn IPython pydotplus torch -tensorflow \ No newline at end of file +tensorflow +Pillow +keras \ No newline at end of file diff --git a/src/ANN/test-predict.py b/src/ANN/test-predict.py index 272052c9..49c0a98b 100644 --- a/src/ANN/test-predict.py +++ b/src/ANN/test-predict.py @@ -13,9 +13,9 @@ model = load_model(model_path) class_names = os.listdir(dataset_dir) # Путь к файло проверки -dataset_dir = "rdy-dataset\\test\\rose\\377277099_544769262c_c.jpg" +dataset_dir = "dataset\iris\\71766650_e2d423bea7_c.jpg" -image_path = 'rdy-dataset\\test\\rose\\377277099_544769262c_c.jpg' # Replace with the path to your image +image_path = 'dataset\iris\\71766650_e2d423bea7_c.jpg' # Replace with the path to your image image = cv2.imread(image_path) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # Convert image to RGB format image = cv2.resize(image, (64, 64)) # Resize image to match the input size of the model diff --git a/src/Field.py b/src/Field.py index 7b7a4088..21c6779c 100644 --- a/src/Field.py +++ b/src/Field.py @@ -60,6 +60,10 @@ class Field: for y in range(len(self.Nodes[0])): print(self.Nodes[x][y].Values, end=' ') + def set_type(self, pos, type): + X,Y = pos + self.Nodes[X][Y].Type = type + def Neighbors(field, pos): x, y, dir = pos diff --git a/src/main.py b/src/main.py index 6f07ce3c..470b3f78 100644 --- a/src/main.py +++ b/src/main.py @@ -1,5 +1,9 @@ +import pandas as pd import pygame import random + +from sklearn.preprocessing import LabelEncoder + #import Flower import Beehive import Frames @@ -240,9 +244,26 @@ print(len(check_path_A)) current_node = 0 step = 1 comeback = False - - - +weather = random.choice(['Sunny', 'Rainy', 'Cloudy']) +temperature = random.choice(['High', 'Medium', 'Low']) +windspeed = random.choice(['Strong', 'Weak']) +pollenavailability = random.choice(['Low', 'Medium', 'High']) +beepopulation = random.choice(['Low','Moderate', 'High']) +timeofday = random.choice(['Morning', 'Afternoon', 'Evening']) +if len(check_path_A)>80: + flowerdistance = 'Far' +elif len(check_path_A)>50: + flowerdistance = 'Medium' +else: + flowerdistance = 'Close' +humidity = random.choice(['High','Normal']) +predictiondata = [[weather, temperature, windspeed, pollenavailability, beepopulation, timeofday, flowerdistance, humidity]] +feature_cols = ['Weather','Temperature','WindSpeed','PollenAvailability','BeePopulation','TimeOfDay','FlowerDistance','Humidity'] +le = LabelEncoder() +le.fit(feature_cols) +encoded_data = pd.DataFrame(predictiondata, columns=feature_cols).apply(le.fit_transform) +prediction = clf.predict(encoded_data) +font = pygame.font.Font(None,32) while True: # check for events for event in pygame.event.get(): @@ -268,6 +289,7 @@ while True: dis.blit(bee_image, (bee_x * tileSize, bee_y * tileSize)) pygame.display.update() + if (bee_x,bee_y) in flower_positions: if field.get_type((bee_x,bee_y)) == FLOWER: if chek_flower(pygame.image.load(field.get_image((bee_x,bee_y)))) not in ['western-poison-oak', 'water_lily']: @@ -276,7 +298,12 @@ while True: field.set_type((bee_x,bee_y), SHORT) else: field.set_type((bee_x,bee_y), SHORT) - + if prediction[0] == 0: + text = font.render('The bee refused to fly out for honey', True, (255, 0, 0)) + text_rect = text.get_rect(center=(disX // 2, disY // 2)) + dis.blit(text, text_rect) + pygame.display.update() + pygame.time.wait(10000000) clock.tick(10)