GAFT 是一个使用 Python 实现的遗传算法框架。
目前框架只是完成了最初的版本,比较简陋,内置了几个基本的常用算子,使用者可以根据接口规则实现自定义的算子并放入框架中运行。
GAFT 文件结构
此部分对框架的整体结构进行介绍
. ├── LICENSE ├── MANIFEST.in ├── README.rst ├── examples │ ├── ex01 │ └── ex02 ├── gaft │ ├── init.py │ ├── pycache │ ├── analysis │ ├── components │ ├── engine.py │ ├── operators │ └── plugin_interfaces ├── setup.cfg ├── setup.py └── tests ├── flip_bit_mutation_test.py ├── gaft_test.py ├── individual_test.py ├── population_test.py ├── roulette_wheel_selection_test.py └── uniform_crossover_test.py
目前的文件结果如上所示,
/gaft/components中定义了内置的个体和种群类型,提供了两种不同的遗传编码方式:二进制编码和实数编码。
/gaft/components
/gaft/plugin_interfaces中是插件接口定义,所有的算子定义以及on-the-fly分析的接口规则都在里面,使用者可以根据此来编写自己的插件并放入到engine中。
/gaft/plugin_interfaces
/gaft/operators里面是内置遗传算子,他们也是遵循/gaft/plugin_interfaces中的规则进行编写,可以作为编写算子的例子。其中算子我目前内置了roulette wheel选择算子,uniform 交叉算子和flipbit变异算子,使用者可以直接使用内置算子来使用gaft对自己的问题进行优化。
/gaft/operators
/gaft/analysis里面是内置的on-the-fly分析插件,他可以在遗传算法迭代的过程中对迭代过程中的变量进行分析,例如我在里面内置了控制台日志信息输出,以及迭代适应度值的保存等插件方便对进化曲线作图。
/gaft/analysis
/gaft/engine便是遗传算法的流程控制模块了,他将所有的之前定义的各个部分组合到一起使用遗传算法流程进行优化迭代。
/gaft/engine