This past week I've been working on fixing issues with the program to make it run as smoothly as possible. I didn't think I would get the stats for nerds page done and was going to scrap it so I could focus on getting the documentation done and fixing the minor issues so it would be more polished but I decided to do the stats for nerds page anyway and spent the past day and a half working on it. The notable issues from its development were mainly around gathering the data, in which I found some other errors in how I was collecting data such as not updating the data files when quitting the program. But i managed to finish the page as well as the rest of the program.
My final solution was reasonably successful in comparison to my proposal and design, the only main things that I wasn't able to achieve was customisation of genome numbers and generation size and stuff like that, but that would have required a lot of digging through files in the libraries I was using to edit their source code, which would have been rather tricky. i spent a lot of time trying to parallelise the training in order to get it to run multiple AIs at once and increase the speed of training by about 10 times however it was taking me so long and led to so many issues since it was running multiple pieces of code at the same time and made it very hard to track. I decided that I needed to revert it and move along, as I discussed in my blog previously because I was going to run out of time. Switching to Linux made this all a lot easier, especially when it came to setting up packages and such. There are also some issues with training that slow it down a little bit such as how it takes genomes, but that mostly has to do with the framework that I use from the neat library, so there isn't much I can do about it without changing my algorithm or editing more of their source code. Overall it works mostly as I imagined, each page performing its desired function.
Throughout the course of the project, I think I worked reasonably well, I probably spent too much time on some things that didn't work but its a bit hard to know that until after it's been done. The parallelisation attempt took a lot of time for something that didn't work, as well as my earlier attempts at creating my own genetic algorithm that stored way too much data, in hindsight I would have skipped straight to what I know would have worked, but I couldn't have done that then. I also spent a lot of time trying to set stuff up on windows which I had very little luck with and ended up switching to Linux, then spent time learning how to use Linux properly, which took a lot of time. I was able to do some things a lot better from my experiences in the last software project, primarily through images. I used as little images as I needed as well as storing and passing them through a list rather than having them all as global variables. I also didn't need to comment as much as I did the last project, as last time I commented nearly every line which was unnecessary, this time I commented to describe what was going on and what different bits of code did rather than every command.
During this project, I learnt that I could be very headstrong once I get going on a task, and often won't stop until its finished. I also discovered I could come up with lots of ideas on how to tackle an issue a lot better than I thought, often surprising myself with new ideas of approach every time i came to work on it.
In a future project I think the main things I would do differently mostly centre around how I spent my time in neural networks, I should have picked a good algorithm and stuck with it rather than exploring everything until eventually deciding to do an earlier one as it can be very easy to get lost exploring all the different avenues around neural networks. In future, I will definitely start on Linux and use virtual environments for every project as to not make a mess of my stuff like I did earlier on.
My final solution was reasonably successful in comparison to my proposal and design, the only main things that I wasn't able to achieve was customisation of genome numbers and generation size and stuff like that, but that would have required a lot of digging through files in the libraries I was using to edit their source code, which would have been rather tricky. i spent a lot of time trying to parallelise the training in order to get it to run multiple AIs at once and increase the speed of training by about 10 times however it was taking me so long and led to so many issues since it was running multiple pieces of code at the same time and made it very hard to track. I decided that I needed to revert it and move along, as I discussed in my blog previously because I was going to run out of time. Switching to Linux made this all a lot easier, especially when it came to setting up packages and such. There are also some issues with training that slow it down a little bit such as how it takes genomes, but that mostly has to do with the framework that I use from the neat library, so there isn't much I can do about it without changing my algorithm or editing more of their source code. Overall it works mostly as I imagined, each page performing its desired function.
Throughout the course of the project, I think I worked reasonably well, I probably spent too much time on some things that didn't work but its a bit hard to know that until after it's been done. The parallelisation attempt took a lot of time for something that didn't work, as well as my earlier attempts at creating my own genetic algorithm that stored way too much data, in hindsight I would have skipped straight to what I know would have worked, but I couldn't have done that then. I also spent a lot of time trying to set stuff up on windows which I had very little luck with and ended up switching to Linux, then spent time learning how to use Linux properly, which took a lot of time. I was able to do some things a lot better from my experiences in the last software project, primarily through images. I used as little images as I needed as well as storing and passing them through a list rather than having them all as global variables. I also didn't need to comment as much as I did the last project, as last time I commented nearly every line which was unnecessary, this time I commented to describe what was going on and what different bits of code did rather than every command.
During this project, I learnt that I could be very headstrong once I get going on a task, and often won't stop until its finished. I also discovered I could come up with lots of ideas on how to tackle an issue a lot better than I thought, often surprising myself with new ideas of approach every time i came to work on it.
In a future project I think the main things I would do differently mostly centre around how I spent my time in neural networks, I should have picked a good algorithm and stuck with it rather than exploring everything until eventually deciding to do an earlier one as it can be very easy to get lost exploring all the different avenues around neural networks. In future, I will definitely start on Linux and use virtual environments for every project as to not make a mess of my stuff like I did earlier on.
Comments
Post a Comment