def bestOf(neighbors, p): ### best = neighbors.pop() bestValue = TSP.evaluate(best, p) for neighbor in neighbors: nValue = TSP.evaluate(neighbor, p) if nValue < bestValue: best = neighbor bestValue = nValue return best, bestValue
def firstChoice(p): current = TSP.randomInit(p) # 'current' is a list of city ids valueC = TSP.evaluate(current, p) i = 0 while i < LIMIT_STUCK: successor = randomMutant(current, p) valueS = TSP.evaluate(successor, p) if valueS < valueC: current = successor valueC = valueS i = 0 # Reset stuck counter else: i += 1 return current, valueC
def steepestAscent(p): current = TSP.randomInit(p) # 'current' is a list of city ids valueC = TSP.evaluate(current, p) while True: neighbors = mutants(current, p) (successor, valueS) = bestOf(neighbors, p) if valueS >= valueC: break else: current = successor valueC = valueS return current, valueC