So the good new is that my neural net trainer has now been running for about 16 hours without crashing. The bad new is that although my little guys are showing improvements and are clearly at least trying to play the game, they're still not all that clever and their behavior is still fairly erratic.
So far each training session has been set up to run for a maximum of 20 seconds although many of them now finish early when all the survivors are either caught by bulldogs or make it to the safe zone. Therefore my guys are at least on their 2880th generation but I'm predicting more like 4000 generations (I really should have put a counter in
). Being the first time I've done this I've really no idea how long it should take to get good behavior or whether I need to start tweaking the genetic algorithm parameters.
I'm not ready to give up yet though. I think what I'm going to do next is save off this generation then refactor my code so the neural net trainer can zip through games as quickly as my processor can handle rather than running the games in real time. That should allow me to progress through each generation much quicker.
I'm thinking its going to pretty unlikely I'll finish this game in time for the deadline now though since I booked a last minute holiday last night for next week so I've only realistically got a few more days to work on this around my day job and preparing for my hols.
Edit - Just had another idea too. At the moment my neural net inputs are things like distance and direction to nearest bulldogs/survivors and distance from safe zone etc, and my outputs are simply vertical and horizontal move directions and whether to sprint. I think one thing that will take the system a long time is that I'm expecting it to evolve tactical thinking and basic motion control to achieve its goals at the same time. What I might do is tinker with having higher level outputs such as 'follow closest target' or 'move towards safe zone' and thus freeing up the neural net to only have to evolve tactical decision making.