:遗传算法库

[人工智能,算法,bsd3型,图书馆,优化,优化][建议标签]

Moo库提供构建块来构建自定义Haskell中的遗传算法。它们可以用来找到优化和搜索问题的解决方案。

现成支持的变量:二进制(使用位字符串)和连续(实数编码)。潜在支持的变体:排列,树,混合编码(需要自定义)。

二进制GA:二进制和灰度编码;点突变;单点、两点和均匀交叉。连续遗传算法:高斯变异;BLX-α、UNDX和SBX交叉。选择运算符:轮盘赌、锦标赛和随机通用抽样;具有可选的小生境、排名和缩放。替代战略:精英主义的世代相传和稳态。约束优化:随机约束初始化,死刑,受约束没有惩罚函数的选择。多目标优化:NSGA-II以及受约束的NSGA-II。


[跳到自述]

下载

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

  • 没有候选人
版本[RSS(RSS)] 1,1.2
依赖关系 阵列,基础(>=4&&<5),集装箱,灰色代码(>=0.2.1),梅森-随机-纯64,Monad随机,mtl公司(>=2),平行(>=3.0),随机的,随机的(>=0.1),随机震荡(>=0.0.2),时间,矢量[细节]
许可证 BSD-3条款
作者 谢尔盖·阿斯坦宁<s.astanin@gmail.com>
维护人员 谢尔盖·阿斯坦宁<s.astanin@gmail.com>
类别 人工智能,算法,优化,优化
主页 http://www.github.com/astanin/moo/
源回购 头部:git克隆git://github.com/astanin/moo.git
已上传 通过谢尔盖·阿斯坦宁2018年11月13日下午1:49:22Z
分配
反向依赖关系 2直接,0间接[细节]
下载 总计13720人(过去30天内有14人)
额定值 2.0(票数:1)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上次成功报告时间:2018年11月13日[所有1个报告]

moo-1.2自述文件

[返回包描述]

------------------------------------------------<穆。用Haskell培育遗传算法>------------------------------------------------\   ^__^\(oo)\_______(__)\)\/\||----w个|||     ||

安装

从Hackage安装

Hackage是Haskell社区的包存档。这就是首先发布包的最新版本。要从Hackage安装Moo,请使用Cabal-install:

  • 安装Haskell Platform或GHC和Cabal-install
  • 运行阴谋集团更新
  • 运行阴谋集团安装moo

带烟囱的安装

堆叠是一个稳定的包存档。堆叠建筑应该可复制。Stackage还提供长期支持版本。要使用Stackage依赖项构建Moo,请使用堆栈工具:

  • 安装堆栈
  • 如有必要,安装GHC:运行堆栈设置
  • 运行:堆栈更新
  • 在项目源目录中运行:堆栈构建
  • 要运行测试:烟囱试验

生成状态

生成状态

特征

||二进制GA |连续GA||-----------------------+----------------------+--------------------------||编码|二进制位串|实值序列|||灰色位串|||-----------------------+----------------------+--------------------------||初始化|随机统一|||约束随机均匀|||任意自定义||-----------------------+-------------------------------------------------||目标|最小化和最大化|||可选缩放|||可选排名|||可选小生境(健身共享)||-----------------------+-------------------------------------------------||选择|轮盘赌|||随机通用抽样|||锦标赛|||可选精英主义|||可选约束|||自定义非自适应^||-----------------------+-------------------------------------------------||交叉|一点|||两点|||制服|||自定义非自适应^||                       +----------------------+--------------------------||BLX-α(混合物)||||SBX(模拟二进制)||||UNDX(通常为单峰||||已分发)||-----------------------+----------------------+--------------------------||突变|点|高斯|||不对称||||恒定频率|||                       +----------------------+--------------------------|||自定义非自适应^||-----------------------+-------------------------------------------------||精英主义取代|代|||稳态||-----------------------+-------------------------------------------------||停止|生成次数||条件|目标函数值|||目标函数暂停|||自定义或交互式(`loopIO`)|||时间限制(`loopIO`)|||复合条件(`And`,`Or`)||-----------------------+-------------------------------------------------||日志|纯周期(任何幺半群)|||周期性,带有`IO`||-----------------------+-------------------------------------------------||约束|约束初始化||优化|约束选择|||死刑||-----------------------+-------------------------------------------------||多目标|NSGA-II||优化|受约束的NSGA-II|

^非自适应:不依赖于生成编号的任何函数

还有其他可能的编码可以表示带有链状基因组(类型基因组a=[a]):

  • 置换编码(是整数,或其他枚举类型)
  • 树编码(作为子树类型)
  • 混合编码(是总和类型)

贡献

有很多方法可以帮助开发库:

  • 我不是以英语为母语的人。如果是,请校对并更正注释和文档。

  • Moo的设计具有实现自定义遗传的可能性记住操作员。如果您编写新的运算符(选择Op,交叉操作,突变Op)或更换策略(StepGA公司),考虑把它们捐给图书馆。请在评论中提及一位学者介绍或研究该方法的工作。解释何时或为什么应该使用它。如果可能,提供测试和示例。

  • 实施一些方法(如自适应遗传算法)将需要更改某些库类型。请讨论您的方法第一。

  • 提供示例。已知最优值已知问题的解决方案和有趣的属性。尽量避免出现同样的例子做作。

一个例子

最小化比尔函数(最佳值f(3,0.5)=0):

进口Moo。遗传算法。连续beale::[双]->双beale[x,y]=(1.5-x+x*y)**2+(2.25-x+x*y*y)**2+(2.625-x+x*y*y*y)**2popsize=101精英化=1公差=1e-6selection=锦标赛选择最小化2(popsize-精英化)交叉=unimodalCrossoverRP突变=高斯突变0.25 0.1step=nextGeneration最小化beale选择优化交叉变异stop=IfObjective(\values->(最小值)<容差)initialize=获取随机基因组popsize[(-4.5,4.5),(-4.5、4.5)]main=做填充<-runGA初始化(循环停止步骤)打印(head.bestFirst最小化$population)

有关更多示例,请参见示例/文件夹。