moea_test_BNH |
moea_test_C-DTLZ |
moea_test_CON |
moea_test_DTLZ |
moea_test_Fonseca |
moea_test_OSY |
moea_test_SRN |
moea_test_UF |
moea_test_WFG |
moea_test_ZDT |
soea_test_Ackley |
soea_test_Beale |
soea_test_Goldstein |
soea_test_Griewangk |
soea_test_Pathological |
soea_test_Rastrigrin |
soea_test_Rosenbrock |
soea_test_Schwefel |
soea_test_Shubert |
soea_test_Sphere |
a280 |
att48 |
ch130 |
eil51 |
eil76 |
kroD100 |
rand400 |
rat195 |
st70 |
ts225 |
自定义问题:
可通过继承问题类(Problem)来完成对问题的相关设置,例如:
自定义问题类用于描述待优化的问题,自定义了问题类后,便可以编写执行脚本调用进化算法模板来完成问题的求解。具体用法可详见“Geatpy快速入门”。
两点注意:
1.上面代码里的calReferObjV()是用于计算或读取目标函数参考值,常常用待优化问题的理论全局最优解作为该参考值,用于后续进行评价进化结果的好坏。如果并不知道理论全局最优解是什么,可以不设置calReferObjV()函数。
2.编写目标函数值时要时刻注意满足Geatpy数据结构(详见“Geatpy数据结构”文档),上面代码中执行了Vars = pop.Phen后,得到的Vars为种群所有个体的决策变量组成的矩阵,即每一行对应一个个体的所有决策变量。随后,通过计算得到种群的目标函数值矩阵,赋值给ObjV。然后生成违反约束程度矩阵赋值给CV。Geatpy数据结构中要求种群对象的ObjV和CV都是Numpy array类型的二维数组(这里称之为矩阵),如果自定义aimFunc时ObjV和CV的格式有误,则会导致后面程序抛出异常及相关提示。
上面代码其实是采用了矩阵化的方法“同时”求出所有个体的目标函数值;而在某些时候,无法矩阵化计算,只能单独求出每个个体的目标函数值。此时,需要写一个循环遍历决策变量矩阵Vars的每一行,取出各个个体的决策变量,然后以之求出各个个体的目标函数值。待循环求解完所有个体的目标函数值后,把这些目标函数值拼合成ObjV矩阵即可。详见: