遗传算法简介
遗传算法是一种使用模拟进化中自然过程的操作来搜索问题的最佳解决方案的过程,例如“适者生存”、染色体交叉和突变。本文简要介绍了编写遗传算法,讨论了编写自己的算法时的一些重要注意事项,并提供了一些遗传算法的实际示例。 Backward Skip 10s Play Video Forward Skip 10s 猜测未知 公元 2369 年,人类已经遍布星空。你是一位年轻、聪明的医生,驻扎在深空的一个恒星基地,那里挤满了星际旅行者、商人,偶尔还有一些游手好闲的人。几乎在您抵达后,车站的一位店主就对您产生了兴趣。他自称只是一名普通裁缝,但有传言说他是为一个特别邪恶的政权工作的黑人特工。 你们两个开始一起享受每周一次的午餐,讨论从政治到诗歌的一切。即使几个月后,你仍然不确定他是在做出浪漫的举动还是在探寻秘密(你不知道任何秘密)。也许两者兼而有之。有一天午餐时,他向你提出了这一挑战:“亲爱的医生,我有话要告诉你!当然,我不能说它是什么。但我会告诉你它有 12 个字符长。这些字符可以是字母表中的任何字母、空格或标点符号。我会告诉你你的 越南数据 猜测有多远。你真聪明; 你认为你能弄清楚吗?” 你回到医疗区的办公室,仍在思考他说的话。突然,作为实验的一部分,你在附近的计算机上运行的基因测序模拟给了你一个想法。你不是密码破译者,但也许你可以利用你在遗传学方面的专业知识来弄清楚他的信息! Learn to Code with JavaScript 一点理论 正如我在开头提到的,遗传算法是一种使用模拟驱动进化过程的操作来搜索解决方案的过程。经过多次迭代,算法从一组可能的解决方案中选择最佳候选(猜测),重新组合它们,并检查哪些组合使其更接近解决方案。
https://manchestermassage.net/wp-content/uploads/2024/01/photo_2024-01-15_09-30-40.jpg
不太有利的候选者被丢弃。 在上述场景中,秘密消息中的任何字符都可以是 A-Z、空格或基本标点符号。假设这为我们提供了以下 32 个字符的“字母表,!?这意味着有 种可能的消息,但这些可能性中只有一种是正确的。检查每种可能性会花费太长时间。相反,遗传算法将随机选择 12 个字符,并要求裁缝/间谍对结果与他的信息的接近程度进行评分。这比暴力搜索更有效,因为分数可以让我们微调未来的候选人。反馈使我们能够评估每个猜测的适用性,并希望避免在死胡同上浪费时间。 假设我们做出三个猜测。第一名候选人的得分为 248.2,第二名候选人的得分为 632.5,第三名候选人的得分为 219.5。如何计算分数取决于具体情况,我们稍后会讨论,但现在我们假设它是基于候选消息和目标消息之间的偏差:满分是 0(即没有偏差;候选消息和目标消息之间没有偏差)。
页:
[1]