当前位置: 首页 > news >正文

遗传算法 训练俄罗斯方块策略

代码见仓库https://github.com/hereisaway/Tetris_AIvibe coding出来的可能有点小问题但能跑。思想游戏策略也是一个启发式算法大展拳脚的领域。对于很多游戏策略可以简化为需要一个估值函数对当前局面下每一种操作进行估值然后选择估值最高的操作执行。这样的关键是这个估值函数输入是当前局面操作输出一个估值复杂的策略可能对当前局面参数做复杂的处理比较简单的策略就把这个问题当成一个回归预测输入的局面和操作当成特征只需要找到一组合适的特征再对于特征找到一组合适的权重即可。到了这一步就是要优化一组参数得到一个函数这玩意启发式算法熟啊。直接把特征放到遗传算法的基因里跑遗传算法来优化这个参数。实现整体思路是得到一个种群取出个体基因解码得到一组权重用这个权重去模拟一局俄罗斯方块直到失败或者到达模拟轮数上限计算这局的表现分作为基因的适应度通过遗传算法产生下一代俄罗斯方块模拟器首先需要写一个俄罗斯方块模拟器传入一个策略函数模拟指定轮数每一轮随机生成一个下落方块并可以提示下一步的方块是什么对于当前局面下枚举当前方块下落到哪个位置计算下落后考虑消行的新局面把新局面作为输入传给估值函数对每一种下落位置计算出一个得分选择得分最高的操作执行。由于只想知道得分不需要可视化可以在模拟中做一些加速。实际上这个模拟器就是整个训练的瓶颈遗传算法杂交变异跑得很快。但模拟这个阶段由于策略很快就能达到一个较高的水平可以存活几千轮甚至几万轮每次的模拟都会耗时很久。一个朴素的想法是设置一个轮数上限但这样又有新的问题可能很快所有的个体都能达到这个轮数上限了得分都差不多环境失去选择压力趋于随机化而不是优化。所以这里原本的demodemodemo用pypypy写后面改写成cppcppcpp了模拟阶段实现了约60x的加速比每秒可以模拟几千轮轮模拟一万轮的时间也可以接受。加上遗传算法可以并行化每个线程负责部分个体的模拟开了323232线程后即使遗传算法超参数较大耗时也在一两分钟这个级别。特征工程估值函数的特征选择直接收益lines_cleared、eroded_cells堆叠风险aggregate_height、covered_cells、max_height、well_sum结构平整度bumpiness、row_transitions、column_transitions洞相关holes、hole_depth、rows_with_holes直接收益比较好理解就是这一块落下去能消几行。但这样不够剩下的特征考虑的是这一块落下后会不会产生不太好的结构不利于后面的消除比如产生了一个洞或者导致表面不平。遗传算法设计遗传算法比较关键的设计在于如何指定适应度计算这里选择fitness 1000 * avg_lines 0.1 * avg_score 0.5 * avg_pieces - 50 * survival_rate其中avg_lines 多局平均总清行avg_pieces 多局平均存活块数avg_score 多局平均简化分数survival_rate 多局里有多少比例“活到了 max_pieces 上限”取平均是因为模拟器一局游戏有随机性生成的块序列是随机的为例避免运气好带来的偏差多取几个种子跑取随机。消行数和存活块数很简单分数的定义是score_episode Σ_t (lines_cleared_on_move_t)^也就是每一次消除的行数的平方和这样鼓励一次消多行。运行框架设计最近和别的项目学六一下运行设计为了便于以后更新阅读。设计成每次运行都会新开一个目录记录输出搜索到的最优参数运行用的超参数运行日志记录运行了几轮每一轮的时间总结文件一个md记录配置启动指令优化效果
http://www.zskr.cn/news/1316066.html

相关文章:

  • 如何用LizzieYzy免费围棋AI分析工具提升你的棋力:从入门到精通
  • 终极解决方案:TQVaultAE如何彻底改变《泰坦之旅》装备管理体验
  • MXFP混合精度优化:提升LLM推理效率的关键技术
  • 如何一键复刻抖音爆款视频?一链成片功能使用指南
  • 张琦式7天落地执行清单(每日任务+话术模板+检查项)
  • LLM推理服务SLO优化:延迟预测与智能调度实践
  • 基于光传感器与舵机的万圣节互动惊吓盒制作指南
  • Keil MDK中解决LPC1788 Trace调试同步问题
  • 完全指南:三步轻松重置JetBrains IDE试用期,零成本延长开发工具使用
  • XUnity.AutoTranslator:三步实现Unity游戏实时翻译的终极解决方案
  • NotebookLM概念关联分析深度拆解(20年NLP专家亲测有效的7层推理模型)
  • 智慧树刷课插件:3分钟实现自动化学习,告别手动刷课烦恼
  • 百度网盘直链解析:3分钟免费解锁全速下载的终极指南
  • 聚氨酯包胶轮性价比之选,靠谱厂家推荐 - mypinpai
  • 基于Flora与Fona的短信背包:可穿戴物联网项目全流程解析
  • 基于PyPortal与单向镜面膜的智能镜子DIY:手势交互与物联网应用
  • 参数化设计3D打印旋转线轴收纳架:从建模到组装的创客实践
  • 基于FONA808与Adafruit IO的实时GPS追踪系统实战
  • Lingtrain Aligner:如何让多语言文本对齐变得像拼图一样简单?
  • JetBrains IDE试用期重置全攻略:让30天试用无限循环的终极技巧
  • 靠谱的综合布线公司,浙江泰平值得信赖吗? - mypinpai
  • 算力基石:CPU、GPU与嵌入式AI的技术逻辑与融合发展
  • 【JavaSE全面教学】Java异常处理机制Day11(2026年)
  • 从数据到洞察:DataRoom如何用3个步骤解决你的大屏可视化难题
  • GPT时代下非端到端AI方案的融合价值与混合架构实践
  • 声源定位技术与GCC-PHAT算法详解
  • 全局异常/错误捕获
  • Memos数据迁移踩坑实录:从SQLite数据库到Obsidian Thino插件的完整避坑指南
  • CW32L083 RTC初始化实战:低功耗MCU精准计时与唤醒配置详解
  • 揭秘专业级手机号码定位系统:高效精准的地理位置查询实战指南