2017-03-16 23 views
0

파이썬에서 DEAP 패키지를 사용하여 Genetic과 함께 진화 알고리즘을 사용하여 최적화를위한 프로그램을 작성하고 있습니다.파이썬에서 deap 패키지의 다른 범위에있는 임의의 숫자로 목록을 만들려면 어떻게해야합니까?

파이썬에서 목록 유형을 사용하여 염색체를 만들어야합니다. 이 염색체는 다른 범위에서 5 개의 플로트 유전자 (대립 유전자)를 가져야합니다.

내 주요 문제는 그러한 염색체를 만드는 것입니다. 그러나 deap 패키지의 tools.initRepeat 함수를 사용하면 더 좋을 것입니다. 모든 유전자는 우리가 다음 코드를 사용할 수있는 동일한 범위에있는 경우에

: 나는 here에서 가져온 그건

import random 

from deap import base 
from deap import creator 
from deap import tools 

creator.create("FitnessMax", base.Fitness, weights=(1.0,)) 
creator.create("Individual", list, fitness=creator.FitnessMax) 

IND_SIZE=10 

toolbox = base.Toolbox() 
toolbox.register("attr_float", random.random) 
toolbox.register("individual", tools.initRepeat, creator.Individual, 
       toolbox.attr_float, n=IND_SIZE) 

.

답변

0

나는 좋은 권고 here을 발견했다.

def genFunkyInd(icls, more_params): 
    genome = list() 
    param_1 = random.uniform(...) 
    genome.append(param_1) 
    param_2 = random.randint(...) 
    genome.append(param_2) 
    # Many more parameter initialization 

    return icls(genome) 

The icls (standing for individual class) parameter should receives the type created with the creator, while all other parameters configuring your ranges can be passed like the more_params argument or with defined constants in your script. Here is how it is registered in the toolbox. 

toolbox.register('individual', genFunkyInd, creator.Individual, more_params) 

수동으로 염색체 클래스를 생성합니다. 나는 그것이 최선의 선택인지는 모르지만 그것이 내 문제를 해결하는 데 사용될 수 있습니다.