人工生命与神经网络

时间:2013-02-21 17:44:38

标签: python artificial-intelligence neural-network artificial-life

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

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

提前致谢!

2 个答案:

答案 0 :(得分:6)

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

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

回复评论时更新:

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

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

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

答案 1 :(得分:4)

这听起来像是Reinforcement Learning的问题,也有一个很好的online textbook