我正在努力为学校做一个实验室。我正在尝试使用遗传算法解决填字游戏。问题是这不是很好(它仍然太随机)我将尝试简要说明我的程序现在是如何实现的:
如果我有拼图(# 是块,0 是空白)
#000
00#0
#000
以及作为该谜题解决方案候选词的集合。我的 DNA 只是作为一维阵列的矩阵。
我的第一组人从我的话包含的字母池中随机生成了 DNA。
我使用轮盘赌选择进行选择。有一些关于组合和突变机会的参数,但如果发生突变,那么我总是会改变 25% 的 DNA。我用我的字母池中的随机字母对其进行更改。(这可能会产生负面影响,因为突变会破坏已经形成的单词)
现在是适应度函数:我横向和纵向遍历矩阵:如果我找到一个单词然后 FITNESS += word.lengh +1
如果我发现一个字符串是某个单词的一部分,那么 FITNESS += word.length / (puzzle_size*4) 。无论如何,它应该给出一个介于 0 和 1 之间的值。因此它可以从“工具”中找到“到”并将 X 广告到 FITNESS,然后在它从“工具”中找到“太”并将另一个 Y 添加到 FITNESS 之后。
我的几代人实际上并没有随着时间的推移而改善。它们看起来是随机的。因此,即使在 400 代之后,池中的 1000-2000(这些数字并不重要),当解决方案应该有 6 个单词时,我也会得到一个包含 1-2 个单词(2 或 3 个字母)的解决方案。