I’m working on pipeline network optimization, and I’m representing the chromosomes as a string of numbers as following
example
chromosome [1] = 3 4 7 2 8 9 6 5
where, each number refers to well and the distance between wells are defined. since, the wells cannot be duplicated for one chromosome. for example
chromosome [1]' = 3 4 7 2 7 9 6 5 (not acceptable)
what is the best mutation that can deal with a representation like that? thanks in advance.
Can’t say “best” but one model that I’ve used for graph-like problems is: For each node (well number), calculate the set of adjacent nodes / wells from the entire population. e.g.,
Then create a new individual / network by:
The idea is that nodes with high numbers of adjacencies are ripe for recombination (since the population hasn’t converged on, e.g., 1->2), a lower “adjacency count” (but non-zero) implies convergence, and a zero adjacency count is (basically) a mutation.
Just to show a sample run ..
Sanity-check?
3->6occurs 1x in original,6->2appears 2x,2->1appears 5x,1->5appears 0,5->7appears 0,7->4appears 0. So you’ve preserved the most-common adjacency (2->1) and two other “perhaps significant” adjacencies. Otherwise, you’re trying out new adjacencies in the solution space.UPDATE: Originally I’d forgotten the critical point that when recursing, you choose the most-connected to the just-chosen node. That’s critical to preserving high-fitness chains! I’ve updated the description.