So, what have I been doing the past year?
I have been programming constantly, honing my C++ programming skills.
Let me get this off my chest first.
I have been working on a problem for 2 months now. The problem at hand is generally called "the vehicle routing problem with time windows" (vrptw). This specific problem that I have to solve is about a set of shops, a fleet of delivery trucks/persons, each truck and shop have certain working hours (i.e. they will not be available in the middle of the night), and moreover every shop has a different visiting priority (some are less urgent to visit), and every shop has a favourite deliverer. (preferred delivery agent)
A route must be charted for every agent on every agent's working day. The route consists of a string of feasible shops (shops that are open at the time of visit) which the agent must visit to complete her route. The goal is to create such routes and minimize the costs that are created by these routes.
This vrptw problem instance has been my first major ai programming challenge. I had lots of fun doing it. But the results weren't as rosy as I had hoped they would be.
The algorithm I chose to implement to tackle this problem is called Ant Colony System (ACS). ACS widely known for solving travelling salesperson type of problems. ACS is used in robotics (e.g. moving robotic limbs efficiently), routing (i.e. internet communication), because it effectively solves nearest neighbour type of problems.
One should not confuse ACS with Ant System (AS), AS is a precursor of ACS. AS is the first pheromone-based algorithm proposed by Dorigo (Dorigo, 1992).
ACS is the new and improved successor of AS, both are modelled after ant behaviour when foraging for food and whatnot.
It is known that ants leave traces of pheromones where they walk and other ants may choose to follow this pheromone trail (pheromone exploitation) or explore (random exploration) other paths. This collective behaviour is called "stigmergy", coined by some French ant geek (Pierre-Paul Grassé in 1959).
The union of pheromone trails from different ants on the same path create a strong pheromone trail (reinforcement), while infrequently traversed trails evaporate.
It is claimed that ACS can tackle the vrptw problem, little documentation can be found about ACS being used to tackle the vrptw problem. I have found one (Gambardella et al, 1999) document on the internet about this problem. The problem described there is quite trivial compared to the one I am tackling. That document describes how they minimized the actual number of agents needed to solve a trivial vrptw problem. It was more or less travelling salesperson with multiple agents. (trivial: without all preferred agent etc. stuff I mentioned before).
From my experience with ACS, I conclude that ACS is great when you tackle problems with uniform objects. Uniform nodes, uniform edges, uniform agents etc. In my actual vrptw problem every agent is unique. Every shop is unique and has unique requests. Very much like the real world. That's one of the reasons why my experiment failed... anyways, I'll go into the specifics tomorrow. Enough general data for now.
Tah-tah
jzz
References
Dorigo M. (1992). Optimization, Learning and Natural Algorithms. Ph.D.Thesis, Politecnico di Milano, Italy, in Italian.
Gambardella L.M., Taillard E., Agazzi G. (1999), MACS-VRPTW: A Multiple Ant Colony System for Vehicle Routing Problems with Time Windows , In D. Corne, M. Dorigo and F. Glover, editors, New Ideas in Optimization. McGraw-Hill.