Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 人工生命与神经网络_Python_Artificial Intelligence_Neural Network_Artificial Life - Fatal编程技术网

Python 人工生命与神经网络

Python 人工生命与神经网络,python,artificial-intelligence,neural-network,artificial-life,Python,Artificial Intelligence,Neural Network,Artificial Life,我试图建立一个简单的进化模拟的代理人控制的神经网络。在当前版本中,每个代理都有一个带有一个隐藏层的前馈神经网络。环境包含以红点表示的固定数量的食物。当一个特工移动时,他会失去能量,当他靠近食物时,他会获得能量。能量为0的代理死亡。神经网络的输入是代理的当前角度和最近食物的向量。每个时间步,每个代理的运动角度都会根据其神经网络的输出而改变。当然,我们的目的是观察寻找食物的行为在一段时间后的演变。然而,什么也没有发生 我不知道问题是神经网络的结构(太简单?)还是繁殖机制:为了防止种群爆炸,初始种群约

我试图建立一个简单的进化模拟的代理人控制的神经网络。在当前版本中,每个代理都有一个带有一个隐藏层的前馈神经网络。环境包含以红点表示的固定数量的食物。当一个特工移动时,他会失去能量,当他靠近食物时,他会获得能量。能量为0的代理死亡。神经网络的输入是代理的当前角度和最近食物的向量。每个时间步,每个代理的运动角度都会根据其神经网络的输出而改变。当然,我们的目的是观察寻找食物的行为在一段时间后的演变。然而,什么也没有发生

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


提前谢谢

这听起来像是一个问题,但也有一个好处。

如果环境足够好(例如很容易找到食物),那么随意移动可能是一个完全可行的策略,而繁殖成功受运气的影响可能远大于其他因素。也考虑非预期的后果:例如,如果子代与它的亲本共有,那么它们都立即在局部区域相互竞争,这可能是不利的,导致两者的长期死亡。

为了测试你的系统,请介绍一个有“预制”神经网络的个体,该神经网络可以引导个体直接走向最近的食物(你的模型是这样的,这样的东西是存在的,并且很容易写下来,对吧?如果不是,那么期望它进化是不合理的!)。在哑巴人群中把那个人介绍到你的模拟中。如果个体没有很快占据主导地位,这表明你的模拟没有强化这种行为。但是,如果个体享受生殖成功,并且由它及其后代接管,那么你的模拟是在做正确的事情,你需要寻找其他地方,寻找这种行为没有进化的原因

回应评论的最新情况:

在我看来,这种角度和向量的混合是可疑的。个体是否能进化到“直接向最近的食物移动”的行为,必须取决于你的网络对atan函数的逼近程度(我对此持怀疑态度)。同样,这建议进行更多的测试:

  • 把所有的生态模拟放在一边,只需测试干扰种群 你的随机网络的风格,看看他们是否能朝着预期的功能发展
  • (越简单越好)让网络输出一个向量(而不是一个角度):个体应该移动的方向(当然这意味着有两个输出节点而不是一个)。显然,“直接走向食物”策略只是“走向食物”向量组件的直接传递,有趣的是,看看你的随机网络是否朝着这个简单的“身份函数”发展(也应该允许引入一个如上所述的现成优化个体)

我对“定量食物”也持怀疑态度。(我想你的意思是,一旦一个红点被消耗掉,就会引入另一个红点)。一个更“现实”的模式可能是以恒定的速度引入食物,而不是强加任何人为的人口限制:人口限制取决于食物供应的限制。e、 g如果你每分钟摄入100单位的食物,个体每分钟需要1单位的食物才能生存,那么你的模拟应该会发现,它倾向于100个个体的长期平均种群,而不需要任何钳子来避免“种群爆炸”(尽管繁荣和萧条、盛宴或饥荒的动态实际上可能会根据细节而出现)。

你所说的“什么都没发生”到底是什么意思?代理随机移动,不时改变方向,但不寻找食物。顺便说一句,如果你还没有遇到这种情况,并且需要对此类项目的一些灵感,请阅读:谢谢,这是个好主意,但我不确定如何选择正确的权重。我使用tanh(x)作为一个激活函数。设a,b,c为权重,α,dx,dy分别为试剂的角度,离最近食物的水平距离和垂直距离。我想要这样的a,b,c,这样tanh(aalpha+bdx+c*dy)=ε*(tan(dy/dx)-alpha)-我想要输出是到食物的角度差(tan)的常数倍(dy/dx))到当前角度。这是一个有3个未知量的方程。顺便问一下,你对我描述的繁殖机制有什么看法?我按照你的建议,将网络输出设为一个向量,几分钟后,觅食行为就进化出来了!谢谢(-):这一重大变化的原因是什么?直观地说,向量包含了关于角度的信息和关于幅度的不太相关的信息,因此,与输出为简单标量(角度)时相比,可能会产生更糟糕的结果…我猜:因为神经网络模型更容易向简单的方向发展食物方向到运动方向的“传递”比它们进化出atan功能更重要。