代码拉取完成,页面将自动刷新
这是使用 C++ 实现的遗传算法,遗传算法针对不同问题实现起来细节可能不一样,这里罗列一下当前的实现方式具有的特性:
main.cpp
中run
方法的输入参数来改变另外,程序通过面向对象方式实现且类名称和文件名存在严格的对应关系,命名都采用驼峰命名法,以及虽然不多但是每个方法和成员属性都有中文注释。
Cmake
推荐使用版本3.10以上的,否则参考CMakeLists.txt
中的注释修改版本。GCC
推荐使用支持 C++ 17 的 GCC 编译器,否则参考CMakeLists.txt
中的注释修改 C++ 的版本需求。程序的源码没有使用更高级的语言特性,但是至少需要 C++ 11 才能运行起来。注:仓库代码在 GNU Linux 环境下能使用, C++ 源码编写时没有用到标准库以外的 API ,因此源码是支持跨平台使用的。理论上 Cmake 配置可以在 Windows 和苹果电脑上使用,但是我没有试过。
我只在GNU Linux
操作系统上使用,如果需要在别的系统上使用需要自己想办法……
这是使用Cmake
工具管理的 C++ 项目,所以按照正常使用CMake
的方法构建就行,下面是构建示例:
$ cmake -S src -B build
$ cmake --build build
然后在build
目录下会产生一堆文件,包括可执行程序GeneticAlgorithm.out
。执行程序:
$ ./GeneticAlgorithm.out
代数=0, 最大适应度=21.2265, 个体信息=Fitness=21.2265,v1=1.16928,v2=1.35803
代数=1, 最大适应度=21.2265, 个体信息=Fitness=21.2265,v1=1.16928,v2=1.35803
代数=2, 最大适应度=34.1127, 个体信息=Fitness=34.1127,v1=0.881568,v2=0.784435
代数=3, 最大适应度=75.6878, 个体信息=Fitness=75.6878,v1=0.943324,v2=0.88987
代数=4, 最大适应度=98.7995, 个体信息=Fitness=98.7995,v1=1.01102,v2=1.02211
结束。
如果需要针对别的问题调整算法,那么需要修改源码。这里假设你知道遗传算法的原理且能使用 C++ ,那么根据需要你可能会修改下面列举的文件:
main.cpp
程序入口在这里,算法参数也在这里MainProcess.cpp
和MainProcess.h
算法整体的执行流程在这里控制PopulationFactory.cpp
和PopulationFactory.h
需要创建种群对象时优先采用这里定义和实现的工厂类,调整种群创建方式或添加不同创建方式的话也优先考虑将逻辑放在这里面Population.cpp
和Population.h
种群类,与种群实例互动、通信的方法在这里面ChromosomeFactory.cpp
和ChromosomeFactory.h
染色体创建的工厂类,包含创建染色体的不同方式Chromosome.cpp
和Chromosome.h
染色体类(一个染色体就是种群里的一个个体),实现方式不区分染色体和个体,如果需要区分染色体和个体那么得单独拆分出个体类,如果不需要区分的话,染色体和个体的对外互动、通信的方法都在这里面另外,GlobalCppRandomEngine.cpp
和GlobalCppRandomEngine.h
目前只是在全局提供随机数引擎。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型