способ сделать это - зарегистрировать «атрибуты», из которых может быть создан каждый человек.Вот что я использую в своем коде:
toolbox.register("attr_peak", random.uniform, 0.1,0.5)
toolbox.register("attr_hours", random.randint, 1, 15)
toolbox.register("attr_float", random.uniform, -8, 8)
toolbox.register("individual", tools.initCycle, creator.Individual,
(toolbox.attr_float,toolbox.attr_float,toolbox.attr_float,
toolbox.attr_hours,
toolbox.attr_float, toolbox.attr_float, toolbox.attr_float,
toolbox.attr_hours,toolbox.attr_peak
), n=1)
В моем коде у меня есть три разных "гена" или "атрибута", поскольку я зарегистрировал их в toolbox
.В моем примере у меня есть две непрерывные переменные и одна целочисленная переменная.Для вашего примера, вот как вы бы определили свои атрибуты:
toolbox.register("n_rate", random.uniform, 0.1, 0.5)
toolbox.register("estim", random.choice, [1000,1500,2000])
toolbox.register("max_d", random.randint, 1, 20)
toolbox.register("ft", random.choice, [None, 'rel'])
toolbox.register("min_m", random.randint, 1, 1000)
toolbox.register("min_s", random.randint, 2, 1000)
toolbox.register("lim", random.randint, 0, 1)
Тогда вы построите своего индивидуума так же, как я это сделал с initCycle
.
toolbox.register("individual", tools.initCycle, creator.Individual, (toolbox.your_attribute, toolbox.next_attribute, ... ), n=1)