1.无法导入Geatpy2

解决办法:检查本机安装的Geatpy版本,用强制版本号的方法安装最新版Geatpy,比如:
pip install geatpy==2.2.1

2.无法进行绘图,抛出matplotlib中的一些异常

解决办法:找到python所在的路径,找到Lib文件夹下的site-packages文件夹,把matplotlib相关的文件夹及文件彻底删除。如果是Windows用户,有时候matplotlib会被安装在系统盘/用户/[用户名]/AppData/Roaming/Python的文件夹下,在里面找到matplotlib的文件夹及相关文件,彻底删除。然后控制台重新定位到python所在的路径下的Scripts文件夹,执行pip install matplotlib进行安装。

3.元素是int整数的种群染色体矩阵在调用mutbga等变异算子后,得到的结果虽仍是整数,但它是浮点数float类型。

解决办法:对于mutbga、mutde、mutgau、mutpolyn、mutuni,这些变异算子要求种群染色体编码类型为“RI”(即实数整数混合类型),因此变异是先按实数值来变异,然后对于在译码矩阵中标记了是离散型变量进行四舍五入。因此结果会是浮点“float”类型的,此时如果要把这些离散值用作某些向量的下标,需要对其进行强制类型转换。

4.染色体经过recsbx等重组算子后,得到的新染色体的元素有时会超出所设的边界范围。

解决办法:这里就体现了传统意义的重组和值互换的重组(称之为交叉)的区别。“交叉”是纯粹地交换父代交配个体的染色体片段,而传统意义的重组会带有一定的“变异”的特性,它往往会得到与父代染色体不一样的值,因此它有可能会超出所设边界的范围。在Geatpy中并不会对重组的结果进行越界检查以及修复。而在变异中则会进行越界检查和修复。因此如果想让重组结果全部落在边界范围内,则需要额外调用“boundfix”算子进行边界修复(详见help(ea.boundfix))。如果您在重组算子之后使用了变异算子,那么可以不使用“boundfix”。

5.多目标优化运行结果显示“未找到理论全局最优参考数据!”,意思是找不到寻优结果吗?

答:不是。多目标优化的“理论全局最优数据”是俗称的“真实前沿”数据。它是在编写问题类时在calBest()函数中自定义实现的,它可以通过理论公式计算或是导入已存在的理论最优解数据得到。它并不是指进化算法的寻优结果,而一般用于辅助计算进化收敛效果或其他指标等等。

6.什么是决策变量的“上下界”和“上下边界”?

答:Geatpy在定义问题类时,决策变量需要“上下界”和“上下边界”,其中“上下界”是俗称的决策变量的最大值和最小值;“上下边界”是俗称的决策变量范围的“开闭区间”。例如如果上边界设为1,表示变量区间范围是“右闭”的,如果上边界设为0,表示变量区间范围是“右开”的。