Как создать список городов как отдельных в DEAP Python?

Я начинаю с DEAP в Python и делаю вид, что реализую GA для решения проблемы TSP.

Я хочу знать, можно ли создать список с названием города (строки) как индивидуальный. Например, физическое лицо может быть: ["Madrid","Paris","London","Rome"].

На данный момент я представляю города целыми числами:

creator.create("Individual", list, fitness=creator.FitnessMin)

    IND_SIZE=8

    toolbox = base.Toolbox()
    toolbox.register("indices", random.sample, range(IND_SIZE), IND_SIZE) 
    toolbox.register("individual", tools.initIterate, creator.Individual, toolbox.indices)

person Sergio Rodríguez Calvo    schedule 22.11.2017    source источник
comment
В качестве общего комментария вы можете взглянуть на превосходный обзор TSP Питера Норвига в Jupyter Notebook. github.com/norvig/pytudes/blob/master/ipynb/TSP. ipynb Он размышляет о представлении полного тура.   -  person KPLauritzen    schedule 22.11.2017
comment
Интересно, спасибо, что поделились. Моя цель немного другая. Я притворяюсь, что изучаю DEAP. На данный момент города целые и работает нормально. Я хотел бы знать об использовании строки для городов. В этой ссылке я не нашел ответа на свой вопрос.   -  person Sergio Rodríguez Calvo    schedule 22.11.2017


Ответы (1)


Я нашел возможный подход. Я объявляю новую функцию, как показано ниже:

def generate_individual():
    return ["Almeria","Cadiz","Cordoba","Granada","Huelva","Jaen","Malaga", "Seville"]

Чтобы объявить физическое лицо:

toolbox = base.Toolbox()
toolbox.register("indices", generate_individual) # Gen, in this case, a number which represents a city.
toolbox.register("individual", tools.initIterate, creator.Individual, toolbox.indices) # Define a route of cities. A chromosome.
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
POP_SIZE = 50
pop = toolbox.population(n=POP_SIZE)

Результат приведен ниже:

[['Almeria', 'Cadiz', 'Cordoba', 'Granada', 'Huelva', 'Jaen', 'Malaga', 'Seville'], ..., ['Almeria', 'Cadiz', 'Cordoba', 'Granada', 'Huelva', 'Jaen', 'Malaga', 'Seville']]
person Sergio Rodríguez Calvo    schedule 22.11.2017