C = {c // c |

For all v Î V 1) create initial population |C| = n 2) for (i = 0; i < n; i++) begin// initial phase 3) p(v) = c 4) find shortest path if requests exist from v; 5) calculate profit f 6) end for 7) while (# of rounds < G) begin// main phase 8) find index x with maximum profit from F; 9) find index y with minimum profit from F; 10) broadcast x to neighbor nodes; 11) receive j 12) broadcast y to neighbor nodes; 13) receive k 14) find the majority t 15) find the second majority t 16) p = (c 17) mutate p to p 18) find shortest path if requests exist from v; 19) calculate profit f; 20) r = (the majority of and y) 21) swap (c 22) c 23 end while |