Self-Parking Car Evolution深度解析:3D物理模拟与进化算法结合
Self-Parking Car Evolution深度解析3D物理模拟与进化算法结合【免费下载链接】self-parking-car-evolution Training the car to do self-parking using a genetic algorithm项目地址: https://gitcode.com/gh_mirrors/se/self-parking-car-evolution想要了解如何通过遗传算法训练汽车实现自动泊车吗Self-Parking Car Evolution项目提供了一个完美的学习平台它将复杂的3D物理模拟与进化算法巧妙结合让汽车在浏览器中自主学会泊车技巧。这个开源项目不仅展示了人工智能的进化学习过程还为初学者提供了一个直观理解遗传算法的绝佳案例。项目概述与核心功能Self-Parking Car Evolution是一个基于React和TypeScript构建的交互式模拟器使用Three.js进行3D渲染Cannon.js进行物理模拟。项目的核心目标是通过遗传算法训练汽车学会自动泊车整个过程完全在浏览器中进行无需服务器端计算。3D物理模拟系统项目的3D模拟系统位于src/components/world/目录中包含了完整的汽车物理模型和环境渲染。汽车模型使用GLB格式存储在public/models/目录中包括汽车主体和车轮的3D模型。汽车配备了8个距离传感器每个传感器可以检测0-4米范围内的障碍物。这些传感器为汽车的大脑提供实时环境数据是汽车学习泊车的关键输入。遗传算法实现机制项目的核心遗传算法实现位于src/libs/目录中总代码量不到500行却实现了完整的进化学习过程。基因编码与解码汽车的行为由两个线性多项式公式控制引擎公式根据传感器输入决定前进、后退或停止转向公式根据传感器输入决定左转、右转或直行每个公式的系数通过二进制基因组编码整个基因组长度为180位。解码过程在src/libs/carGenetic.ts中实现export const decodeGenome (genome: Genome): DecodedGenome { const engineGenes: Gene[] genome.slice(0, ENGINE_FORMULA_GENES_NUM); const wheelsGenes: Gene[] genome.slice( ENGINE_FORMULA_GENES_NUM, ENGINE_FORMULA_GENES_NUM WHEELS_FORMULA_GENES_NUM, ); const engineFormulaCoefficients: FormulaCoefficients genomeToNumbers(engineGenes, GENES_PER_NUMBER); const wheelsFormulaCoefficients: FormulaCoefficients genomeToNumbers(wheelsGenes, GENES_PER_NUMBER); return { engineFormulaCoefficients, wheelsFormulaCoefficients, }; };适应度函数设计适应度函数是遗传算法的核心它评估每个汽车基因组的优劣。在Self-Parking Car Evolution中适应度基于汽车与停车位之间的距离计算距离越近适应度越高。具体的计算公式在src/libs/carGenetic.ts中定义export const carLoss (params: LossParams): number { const { wheelsPosition, parkingLotCorners } params; const flDistance euclideanDistance(flWheel, flCorner); const frDistance euclideanDistance(frWheel, frCorner); const brDistance euclideanDistance(brWheel, brCorner); const blDistance euclideanDistance(blWheel, blCorner); return (flDistance frDistance brDistance blDistance) / 4; };进化过程可视化初始代汽车行为在进化开始时汽车拥有随机生成的基因组行为毫无规律这些汽车像无头苍蝇一样乱撞完全不知道如何接近停车位。它们的基因组是随机生成的0和1序列对应的行为公式也是随机的。进化中的学习过程通过遗传算法的选择、交叉和变异操作汽车逐渐学会泊车技巧在第40代左右汽车开始理解泊车的基本概念能够逐渐靠近停车位。虽然过程中可能会撞到其他汽车但整体趋势是向好的方向发展。遗传算法流程图整个进化过程遵循标准的遗传算法流程初始化种群创建第一代随机基因组评估适应度计算每个基因组的泊车能力选择保留适应度高的个体交叉组合优秀个体的基因变异引入随机变化以增加多样性重复生成下一代并继续进化Sigmoid函数与决策机制汽车的大脑使用Sigmoid函数将传感器输入转换为肌肉控制信号传感器输入经过线性多项式计算后通过Sigmoid函数映射到[-1, 0, 1]三个离散值分别对应后退/左转、停止/直行、前进/右转。export const sigmoidToCategories (x: number): -1 | 0 | 1 { if (x -0.5) { return -1; } if (x 0.5) { return 1; } return 0; };浮点数编码技术项目使用自定义的浮点数编码方案将基因组中的二进制位转换为实际的系数值每个浮点数使用16位二进制编码包括符号位、指数位和尾数位。这种编码方式在src/libs/math/floats.ts中实现确保了基因组的紧凑表示和高效计算。损失函数与学习曲线随着代数的增加汽车的泊车性能逐渐提升损失函数值逐渐下降表明汽车越来越接近完美的泊车位置。这个过程展示了进化学习的基本原理通过反复试错和自然选择逐步优化解决方案。项目架构与模块设计核心模块结构遗传算法模块(src/libs/genetic.ts)种群初始化选择、交叉、变异操作适应度评估汽车行为模块(src/libs/carGenetic.ts)基因组解码传感器数据处理肌肉控制信号生成3D模拟模块(src/components/world/)物理引擎集成汽车模型渲染用户交互控制数学工具模块(src/libs/math/)几何计算概率函数浮点数编码检查点系统项目提供了预训练的检查点文件位于src/checkpoints/目录中。这些文件包含了不同代数的优秀基因组用户可以直接加载这些检查点避免从零开始训练。实践应用与学习价值教育意义 Self-Parking Car Evolution项目具有重要的教育价值直观理解遗传算法通过可视化界面用户可以直观看到进化过程实践AI概念将抽象的AI概念转化为具体的交互式应用代码简洁易懂核心算法实现仅需500行代码适合学习技术亮点 ✨全浏览器端运行无需服务器所有计算在客户端完成实时可视化进化过程实时展示学习进度一目了然参数可调用户可调整种群大小、变异率等参数检查点保存训练进度自动保存到本地存储扩展可能性 基于现有架构项目可以轻松扩展增加更多传感器类型实现多目标优化添加不同的停车场景集成其他进化算法变体总结与展望Self-Parking Car Evolution项目成功地将复杂的遗传算法与直观的3D模拟相结合为学习进化计算提供了完美的实践平台。通过这个项目开发者不仅可以理解遗传算法的工作原理还能亲身体验AI系统如何通过进化学习解决实际问题。随着人工智能技术的不断发展进化算法在自动驾驶、机器人控制等领域的应用将越来越广泛。Self-Parking Car Evolution作为一个入门级项目为深入探索这些高级应用奠定了坚实的基础。无论是AI初学者还是经验丰富的开发者都可以从这个项目中获得启发和收获。项目的简洁设计和清晰架构使其成为学习遗传算法和强化学习的理想起点。【免费下载链接】self-parking-car-evolution Training the car to do self-parking using a genetic algorithm项目地址: https://gitcode.com/gh_mirrors/se/self-parking-car-evolution创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考