人工生命与神经网络

use*_*774 8 python artificial-intelligence artificial-life neural-network

我正在尝试构建一个由神经网络控制的代理的简单演化模拟.在当前版本中,每个代理具有前馈神经网络,其具有一个隐藏层.环境包含固定数量的食物,表示为红点.当一个特工移动时,他会失去能量,当他靠近食物时,他会获得能量.具有0能量的代理死亡.神经网络的输入是药剂的当前角度和最接近食物的矢量.每一步,每个代理的运动角度由其神经网络的输出改变.当然,目标是看到寻求食物的行为在一段时间后发展.然而,没有任何反应.

我不知道问题是神经网络的结构(太简单了吗?)还是繁殖机制:为了防止人口爆炸,最初的人口约有20个特工,随着人口接近50,再生机会接近零.当再现确实发生时,通过从头到尾遍历代理列表来选择父代,并检查每个代理是否0到1之间的随机数小于该代理的能量与该代理的总和之间的比率.所有代理人的能量.如果是这样,搜索结束并且该代理成为父代,因为我们向该环境添加该代理的副本,其神经网络中的一个或多个权重具有一定的突变概率.

提前致谢!

tim*_*day 6

如果环境足够温和(例如,它很容易找到食物),那么随机移动可能是一个非常可行的策略,繁殖成功可能远远超过其他任何东西.还要考虑意想不到的后果:例如,如果后代与其父母共处,那么两者都会立即在当地区域相互竞争,这可能足以导致两者在较长期内死亡.

为了测试你的系统,介绍一个具有"预制"神经网络的人,将个人直接引导到最近的食物(你的模型是这样的东西存在并且很容易写下来,对吗?如果没有,它是期望它进化是不合理的!).将这个人介绍给愚蠢群众中的模拟.如果个人没有迅速占据主导地位,则表明您的模拟并未设置为强化此类行为.但是如果个体享有生殖成功并且它及其后代接管,那么你的模拟正在做正确的事情,你需要寻找其他地方,因为这种行为没有发展.

更新以回应评论:

在我看来,角度和矢量的混合是可疑的.个人是否可以朝着"直接走向最近的食物"的方向发展,这必然取决于你的网络能够近似得到一个atan函数(我持怀疑态度).同样,这表明更多的测试:

  • 抛开所有的生态模拟,只是测试扰乱你的随机网络风格的人口,看看他们是否可以朝着预期的功能发展.
  • (更简单,更好)让网络输出一个向量(而不是一个角度):个人应该移动的方向(当然这意味着有2个输出节点而不是一个).显然,"直接走向食物"战略只是"朝向食物的方向"矢量组件的直接传递,然后有趣的是看看你的随机网络是否朝着这种简单的"身份功能"发展(也应该允许引入如上所述的现成优化个体.

我也怀疑"固定数量的食物".(我假设你的意思是一旦消耗了红点,就会引入另一个红点).更"现实"的模式可能是以恒定的速度引入食物,而不是强加任何人为的人口限制:人口限制取决于食物供应的限制.例如,如果你每分钟引入100单位食物并且每分钟需要1单位食物来生存,那么你的模拟应该发现它倾向于100个人的长期平均人口,而不需要钳子来避免"人口爆炸" "(虽然繁荣与萧条,盛宴或饥荒的动态实际上可能会出现,具体取决于细节).