亲爱的用户,这是Geatpy 2.6.0发行版,整个进化算法框架会更加完善成熟,同时丰富了内核函数的功能,欢迎您进行更新!

本次更新整合了许多用户的反馈意见。

【内核】
1. 修改所有变异和重组算子,支持更加精细的参数控制。支持为染色体的每一位元素设置独立的参数来进行变异/重组。以mutpolyn为例,支持传入的变异概率Pm为一个Numpy行向量,此时Pm的每一位元素表示染色体每一位的是否发生变异的概率。更多新特性可利用help()命令查看API文档。
2. 修改差分变异算子mutde,修复染色体条数为1时会出现的内核崩溃问题。并新增输入参数Mask_N,用于对差分变异过程进行特殊的控制,详见help(geatpy.mutde)。
3. (不向下兼容!)为所有的重组(含交叉)算子增添全局重组(交叉)的模式。并把原本的输入参数“Half”更名为“Half_N”,当传入的Half_N为True/False时,含义与之前的“Half”一致;当它为int正整数时,重组(交叉)算子将采用全局重组(交叉)的模式进行重组(交叉)。
4. 新增ri2bs,用于把RI编码的种群表现型矩阵转换成二进制/格雷码的染色体矩阵。
5. 新增mergecv,用于合并违反约束条件程度矩阵。并且可以根据一定的阈值来统计满足约束条件的个体数目。
6. 大幅提升bs2ribs2realbs2int的性能。但同时限制变量对应的二进制/格雷码编码的长度不能大于31。即一个变量不能用超过31位的二进制/格雷码进行编码。此外,bs2real和bs2int为历史遗留的库函数,推荐使用同功能的bs2ri,将会更加稳定。
7. (不向下兼容!)移除内核函数xovmp。
8. (不向下兼容!)移除内核函数indicator.moea_tracking。
9. 进一步普及自研高性能矩阵计算库的使用,内核不再依赖Python的第三方库(如Numpy, scipy等),内核函数的代码基本完成全面的C化。
10. 修改所有内核函数的API文档,增添对内核函数缩写命名的完整含义描述。

【框架】
1. (不向下兼容!)统一单目标优化和多目标优化算法模板的返回值,均返回进化算法所得的最优个体(Population对象)以及最后一代种群对象。当进化算法到结束时仍未搜索到可行个体时,把原本的抛出异常提示修改为返回一个空的最优个体,即最优个体对象的sizes=0。
2. 修改算法模板的terminated()函数,增设根据MAXTIME来限制进化算法的执行时间。
3. (不向下兼容!)为算法模板新增日志记录的功能,增设三个参数:logTras(控制每多少代记录一次日志,当设为0时,表示不记录日志)、verbose(控制是否在进化过程中输出日志信息)、log(Python字典类型的日志)。
4. 删除算法模板的“遗忘策略”。

5. 为问题类(Problem)新增ReferObjV属性,用于存储目标函数的参考值。在实例化问题类的对象时,其构造函数将会自动调用问题类的getReferObjV()函数,计算出ReferObjV。若没有参考值,则ReferObjV将会被设为None。
6. 
新增允许把maxormins设置为None的功能。当maxormins的元素被设置成全为1时,生成问题类时将自动把maxormins置为None;也可以在自定义问题类的时候手动把maxormins设置为None。当maxormins为None时,内核函数将会自动认为待优化的目标全部是按照“最小化约定”。

【算法】
1. 新增(μ+λ)进化策略。详见soea_ES_miu_plus_lambda_templet.py。
2. 新增Push and Pull Strategy for MOEA/D-DE (带全局存档)算法模板。详见moea_PPS_MOEAD_DE_archive_templet.py。


最后感谢数月以来对我们提供宝贵意见和建议的用户们!
也感谢使用Geatpy进行科研、产品开发的忠实用户们!

Geatpy在线交流群: https://gitter.im/geatpy2/community

Geatpy官网迁移通知

Geatpy2交流群

采用自研高性能矩阵库,体验极速的进化之旅!