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

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

代码见仓库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记录配置启动指令优化效果

相关文章:

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

代码 见仓库https://github.com/hereisaway/Tetris_AI,vibe coding出来的,可能有点小问题,但能跑。 思想 游戏策略也是一个启发式算法大展拳脚的领域。 对于很多游戏,策略可以简化为,需要一个估值函数,对当…...

从抖动(Jitter)与往返时间(RTT)出发:构建实时音视频通信的网络质量评估体系

1. 实时音视频通信的网络质量挑战 当你参加视频会议时突然画面卡成PPT,或者直播连麦时对方声音忽大忽小,这些糟糕体验的背后往往是网络质量问题在作祟。实时音视频通信对网络环境极为敏感,就像在钢丝上骑自行车——任何微小的颠簸都可能导致严…...

张琦(新商业架构师)成功的核心步骤 + 关键心法

张琦(新商业架构师)成功的核心步骤 关键心法,和李一舟完全不同,她走的是认知升维+天地人网全域流量+击穿单点+长期复利路线,全是可落地、能直接照做的干货。 一、张琦成功的底层逻辑…...

XUnity自动翻译器:终极Unity游戏语言障碍解决方案指南

XUnity自动翻译器:终极Unity游戏语言障碍解决方案指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言不通而错过优秀的Unity游戏?是否在日文RPG、韩文视觉小说…...

XNBCLI深度解析:掌握星露谷物语XNB文件解包打包的完全手册

XNBCLI深度解析:掌握星露谷物语XNB文件解包打包的完全手册 【免费下载链接】xnbcli A CLI tool for XNB packing/unpacking purpose built for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/xn/xnbcli 想要深度定制星露谷物语游戏体验&#xf…...

缤纷夏日 心有所“暑”

邻聚美好时光,在升腾的烟火气里我们共同收藏了夏日的N种欢乐回顾七月光影流转的坝坝电影唤醒了儿时记忆孩子们在飞舞的泡泡大作战里嬉闹篮球场上矫健的身姿瞬间定格更有贴心的便民服务磨亮生活锋刃、洗净门前地垫,便捷直达家门这个缤纷夏日,因…...

如何选择适合的贴片机:关键因素与选择指南

引言在现代电子制造业中,贴片机(Surface Mount Technology,简称SMT)作为核心设备之一,扮演着至关重要的角色。随着电子元器件的不断小型化和生产工艺的不断进步,选择一款合适的贴片机已经成为确保生产效率、…...

ncmdump终极解密指南:如何快速解锁网易云音乐NCM加密文件

ncmdump终极解密指南:如何快速解锁网易云音乐NCM加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否遇到过这样的困扰?在网易云音乐下载的歌曲只能在特定播放器中使用,换到其他设备或播…...

用RP2350微控制器实现《黑客帝国》数字雨:嵌入式图形系统实战

1. 项目概述与核心价值如果你和我一样,对《黑客帝国》里那些从屏幕顶端倾泻而下的绿色字符雨有着难以言喻的情结,同时又是个喜欢动手鼓捣硬件的开发者,那么这个项目绝对能让你兴奋起来。它不是一个简单的屏幕保护程序,而是一个完整…...

Kali Linux 保姆级教程|从入门到渗透测试,一篇封神!

前言 Kali Linux 作为网络安全领域的「瑞士军刀」,集成 600 专业渗透工具,覆盖信息收集、漏洞利用、权限维持等全流程。本文结合最新实战场景,整理系统学习路径、核心工具解析及资源获取方式,助你快速掌握这门渗透测试必备技能。…...

从NeoPixel到CircuitPython:打造智能LED眼镜的完整硬件与软件实践

1. 项目概述 如果你对可穿戴电子设备、酷炫的LED光效以及用代码创造物理交互感兴趣,那么这个项目绝对能让你兴奋起来。今天要分享的,是如何亲手制作一副灵感来源于电子音乐人REZZ标志性风格的NeoPixel LED眼镜。这不仅仅是一个简单的焊接和组装教程&…...

职场新人不会写自我介绍?3分钟AI生成直接拿面试

刚步入职场的新人,写简历是不是最怕碰到“自我评价”或“自我介绍”这一栏?盯着空白屏幕憋了一下午,最后只能干巴巴地敲下“性格开朗、吃苦耐劳、具有团队合作精神”这种假大空的话。好不容易搞定简历投递出去,结果总是石沉大海&a…...

别再乱点U盘里的.exe了!手把手教你清除‘Usb Disk.exe’病毒并恢复隐藏文件

彻底清除U盘病毒:从识别到恢复的完整实战指南 当你发现U盘里的文件突然"消失",只剩下一些可疑的.exe文件时,很可能已经遭遇了典型的U盘病毒攻击。这种病毒不仅会隐藏你的重要文档,还可能通过自动运行机制感染整个计算机…...

攻防演练:Ettercap 实战中间人攻击与防御指南

1. 认识Ettercap:网络攻防的双刃剑 第一次接触Ettercap是在2015年的一次企业内网渗透测试中。当时我们需要模拟黑客攻击路径,测试公司内部网络的安全性。这个看起来其貌不扬的命令行工具,只用了几条简单的ARP欺骗命令,就成功劫持了…...

树莓派NOOBS安装指南:从SD卡准备到系统配置全流程详解

1. 项目概述:为什么选择NOOBS作为树莓派入门首选如果你刚拿到一块树莓派,看着这块小小的电路板,第一反应可能是兴奋,紧接着就是困惑:我该怎么让它“活”过来?对于嵌入式开发、物联网原型搭建,甚…...

基于红外传感器与CircuitPython的互动声光糖果碗制作指南

1. 项目概述:一个会“尖叫”的互动糖果碗又到了捣鼓点有趣玩意儿的时候了。作为一个喜欢在万圣节搞点小惊喜的创客,我总觉得光是发糖有点平淡。能不能让糖果碗自己“活”过来,在孩子们伸手时,用灯光和声音制造一点既有趣又不会太过…...

JetBrains IDE试用期重置终极指南:专业开发者必备的30天循环解决方案

JetBrains IDE试用期重置终极指南:专业开发者必备的30天循环解决方案 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 在当今软件开发领域,JetBrains系列IDE凭借其卓越的代码智能提示、强大…...

基于FONA808与Adafruit IO的实时GPS追踪系统实战

1. 项目概述与核心价值又到了一年一度的万圣节,孩子们最兴奋的“不给糖就捣蛋”活动即将上演。作为一个技术爱好者兼“鸡娃”家长,我每年都在琢磨怎么让这个传统活动变得更有趣、更高效。去年,我儿子抱怨说走了半天路,拿到的糖果却…...

基于Adafruit NeoTrellis M4的电子鼓机与步进音序器DIY指南

1. 项目概述与核心价值如果你对电子音乐制作、硬件DIY或者嵌入式编程感兴趣,但又觉得门槛太高,那么今天聊的这个项目,绝对能让你眼前一亮。我们不是要复刻一台动辄上万的经典鼓机,而是要用一块巴掌大的开发板——Adafruit NeoTrel…...

Lingtrain Aligner:如何让多语言文本对齐变得像拼图一样简单?

Lingtrain Aligner:如何让多语言文本对齐变得像拼图一样简单? 【免费下载链接】lingtrain-aligner Lingtrain Aligner — ML powered library for the accurate texts alignment. 项目地址: https://gitcode.com/gh_mirrors/li/lingtrain-aligner …...

JetBrains IDE试用期重置全攻略:让30天试用无限循环的终极技巧

JetBrains IDE试用期重置全攻略:让30天试用无限循环的终极技巧 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而焦虑吗?每次看到"试用期已结束"的…...

用废旧材料制作发光机械鱼:Circuit Playground Express与MakeCode入门实践

1. 项目概述:当废旧材料遇见微控制器每次清理工作室,看着角落里堆满的包装盒、塑料瓶和旧电线,我总在想,除了扔掉,它们还能不能有第二次生命?直到我尝试将一块小小的微控制器塞进这些“垃圾”里&#xff0c…...

算力基石:CPU、GPU与嵌入式AI的技术逻辑与融合发展

在人工智能全面普及的时代,算力已经成为数字产业发展的核心驱动力。从日常使用的智能手机、家用电脑,到云端大模型、智能汽车、工业传感设备,各类智能终端的运转都离不开处理器的算力支撑。其中,CPU作为通用计算核心、GPU作为并行…...

Adafruit统一传感器驱动:嵌入式开发中的硬件抽象与数据标准化实践

1. 项目概述:为什么我们需要传感器数据标准化?在嵌入式开发领域,尤其是物联网和智能硬件项目中,传感器是连接物理世界与数字世界的桥梁。然而,但凡有过实际项目经验的开发者,都或多或少经历过这样的困扰&am…...

DS18B20单总线温度传感器在CircuitPython中的实战应用指南

1. 项目概述与单总线协议的价值如果你正在用像Adafruit Feather M0 Express或Raspberry Pi Pico这类小巧的板子做项目,需要测量温度,DS18B20绝对是一个绕不开的经典选择。我这些年做过不少环境监测、智能家居的小玩意儿,从鱼缸水温到3D打印机…...

ESP32一键安装CircuitPython与Wi-Fi配置:Web串口技术实战指南

1. 项目概述:告别繁琐,一键搞定ESP32固件与网络配置如果你玩过ESP32、ESP32-S3这类微控制器,肯定对固件烧录这个步骤不陌生。传统的流程是什么?先去官网下载对应板型的.bin或.uf2文件,然后打开一个专用的烧录工具&…...

基于Adafruit FunHouse与MQTT构建响应式智能家居传感节点

1. 项目概述:从零构建一个响应灵敏的智能家居传感节点如果你手头有一块像Adafruit FunHouse这样的开发板,上面集成了温湿度、气压传感器,还有几个物理按钮和滑块,你可能会想,怎么才能让它真正“活”起来,成…...

避坑指南:STM32CubeMX配置高级定时器PWM时,时钟源、ARR重载和DMA传输的那些坑

STM32高级定时器PWM配置实战:从时钟陷阱到DMA优化的深度解析 引言 深夜的实验室里,示波器上跳动的波形总是不尽如人意——这可能是许多嵌入式开发者使用STM32高级定时器输出PWM时的共同经历。不同于基础定时器,高级定时器(如TIM1/…...

别再凭感觉选电感了!深入拆解Bulk电路中电感与电容的选型计算(以12V转5V为例)

别再凭感觉选电感了!深入拆解Bulk电路中电感与电容的选型计算(以12V转5V为例) 在电源设计领域,Bulk电路(又称Buck电路)作为最常见的降压型DC-DC转换拓扑,其性能优劣直接决定了整个系统的稳定性和…...

如何快速清理Mac残留文件:免费开源工具终极指南

如何快速清理Mac残留文件:免费开源工具终极指南 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经遇到过这样的困扰?明明已经…...