Google Summer of Code Proposal: GRuVeR: A General Ruby library for solving Routing Vehicle Problem

Wednesday, April 16, 2008
This year is the last that I'm going to be a student, at least a bachelor one, since i've already completed (almost) my thesis and pretty soon I will be saying bye-bye to my University. I haven't really had the chance to participate in Google Summer of Code partially because I had never really heard of it (in time) and also because I didn't believe that I was able to contribute something really good (lack of confidence here :) ). But this year and after messing around with others' people code (heh) and some of my own (including my thesis) and with the help/ideas given by some friends I did finally sent a proposal.

The main concept is to implement a library for solving Vehicle Routing Problems in Ruby. How is this going to happen? The ground basis will be the beautiful Charlie library, written by Sander Land, which makes it really easy to write programs with Genetic Algorithms built in and really fast (in terms of time required to write the code :D). James also pointed out Gecode/R which is frontend to Gecode and uses another technique, Constraint Programming and I'm trying to think if and how this can also be used (a discussion can be found on the Gecode/R mailing list). I'm not going to get into details here; if anyone is interested a part of the proposal can be found in the Ruby mailing list and the full version is available as pdf here. Feel free to send in any thoughts :).

I'm really waiting for the ranking results and I reeeeeally hope that it will get accepted even though it's a really specific and targeted project when compared with others like contributing to the alternative VMs, refactoring RDoc (although version 2 is out) and such. The good thing with implementing this, is that it will produce some really nice benchmarks between the different VMs and also create some feedback with suggestions/patches/fixes (here are some examples from this Monday's experiments I was doing). Regardless though of whether or not it gets accepted, I believe that I will finally write this thing cause after a chat I had with Sander, which by the way is my potential mentor to the project, he also seems interested in this and willing to help.

So, stay tuned for updates on this - later this day I'm going to post some benchmark results between almost all current Ruby VMs (Ruby 1.8, Ruby 1.9, JRuby 1.1 and Rubinius)* after running some example code I wrote for the Traveling Salesman Problem.

* I'm missing the C# implementation of Ruby here but I thought that it won't be able to run on my Mac so I didn't bother to try it. If I'm wrong please let me know and I will also set it up right away!

P.S.: Do you have a better name in mind for the project??? I'm not sure I like "GRuVeR". Wouldn't something like "delivery" sound better?


Post a Comment