N - Queens的C - 遗传算法

时间:2017-03-30 09:47:40

标签: c algorithm genetic

我正在试图找出如何使用遗传算法来解决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)

1 个答案:

答案 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