DEAP框架
??Python 的 DEAP库是一个进化算法框架,可以帮助我们快速实现各种进化算法,例如遗传算法(GA)、粒子群算法(PSO)、遗传编程(GP)、分布估计算法(EDA)、多目标优化算法等。 ??利用DEAP库实现进化算法的基本流程如下: ??- 创建优化问题 ??- 定义个体、种群 ??- 定义算子(以GP为例,包括选择、交叉、变异) ??- 定义评价函数(评价函数必须要自己定义) ??- 种群迭代
利用DEAP库创建一个GP表达式
??(1)首先创建 primitive set
import operator
from deap import gp
pset = gp.PrimitiveSet('main111',2)
pset.renameArguments(ARG0 = 'x')
pset.renameArguments(ARG1 = 'y')
pset.addPrimitive(operator.add,2)
pset.addPrimitive(operator.mul,2)
pset.addPrimitive(operator.neg,1)
pset.addPrimitive(math.sin,1)
def if_then_else(constraint, output1,output2):
if constraint:
return output1
else:
return output2
pset.addPrimitive(if_then_else,3)
pset.addTerminal(3)
pset.addEphemeralConstant('num',lambda:random.randint(-5,5))
??(2)根据上述 primitive set 创建表达式
expr1 = gp.genFull(pset,0,2)
expr2 = gp.genGrow(pset,1,3)
expr3 = gp.genHalfAndHalf(pset,1,3)
tree = gp.PrimitiveTree(expr1)
function1 = gp.compile(tree,pset)
function2 = gp.compile(expr2,pset)
result = function1(1,2)
print('result:',result)
注意:步骤(2)只是创建一个gp表达式、编译表达式的示例,实际使用deap库时,直接进行步骤(3)即可。
??(3)创建个体(individual)
from deap import creator,tools,base
creator.create('FitnessMin',base.Fitness,weights=(-1.0,))
creator.create('Individual',gp.PrimitiveTree,fitness = creator.FitnessMin,pset = pset)
toolbox = base.Toolbox()
toolbox.register('expr',gp.genHalfAndHalf,pset = pset,min_ = 3,max_ = 3)
toolbox.register('individual',tools.initIterate,creator.Individual,toolbox.expr)
one_individual = toolbox.individual()
|