遗传优化与符号回归软件包

bingo-nasa的Python项目详细描述


bingo logo

主人:构建状态coverage status

开发:构建状态coverage statuscodacy badge

一般

bingo是一个用于执行符号回归的开源包,尽管它 可作为通用进化优化包使用。

主要功能

  • 集成的局部优化策略
  • 用mpi4py实现的并行岛屿演化策略
  • 适应度预测因子的共同进化

此时,api仍处于不断变化的状态。当前版本有 更稳定的API,但仍然缺少旧版本的一些功能。

开始

依赖关系

bingo用于python 3.x。 在python中,数据科学中比较常见的依赖关系很少:

  • 努比
  • scipy
  • matplotlib
  • MPI4PY(如果要运行并行实现)
  • pytest,pytest mock(如果要运行测试套件)

包含一个requirements.txt文件,用于轻松安装 pipconda

使用PIP安装:

pip install -r requirements.txt

使用conda安装:

conda install --yes --file requirements.txt

宾格普

一个BIGO的部分是用C++编写的,以提高性能。为了 利用此功能,必须编译代码。见 有关详细信息,请参阅bingocpp子模块中的文档。

注意宾果游戏可以不用宾果的部分,它只会有更低的 性能。

如果bingocpp已正确安装,则应运行以下命令 没有错误。

python -c "import bingocpp"

bingocpp安装过程中的一个常见错误是它必须使用 运行bingo脚本的python的同一版本。最简单的方法 确保一致的python版本控制是在python 3中构建和运行 虚拟环境。

文档

sphynx用于自动生成bingo的api文档。这个 文档的最新版本可以在存储库中找到: doc/_build/html/index.html

运行测试

一个扩展的单元测试套件包括宾果,以确保正确 安装。可以使用tests目录中的pytest运行测试,例如, 通过运行:

pytest tests 

从存储库的根目录。

用法示例

除了这里显示的示例之外,在宾果游戏中开始的最佳地方 是通过浏览示例目录来实现的。它包含几个脚本和 笔记本电脑。

一个简单的bingo进化分析:最大值问题

本例将介绍设置和运行宾果游戏所需的一般步骤 分析。这里描述的示例问题是一个最大值问题。在 一个群体中最大问题的个体是由一个带有 0或1值的列表,例如[0,1,1,0,1]。优化的目标 是一个包含所有1的最优列表。 这个例子是脚本,可以在这里找到

定义染色体生成器

宾果的内置多值染色体在这里使用。这些人 在名为values的列表属性中包含它们的遗传信息。一 染色体生成器用于生成群体成员。这个 多值染色体生成器通过填充 给定输入函数的indivudual的

importnumpyasnpfrombingo.Base.MultipleValuesimportMultipleValueChromosomeGeneratornp.random.seed(0)# seeded for reproducible resultsdefgenerate_0_or_1():returnnp.random.choice([0,1])generator=MultipleValueChromosomeGenerator(generate_0_or_1,values_per_chromosome=16)

定义进化算法

进化算法在宾果游戏中有三个阶段:变化、评估和 选择。变异阶段负责产生 群体,通常通过一些突变和交叉的组合。在 这个例子使用了varor,它通过突变或 交叉(不要两者都有)。

frombingo.Base.MultipleValuesimportSinglePointCrossover,SinglePointMutationfrombingo.Base.VarOrimportVarOrcrossover=SinglePointCrossover()mutation=SinglePointMutation(generate_0_or_1)variation_phase=VarOr(crossover,mutation,crossover_probability=0.4,mutation_probability=0.4)

评估阶段负责评估新会员的健康状况 一个群体。它依赖于fitnessfunction类的定义。 宾果分析的目标是最小化适应度,所以适应度函数 应相应地构造。在一个最大问题中定义了适应度 作为个体中0的个数

frombingo.Base.FitnessFunctionimportFitnessFunctionfrombingo.Base.EvaluationimportEvaluationclassOneMaxFitnessFunction(FitnessFunction):"""Callable class to calculate fitness"""def__call__(self,individual):returnindividual.values.count(0)fitness=OneMaxFitnessFunction()evaluation_phase=Evaluation(fitness)

选择阶段负责选择人口中的哪些成员 进入下一代。公共锦标赛的实现 这里使用选择算法。

frombingo.Base.TournamentSelectionimportTournamentselection_phase=Tournament(tournament_size=2)

基于这些阶段,可以制定一个进化算法。

frombingo.Base.EvolutionaryAlgorithmimportEvolutionaryAlgorithmev_alg=EvolutionaryAlgorithm(variation_phase,evaluation_phase,selection_phase)

创建孤岛并运行分析

孤岛是宾果进化分析的基本单位。它是 负责生成和进化种群(使用生成器和 进化算法)。

pip install -r requirements.txt
0
pip install -r requirements.txt
1

这个岛可以通过它的execute\u generational\u步骤直接进化 成员函数。在这种情况下,种群进化50代

pip install -r requirements.txt
2
pip install -r requirements.txt
3

贡献

  1. 分叉(https://github.com/nasa/bingo/fork" rel="nofollow">https://github.com/nasa/bingo/fork
  2. 创建功能分支(git checkout-b feature/foobar
  3. 提交更改(git commit-am'add some foobar'
  4. 推到分支(git push origin feature/foobar
  5. 创建新的拉取请求

版本控制

我们使用semver进行版本控制。对于可用的版本, 请参阅此存储库上的标记

作者

  • 杰弗里博马里托
  • 凯瑟琳·埃萨姆
  • 伊森亚当斯
  • 泰勒·汤森
  • 戴安娜·维拉

许可证

注意事项

版权所有2018美国政府 国家航空航天局。没有版权是cl瞄准 美国法典第17编。保留所有其他权利。

bingo mini应用程序框架是根据apache许可证2.0版授权的。 (以下简称"许可证");除非符合 许可证。你可以在 [http://www.apache.org/licenses/license-2.0]。

除非适用法律要求或书面同意,否则软件将被分发 根据许可证,是按"原样"分发的,没有保证或 任何形式的条件,无论是明示的还是默示的。查看许可证 管理许可下的权限和限制的特定语言。

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

推荐PyPI第三方库


热门话题
java在滚动视图中,我需要将图像高度设置为设备的活动高度   JavaSpring引导忽略应用程序中的数据源url。yml   java如何使用常量输入多个@CrossOrigins?   java无法在Android Stduio[libGDX]中“构建APK”   java在哪里设置EJB3客户端的webservice主机名   java不能在j2me应用程序中使用图像   java从对象中检索bean属性值   java在Microsoft botframework Android虚拟助手客户端中提供语音通道机密   匿名类中的java限制   java如何判断是否安装了JRE或JDK   java字符串和循环实践测试   tomcat中的java springboot循环依赖