皮卡丘又回来啦,由于上一周有些事情要处理,就没有写文章,真的很对不起大家。:(
不过这次笔者给大家带来了一个非常好玩的东西
看标题——机器学习实战——训练你的FlappyPikachu(皮卡丘)
那现在我们就开始让我们的皮卡丘变得越来越聪明吧!
##所有密码均为:yjoy
在这里我们运用到的是一个名为神经演化(Neuroevolution)的算法。该算法的原理简单说就是通过不断地学习迭代,总结失败和成功,最终使机器变得越来越聪明。
这里是它相关的介绍
首先,我们先写一个FlappyPikachu的小游戏(代码网上一大堆)
这是笔者的游戏代码
首先设置一些参数
network:[1, [1], 1], //神经网络的结构
population:50, //第一代数量
elitism:0.2, //后代的优秀率
randomBehaviour:0.2, //下一代的随机行为率
mutationRate:0.1, //突变率
mutationRange:0.5, //突变范围
historic:0, //最后一代
lowHistoric:false, //历史最低?
scoreSort:-1, //如何排序
nbChild:1 //育种数
创建各种对象 神经元、神经网络层、神经网络等等 然后输入第一代,通过训练得到下一代
//创建第一代
Generations.prototype.firstGeneration = function(input, hiddens, output){
var out = [];
for(var i = 0; i < self.options.population; i++){
var nn = new Network();
nn.perceptronGeneration(self.options.network[0],
self.options.network[1],
self.options.network[2]);
out.push(nn.getSave());
}
this.generations.push(new Generation());
return out;
}
//YingJoy
//创建下一代
Generations.prototype.nextGeneration = function(){
if(this.generations.length == 0){
return false;
}
var gen = this.generations[this.generations.length - 1]
.generateNextGeneration();
this.generations.push(new Generation());
return gen;
}
//YingJoy
//添加基因信息到代中
Generation.prototype.addGenome = function(genome){
for(var i = 0; i < this.genomes.length; i++){
if(self.options.scoreSort < 0){
if(genome.score > this.genomes[i].score){
break;
}
}else{
if(genome.score < this.genomes[i].score){
break;
}
}
}
this.genomes.splice(i, 0, genome);
}
//YingJoy
这是第一代皮卡丘,还没出门就撞水管了
然后通过一代又一代的迭代,我们得到的皮卡丘越来越聪明
开始训练时有许多皮卡丘,最后有1只最聪明的,下面是训练了28代得到的皮卡丘,基本保持不死了
这是一个示例,读者可以来体验一下,下面的按钮是改变运行速度
这是上面示例的代码(JS)
好了,到这里我们就得到了一只越来越聪明的皮卡丘啦。:)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有