遗传算法 - 适应度函数

genetic algorithm - fitness function

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

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

这个问题的适合度函数是什么?

您确定您没有将遗传算法与传统寻路算法混合使用吗?两者都有某种健身功能。在寻路的情况下,"heuristic" 通常就是它的名字。对于这些算法,"fitness" 必须 假设 在执行算法时使用(或更像是加速算法)。

实际遗传算法中的适应度函数是相对精确的,但那是因为它通常更像是一种评估。 例如,您使用当前值执行模拟并计算鼠标找到奶酪所需的时间。行进的时间或距离是逆适应度(逆是因为数字越大意味着适应度越低)。 如果适应度比之前的运行更好,您可以使用略有不同的设置(通过突变、随机性等生成)来分支新的模拟,并每次评估什么提高了适应度,什么没有提高(-> 适者生存)。如果适应性更差,请放弃此分支(或者可能仅在每 XX 次遇到不良分支时保留它;"possibly it is on a good way")。

大概需要多少步才能拿到奶酪?

请注意,您的问题已通过 A* algorithm which is not evolutionary. It does use an heuristic 得到经典解决,以提示位置有多好。

然而,适应度函数应该旨在优化您的最终结果,但您不一定需要事先获得它的 "correct" 或 "best" 值。只需找到您知道在 "the more the better" 或 "the less the better" 基础上有效的东西。