我正在试图找出如何使用遗传算法来解决N个皇后。
程序正常运行并编译,但不会产生我之后的结果。我想要显示每个女王的x,y坐标,只需在输出上打印出来。然而,我在输出上得到随机垃圾,我无法弄清楚原因。
当前输出示例:
(0,0) (1,3248234234) (2,0) (3,-3248236736) (4,57435727) (5,234743567) (6, 23498348) (7,23487234)
期望的输出示例(N皇后问题的解决方案):
(3,4) (7,2) (0,3) (4,6) (6,5) (1,7) (5,1) (2,0)
答案 0 :(得分:2)
不确定这是否是您特定问题的原因,但这是一个问题:
for(i=0;i<POP;i++) for(int j=0;j<SIZE;j++) population[i][j] = getRand(SIZE);
while(done == 0){
for(i=0;i<POP;i++){
if(getWeight(children[i]) == 28){
printf("solution: ");
printArray(children[i]);
done = 1;
}
}
以上是人口的初始化和循环的开始。在第一次通过时,children数组包含未初始化的数据。
鉴于算法的其余部分,您需要检查population
元素的权重(并打印来自population
的元素),如果它是胜利者,而不是children