概括:
我正在教机器人在运动场上挑选食物。有些食物有毒,有些食物很好。
食物详情:
- 有毒食物减分,好食物加分。
- 食物点因其大小而异。
- 有毒食物与好食物的比例约为 9:1,因此更多的机会以负数告终。
- 食物加班点数增长。
- 食物在某些预定大小变得有毒后变质。
健身功能:
我使用的适应度函数只是在迭代结束时计算点数。机器人可能会选择吃掉它或跳过它。
问题:
我遇到的问题是,在第一代中,大多数机器人吃了很多坏东西,而好奇的东西最终变成了负数。所以,大部分成功的都是那些懒惰、不吃东西或不去吃东西的人,而且大多数时候,最适合前几代人的结果是 0 分和 0 吃任何种类的食物食物。
经过长时间的训练,他们最终只是等待食物而不是多次进食。通常,当他们等待时,食物变质了,他们最终会去吃另一种食物。这样,在迭代结束时,我就有了一些赢家,但他们远未达到他们本来可以达到的潜力。
问题:
我不知何故需要权衡吃食物的重要性。我希望他们最终学会吃饭。
所以我想到了这个:
brain.score += foodValue * numTimesTheyAteSoFar
但这使分数过高,现在食品质量没有得到尊重,他们只是吞食略高于 0 的任何东西。