Crossover operator for TSP with Time Windows
I am working on a variant of TSP where each node also has a 'Time Window' which has to be respected. Since I am using a Genetic Algorithm to solve TSPTW, I was wond开发者_JAVA技巧ering what might be some crossover techniques that might work well for TSPTW.
Thanks.
This is just idle speculation, but the standard TSP tends to benefit from operators that attempt to preserve the adjacency of nodes in the parent tours. So what's considered important is not that city X appears at a particular position, but instead that it appears next to cities Y and Z, wherever in the string they appear. There are operators like Edge Assembly Crossover (EAX) that have been designed specifically to attempt to exploit this structure.
In your case, the time windows presumably mean that, unlike TSP, tours like 01234567 are different from tours like 56701234, and thus the absolute position of a city in the tour matters as well. In cases like QAP where absolute position is important, people tend to do things like Cycle Crossover (CX).
If I was committed to a GA for this problem, I might start by doing something obvious like implementing both CX and EAX and choosing between them at random. Alternately, you might attempt to design a single hybrid operator that combined elements of both, but that is probably rather non-trivial to do.
I suspect, however, that a GA might not be the way to go here, or at the very least, a black box GA might suffer. An operator that attempted to use semantic information from the problem instance to, for example, tend to group cities near one another if they had similar time windows might be effective. And my $5 says that a good local search algorithm (tabu search, variable neighborhood search, etc.) might beat the GA in any case, although that's based on nothing more than a hunch.
精彩评论