遗传算法无法产生更好的结果

时间:2017-04-02 02:31:54

标签: genetic-algorithm genetic fitness

我正在运行一种遗传算法来训练一组猎人,以学习捕捉尽可能多的大象。基本上,有大约20个猎人在2D网格环境中移动,4个猎人必须围绕大象捕捉它(世界上有大约20只大象)。每次模拟运行时,所有猎人和大象都被放置在随机的起始位置。猎人的运动由其染色体控制,大象的运动是随机的。

所有猎人都有相同的染色体(同质),因此我每次在为染色体分配适应性时运行此模拟。 我的健身功能只是简单地奖励染色体中模拟中捕获的大象总数:

double fitness = totalElephantsCaptured() * 100;

世代的适应性结果基本上是随机的。随着世代的进步,每一代人中最适合的个体并不会变得更加健康,每一代人的总体适应度不会增加。我觉得我的健身功能太原始了,但我不知道如何改变它以产生更好的效果。猎人似乎并没有学到任何东西。

我的GA的详细信息(范围内的数字,因为我尝试了各种值):

  • 人口规模:64或128。

  • 代数上限:500 - 1000。

  • 精英主义:5% - 10%的人口

  • 突变:1% - 4%

  • 染色体大小:180

  • 选择:轮盘赌。

  • Crossover:染色体中间的简单交叉。

染色体是根据传感器数据在运动规则的“块”中设计的:

每个块具有传感器标准(例如“如果最近的大象是X距离”)和移动规则(例如“在Y量的时间内向最近的大象移动”)。猎人可以移向最近的大象或最近的队友亨特。

有没有人有任何建议让猎人的健康随着几代人的增加逐渐增加?

0 个答案:

没有答案