Java Unit Evolution

As my Bachelor thesis at The Open University, I investigated the possibility of using unit test cases to define fitness functions in genetic programming. More precisely, I wanted to see whether GP could benefit from the practices of test-driven development.

So I bought a huge book and a small book and began. My plan was to create a framework that would automatically evolve a program that would pass a set of user-defined test cases.

I made some promising progress at first, but I soon realised that GP and TDD are not as good a match as I thought. Furthermore, I had some technical difficulties, making it impossible to evolve anything but the most trivial programs. I discussed the issues with Klaus Meffert and he gave me some ideas on how to solve them. But I’ve been working on this for the last nine months, and I prefer to work on other projects right now.

Anyway, I’m still happy with the results. I didn’t get the grade yet, but I have quite a good feeling. Furthermore, I was able to investigate both TDD and GP thoroughly. I’m pretty psyched about TDD, as evident from my recent blog post about it. Working with GP has taught me a fair deal about machine learning, which is in my opinion the most interesting topic in artificial intelligence.

If you’re interested, feel free to read the paper and get the code, it’s open source.

Leave a Reply