我正在尝试构建一个由神经网络控制的代理的简单演化模拟。在当前版本中,每个代理具有前馈神经网络,其具有一个隐藏层。环境包含固定数量的食物,表示为红点。当一个特工移动时,他会失去能量,当他靠近食物时,他会获得能量。具有0能量的代理死亡。神经网络的输入是药剂的当前角度和最接近食物的矢量。每一步,每个代理的运动角度由其神经网络的输出改变。当然,目标是看到寻求食物的行为在一段时间后发展。然而,没有任何反应。
我不知道问题是神经网络的结构(太简单了吗?)还是繁殖机制:为了防止人口爆炸,最初的人口大约是20个特工,随着人口接近50 ,再现机会接近零。当再现确实发生时,通过从头到尾遍历代理列表来选择父代,并检查每个代理是否0到1之间的随机数小于该代理的能量和所有代理人的能量总和。如果是这样,搜索结束并且此代理成为父代,因为我们向该环境添加了此代理的副本,其神经网络中的一个或多个权重有一定的突变概率。
提前致谢!
答案 0 :(得分:6)
如果环境足够温和(例如,它很容易找到食物),那么随意移动可能是一个非常可行的策略,繁殖成功可能远远超过其他任何东西。还要考虑意想不到的后果:例如,如果后代与其父母共处,那么两者在当地都会立即相互竞争,这可能足以导致两者在较长期内死亡。
为了测试你的系统,介绍一个具有“预制”神经网络的人,将个人直接引导到最近的食物(你的模型是这样的东西存在并且很容易写下来,对吧?不,期望它发展是不合理的!)。将这个人介绍给愚蠢群众中的模拟。如果个人没有迅速占据主导地位,则表明您的模拟并未设置为强化此类行为。但如果个人享有生殖成功并且它的后代接管,那么你的模拟正在做正确的事情,你需要寻找其他地方,因为这种行为没有发展。
回复评论时更新:
在我看来,角度和矢量的混合是可疑的。个人是否可以朝着“直接走近最近的食物”的方向发展,这必须取决于你的网络能够近似得到一个atan功能(我持怀疑态度)。再次,这表明更多的测试:
我也对“固定数量的食物”持怀疑态度。 (我假设你的意思是一旦消耗了红点,就会引入另一个红点)。更“现实”的模式可能是以恒定的速度引入食物,而不是强加任何人为的人口限制:人口限制取决于食物供应的限制。例如,如果你每分钟引入100单位食物并且每分钟需要1单位食物来生存,那么你的模拟 应该发现它趋向于100个人的长期平均人口,而不需要钳制以避免“人口爆炸”(虽然繁荣与萧条,盛宴或饥荒动态可能实际上出现取决于细节)。
答案 1 :(得分:4)
这听起来像是Reinforcement Learning的问题,也有一个很好的online textbook。