2017-11-22 3 views
0

私はPythonでDEAPから始まり、TSP problemを解決するためにGAを実装するふりをしています。DEAP Pythonで個人のリストを作成するにはどうすればいいですか?

city(Strings)という名前のリストをIndividualとして作成できるかどうかを知りたいです。たとえば、個人は["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) 
+0

一般的なコメントとして、あなたは見ている可能性がありJupiter NotebookでのPeter NorvigのTSPの優れたウォークスルーで。 https://github.com/norvig/pytudes/blob/master/ipynb/TSP.ipynb 彼は完全なツアーの表象を反映しています。 – KPLauritzen

+0

面白い、共有ありがとう。私の目標は少し異なります。私はDEAPを学ぶふりをする。現時点では、都市は整数であり、正常に動作します。私は都市の使用文字列について知りたいです。そのリンクで私は私の質問への答えを見つけることができません。 –

答えて

0

私は可能なアプローチを発見しました。下記の通り、私は新しい関数を宣言します。

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']] 
関連する問題