【问题标题】:genetic algorithm - fitness function遗传算法 - 适应度函数
【发布时间】:2020-05-12 18:51:59
【问题描述】:

我正在努力研究遗传算法和神经网络,并在网络上看过几个视频。其中一些是寻路算法,例如搜索奶酪的鼠标。

适应度函数为每只老鼠提供一种分数,以评估它们的表现。在空荡荡的房间里,老鼠到奶酪的距离将是一个很好的健身分数指标,因为它们可以“看到”奶酪并且必须学会去那里。但是,在一个装满盒子的房间里,什么会是好的健身功能?距离会假设他们知道往哪个方向走,因为如果我给那些减少距离的人打分,那么最终所有的老鼠都会朝那个方向走……如果我把奶酪移到另一个地方,它们会发疯的。 ..只是他们移动的距离也不好,因为一个在圆圈中移动的人得分很高......

对于这个问题,什么是好的适应度函数?

【问题讨论】:

    标签: neural-network genetic-algorithm


    【解决方案1】:

    您确定没有将遗传算法与传统寻路算法混为一谈吗?两者都有某种适应功能。在寻路的情况下,“启发式”通常就是所谓的。对于这些算法,必须假定在执行算法时使用“适应度”(或者更喜欢加速算法)。

    实际遗传算法中的适应度函数相对精确,但那是因为它通常更多的是一种评估。 例如,您使用当前值执行模拟并计算鼠标找到奶酪所需的时间。所经过的时间或距离是逆适应度(相反,因为数字越大意味着适应度越低)。 如果适应度比以前的运行好,您可以使用稍微不同的设置(通过变异、随机性等生成)分支新的模拟,并每次评估什么提高了适应度,什么没有提高(-> 适者生存)。如果适应度更差,放弃这个分支(或者每 XX 次遇到一个坏分支就保留它;“可能它在一个好的路上”)。

    【讨论】:

    • 谢谢!非常清楚.. 所以一个体面的适应度函数可以是例如反时间+“地图的扇区”探索?其中反时限具有更高的价值,但探索的部门将奖励那些至少在早期没有崩溃的情况下移动的部门。这有什么意义吗?
    • 这个想法是老鼠像疯了一样到处乱跑,探索地图并寻找奶酪。并且一旦鼠标“看到”奶酪,它就应该跑向它。例如,输入可以是 8 条射线,用于测量各个方向到墙壁的距离,1 条输入表明奶酪是否在视线,1 表示鼠标到奶酪的距离,1 表示角度。
    • 崩溃的意思是你有实际的物理模拟并且你想防止鼠标接触墙壁?这让事情变得有点棘手,因为鼠标将不可避免地需要更多时间来探索更多扇区,因此这两个适应度值相互矛盾。我认为这是两个可分离的问题。分别教鼠标走几个预编程的角落,同时避免碰撞,然后使用那些固定的“墙壁避让设置”来基因确定寻路组件的设置。
    • 好吧,没关系,你没有物理学。您要防止的是鼠标无用地重新探索相同的扇区,对吗?那就不要奖励探索新领域,而是惩罚在同一领域停留太久!
    【解决方案2】:

    可能需要多少步才能到达奶酪?

    请注意,您的问题已通过 A* algorithm 经典解决,这不是进化的。它确实使用heuristic 来暗示一个职位有多好。

    不过,适应度函数应该旨在优化您的最终结果,但您不一定需要事先获得它的“正确”或“最佳”值。只要找到你知道的“越多越好”或“越少越好”的东西。

    【讨论】:

      猜你喜欢
      • 2023-02-20
      • 2011-04-07
      • 2011-10-07
      • 1970-01-01
      • 2011-12-21
      • 2017-09-26
      • 2023-03-15
      • 2018-04-10
      • 1970-01-01
      相关资源
      最近更新 更多