def eval_fitness(self, chromosome):
return -self.calc_distance(chromosome, pow=<NUM_LIT:2>)<EOL>
Calculate the distance travelled by the salesman by converting
the solution/chromosome into a sequence of visited city IDs.

Penalty distance is added each time any of these conditions occur:
  1. cities are visited multiple times
  2. not all cities are visited
  3. an invalid city ID is encountered

return:  fitness value