Tag: 收敛

如何防止遗传算法收敛于局部最小值?

我正在尝试使用遗传算法构建一个4 x 4数独求解器。 我有一些问题,价值收敛到局部最小值。 我正在使用排名方法并删除最后两个排名的答案可能性,并用两个排名最高的答案可能性之间的交叉替换它们。 为了避免局部mininma的额外帮助,我也使用变异。 如果在特定的生成量内未确定答案,则我的人口中充满了全新的随机状态值。 但是,我的算法似乎陷入局部最小值。 作为健身function,我正在使用: (开放平方的总金额* 7(每个方格可能违规;行,列和方框)) – 违规总数 population是整数数组的ArrayList,其中每个数组都是基于输入的sudoku的可能结束状态。 确定人群中每个arrays的适应度。 有人能够帮助我确定为什么我的算法会收敛于局部最小值,或者可能会推荐一种技术来避免局部最小值。 任何帮助是极大的赞赏。 健身function: public int[] fitnessFunction(ArrayList population) { int emptySpaces = this.blankData.size(); int maxError = emptySpaces*7; int[] fitness = new int[populationSize]; for(int i=0; i<population.size();i++) { int[] temp = population.get(i); int value = evaluationFunc(temp); fitness[i] = maxError – value; System.out.println("Fitness(i)" + […]