CAT | Artificial Intelligence
3
Uni Work, AI and Doom!
No comments · Posted by James Ravenscroft in Artificial Intelligence, Development Work, University
The last few weeks have been pretty nice for me since I've had lots of lectures and not much else to do. Unfortunately, I've just been hit in the face with a bucketload of assignments and I've really got my work cut out! I've already had 7 assignments announced, 2 of which I've completed, and one of which I'm half way through.
I'm currently working on my AI assignment in which I have to use Bayesian Logic/Fuzzy Logic/Both to calculate whether or not to insure someone given their driving profile. I've found some really interesting stuff while I've been doing this, I've also found that almost all of the literature to do with these topics is aimed really high and not very accessible to the likes of me. I'm hoping, once I've got my head around all this stuff, I'll be able to release a working version of my car insurance system online for you to see.
This next week is the last week of uni before easter. After that, I'm off to buy a car, look at houses and do all sorts of fun things that I can't do at the moment.
I'll write again soon,
James
Artificial Intelligence · assignment · bayesian · busy · fuzzy · logic · University · work
24
AI Revision with Python and Clustering
No comments · Posted by James Ravenscroft in Artificial Intelligence, Development Work, Fun and Play, Industriousness, University
One of the most interesting modules that I've been studying this semester has been Artificial Intelligence.
I've been shown how to do lots of very complex, intelligent things with computers including the use of Search Trees to find a solution to a complicated problem, how to use Genetic Algorithms and Genetic Programming to 'evolve' complex solutions and how to cluster data into groups and classify labelled data.
As a revision exercise (but also just to see if I could) I decided to try and cluster my music collection into genres using K-Means and Agglomerative Hierachical clustering. I originally planned to use the actual shape of the music (through wave form analysis) as my metric to find the distance between tracks. However, I simply don't have the mathematical expertise for this job. Therefore, I've been implementing the system using Last.FM metadata and comparing tags assigned to songs.
The biggest problem I've had so far is establishing some rules and some form of distance measure using the tagging system. However, after some lengthy googling, I came across this little gem of information. Essentially, it suggests assigning each possible tag a weight based on the frequency of its use. If a tag is used 5 times and the overall number of taggings (that is assignments of a word to a track, not the number of words themselves) is 100, then the tag's weight is 1/20.
With this system in place, its really easy to start building a picture of a song's 'weight' and matching tracks. The next part was the clustering of the tracks using a Hierarchical Agglomerative approach. This basically means, taking the Euclidean value of each cluster and merging it with its closest neighbor until there is only one big cluster left. Unfortunately, my python code really doesn't want to play ball, so I've written off to the python mailing list to see if any of them can solve it. But if you are interested in seeing the program I came up with, take a look at this python code.
I'm hoping to figure out why this isn't working myself, but any input would be very valuable to me.
agglomerative · Artificial Intelligence · clustering · hierarchical · python · research · revision
26
End of Uni, Summer Attack!
No comments · Posted by James Ravenscroft in Artificial Intelligence, Fun and Play, University
So yesterday marked the end of my first year as a University student with my final exam in Java Software Development. I felt the exam went pretty well and I'm pretty confident it's a first!
To celebrate this, and to celebrate both Luke's and Saul's birthdays, we decided to go out on the town last night and did a bit of a pub crawl around aber. We Started in Spoons and Finished up in the Pier, a good night was had by all! There are lots of pictures to check out too! We finally got home at 3am after going back to the club to get Emily's phone (she accidentally left it, luckily Merlyn picked it up and sorted out getting it back to Emz).
My next task is to decide what to do with myself over the summer. I've figured out that I can't afford to stay in Aber unless I get a full time job here, which is unfortunately not going to happen. So, I'll be heading back to the Shire and working as much as I can in the local pubs. I'll also be reading up on next year's course content (since already knowing most of the stuff played a key part in passing this year). I've also got a lot of catching up to do with my friends from home.
On a side note: I've got a ticket to see Joe Satriani in Birmingham Symphony hall in October. Joe's my guitar hero and I've already seen him twice, as part of Chickenfoot and playing solo with support from Paul Gilbert.
aberystwyth · exploring · java · music · programming · Summer · University
27
GSOC Update
No comments · Posted by James Ravenscroft in Artificial Intelligence, Development Work
Unfortunately, last night I got an email informing me that my Google Summer of Code application from this year has been declined. I immediately started blaming myself and assumed that my application just isn't good enough to get onto the scheme.
However, this morning I received a new email from Marcus von Appen, leader of the PyGame project (with whom I was supposed to be working during GSOC). It read:
first of all, I'd like to thank you (on behalf of the whole pygame dev team and the interested users) for all the work you put into your proposals. It's a time consuming process and always leaves a bad taste, if such a good work is being rejected in the end. @Nikhil, Jonathan: I'm really sorry for the doubled work you put into your proposal, especially as you even had to refine them without any outcome in the end. Unfortunately, we did not get enough slots (only one student this year) as the PSF's focus for this year was to push Python 3 related projects on the one hand and to focus on relevant python-core tasks on the other. As your proposals are still excellent, we'd like to invite you to work on your ideas (not only limited to your proposals) anyways, if you are in the mood and have the time and interest to join the pygame development. So, if you are still interested in joining and working on and with pygame, drop me a short info so we can get anything into shape. As you won't be paid for it, you do not have the pressure to stay on schedule with a 40 hour work and are not limited to your proposals.
I was very happy with this response, and I intend to work with PyGame voluntarily over the summer anyway, since it would provide me with much needed experience in the field of AI. In retrospect it may be a good thing that I didn't get it this year since I'm still a first year undergrad and I don't know an awful lot about Artificial Intelligence yet. I guess I'll be trying again next year.
Application · Artificial Intelligence · coding · gsoc · pygame · Student · Summer
1
AI Research and Pieter Spronck
No comments · Posted by James Ravenscroft in Artificial Intelligence, Development Work
Since I decided that I was most interested in developing some kind of general purpose AI for PyGame during GSOC, I've been looking into lots of models of how game AI should be implemented. Marcus Von Appen of the PyGame project suggested that, while my proposal 'reads well', I should look into a more capable solution that provided overall intelligence instead of per-unit/per-bot intelligence.
I was directed to the works of Pieter Spronck et al. His revolutionary publications on ’rapidly adaptive game AI’ provide a brilliant grounding for the development of a general purpose artificial agent that adapts to the player's tactics. The problem with conventional Game AI, explain the authors, is that "AI in most complex games still is not consistent within the game environment, and exhibits what has been called ‘artificial stupidity’ " [1]. The best approach to developing a consistent AI is to create a sort of 'overseer' or 'Director' (not to be confused with Valve's revolutionary AI from the Left4Dead series) that is part of a feedback loop with the actual units/NPCs in the game. The overseer tracks the performance or 'fitness' of the units and stores this knowledge. It is then able to judge how to improve a particular unit's performance.
Whilst most of Spronck's research was carried out using an RTS game, it will be possible to create a general purpose overseer for the PyGame project if the developer is able to specify which attributes should be monitored and indeed what constitutes success.
Whilst this may seem like a very ambitious project. I believe that with careful planning and design, it is entirely feasible that I could do something like this for my GSOC.
[1] Bakkes S. , Spronck P. , and van den Herik J.. (2008). Rapid Adaptation of Video Game AI. Available: http://ticc.uvt.nl/~pspronck/pubs/Bakkes-CIG2008.pdf. Last accessed 31 March 2010.
Marcus von Appe
Artificial Intelligence · gsoc · programming · pygame · python
30
GSOC
No comments · Posted by James Ravenscroft in Artificial Intelligence, Development Work
I'm currently working on an application to GSOC for 2010. The student application system has been open for nearly a day and I still haven't come up with a project I'd like to carry out. I have a couple of ideas, but still not sure. Here's what I have so far.
Working with PyGame and AI
The PyGame project want somebody to develop an Artificial Intelligence module for their framework. A lot of the proposals put forward regarding this are far too general and nobody ever gets accepted. My idea is to create a simple, well defined AI module that can be used for pretty much any game. I looked at what all game AIs have in common and decided that an abstract implementation of these attributes is feasible.
I haven't had much feedback from the PyGame project yet. However, the first comment was pretty much a "wow, this looks great".
Working with MoDisco and Eclipse
The Eclipse foundation want somebody to implement automatic conversion of SWT code to XWT code using MoDisco. This looks pretty complex and quite interesting. However, it might be a little bit too difficult since I've never used MoDisco before in my life.
Apart from those, I haven't seen anything else that catches my eye. I guess we'll see. I've got another couple of weeks to get my application in.
Artificial Intelligence · Development Work · eclipse · gsoc · java · python · SWT · xml · XWT
