GAFTPython 實現(xiàn)的遺傳算法框架
GAFT 是一個使用 Python 實現(xiàn)的遺傳算法框架。
目前框架只是完成了最初的版本,比較簡陋,內(nèi)置了幾個基本的常用算子,使用者可以根據(jù)接口規(guī)則實現(xiàn)自定義的算子并放入框架中運行。
GAFT 文件結(jié)構(gòu)
此部分對框架的整體結(jié)構(gòu)進行介紹
.
├── 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
目前的文件結(jié)果如上所示,
/gaft/components中定義了內(nèi)置的個體和種群類型,提供了兩種不同的遺傳編碼方式:二進制編碼和實數(shù)編碼。/gaft/plugin_interfaces中是插件接口定義,所有的算子定義以及on-the-fly分析的接口規(guī)則都在里面,使用者可以根據(jù)此來編寫自己的插件并放入到engine中。/gaft/operators里面是內(nèi)置遺傳算子,他們也是遵循/gaft/plugin_interfaces中的規(guī)則進行編寫,可以作為編寫算子的例子。其中算子我目前內(nèi)置了roulette wheel選擇算子,uniform 交叉算子和flipbit變異算子,使用者可以直接使用內(nèi)置算子來使用gaft對自己的問題進行優(yōu)化。/gaft/analysis里面是內(nèi)置的on-the-fly分析插件,他可以在遺傳算法迭代的過程中對迭代過程中的變量進行分析,例如我在里面內(nèi)置了控制臺日志信息輸出,以及迭代適應(yīng)度值的保存等插件方便對進化曲線作圖。/gaft/engine便是遺傳算法的流程控制模塊了,他將所有的之前定義的各個部分組合到一起使用遺傳算法流程進行優(yōu)化迭代。
