我正在编写一个C# Windows Forms应用程序,它模拟具有两种对象类型的简单环境(网格):植物和食草动物。食草动物有神经网络,它将周围几个细胞的内容作为输入,决定向哪个方向移动。这个想法是使用适应度函数和遗传算法训练食草动物吃植物。
我的问题是,如果食草动物周围没有任何东西,它会决定向特定方向移动,然后,如果周围仍然没有任何东西,它将再次向同一方向移动。我最终得到的是一些食草动物,它们只是在海峡中移动,实际上根本没有遇到任何植物。
添加时钟信号作为输入(每个位作为神经网络的单独输入)是否会改变这种行为,还是不建议这样做?我还考虑过添加一个只是随机数据(来自高斯分布)的输入来增加一些不可预测性,但我不知道这会帮助还是损害问题。我不确定的另一个想法是,如果为过去的几个动作提供输入(作为一种记忆)可能会解决这个问题。
我认为你需要一个循环网络。您可以跟踪网络所做的最后 N 个决策,然后将它们用作网络的额外输入,以便它对它的发展方向和持续时间有某种了解。它可以在某个时候以这样一种方式演变,以至于它开始进行某种路径查找。
@Can_Alper说的绝对不错。也看看LSTM的。