Wednesday, May 6, 2015

Final Post

It has been a few weeks since I have begun this project, and it is finally come to a close. My program works pretty well, with my AI predicting it's opponents moves relatively well. It has over a 99 percent victory rate against the random move AI. When facing the all out attacker, the results dropped to about fifty percent. This was expected, as the primary AI predicts that it's opponents will switch Pokemon, therefore it will always receive attacks, but not always retaliate. When fighting the third AI, the win rate rose to about 80 percent, which is due to the correctly predicted defensive swapping.

To see my program in action, watch here:
https://www.youtube.com/watch?v=5PGQK_avuZw

Through this project, I have learned several lessons. First, if you need to restart a project, do so quickly. It is difficult trying to generate a project when you begin with the half the time you would normally begin with. I also learned that assumptions can only go so far. The problem with probabilistic reasoning is that while you can come up with a likely answer, it may not always be the outcome. Finally I learned that new languages can be frustrating to try learn, some, I have found, are pretty easy and useful while others are difficult to master or use for a particular purpose.

For future enhancement, I would like to be able to account for more variables. Within the Pokemon games, there are several attributes that this program and framework does not take into account. These include factors such as items, abilities and effort values. I would also like to be able to hook this up to either a Nintendo DS or an online simulator in order to be able to battle with opponent s online. Along with this, I would like to incorporate a machine learning portion, which would be able to recognize opponents strategies in order to counteract them.

Overall this was a fun project to work on, and I look forward to being able to upgrade it in the future.

Saturday, May 2, 2015

Almost Done

I have finished creating my fourth AI for my Pokemon simulation. After getting the logic created and spending the last couple of days coding. I still need to do quite a bit of testing with this code, as there a lot of possibilities that can alter the AI's strategy. While I believe this code will work as I believed, I was not able to fully incorporate the probabilistic reasoning based upon unknown data for the opposing moves and reserved Pokemon. However, the AI can make good assumptions about surviving for defensive switching. I will continue to work on this over the next several days, and try to improve the reasoning based upon incomplete data.

CoffeeScript has still been giving me a few problems, but I'm starting to understand it pretty well. I still find several parts of it annoying, particularly parentheses of functions, and would probably not choose to use it over other languages. It seems strange because when a function is called with no arguments, the parentheses are required, but this is not the case if you send at leas one argument. It is nice to see the minimalist style, however, and it makes me curious to see how other languages may deal with these issues.