from deap import basedef get_abc(a,b,c): print(f"a:{a}; b:{b}; c:{c}")tools = base.Toolbox()tools.register("get", get_abc, 1,c=3) # register functiontools.get(2) # once registered, functions can be used directly in tools>>> a:1; b:2; c:3
由上例可见,register的参数分别为:原函数的别名;原函数;原函数的参数(可为关键或非关键参数)使用Toolbox可以大大减少代码量,并通过将其他函数封装进Toolbox使代码简单明了2.2 FitnessFitness主要和creator模组一起使用来初始化个体的适应度,具体内容将在下一期介绍3. creator 模组我们一般使用creator.create来创建个体与种群create方程可以拓展其他的类,并同时添加特性(attribute),示例如下:from deap import creatorcreator.create("styledText",str,size=9,style=dict)# creator.styledText is almost equivalent toclass styledText(str): size = 9 def __init__(self): self.style = dict()
4. tools 模组tools模组包含一系列已定义好的方程,具体内容如下(来源:DEAP官网):其中初始化(Initialization)方程可以让我们快速构建个体与种群:例: 用initRepeat创建长度为4的列表,每一个列表上的元素为0或1import randomfrom deap import toolsrandom.seed(39)def randomZeroOne(): return(random.randint(0,1))individual = tools.initRepeat(list,randomZeroOne,4)print(individual)>>> [0, 1, 1, 0]
例:用initIterate创建长度为4的列表,列表内容为0-3顺序随机的整数import randomfrom deap import toolsrandom.seed(39)def random4(): return(random.sample(range(4),4))individual = tools.initIterate(list,random4)print(individual)>>> [1, 3, 2, 0]
交叉(Crossover),突变(Mutate),选择(Selection)为具体的遗传算法方法,脱离了具体例子很难解释,这些方法的应用将在今后的文章中逐一介绍,若对这些概念不了解的,可以查看本系列第二期:遗传算法(Python) #2 基本运算方法详解5. 其他模组DEAP框架内还有algorithms模组,和用以统计每一代数据的tools.Statistics和tools.Logbook,这些内容将在以后的文章中注意介绍6.小结本期文章介绍了DEAP框架内的主要模组/方程,下一期将使用DEAP框架解决OneMax问题,并进一步展示DEAP框架的应用(图片来源网络,侵删)
0 评论