所谓重尾变异算子的实现

fastga的Python项目详细描述


此存储库保存支持提交给GECCO 2017会议的文章的代码库。由于这篇文章仍在评论中,作者的身份目前是cannot be disclosed。审查程序一结束,他们就来。同时,该存储库将由作者主动维护,但使用匿名帐户。

fastga是一个非常小的模块,它使用我们所谓的fast-generation operator(或heavy-tailed-generation operator)来执行位变异,该操作使用幂律分布的变异率。这使得在一步中以高概率翻转大量比特(例如,与经典的(1+1)ea相比),这在需要这种长距离“跳跃”以避开局部最优时尤其可取。

要求

  • Python3+
  • 努比

安装

git方式

只需将此存储库克隆到一个方便的位置:

$ mkdir some_convenient_location && cd some_convenient_location
$ git clone https://github.com/FastGA/fast-genetic-algorithms.git

然后将其添加到pythonpath中

$ export PYTHONPATH=some_convenient_location:$PYTHONPATH

(您也可以将此命令放入.bashrc文件中,使其永久化)。

用法

我们的变异运算符是在类^{t t 1}$中实现的,还有抽象类BaseMutationOperator(如果需要的话,不应该直接使用它,而应该使用自己类的子类)和类OnePlusOneMutationOperator(顾名思义,它是(1+1)ea的实现)。在python shell中,键入

from fastga import FastMutationOperator

创建实例需要两个参数:

  • 一个整数n,它是可以由运算符进行变异的位字符串的大小;
  • 一个floatbeta>;1,它是变异率幂律中使用的指数。

给定这两个参数,运算符的突变率r是这样的,对于{1中的每个i。n//2},ri/n的概率与i^{-beta}(具有适当的标准化因子)成正比。因此,较低的beta值倾向于在一个突变步骤中翻转更多的比特。

现在可以实例化运算符:

operator = FastMutationOperator(n=100, beta=1.5)

并使用其mutate方法对n长度的位字符串进行变异:

bit_string = [0] * 100
for i in range(10):
    operator.mutate(bit_string, inplace=True)
    print(bit_string)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将外部库(LIB)集成到grails项目中?   java 安卓:progressTintMode、安卓:secondaryProgressTintMode和安卓:progressDrawable做什么?   java获得了启动播放器的精确方向   java如何在布局/样式XML中设置状态栏着色颜色?   Java中的图形游戏未显示   java如何在WebSphere8.5.5中的我的JAAS自定义登录模块中使用SAML令牌属性值   使用jackson spring API解析嵌套json   java如何从用户请求中获取用户代理?   Netbeans 6.8中的java UI控件定位   java显示listgrid中两个表中的数据   java Google Cloud Bigtable客户端连接池   Vert中的java更改日志级别。通过添加一个配置文件   java调用构造函数是否意味着创建实例?   java getFrom()[0])中[0]用于获取邮件发件人地址的用法是什么   “继续”标志的java Gradle属性?   jakarta ee如何在java ee中创建GUID   java不兼容类型:无法将int转换为整数   java需要借助DefaultHandler的characters函数将XML数据读入安卓应用程序   java mapstruct将方法应用于列表中的所有对象