我正在编写一个遗传算法来解决分类问题。
我正在按照我在网上看到的其他人所做的完全正确地设置我的配置,但使用我自己的健身功能(必需)。我生成了一个随机基因型来保存我的种群,然后进化这个种群。但是,有时我会收到错误消息“比较方法违反了一般合同!”
我理解这个错误的含义,但由于它是在框架方法 .evolve() 上调用的,所以我不确定我能做什么......
有什么想法/帮助吗?谢谢。
我的设置:
DefaultConfiguration.reset();
Configuration config = new DefaultConfiguration();
config.setPopulationSize(100);
// Setup fitness function
FitnessFunction fit = new HyperrectFitnessFunction(is);
config.setFitnessFunction(fit);
// Get bounds
double[][] bounds = getInstanceSetBounds(is);
// Setup chromosome
Chromosome sample = new Chromosome(config, createSampleGenes(config, attrCount, bounds));
config.setSampleChromosome(sample);
// Generate initial population
Genotype population = Genotype.randomInitialGenotype(config);
// Evolve
int i = 0;
IChromosome bestSolution = null;
for (i = 1; i < 100 + 1; i++) {
population.evolve();
bestSolution = population.getFittestChromosome();
double bestFitness = bestSolution.getFitnessValue();
if (bestFitness > 0.8)
break;
}