我正在使用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