Compare commits
No commits in common. "master" and "neural_network" have entirely different histories.
master
...
neural_net
@ -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).
|
|
@ -192,12 +192,10 @@ class Game:
|
|||||||
self.spritesList.draw(self.screen.pygameScreen)
|
self.spritesList.draw(self.screen.pygameScreen)
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
self.running = False
|
self.running = False
|
||||||
continue
|
|
||||||
|
|
||||||
# Choose target for player using decision tree
|
# Choose target for player using decision tree
|
||||||
if self.player.movementTarget is None:
|
if self.player.movementTarget is None:
|
||||||
pickedEntity = survivalDecisionTree.pickEntity(self.player, self.map)
|
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:
|
if pickedEntity.classifier == Classifiers.FOOD:
|
||||||
result = image_predictor.predict_image()
|
result = image_predictor.predict_image()
|
||||||
self.screen.ui.console.printToConsole("I think it is a: " + result[1])
|
self.screen.ui.console.printToConsole("I think it is a: " + result[1])
|
||||||
@ -207,7 +205,6 @@ class Game:
|
|||||||
else:
|
else:
|
||||||
self.screen.ui.console.printToConsole("I was wrong")
|
self.screen.ui.console.printToConsole("I was wrong")
|
||||||
self.player.alive = False
|
self.player.alive = False
|
||||||
self.player.deathReason = "Wrong food recognition"
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
self.player.gotoToTarget(survivalDecisionTree.pickEntity(self.player, self.map), self.map)
|
self.player.gotoToTarget(survivalDecisionTree.pickEntity(self.player, self.map), self.map)
|
||||||
@ -436,14 +433,11 @@ class Game:
|
|||||||
self.spritesList.draw(self.screen.pygameScreen)
|
self.spritesList.draw(self.screen.pygameScreen)
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
self.running = False
|
self.running = False
|
||||||
continue
|
|
||||||
|
|
||||||
# Choose target for player using decision tree
|
# Choose target for player using decision tree
|
||||||
if self.player.movementTarget is None:
|
if self.player.movementTarget is None:
|
||||||
pickedEntity = survivalDecisionTree.pickEntity(self.player, self.map)
|
self.player.gotoToTarget(survivalDecisionTree.pickEntity(self.player, self.map), self.map)
|
||||||
self.player.gotoToTarget(pickedEntity, self.map)
|
|
||||||
decisionsMade += 1
|
decisionsMade += 1
|
||||||
self.screen.ui.console.printToConsole("I've decided to go for: {}".format(pickedEntity.classifier.name))
|
|
||||||
if pauseAfterDecision:
|
if pauseAfterDecision:
|
||||||
pause = True
|
pause = True
|
||||||
|
|
||||||
|
@ -187,8 +187,6 @@ class Ui:
|
|||||||
deathReasonString = "Exhaustion"
|
deathReasonString = "Exhaustion"
|
||||||
elif deathReason is StatisticNames.THIRST:
|
elif deathReason is StatisticNames.THIRST:
|
||||||
deathReasonString = "Dehydration"
|
deathReasonString = "Dehydration"
|
||||||
else:
|
|
||||||
deathReasonString = "Wrong food recognition"
|
|
||||||
|
|
||||||
consoleLines.append("Death reason: " + deathReasonString)
|
consoleLines.append("Death reason: " + deathReasonString)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user