我正在研究遗传算法,现在我一直坚持填充,因为链接类的两个独立的数组实例似乎互相影响,我无法弄清楚原因。
这是我的问题的相关代码,如果您需要更多,请告诉我们:
private ArrayList<Link> mNetwork = new ArrayList<Link>();
private ArrayList<Link> network = new ArrayList<Link>();
public GeneticAlgorithm(ArrayList<Link> network, int populationSize,
int tournamentsSize, double crossoverProb, double mutationProb) {
mNetwork = network;
mPopulationSize = populationSize;
mTournamentsSize = tournamentsSize;
mCrossoverProb = crossoverProb;
mMutationProb = mutationProb;
createInitialPopulation();
}
public void createInitialPopulation() {
for(int z = 0; z < mPopulationSize; z++){
network = mNetwork;
for(int i = 0; i < network.size(); i++){
int linkRan = ran.nextInt(10);
if(linkRan == 6){
network.get(i).setActive(1);
if(mNetwork.get(i).getActive() ==network.get(i).getActive(){
System.out.println("These Shouldn't match");
}
}
else{
network.get(i).setActive(0);
}
}
}
}
“这些不应该匹配”每次打印出来,我不知道为什么,这是一个问题,因为我想使用初始网络作为填充时重置值的方法。
此外,Link类没有设置为静态或类似的东西,但如果你想看到更多的代码只是问,因为我很确定这应该是所有必要的,但它很可能不会是