2007-11-26 15:50:18| 分类: 智慧世界 - Intel | 标签: |字号大中小 订阅

系统开始时的状态
星期六开始运行这个简单设置的环境,模拟个体所能获得的输入包括周围个体数目、自己的当前速度、角度、HP以及最近目标的相对位置,离目标越近HP减少得越慢,存活时间越长者适应度越高。系统中人口数为100,个体和基因一一对应。
刚开始的情况是完全随机,模拟个体的大脑完全由各种随机的、最小结构的神经网络支持。
上面的图是运行大概十分中后的截屏。左边的图中可以看到多于一半的个体开始有向目标移动的趋势,个体速度也由最初的随机值(基本上是很小的速度)趋向于较大值。从场景的分析可以得出,这是向全局最优解靠近的正确方向。
再运行一段时间后(>1000秒),右边的图中可以看到部分优势个体除了向目标靠近外,到达目标后产生了“刹车”的趋势,以达到徘徊于目标附近的目的。这个结果就该场景而言已经很接近最优解了。
这次试验发觉,对基本的NN(神经网络)进化而言,程序员仍然有一个工作要做,那就是得依据环境和个体的情况分析出NN的输入和输出,包括其个数和意义!可以联想到游戏中策划的这个工作也正是巨大的,如果设计一个NPC,得事先“规定”好它们的有效行为有哪些,它们的有效输出是什么。策划必须以专业知识指出哪些输入、输出是有用的,而且限于分析和程序承受量,还得尽量以最少的输入输出进行设计,即有效的“Feature Select”。对NN而言,输入和输出的个数增加特别是多余的输入和输出(比如现在我试验中的“周围个体数目”对完成任务的NN来说就是一多余输入),对NN的进化和执行性能均带来巨大负担!因此,FeatureSelect的工作就更加重要和繁重了。
我尝试在系统中对NN的输入和输出不加以严格定义,将目前我能提供的所有信息全部作为NN的输入(达21个之多),目标位置检测采用在个体360度范围内均匀放置物体传感器(sensor)。类似于昆虫的复眼,每个传感器对相应方向上范围中的物体进行探测。
根据遗传神经网络算法的特征,可以将“对输入的选择”本身也进行进化,从而找到合理的最小输入集!
接下来的几天,我将对目标的位置进行随机的变换,看这些个体能否进一步学会追踪不同位置的目标;接着可能给个体增加一个“eat”的行为对应NN的一个新的输出,然后看试验结果。
转发至微博
转发至微博
评论