零、软件功用和我使用背景
纯学习,一点小小的问题是范例是c++写的,我喜欢用python,所以用python自己写一遍嘛。代码很简单。
一、参考文献及我的评判
二、意外问题一览
三、基本流程命令
题目的要求是用遗传算法,训练一个能走出迷宫的机器人,对各种迷宫提供解决路径。
思路,首先将任意一个迷宫,以一个二维数组来表示,形态如下:
[(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
(1,0,1,0,0,0,0,0,1,1,1,0,0,0,1),
(5,0,0,0,0,0,0,0,1,1,1,0,0,0,1),
(1,0,0,0,1,1,1,0,0,1,0,0,0,0,1),
(1,0,0,0,1,1,1,0,0,0,0,0,1,0,1),
(1,1,0,0,1,1,1,0,0,0,0,0,1,0,1),
(1,0,0,0,0,1,0,0,0,0,1,1,1,0,1),
(1,0,1,1,0,0,0,1,0,0,0,0,0,0,8),
(1,0,1,1,0,0,0,1,0,0,0,0,0,0,1),
(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)]
5为入口,8为出口,1不可行动。
嗯,我写了个遗传算法,思路步骤如下。根据离出口的距离进行评分,距离越小,评分越高。
1、产生100个初始样本,对它们的唯一要求是需要落在可用位置。
2、进行评分,评分高的,会有更大的几率进行交配
3、每次交配产生若干胎儿,并进行变异,仍然存活的会成为新一代
4、重复交配行为,直到再次产生100个样本
4、循环,每100代,保存此100个样本记录。这些样本可用作初始样本,即保存了之前的运算成果。
5、评分达到满分,终止循环,走出了迷宫。
6、或连续100代的最高评分不变,认为已经无法继续进化,终止循环。
最后没有代码只讲思路都是耍流氓,所以代码放在github上。shblhy 嗯。