python中N Queens问题适应度函数的按位计算

时间:2018-09-24 06:34:09

标签: python genetic-algorithm n-queens fitness

我正在使用python上的一些AI(我真的很不擅长的语言)来解决N个皇后区问题,我的方法是将电路板表示为N个N个N位的数组,然后将其拼接到适应度函数上< / p>

我需要帮助的部分是适应度函数,我有一个“ Record var”,应该提供正确的解决方案以返回100,并且每个错误都会使结果减少1

如果您不知道N quens问题是什么: here is a detailed explanation

class N_Queens:
    def __init__(self, numeroN):
        assert numeroN > 3, "El numero N (%i) ha de ser mayor de 3." % numeroN
        self.numeroN = numeroN


    def split_list(self, alist, wanted_parts=1):
        ...this works...

    def fitness(self, cromosoma):

        board = self.split_list(cromosoma, self.numeroN)
        record = 100

        for i in range(len(board)):
            if board[i] > 1:
                record = record - 1

        for i in range(len(board)):
            vertical = []
            for j in range(len(board[i])):
                vertical.append(board[i][j])
                            ...And i`m stuck

        return record

我发现一些代码具有这个有趣的功能,但是我不确定它是否可以在我的代码上工作

def positionIsAtacking(self, cromosoma, X, Y):
    for i in range(len(cromosoma)):
        # Check Y
        if (cromosoma[i] == Y):
            return True
        # Check Diagonals
        if (cromosoma[i] - Y == i - X):
            return True
        if (cromosoma[i] - Y == X - i):
            return True
    return False

0 个答案:

没有答案