jmetal的标准测试集中
这一步是必须的,因为在有double vars[] = scaleVariables(solution);//将决策变量基因型转化为表现型
这个函数,无论是其是第一维还是后几维无论是控制收敛还是多样的变量都会将其还原到问题原来的范围。scaleVariable
函数都会将其还原。NSGA-II
的例子,将决策空间到-100-100,其结果较好!NSGA-II
的例子,但是此时将其决策空间缩放到0-1之间,其结果任然很好!,这是NSGA-II,但是已经有实验证明某些算法其实是对统一空间的范围在某些算例中敏感的。 即[0,1]和[-100,100]的决策空间对算法性能影响较大,主要还是进化算子和选择策略以及是否对不同维度变量范围敏感决定的 problemSet.setUnifiedLowerLimit(-100);
problemSet.setUnifiedUpperLimit(100);
但是变量还是约束在原来的范围,即第一维还是控制在在0-1之间 ,这种方式其实没有运用到统一决策空间,而是传统的算法。但是由于scaleVariable
函数在评价解时的默认缩放效果。最终会收敛到一个点。这是因为多样性是靠第一维进行维持的,空间在[-100 - 100],[0,1]只是取了很小的一个子集,就好像前沿上的一个小点一样。全部缩成了一团。即使你的算法跑的很好,由于统一决策空间评价的关系,算法也会显得很烂!