我正在创建一个遗传算法框架,并且有一个包含Tournament
和EvolutionStrategy
对象的种群类,以便可以插入不同的锦标赛类型和进化策略。
目前,我已经对其进行了设置,以便通过从种群中传入EvolutionStrategy
对象来创建新的Population
对象-
EvolutionStrategy strategy = new BasicStrategy(this);
在
BasicStrategy
构造函数中Population pop;
public BasicStrategy(Population pop)
{
this.pop = pop;
}
我对此有两个问题
1)这是否创建适当的参考变量,从而允许在
EvolutionStrategy
中立即访问总体更新,还是应该使用某种形式的同步?2)有更好的方法吗?在
Population
中具有策略的引用变量,在Strategy
中具有总体的引用变量对我来说似乎是浪费。 最佳答案
没事
我认为您应该有一个额外的类,例如EvolutionAlgorithm,用于在其中分别存储人口(根据正在演化的对象)和EvolutionStrategy。当您要扩展种群时,您只需调用以种群为参数的evolutionStrategy方法即可(战略模式)。我认为EvolutionStartegy不需要存储人口。人口也可以没有发展战略就有意义。