deap.algorithms模块库官方文档库翻译

Algorithms

算法模块旨在包含一些特定的算法,以便执行非常常见的进化算法。这里使用的方法更多是为了方便而非参考,因为每个进化算法的实现可能会无限变化。本模块中的大多数算法使用工具箱中注册的运算符。通常,用于交叉的关键字是mate(),用于突变的关键字是mutate(),选择的关键字是select(),求值的关键字是evaluate()。

鼓励编写自己的算法。

Complete Algorithms

这些是完全的装箱算法,在某种程度上局限于非常基本的进化计算概念。所有算法除了参数之外,还接受一个初始化的Statistics对象来维护进化的统计数据,一个初始化HallOfFame来保存种群中出现的最佳个体,以及一个布尔verbose来指定是否记录进化过程中发生的事情。

deap.algorithms。eaSimple(population,toolbox,cxpb,mutpb,ngen[,stats,halloffame,verbose])

Parameters:

  • population – A list of individuals.

  • toolbox – A Toolbox that contains the evolutionoperators.

  • cxpb – The probability of mating two individuals.

  • mutpb – The probability of mutating an individual.

  • ngen – The number of generation.

  • stats – A Statistics object that is updatedinplace, optional.在适当位置更新的Statistics对象,可选。

  • halloffame – A HallOfFame object that willcontain the best individuals, optional.

  • verbose – Whether or not to log the statistics.

Returns:

The final population

Returns:

A class:~deap.tools.Logbook with the statistics of theevolution

该算法接受一个群体,并使用varAnd()方法将其进化到位。它返回优化的种群和包含进化统计信息的日志。日志将包含生成编号、每一代的评估数量以及统计数据(如果提供统计数据作为参数)。cxpb和mutpb参数传递给varAnd()函数。伪代码如下所示

evaluate(population)
for g in range(ngen):
    population = select(population, len(population))
    offspring = varAnd(population, toolbox, cxpb, mutpb)
    evaluate(offspring)
    population = offspring

如上面的伪代码所述。首先,它评估具有无效适应度的个体。第二,它进入了迭代循环,在这个循环中,选择程序被用来完全取代父代。该算法的1:1替换比例要求选择过程是随机的,并且需要多次选择同一个个体,例如,selTournament()和selRoulette()。第三,它应用varAnd()函数生成下一代种群。第四,它评估新的个体,并计算该群体的统计数据。最后,当ngen生成完成后,算法返回一个包含最终种群和进化日志的元组。

此函数要求在工具箱中注册toolbox.mate()、toolbox.amute()、toolbox.select()和toolbox.avalate()别名。

deap.algorithms.eaMuPlusLambda

(population, toolbox, mu, lambda_, cxpb, mutpb, ngen[, stats, halloffame, verbose])

这是(μ+λ)进化算法。

Parameters:

  • population – A list of individuals.

  • toolbox – A Toolbox that contains the evolutionoperators.

  • mu – The number of individuals to select for the next generation.

  • lambda_ – The number of children to produce at each generation.

  • cxpb – The probability that an offspring is produced by crossover.

  • mutpb – The probability that an offspring is produced by mutation.

  • ngen – The number of generation.

  • stats – A Statistics object that is updatedinplace, optional.

  • halloffame – A HallOfFame object that willcontain the best individuals, optional.

  • verbose – Whether or not to log the statistics.

Returns:

The final population

Returns:

A class:~deap.tools.Logbook with the statistics of theevolution.

该算法接受一个群体,并使用varOr()函数将其进化到位。它返回优化的种群和包含进化统计信息的日志。日志将包含生成编号、每一代的评估数量以及统计数据(如果提供统计数据作为参数)。cxpb和mutpb参数传递给varOr()函数。伪代码如下所示

evaluate(population)
for g in range(ngen):
    offspring = varOr(population, toolbox, lambda_, cxpb, mutpb)
    evaluate(offspring)
    population = select(population + offspring, mu)

首先,对具有无效适应度的个体进行评估。第二,进化循环开始于从种群中产生lambda_后代,后代由varOr()函数生成。然后对后代进行评估,并从后代和种群中选择下一代种群。最后,当ngen生成完成后,算法返回一个包含最终种群和进化日志的元组。

此函数要求在工具箱中注册toolbox.mate()、toolbox.amute()、toolbox.select()和toolbox.avaluate()别名。此算法使用varOr()变量。

deap.algorithms.eaMuCommaLambda(population, toolbox, mu, lambda_, cxpb, mutpb, ngen[, stats, halloffame, verbose])

这是(μ,λ)进化算法。

Parameters:

  • population – A list of individuals.

  • toolbox – A Toolbox that contains the evolutionoperators.

  • mu – The number of individuals to select for the next generation.

  • lambda_ – The number of children to produce at each generation.

  • cxpb – The probability that an offspring is produced by crossover.

  • mutpb – The probability that an offspring is produced by mutation.

  • ngen – The number of generation.

  • stats – A Statistics object that is updatedinplace, optional.

  • halloffame – A HallOfFame object that willcontain the best individuals, optional.

  • verbose – Whether or not to log the statistics.

Returns:

The final population

Returns:

A class:~deap.tools.Logbook with the statistics of theevolution

该算法接受一个群体,并使用varOr()函数将其进化到位。它返回优化的种群和包含进化统计信息的日志。日志将包含生成编号、每一代的评估数量以及统计数据(如果提供统计数据作为参数)。cxpb和mutpb参数传递给varOr()函数。伪代码如下所示

evaluate(population)
for g in range(ngen):
    offspring = varOr(population, toolbox, lambda_, cxpb, mutpb)
    evaluate(offspring)
    population = select(offspring, mu)

deap.algorithms.eaGenerateUpdate(toolbox, ngen[, stats, halloffame, verbose])

This is algorithm implements the ask-tell model proposed in[Colette2010], where ask is called generate and tell is called update.

Parameters:

  • toolbox – A Toolbox that contains the evolutionoperators.

  • ngen – The number of generation.

  • stats – A Statistics object that is updatedinplace, optional.

  • halloffame – A HallOfFame object that willcontain the best individuals, optional.

  • verbose – Whether or not to log the statistics.

Returns:

The final population

Returns:

A class:~deap.tools.Logbook with the statistics of theevolution

该算法使用toolbox.generate()函数生成个体,并使用toolbox.update()函数更新生成方法。它返回优化的种群和包含进化统计信息的日志。日志将包含生成编号、每一代的评估数量以及统计数据(如果提供统计数据作为参数)。伪代码如下所示

for g in range(ngen):
    population = toolbox.generate()
    evaluate(population)
    toolbox.update(population)

Variations

变体是算法的较小部分,可以单独用于构建更复杂的算法。

deap.algorithms.varAnd(population, toolbox, cxpb, mutpb)

进化算法的一部分,仅应用变异部分(交叉和变异)。修改后的个体的适应度无效。个体被克隆,因此返回的种群独立于输入种群。

Parameters:

  • population – A list of individuals to vary.

  • toolbox – A Toolbox that contains the evolutionoperators.

  • cxpb – The probability of mating two individuals.

  • mutpb – The probability of mutating an individual.

Returns:

A list of varied individuals that are independent of theirparents.

变化如下。首先,使用toolbox.clone()方法复制亲代群体Pp,并将结果放入后代群体Po中。在Po上执行第一个循环以配对成对的连续个体。根据交叉概率cxpb,使用toolbox.mate()方法对个体xi和xi+1进行交配。由此产生的后代yi和yi+1取代了他们各自在Po的父母。在生成的Po上执行第二个循环,以概率mutpb对每个个体进行变异。当一个个体发生突变时,它会替换Po中未发生突变的版本。生成的Po返回。

这种变异被命名为And,因为它倾向于在个体身上同时应用交叉和突变。注意,这两种算子都没有系统地应用,生成的个体可以根据给定的概率从仅交叉、仅突变、交叉和突变以及繁殖中生成。两种概率都应在[0,1]内

deap.algorithms.varOr(population, toolbox, lambda_, cxpb, mutpb)

进化算法的一部分,只应用变异部分(交叉、变异或繁殖)。修改后的个体的适应度无效。个体被克隆,因此返回的种群独立于输入种群。

Parameters:

  • population – A list of individuals to vary.

  • toolbox – A Toolbox that contains the evolutionoperators.

  • lambda_ – The number of children to produce

  • cxpb – The probability of mating two individuals.

  • mutpb – The probability of mutating an individual.

Returns:

The final population.

变化如下。在每个lambda迭代中,它选择三个操作中的一个;交叉、突变或繁殖。在交叉的情况下,从父母群体Pp中随机选择两个个体,使用toolbox.clone()方法克隆这些个体,然后使用toolbox.mate()方法交配。只有第一个孩子被附加到后代群体Po,第二个孩子被丢弃。在突变的情况下,从Pp中随机选择一个个体,克隆该个体,然后使用toolbox.amutate()方法进行突变。产生的突变体被附加到Po上。在复制的情况下,从Pp中随机选择一个个体,克隆并附加到Po

.

这种变异被命名为“Or”,因为杂交和突变两种操作都不会产生后代。两种概率之和应为[0,1]

,繁殖概率为1-cxpb-mutpb。。

一、软件的具体操作 1.建一个文件夹,里面必须有四个文件(Dblank;deapdeap.000;123.dta)前三个文件在一般下载的DEAP Version 2.1中都有,直接复制过来就可以,第四个文件是一个数据文件,一般先在excel中先输入,再复制到一个记事本下就可以,注意在记事本下的数据只有数据,不包括决策单元的名称和投入、产出的名称,并且一定要先放产出,后是投入。例子具体见123电子表格和123记事本。 2.对命令Dblank文件进行修改,修改后保存为123.ins文件 3.打开deap软件,运行123.ins 4,回车后自动会有123.out 注意事项:(1) 123.dta;Dblank;123.ins都用记事本打开; (2)数据文件名和命令文件名一定要一样,如例子中都用123 (3)文件夹中一定要包括deap.000文件,如果没有这个文件,打开deap软件,就会出现一闪就没有了的情况。 二,结果的分析 在文件夹中打开123.out,看如下: 1) firm crste vrste scale 1 0.687 1.000 0.687 drs 2 0.814 1.000 0.814 drs 3 0.319 0.709 0.450 drs 4 1.000 1.000 1.000 - 5 1.000 1.000 1.000 - 6 0.336 0.425 0.791 drs 7 0.642 0.648 0.991 irs 8 0.379 0.381 0.994 irs 9 0.702 0.750 0.936 irs 10 1.000 1.000 1.000 - 11 0.304 0.461 0.659 irs 12 0.352 1.000 0.352 irs 13 1.000 1.000 1.000 - 14 0.594 0.929 0.639 irs 15 0.402 1.000 0.402 irs mean 0.635 0.820 0.781 firm:代表例子中的15的样本 crste:技术效率,也叫综合效率 vrste:纯技术效率 scale:规模效率(drs:规模报酬递减;-:规模报酬不变;irs:规模报酬递增) crste=vrste×scale 2) Results for firm: 3 Technical efficiency = 0.709 Scale efficiency = 0.450 (drs) PROJECTION SUMMARY: variable original radial slack projected value movement movement value output 1 7326.380 0.000 0.000 7326.380 output 2 119.910 0.000 0.000 119.910 input 1 15427.000 -4496.010 0.000 10930.990 input 2 5257.970 -1532.371 -1643.828 2081.771 第三个样本的具体分析如下: 纯技术效率=0.709 规模效率=0.450 (drs):规模报酬应该递减 第三个样本的投入产出情况分析: 第一、二产出均没有冗余情况(因为其 radial movement 和 slack movement 均为零) 第一个投入要素有投入冗余4496.010;第二投入要素有投入冗余3176.199=1532.371+1643.828 这个意思是说按第三个样本现在的产出冗余第一个投入要素可以减少4496.010,第二个投入要素可以减少3176.199 Results for firm: 8 Technical efficiency = 0.381 Scale efficiency = 0.994 (irs) PROJECTION SUMMARY: variable original radial slack projected value movement movement value output 1 235.860 0.000 0.000 235.860 output 2 3.760 0.000 6.995 10.755 input 1 777.000 -480.651 0.000 296.349 input 2 132.550 -81.995 0.000 50.555 第八个样本则出现了产出不足的情况,即第二个产出应该比现在增加 6.995 如果投入因素是决策单元可的决定的,而产出因素是不能决定的时,我们分析就可以考虑投入是否能减少,不管产出是否能增加(因为产出是决策单元不可控的因素) 如果产出因素是决策单元可的决定的,而投入因素是不能决定的时,我们分析就可以考虑产出是否能增加,不管投入是否能减少(因为投入是决策单元不可控的因素) 如果样本单元的纯技术效率为1,而规模效率小于1时,这说明样本单元本身的技术效率而言没有投入需要减少、没有产出需要增加;样本单元的综合效率没有达到有效(即1),是因为其规模和投入、产出不相匹配,需要增加规模或减少规模。如例子中的第二个样本单元,其规模应该缩小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值