很抱歉,如果我在写这样的移动设备上,我试图让它快,这是不明确的。在用户界面中使用GA
我写了一个基本的遗传算法与建立一个适应值,并使用锦标赛选择,突变和交叉通过多次迭代进化的二进制编码(基因)。作为一个基本的命令行示例,它似乎起作用。
我有这个问题是因为我写一个使用GA找到通过迷宫的方法的迷宫解决程序的GUI中应用遗传算法。如何将我的随机二进制编码基因和适应度函数(将所有二进制值加在一起)转换为控制迷宫周围bot的方法?我用Java构建了一个基本的图形用户界面(GUI),其中包含一系列标签(如网格),可用路由为蓝色,墙壁为黑色。
重申我的遗传算法执行得很好,包含任何典型的遗传算法(健身方法,获取和设置种群,选择,交叉等),但现在我需要将其插入GUI以使我的迷宫运行。为了获得一个可以在不同方向移动的机器人,需要去哪里取决于GA所说的内容?如果可能的话
按照要求,一个人是使用一个单独的类(逐张)建,与所有的主要工作正在波普类完成粗糙的伪代码将是巨大的。当一个新个体被实例化时,一个int数组代表所述个体的基因,随机从0到1之间的数字中挑选基因。适应度函数仅将这些基因的值加在一起,并且在Pop类中处理选择,两个选定个体的突变和交叉。除此之外,命令行程序仅显示n代以上的进化,总体适应度在每次迭代中都有所提高。
编辑:它开始让更多的意义,现在,虽然有被窃听我的几件事情...
正如亚当斯基曾建议我想创建一个“代理”与如下所示的选项。我遇到的问题是随机比特串在这里发挥作用。代理知道墙壁在哪里,并且以4位字符串(即0111)排列,但这对随机32位字符串有什么影响? (即10001011011001001010011011010101)如果我有以下迷宫(x为出发地,2是目标,1是墙):
x 1 1 1 1
0 0 1 0 0
1 0 0 0 2
如果我左转,我面对错误的方式,代理将如果向前移动,则完全离开迷宫。我认为第一代的字符串是完全随机的,随着健身的增长它会发展,但我不明白字符串如何在迷宫中工作。
因此,为了得到这个直...
健身是当代理能够移动,是一堵墙的结果。
基因是一串32比特,分成16组2比特以显示可用的动作,机器人移动两比特需要通过代理显示中的四位传递其靠近墙壁的位置。如果移动是通过墙壁移动,则该移动不被执行,并且被认为是无效的,如果移动已经完成,并且如果发现新的墙壁,则健身状态会上升。
是吗?
也许你可以提供一些关于每个进化个体中编码信息的更多细节? – 2010-02-18 11:16:45
我编辑了主要问题,但目前没有真正重要的编码,此刻每个个体有500个基因,随机数字方法在其中添加1或0。 – AlexT 2010-02-18 11:24:07