本项目专注于遗传算法与粒子群优化算法的理论研究及编程实践,旨在通过Python等语言实现这些智能计算方法,并应用于函数优化问题求解。
本框架提供了粒子群算法(PSO)与遗传算法(GA)的完整实现,并包含了一套用于改进、应用、测试及结果输出的完整流程。该框架将这两种优化技术进行了逻辑解耦,对各自的改进点进行封装并模块化处理,使用户能够根据自己的需求替换默认组件以创建新的或比较现有算法。
试验数据将以Excel文件形式呈现,并允许通过不同的迭代结束条件选择特定的数据展示方式:
1. 随着迭代次数变化的平均达优率(当设定终止条件区间大于0时)。
2. 迭代过程中随时间推移的最佳值的变化情况(当设定终止条件为等于0时)。
框架中包括了常用基准函数的具体实现,如TSP、01背包问题和Banana及Griewank等数学函数。此外还提供了多种工具方法,例如KMeans聚类算法的实现以及随机序列生成与无效数据修复的方法等等。
对于遗传算法中的二进制编码、整数编码或实数编码方式,粒子群算法的不同拓扑结构及其参数更新策略均有详细支持,并提供接口以供用户开发新的改进方案并整合到框架中进行测试。
此外还特别实现了PSO的离散化版本以及用它来解决01背包问题的具体案例。欢迎参考和提出宝贵建议。代码托管在Google Code项目lakeast上。
以下是某些类的功能说明:
- `org.lakest.common` 包含:
- 定义了变量超出约束范围时处理方式的枚举类型BoundaryType,包括NONE、WRAP、BOUNCE及STICK等四种选项;
- Constraint 类用于表示和控制问题中的各种限制条件。
- Functions 中实现了多种基准函数的具体形式供其他类调用使用;
- 提供了随机序列生成与无效数据修复的方法。
- `org.lakeast.main` 包含了解决具体优化问题的示例代码,以ShafferF6DomainTaskTest为例展示求解过程:
- 入口点位于 ShafferF6DomainTaskTest 类中的 go 函数;
- 设置迭代次数、测试轮次及种群规模等参数,并创建 TestBatch 实例来管理并执行对比不同算法的实验任务;
- 指定 PSO 中因子生成方法,如 ExponentFactorGenerator 和 ConstrictFactorGenerator 两种方式。
- `org.lakeast.pso` 包含粒子群优化相关类:
- 定义了环形拓扑结构及邻域最优更新速度的实现;
所有可被测试的算法需要实现 Testable 接口,而问题实例则需符合 Domain 接口的要求。实验结果将输出到指定路径下的 Excel 文件中,并可通过修改 log4j.properties 来记录运行日志信息。