Compare commits

..

No commits in common. "master" and "neural_network" have entirely different histories.

3 changed files with 1 additions and 43 deletions

View File

@ -1,34 +0,0 @@
# DSZI_Survival
Przetrwanie na bezludnej wyspie.
## Podprojekty w DSZI_Survival:
* Genetic Algorithm Affinities
* Genetic Algorithm Travelling
* Neural Networks - recognizing food images
* Decision Tree - deciding whether go for food, water or rest.
## Wykorzystanie podprojektów przez agenta
### Decision Tree
W trakcie działania programu drzewo decyzyjne pomaga agentowi-rozbitkowi podjąć decyzję,
czy powinien on w danej chwili:
* zbierać pożywienie
* pójść po wodę
* odpocząć przy ognisku
### Neural Network
W trakcie działania programu sieć neuronowa pomaga podjąć decyzję czy znalezione pożywienie jest jadalne
czy nie. W przypadku, w którm agent się pomyli dochodzi do zatrucia i do końca gry.
Na bezludnej wyspie znajdują się tylko dwa rodzaje owoców:
* Jabłka
* Gruszki
Celem agenta jest przetrwanie jak najdłużej.
### Genetic Algorithm Travelling
Po uruchomieniu aplikacji algorytm genetyczny wyznacza optymalną trasę/kolejność do zebrania ziół,
dzięki którym jego statystyki zresetują się do początkowego pozytywnego poziomu. Optymalna ścieżka
do zebrania ziół jest potrzebna, aby agent nie stracił zbyt wielu statystyk przed wykonaniem zadania.
### Genetic Algorithm Affinities
Celem algorytmu jest znalezienie 4 optymalnych wartości - skłonności (priorytetu) determinujących wybór kolejnego celu agenta. Wyznacznikiem czasu przetrwania jest ilość kroków pokonanych przez agenta (fitness).

View File

@ -192,12 +192,10 @@ class Game:
self.spritesList.draw(self.screen.pygameScreen)
pygame.display.flip()
self.running = False
continue
# Choose target for player using decision tree
if self.player.movementTarget is None:
pickedEntity = survivalDecisionTree.pickEntity(self.player, self.map)
self.screen.ui.console.printToConsole("I've decided to go for: {}".format(pickedEntity.classifier.name))
if pickedEntity.classifier == Classifiers.FOOD:
result = image_predictor.predict_image()
self.screen.ui.console.printToConsole("I think it is a: " + result[1])
@ -207,7 +205,6 @@ class Game:
else:
self.screen.ui.console.printToConsole("I was wrong")
self.player.alive = False
self.player.deathReason = "Wrong food recognition"
continue
self.player.gotoToTarget(survivalDecisionTree.pickEntity(self.player, self.map), self.map)
@ -436,14 +433,11 @@ class Game:
self.spritesList.draw(self.screen.pygameScreen)
pygame.display.flip()
self.running = False
continue
# Choose target for player using decision tree
if self.player.movementTarget is None:
pickedEntity = survivalDecisionTree.pickEntity(self.player, self.map)
self.player.gotoToTarget(pickedEntity, self.map)
self.player.gotoToTarget(survivalDecisionTree.pickEntity(self.player, self.map), self.map)
decisionsMade += 1
self.screen.ui.console.printToConsole("I've decided to go for: {}".format(pickedEntity.classifier.name))
if pauseAfterDecision:
pause = True

View File

@ -187,8 +187,6 @@ class Ui:
deathReasonString = "Exhaustion"
elif deathReason is StatisticNames.THIRST:
deathReasonString = "Dehydration"
else:
deathReasonString = "Wrong food recognition"
consoleLines.append("Death reason: " + deathReasonString)