
遗传算法和粒子群算法得到了应用。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本框架提供了关于粒子群算法(PSO)和遗传算法(GA)的完整实现,并包含一套用于改进、应用、测试、结果输出的全面框架。该框架对粒子群算法与遗传算法进行逻辑分离,对其中的改进点进行封装,并采用模块化设计,使用者可以根据自身需求对该模块进行改进替换默认实现,从而构建新的改进算法并与已有算法进行对比试验。试验结果以Excel文件形式输出,并且允许用户设定不同的迭代结束方式来选择试验数据的输出格式,包括:1. 输出随迭代次数变化的平均达优率数据(在终止条件区间大于0的情况下),以及2. 输出随迭代次数变化的平均最优值数据(当终止条件区间等于0时)。 此框架内包含了常用基准函数的实现,以及遗传算法和粒子群算法对其求解方案的实现和对比,例如TSP、01背包、Banana函数和Griewank函数等。此外,它还提供了大量工具方法,如KMeans聚类、随机序列生成以及无效序列修补方法等等。 进一步而言,该框架支持遗传算法的二进制编码、整数编码、实数编码以及整数序列编码(用于求解TSP等问题),粒子群算法的各种拓扑结构,以及两种算法参数的各种更新方式均有实现。 同时,它还提供了一个接口供使用者实现新的改进方式并将其整合入框架中进行试验。 此外,该框架还包括了对PSO进行离散化的支持接口,并提供了一种基于该设计的离散PSO方法及其用于求解01背包问题的示例代码。 欢迎您参考并提出宝贵意见, 特别是欢迎愿意协同更新和修补代码的朋友通过邮箱starffly@foxmail.com联系。 代码已作为lakeast项目托管在Google Code: http://code.google.com/p/lakeast 和 http://code.google.com/p/lakeast/downloads/list 上。 某些类的功能说明:org.lakest.common中定义了BoundaryType枚举, 用于指定变量超出约束范围时采取的处理方式, 包括NONE(不处理)、WRAP(加减若干整数个区间长度)、BOUNCE(超出部分向区间内部折叠)和STICK(取超出方向的最大限定值)。 Constraint类则代表了变量约束范围的定义。 Functions类包含了若干基准函数的具体实现, 以供其他类统一调用。 InitializeException类定义了一个异常类, 用于表示程序初始化过程中出现的错误。 Randoms类的各个静态方法用于产生各种类型的随机数以及快速生成随机序列。 Range类实现了判断变量是否超出约束范围的方法, 以及将超出约束范围的变量根据一定原则修正到约束范围的方法。 ToStringBuffer是一个将数组转换为字符串表示形式的类。 org.lakest.ga.skeleton中定义了AbstractChromosome接口, 用于抽象染色体的公共方法;AbstractDomain抽象类则用于定义问题域相关的计算与参数;AbstractFactorGenerator抽象类负责产生交叉概率和变异概率的共同方法。 BinaryChromosome是采用二进制编码实现的染色体具体实现;ConstantFactorGenerator则将交叉概率和变异概率定义为常量;ConstraintSet用于在计算过程中保存和获取应用问题的各个维度的约束;Domain接口是遗传算法求解中所有问题域必须实现的接口;EncodingType枚举表明染色体的编码类型, 包括BINARY(二进制)、REAL(实数)和INTEGER(整型)。 Factor封装了w、c1、c2三个参数的值。 最后,Population定义了染色体种群的行为, 包括种群的迭代、轮盘赌选择及交叉操作以及最优个体的保存机制。
全部评论 (0)


