Compare commits
7 Commits
neural_net
...
master
Author | SHA1 | Date | |
---|---|---|---|
c42a1038bc | |||
8ec7efaafa | |||
|
500f051946 | ||
|
5aaba17b2e | ||
|
c5497ff291 | ||
|
e132a1ceaf | ||
|
7f6cec3107 |
34
final-evaluation.md
Normal file
34
final-evaluation.md
Normal file
@ -0,0 +1,34 @@
|
||||
# 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,10 +192,12 @@ 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])
|
||||
@ -205,6 +207,7 @@ 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)
|
||||
@ -433,11 +436,14 @@ 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:
|
||||
self.player.gotoToTarget(survivalDecisionTree.pickEntity(self.player, self.map), self.map)
|
||||
pickedEntity = survivalDecisionTree.pickEntity(self.player, self.map)
|
||||
self.player.gotoToTarget(pickedEntity, self.map)
|
||||
decisionsMade += 1
|
||||
self.screen.ui.console.printToConsole("I've decided to go for: {}".format(pickedEntity.classifier.name))
|
||||
if pauseAfterDecision:
|
||||
pause = True
|
||||
|
||||
|
@ -187,6 +187,8 @@ class Ui:
|
||||
deathReasonString = "Exhaustion"
|
||||
elif deathReason is StatisticNames.THIRST:
|
||||
deathReasonString = "Dehydration"
|
||||
else:
|
||||
deathReasonString = "Wrong food recognition"
|
||||
|
||||
consoleLines.append("Death reason: " + deathReasonString)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user