我想从代码中删除静态关键字。但在健身函数方法中,它给了我一个错误。静态关键词在适应度函数方法中是必不可少的吗?
这是给我一个错误的代码。
public void optimize()
{
long l1 = System.currentTimeMillis();
final Factory<Genotype<IntegerGene>> gtf = Genotype.of(IntegerChromosome.of(0, all.length - 1, LEN));
final Engine<IntegerGene, Integer> engine = Engine.builder(eval, gtf).populationSize(1000).build();
System.out.println("engine.getPopulationSize() = " + engine.getPopulationSize());
final EvolutionResult<IntegerGene, Integer> result = engine.stream().limit(500).collect(EvolutionResult.toBestEvolutionResult());
Genotype<IntegerGene> genotype = result.getBestPhenotype().getGenotype();
System.out.println("result = " + genotype);
System.out.println("result.getBestPhenotype().getFitness() = " + result.getBestPhenotype().getFitness());
System.out.println("Time taken : " + (System.currentTimeMillis() - l1));
}
健身功能可以是非静态的还是应该始终是静态的?有人可以帮忙吗?
答案 0 :(得分:0)
我猜测EvolutionResult.toBestEvolutionResult()
是健身功能。如果不是,请纠正我。
你调用它的方式,它必须是一个静态方法,因为EvolutionResult
部分引用的是类,而不是类的实例。
你可以说:
EvolutionResult evolutionResult = new EvolutionResult();
...
final EvolutionResult<IntegerGene, Integer> result =
engine.stream()
.limit(500)
.collect(evolutionResult.toBestEvolutionResult());
然后您已经创建了一个类的实例,并且可以在其上调用方法,因此toBestEvolutionResult()
不再需要static
。