简单快速理解遗传算法

news/2025/9/28 23:15:44/文章来源:https://www.cnblogs.com/miki969696/p/19117800

简单快速理解遗传算法

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>遗传算法:找山顶的故事</title>
    <script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 font-sans">
    <div class="container mx-auto p-6 max-w-3xl">
        <h1 class="text-3xl font-bold text-center mb-6 text-blue-600">遗传算法:找山顶的故事</h1>
 
        <section class="bg-white p-6 rounded-lg shadow-md mb-6">
            <h2 class="text-2xl font-semibold mb-4">故事背景:找山顶</h2>
            <p class="text-gray-700 leading-relaxed">
                想象你在一片山脉中,想找到最高的山峰(函数 <span class="italic">f(x) = -x² + 10x</span> 的最大值)。这片山脉的范围是 <span class="italic">x ∈ [0, 10]</span>,理论上最高点在 <span class="italic">x = 5</span>,高度是 <span class="italic">f(5) = 25</span>。但你不知道具体位置,所以派了一群“探险者”去试探,用遗传算法来模拟他们如何通过“进化”找到山顶。
            </p>
        </section>
 
        <section class="bg-white p-6 rounded-lg shadow-md">
            <h2 class="text-2xl font-semibold mb-4">遗传算法的通俗过程</h2>
            <p class="text-gray-700 mb-4">
                遗传算法就像管理一群探险者,让他们通过“优胜劣汰”“混血繁殖”和“随机冒险”找到最高点。以下是具体步骤,用比喻的方式讲清楚:
            </p>
 
            <h3 class="text-xl font-semibold mt-6 mb-2">1. 召集一群探险者(初始化种群)</h3>
            <p class="text-gray-700 leading-relaxed">
                你随机派10个探险者到山脉的不同位置,他们的位置是:
            </p>
            <p class="text-center font-mono text-gray-800 my-4">
                x = {2.3, 5.7, 1.4, 8.2, 4.9, 7.1, 3.6, 9.0, 0.5, 6.3}
            </p>
            <p class="text-gray-700 leading-relaxed">
                每个探险者的位置 <span class="italic">x</span> 是一个可能的解,他们站在不同高度(稍后计算)。
            </p>
 
            <h3 class="text-xl font-semibold mt-6 mb-2">2. 看看谁站得高(计算适应度)</h3>
            <p class="text-gray-700 leading-relaxed">
                你用一个“高度计”测量每个探险者所在位置的高度,高度由函数 <span class="italic">f(x) = -x² + 10x</span> 计算。站得越高,说明越接近山顶。
            </p>
            <p class="text-gray-700 mt-4">下面是每个探险者的位置和对应高度(适应度),一步步算出来:</p>
            <ul class="list-disc list-inside text-gray-700 my-4">
                <li><span class="italic">x = 2.3</span>: <span class="italic">f(2.3) = -(2.3)² + 10 × 2.3 = -5.29 + 23 = 17.71</span></li>
                <li><span class="italic">x = 5.7</span>: <span class="italic">f(5.7) = -(5.7)² + 10 × 5.7 = -32.49 + 57 = 24.51</span></li>
                <li><span class="italic">x = 1.4</span>: <span class="italic">f(1.4) = -(1.4)² + 10 × 1.4 = -1.96 + 14 = 12.04</span></li>
                <li><span class="italic">x = 8.2</span>: <span class="italic">f(8.2) = -(8.2)² + 10 × 8.2 = -67.24 + 82 = 14.76</span></li>
                <li><span class="italic">x = 4.9</span>: <span class="italic">f(4.9) = -(4.9)² + 10 × 4.9 = -24.01 + 49 = 24.99</span></li>
                <li><span class="italic">x = 7.1</span>: <span class="italic">f(7.1) = -(7.1)² + 10 × 7.1 = -50.41 + 71 = 20.59</span></li>
                <li><span class="italic">x = 3.6</span>: <span class="italic">f(3.6) = -(3.6)² + 10 × 3.6 = -12.96 + 36 = 23.04</span></li>
                <li><span class="italic">x = 9.0</span>: <span class="italic">f(9.0) = -(9.0)² + 10 × 9.0 = -81 + 90 = 9.0</span></li>
                <li><span class="italic">x = 0.5</span>: <span class="italic">f(0.5) = -(0.5)² + 10 × 0.5 = -0.25 + 5 = 4.75</span></li>
                <li><span class="italic">x = 6.3</span>: <span class="italic">f(6.3) = -(6.3)² + 10 × 6.3 = -39.69 + 63 = 23.31</span></li>
            </ul>
            <p class="text-gray-700 font-semibold mt-4">适应度总结:</p>
            <table class="table-auto w-full text-left border-collapse my-4">
                <thead>
                    <tr class="bg-gray-200">
                        <th class="px-4 py-2">探险者位置 <span class="italic">x</span></th>
                        <th class="px-4 py-2">高度 <span class="italic">f(x) = -x² + 10x</span></th>
                    </tr>
                </thead>
                <tbody>
                    <tr><td class="border px-4 py-2">2.3</td><td class="border px-4 py-2">17.71</td></tr>
                    <tr><td class="border px-4 py-2">5.7</td><td class="border px-4 py-2">24.51</td></tr>
                    <tr><td class="border px-4 py-2">1.4</td><td class="border px-4 py-2">12.04</td></tr>
                    <tr><td class="border px-4 py-2">8.2</td><td class="border px-4 py-2">14.76</td></tr>
                    <tr><td class="border px-4 py-2">4.9</td><td class="border px-4 py-2">24.99</td></tr>
                    <tr><td class="border px-4 py-2">7.1</td><td class="border px-4 py-2">20.59</td></tr>
                    <tr><td class="border px-4 py-2">3.6</td><td class="border px-4 py-2">23.04</td></tr>
                    <tr><td class="border px-4 py-2">9.0</td><td class="border px-4 py-2">9.0</td></tr>
                    <tr><td class="border px-4 py-2">0.5</td><td class="border px-4 py-2">4.75</td></tr>
                    <tr><td class="border px-4 py-2">6.3</td><td class="border px-4 py-2">23.31</td></tr>
                </tbody>
            </table>
            <p class="text-gray-700 mt-4">
                <strong>观察</strong>:<span class="italic">x = 4.9</span> 的高度最高(24.99),离山顶 <span class="italic">x = 5</span>(高度25)很近;<span class="italic">x = 0.5</span> 的高度最低(4.75),离山顶很远。
            </p>
 
            <h3 class="text-xl font-semibold mt-6 mb-2">3. 挑选厉害的探险者(选择)</h3>
            <p class="text-gray-700 leading-relaxed">
                你想让站得高的探险者有更大机会“留下后代”。比如,<span class="italic">x = 4.9</span>(高度24.99)和 <span class="italic">x = 5.7</span>(高度24.51)很优秀,选中他们的概率更大。就像“抽奖”,高度越高,中奖概率越高。假设你挑出 <span class="italic">x = 4.9</span> 和 <span class="italic">x = 5.7</span> 作为“父母”。
            </p>
 
            <h3 class="text-xl font-semibold mt-6 mb-2">4. 让他们“生孩子”(交叉)</h3>
            <p class="text-gray-700 leading-relaxed">
                选中的两个探险者“混血”,孩子会站在父母位置的“中间地带”。比如,<span class="italic">x = 4.9</span> 和 <span class="italic">x = 5.7</span> 生孩子,孩子的位置可能是平均值:
            </p>
            <p class="text-center font-mono text-gray-800 my-4">
                (4.9 + 5.7) / 2 = 5.3
            </p>
            <p class="text-gray-700 leading-relaxed">
                这种“混血”有80%的概率发生(交叉概率),否则直接保留父母的位置。
            </p>
 
            <h3 class="text-xl font-semibold mt-6 mb-2">5. 偶尔来点冒险(变异)</h3>
            <p class="text-gray-700 leading-relaxed">
                为了避免探险者都挤在一个地方,你让孩子以5%的概率“随机走几步”。比如,孩子在 <span class="italic">x = 5.3</span> 的基础上加减0.1,变成 <span class="italic">x = 5.4</span>。这种冒险能让探险者试试新地方,防止错过山顶。
            </p>
 
            <h3 class="text-xl font-semibold mt-6 mb-2">6. 更新探险队(生成新种群)</h3>
            <p class="text-gray-700 leading-relaxed">
                用新生的孩子替换掉原来站得低的探险者(像 <span class="italic">x = 0.5, 9.0</span>),保持队伍规模10人。新队伍可能有 <span class="italic">x = 5.3, 5.4</span> 等更靠近山顶的位置。
            </p>
 
            <h3 class="text-xl font-semibold mt-6 mb-2">7. 重复探险直到找到山顶(迭代)</h3>
            <p class="text-gray-700 leading-relaxed">
                重复“测高度 → 选人 → 生孩子 → 冒险”的过程,比如100次。每次迭代,探险者会越来越靠近 <span class="italic">x = 5</span>,因为这里高度最高(<span class="italic">f(5) = 25</span>)。当队伍挤在山顶附近,或探险100次后,停下来,选出站得最高的探险者。
            </p>
        </section>
    </div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浙江网站怎么做推广网站编辑器介绍

【VBA解决方案】全自动将Word中的文本公式转换为标准公式 写在最前面VBA代码全自动方法将md文档导出为word代码如何运行VBA代码注意事项 一些如何实现的回忆记录步骤解析手动将文本转换为Word公式代码逻辑步骤设想代码解析代码解释总结 其他背景介绍应用场景VBA脚本介绍如何使用…

wordpress 不能上传seo怎么优化一个网站

摘要&#xff1a;开发中经常需要校验用户提交的值是否满足要求&#xff0c;Valid可用于方法参数、返回值等的验证&#xff0c;但是对于参数为列表时无效&#xff0c;此处记录几种对列表进行验证的方法 Valid 注解通常用于验证单个对象的字段&#xff0c;而不是整个列表。仅添加…

网站建设模拟实验报告湛江网站制作费用

题目2&#xff1a; EXTERNAL关键字的作用&#xff1f;[多选] A、EXTERNAL关键字可以让用户创建一个外部表 B、创建外部表时&#xff0c;可以不加EXTERNAL关键字 C、通过EXTERNAL创建的外部表只删除元数据&#xff0c;不删除数据 D、不加EXTERNAL的时候&#xff0c;默认创建内…

wordpress导航菜单居中百度关键词优化首选667seo

算法&#xff1a; 这道题可以用回溯&#xff0c;但是可能会超时 可以用背包问题解决&#xff1a; 物品&#xff1a;单词 背包&#xff1a;字符串&#xff1a; 单词能否组成字符串s&#xff0c;就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词&#xff0c;就…

天津广告公司网站建设建网站手续

python的redis库查询返回的值默认是返回字节串&#xff0c;可以在redis.Redis()方法中通过设置decode_responses参数&#xff0c;让返回值直接是字符串&#xff1b; 查询返回字节串是因为Redis()方法中decode_responses默认值是False&#xff1a; 设置decode_responses为True就…

建立网站项目网络游戏排行榜2022

实现一个一遍扫描的编译前端&#xff0c;将简化高级语言的部分语法成分&#xff08;含赋值语句、分支语句、循环语句等&#xff09;翻译成四元式&#xff08;或三地址代码&#xff09;&#xff0c;还要求有合理的语法出错报错和错误恢复功能。 测试样例 beginwhile a<b do…

WordPress文章设置固定链接或永久链接 - 教程

WordPress文章设置固定链接或永久链接 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

垫江网站建设哪家好产品招商网

一、安装完虚拟机后的操作 第一步: 第二步&#xff1a;分配的内存大一下&#xff0c;处理器多些 第三步&#xff1a;打开虚拟化 打开虚拟机、安装KVM 一般企业如果使用kvm虚拟化平台&#xff0c;都会把物理服务器装成Centos的操作系统&#xff0c;然后装上kvm&#xff0c;创建…

尚义住房和城乡规划建设局网站广告设计专业前景

文章目录 嫌啰嗦直接看源码Q5 :PyTorch on CIFAR-10three_layer_convnet题面解析代码输出 Training a ConvNet题面解析代码输出 ThreeLayerConvNet题面解析代码输出 Train a Three-Layer ConvNet题面解析代码输出 Sequential API: Three-Layer ConvNet题面解析代码输出 CIFAR-1…

个人用云计算学习笔记 --15. (Linux 系统启动原理、Linux 防火墙管理)) - 实践

个人用云计算学习笔记 --15. (Linux 系统启动原理、Linux 防火墙管理)) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

给小孩出数学题

给小孩出数学题import java.util.Random; import java.util.Scanner; public class math_problems { public static void main(String[] args){ Random r=new Random(); Scanner sc=new Scanner(System.in); int probl…

dotnet项目编译运行

dotnet build - 基本构建 dotnet build PurestAdmin.Zero/PurestAdmin.Zero.csproj# 指定解决方案文件 dotnet build PurestAdmin.sln构建的常用参数 # 指定配置(Debug 或 Release) dotnet build --configuration Re…

linux virtualenv使用

在Linux系统中,virtualenv是一个用于创建虚拟环境的Python包。它允许你在不同的Python版本或不同的Python环境中安装和管理库。以下是如何在Linux中使用virtualenv的步骤:首先,确保你已经安装了Python。如果没有,请…

已有网站做google推广成都网站seo设计

0 软件开发人员自我成长 1 每天读2~3篇文章&#xff0c;可以行业趋势、技术类(和自己的工作有关的) 大厂技术博客科技资讯类&#xff1a;量子位、差评、新智元、无敌信息差 量子位、新智元经验分享、编程趋势、技术干活&#xff1a;程序员鱼皮、小林coding、java guide、程序…

实用指南:kafka详解

实用指南:kafka详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

06-基于FPGA和LTC2308的数字电压表设计-ModelSim仿真与Matlab模拟信号产生 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功

详细介绍:whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功2025-09-28 22:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-…

oracle_19c_ru_ojvm_upgrade.sh一键升级脚本分享

oracle_19c_ru_ojvm_upgrade.sh一键升级脚本分享2025-09-28 22:43 潇湘隐者 阅读(0) 评论(0) 收藏 举报oracle_19c_ru_ojvm_upgrade.sh脚本的初始版本来源于IT邦德的分享,使用原脚本时发现有一些bug,在我的环境中…

域名不变 网站改版如何知道网站开发语言

2019独角兽企业重金招聘Python工程师标准>>> 前景 Python在编程领域的占有率一直处于稳步上升之中&#xff0c;根据最新的数据&#xff0c;Python排名第六。前五名分别是 Java、C、PHP、C 和 VB. 作为一个很年轻的语言&#xff0c;Python的位置已经相当令人振奋了。…