我努力做一个实验室的学校。我正在尝试使用遗传算法解决纵横字谜。 问题是,这不是很好(它仍然是过于随机) 我会尝试给我现在如何执行我的程序的简短说明:解决与遗传算法,健身,突变纵横字谜
如果我有困惑(#是块,0是空的空间)
#000
00#0
#000
以及这个拼图的解决方案的候选词的集合。 我的DNA只是作为一维数组的矩阵。
我的第一套个人从我的单词包含的字母池中随机生成DNA。
我使用轮盘赌选择做选择。 关于组合和突变的几率有一些参数,但如果突变会发生,那么我将总是改变25%的DNA。 我从我的信池中随机字母改变它(这可能有负面影响,因为突变可以破坏已经形成的话)
现在的适应度函数: 我都horizontaly和verticaly遍历矩阵: 如果我找到一个词,然后健身+ = word.lengh +1
如果我找到一个字符串是一个字的一部分,然后健身+ = word.length /(puzzle_size * 4)。无论如何,它应该给出一个介于0和1之间的值。 因此,它可以从“tool”和广告X中找到“FITNESS”,然后在“tool”中找到“too”并将另一个Y添加到FITNESS。
我的这代人实际上并没有随着时间而改善。他们显得随机。 所以即使经过400代1000-2000的池(这些数字并不重要),当解决方案应该有6个单词时,我会得到1-2个字(2或3个字母)的解决方案。
一行可能包含多于1个单词,如:#tool#pink – Blitzkr1eg 2011-05-02 17:47:35
然后,健身可能是#行中正确的单词/每行可能的单词数量。我认为字长是无关紧要的 – 2011-05-02 18:02:34