遗传算法学会最适合指数函数

时间:2018-08-30 23:39:58

标签: python machine-learning neural-network genetic-algorithm

所以我有一个简单的游戏,球可以跳跃并且障碍物经常出现,下面是图片供参考。我的遗传算法提供了100个随机网络,20个交叉(变异率为1%)和10个“模糊”网络(本质上是强迫变异,大约为20%)。 enter image description here 现在,如果我对周期性障碍物具有基本的非缩放移动速度,那么我的遗传算法将学习如何在大约1-2代内击败游戏(不会输掉并永远永远继续下去),因为这是x-> y的简单映射这是意料之中的。

但是,如果我决定将速度缩放比例(对于跳跃/障碍速度)改为

speed = speed * (1 + points/1000) #Where 1 point is passing 1 obstacle

我得到的是大量无法在任何实时范围内优化输出的网络。我确保将所有相关数据作为输入节点传递; ball.y(因为球不会在x中移动),障碍物x,障碍物速度,ball.jumpspeed,并且输出是一个单个节点,表示1 / jump,0 /不执行任何操作。

这里有一些适合健身的示例输出

Generation 1    HIGH: 0.425    LOW: 0.000    AVG:0.1724547451001511
Generation 2    HIGH: 0.425    LOW: 0.165    AVG:0.17874677670683908
Generation 3    HIGH: 1.396    LOW: 0.165    AVG:0.19673599387987226
Generation 4    HIGH: 2.549    LOW: 0.165    AVG:0.2383717001862799
Generation 5    HIGH: 2.549    LOW: 0.166    AVG:0.236279356056333
Generation 6    HIGH: 2.549    LOW: 0.166    AVG:0.2173996155501196
Generation 7    HIGH: 2.549    LOW: 0.167    AVG:0.20148711858181925
Generation 8    HIGH: 2.549    LOW: 0.167    AVG:0.1985246675827307
 ...
Generation 69    HIGH: 2.549    LOW: 0.167    AVG:0.31935190938788394
Generation 70    HIGH: 2.549    LOW: 0.167    AVG:0.22603314425367058
Generation 71    HIGH: 2.549    LOW: 0.167    AVG:0.21650311863741362
Generation 72    HIGH: 2.549    LOW: 0.166    AVG:0.2258790184428012

我确实了解遗传算法本质上依赖于随机改进,但是我想知道在这种“简单”问题上长时间停滞是否正常?我可能只是在开枪,我是从头开始编写整个网络/游戏的,我很确定它可以正常工作,但是我对结果有些怀疑,有人在这种事情上有更多的背景吗?我的结果很标准?

还要显示一个代码示例至少需要大约500行,所以我认为发布它可能不是一个好主意。

编辑: 在发布此代码后,我的后代又获得了可观的增长,我正在积极运行这段代码,以尝试查看我的模型是否可以在此过程中变得“完美”。

Generation 83    HIGH: 2.549    LOW: 0.841    AVG:0.908536733716079
Generation 84    HIGH: 2.549    LOW: 0.839    AVG:0.9262430139422534
Generation 85    HIGH: 8.784    LOW: 0.842    AVG:0.9670151588313797

编辑:这里是指向github上托管的基本版本的链接,在我上传的版本中,如果您阅读testdata.txt,您会看到输入是二进制字符串,它们只是试图乘以2作为预期输出。我不明白为什么它目前无法弄清楚确切的输出是什么,而请注意,一旦进入实际测试,代码就会变得非常丑陋,所有内容都需要重新构造。< / em> https://github.com/TylerJohnson44/PyNN

如果有人可以告诉我我的代码在使用适当的GA的情况下不能成为适当的NN,我将不胜感激。

0 个答案:

没有答案