1.无法导入Geatpy2

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

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.什么是决策变量的“上下界”和“上下边界”?

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

6.如何进行并行计算?

答:对于自定义问题类中的目标函数aimFunc(),由于这部分是开放给用户自由编码的,因此Geatpy中没有内置针对这一部分进行并行计算的模块。假如aimFunc()无法矩阵化计算所有个体的目标函数值,那么速度往往会变慢,此时可以调用Python的一些并行库或者是分布式计算框架来进行计算。

7.找不到getBest()函数。

答:getBest()是v2.3.0版本以前的Problem类的成员函数,用于获取全局最优解的目标函数值的函数。v2.3.0开始,把getBest()更名为getReferObjV(),功能不变。

8. 变异概率如何设置?

答:v2.3.0开始对Geatpy中的变异概率作了统一的规范,变异概率定义为“变异算子所发生作用的最小片段发生变异的概率”,详见文档:http://geatpy.com/index.php/2019/07/28/%E7%AC%AC%E5%85%AD%E7%AB%A0%EF%BC%9A%E5%8F%98%E5%BC%82/

亲爱的用户!欢迎您花1分钟的时间

来填一份调查问卷噢~

点此打开问卷

Geatpy2 v2.3.0现已正式推出!

点此查看公告