我正在尝试为我的算法保存最佳解决方案,该算法可以打印出二进制尺度问题的解决方案。 我的代码正在保存最佳的Fitness结果(最小的数字),但没有保存应该是最佳Fitness的Scales解决方案的最佳Scales解决方案(二进制代码)。
public static ScalesSolution RMHC(ArrayList<Double> weights, int iter) {
if(weights == null || weights.size() == 0 || iter < 1) {
return null;
}
ScalesSolution sol = new ScalesSolution(weights.size());
ScalesSolution newSol = new ScalesSolution(sol.GetSol());
double oldSolFitness = sol.ScalesFitness(weights);
double newSolFitness = 0;
for(int i = 1; i <= iter; i++) {
newSol.SmallChange();
newSolFitness = newSol.ScalesFitness(weights);
if(newSolFitness < oldSolFitness) {
oldSolFitness = newSolFitness;
sol = new ScalesSolution(newSol.GetSol());
}
else if(newSolFitness > oldSolFitness) {
newSolFitness = oldSolFitness;
sol = new ScalesSolution(newSol.GetSol());
}
oldSolFitness = newSolFitness;
System.out.println(newSol.GetSol() + "; " + newSolFitness);
}
return sol;
}
最后,我要保存找到的最佳适应度的解决方案(二进制),而不是保存找到的最后一个解决方案。
如果需要更多信息,请给我发消息,谢谢!