Saturday, 18 April 2009
Testing
I have now run tests against 3 human players, and have begun analysing the individual results for those players. Progress is also continuing with the write up.
Thursday, 16 April 2009
Status
I have finished up the application now and have begun testing. So far I have tested the application against one human player and I am about to do another one. I will need to find a few more players over the next week to test against. While I am getting the testing done I am intending to put a lot of time into writing up, which is a little bit behind, and also think about the presentation which we have to make. Also I am going to begin analysing the individual results as I get them.
Saturday, 11 April 2009
Status
I have mostly been working recently on finishing touches to the application so that I can test it over the coming week. I have also been gathering further thoughts together for the write up but have not transferred most of them into a fully written up format at the moment due to concentration on the application. Once the app is finished I can put full my concentration, when not testing, into analysing the results and writing everything up.
Sunday, 29 March 2009
Status
I have still been concentrating mostly on getting my write up up to date, and that is coming along nicely, I have been working on multiple areas of it at once, so I currently have parts of areas written rather than whole sections. I have also been making some progress on the application, based upon the testing results from last week. I will have to start thinking about finishing the application off so I have enough time for testing and writing up based the results etc.
Tuesday, 24 March 2009
Status
I have been working mostly on my write up over the last few days, as intended. Yesterday I also did the testing I had aimed to do, and that has been a benifit, although I still need to analyse the data, there have been other observations I have made from this.
A few small points about testing:
As the entity adapted the subject adapted as well, and was able to predict the entities behaviour to some extent. It is unclear at the moment whether this is due to the entity merely not being complex enough to avoid such exploitations, and predictions, or because it is not flexible enough, and this will be something that will have to be looked at.
Testing also uncovered ideas as to the furtherment of the entity, and this suggets that regular testing in order to analyse and improve behaviour is important to creating a well rounded AI.
A few small points about testing:
As the entity adapted the subject adapted as well, and was able to predict the entities behaviour to some extent. It is unclear at the moment whether this is due to the entity merely not being complex enough to avoid such exploitations, and predictions, or because it is not flexible enough, and this will be something that will have to be looked at.
Testing also uncovered ideas as to the furtherment of the entity, and this suggets that regular testing in order to analyse and improve behaviour is important to creating a well rounded AI.
Saturday, 21 March 2009
Status
Most recently I have been working on rounding off a basic version of the AI controlled entity, and should be running testing on that on monday all being well. Between now and then I am intending to work mostly on the write up as I am a bit behind with it.
One thing I have also noted of interest is that my AI has developed a technique of not doing anything at all if there is no threat around, which as it is a successful technique makes sense, however it was obviously not intentional as it is could definately be seen to detract from gameplay. Because of this it is important to take into account that adaptable AI can create behaviour that isn't planned, which can be good or bad depending on circumstances. But does enforce considerable that testing of complex AI entities is necessary in order to try and fix any possible negative behaviours. (Negative in the sense of taking something away from the game, as opposed to not working as a tactic (which will, theoretically, be fixed over time by the GAs))
One thing I have also noted of interest is that my AI has developed a technique of not doing anything at all if there is no threat around, which as it is a successful technique makes sense, however it was obviously not intentional as it is could definately be seen to detract from gameplay. Because of this it is important to take into account that adaptable AI can create behaviour that isn't planned, which can be good or bad depending on circumstances. But does enforce considerable that testing of complex AI entities is necessary in order to try and fix any possible negative behaviours. (Negative in the sense of taking something away from the game, as opposed to not working as a tactic (which will, theoretically, be fixed over time by the GAs))
Tuesday, 17 March 2009
Status
Recently I have been increasing reliabilty of the Genetic AI, to ensure that any risk it is taking is due to genes and not because of bugs in the entity. It has occurred to me that due to the element of risk combined with the somewhat random nature of a game environment that it is important to establish how risky a given tactic is, so as to help ensure that just becuase a tactic worked well once it doesn't keep dominant if it was a lucky one off. At the same time though it is worth taking into account that a players tactics may change and resultantly could give a similar output as a lucky one off. I have also added a third gene to the entity and am working on rounding off the entity as it is, so it can be properly tested at this stage. Work on the write up is progressing somewhat slowly but I hope to be putting a good amount of time into that over the next week in between rounding off the entity and testing it against a human player, which I hope to do next monday.
Wednesday, 25 February 2009
Status
I am currently at the position that I have implemented genetic algorithms into my application. Currently this consists of two genes, which effect the movement of the AI. They are responsible for causing the AI to move away from the player, move towards the player or more or hold their position, one when they have bombs to lay and one when they do not. Initial testing has been carried out upon a single one of these AIs against a simpler AI (with no GA that follows similar rules but always moves towards the player (so as to avoid a situation where both players simply flee each other)) and the following results were obtained. (initial population size 50)
As the game progressed the GA honed in on a specific characteristic, and over a couple of test runs this characteristic was the same.
As the game progressed the highest fitness increased.
Based on a sample of every 10th AI spawned, kills remained the same, but survival time was fairly erratic, however the highest (by a considerable margin, 300% increase) was after the GA had honed on to a specific set of characteristics.
From these results the following can be concluded:
Firtly it is very obvious from the erratic survival times that the reliability of the basic AI functions is not good enough, and this must first be improved so as to try to ensure that a) the AI isn't killing itself through stupid mistakes, as this removes the whole point in it learning and b) the GA are allowed to work properly as if the AI kills itself randomly on what should be a benificial trait, it will see this as a low trait as it doesnt score a high fitness. Currently it has found the same traits to be benificial, but it only has 9 possible soloutions and resultantly in the initial 50 each will appear approxmately 5 times giving it extra chances that will not exist in a more complex entity.
Secondly the fitness function is far too heavily weighted towards survival time at the moment and resultantly kills aren't increasing, even in the erratic way that survival time is. (This is somewhat to do with my not fully taking it into account when speeding it up to play an AI rather than a human player)
However to look on the positive side, the GA appears to be working correctly, as it is honing in on what appears to be a best, if unreliable, soloution. Once the AI has been made more reliable it will be possible to redo these tests to ensure everything is successful, and then some further testing on human players should be performed before an increase in complexity is made.
One other thing to note is that as the AI being played against is consistant in its tactics the ability of the algorithm to adapt has not yet been taken into account and this is one reason that human players should be tested against shortly.
As the game progressed the GA honed in on a specific characteristic, and over a couple of test runs this characteristic was the same.
As the game progressed the highest fitness increased.
Based on a sample of every 10th AI spawned, kills remained the same, but survival time was fairly erratic, however the highest (by a considerable margin, 300% increase) was after the GA had honed on to a specific set of characteristics.
From these results the following can be concluded:
Firtly it is very obvious from the erratic survival times that the reliability of the basic AI functions is not good enough, and this must first be improved so as to try to ensure that a) the AI isn't killing itself through stupid mistakes, as this removes the whole point in it learning and b) the GA are allowed to work properly as if the AI kills itself randomly on what should be a benificial trait, it will see this as a low trait as it doesnt score a high fitness. Currently it has found the same traits to be benificial, but it only has 9 possible soloutions and resultantly in the initial 50 each will appear approxmately 5 times giving it extra chances that will not exist in a more complex entity.
Secondly the fitness function is far too heavily weighted towards survival time at the moment and resultantly kills aren't increasing, even in the erratic way that survival time is. (This is somewhat to do with my not fully taking it into account when speeding it up to play an AI rather than a human player)
However to look on the positive side, the GA appears to be working correctly, as it is honing in on what appears to be a best, if unreliable, soloution. Once the AI has been made more reliable it will be possible to redo these tests to ensure everything is successful, and then some further testing on human players should be performed before an increase in complexity is made.
One other thing to note is that as the AI being played against is consistant in its tactics the ability of the algorithm to adapt has not yet been taken into account and this is one reason that human players should be tested against shortly.
Thursday, 5 February 2009
Current Status
Basically I have been working lately on the base code for the project. This means the game that will be used in order to test the algorithms. The basic game mechanics are working and the main functionality has been added. This means the player is able to play and there is a (currently low level) AI controlling a single enemy entity. The next step is to build on that basic AI into something that can more appropriately be used with the G.A.s. Once this has been done then it will be possibly to slowly build the G.A.s into the game in order to monitor complexity and efficiency. By creating the base game myself it will improve my ability to insert the algorithms as I will have a fuller understanding of the game, it will also make it easier for me to make any adjustments to the game that I feel may be needed in order to better fullfill the R.Q.
At the same time I have been looking into more information related to my project in order to help gain a full understanding of the area and to ensure I am working in the appropriate direction and going about things in the correct way.
At the same time I have been looking into more information related to my project in order to help gain a full understanding of the area and to ensure I am working in the appropriate direction and going about things in the correct way.
Subscribe to:
Posts (Atom)