예제 #1
0
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
예제 #3
0
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