多目标测试问题

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.上面代码里的setBest()是用于设置待优化问题的理论全局最优解。如果并不知道理论全局最优解是什么,可以不设置setBest()函数。
2.编写目标函数值时要时刻注意满足Geatpy数据结构(详见“Geatpy数据结构”文档),上面代码中执行了Vars = pop.Phen后,得到的Vars为种群所有个体的决策变量组成的矩阵,即每一行对应一个个体的所有决策变量。随后,通过计算得到种群的目标函数值矩阵,赋值给ObjV。然后生成违反约束程度矩阵赋值给CV。Geatpy数据结构中要求种群对象的ObjV和CV都是Numpy array类型的二维数组(这里称之为矩阵),如果自定义aimFunc时ObjV和CV的格式有误,则会导致后面程序抛出异常及相关提示。

上面代码其实是采用了矩阵化的方法“同时”求出所有个体的目标函数值;而在某些时候,无法矩阵化计算,只能单独求出每个个体的目标函数值。此时,需要写一个循环遍历决策变量矩阵Vars的每一行,取出各个个体的决策变量,然后以之求出各个个体的目标函数值。待循环求解完所有个体的目标函数值后,把这些目标函数值拼合成ObjV矩阵即可。