我正在研究基于NEAT算法的神经网络,该算法学会在Python 2.7中播放Atari Breakout克隆,我所有的部分都在工作,但我认为通过更好的计算物种适应度的算法可以大大改善进化.
神经网络的输入是:
产出是:
我可用于物种适应度计算的参数是:
breakout_model.score
- int
:该物种所玩游戏的最终得分breakout_model.num_times_hit_paddle
- int
:球拍击球的次数breakout_model.hits_per_life
- int
:每次生命中球拍击球的次数,以列表的形式出现; 例如,第一个元素是第一个生命的值,第二个元素是第二个生命的值,依此类推,最多为4个breakout_model.avg_paddle_offset_from_ball
- decimal
:球与桨叶中心之间在X方向上的平均线性距离breakout_model.avg_paddle_offset_from_center
- decimal
:框架中心与桨叶中心之间沿X方向的平均线性距离breakout_model.time
- int
:游戏的总持续时间,以帧为单位breakout_model.stale
- boolean
:游戏是否由于陈旧而被人工终止(例如球被卡住直接垂直弹跳而桨没有移动)如果您认为我需要更多关于游戏最终状态的数据而不仅仅是这些,我可能会实现一种非常容易实现的方法.
这是我目前的健身计算,我认为不是很好:
def calculate_fitness(self):
self.fitness = self.breakout_model.score
if self.breakout_model.num_times_hit_paddle != 0:
self.fitness += self.breakout_model.num_times_hit_paddle / 10
else:
self.fitness -= 0.5
if self.breakout_model.avg_paddle_offset_from_ball != 0:
self.fitness -= (1 …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,它将拥有一组选定的数据,每个数据都有不同的属性.我将需要使用适应度函数来使用属性选择与我选择的场景最匹配的数据.
但是,我并没有找到任何解释如何定义自己的健身功能的网站.我所拥有的只是它是遗传算法的一部分,而这就是我所得到的.那么,我可以在这里给出一些指示吗?
artificial-intelligence fitness genetic-algorithm evolutionary-algorithm
我已经实现了一个简单的遗传算法来生成基于Aesop寓言的短篇小说.以下是我正在使用的参数:
突变:单字交换突变,测试率为0.01.
交叉:在给定点交换故事句子.率 - 0.7
选择:轮盘选择 - /sf/answers/372099731/
健身功能:3种不同功能.每个人的最高得分是1.0.所以最高健康分数是3.0.
人口规模:由于我使用的是86个Aesop寓言,我测试的人口规模是50.
初始人口:所有86个寓言句子都被洗牌,以便完全废话.我的目标是从这些结构丢失的寓言中产生一些有意义的东西(至少在一定程度上).
停止条件:3000代.结果如下:
但是,这仍然没有产生有利的结果.我期待着几代人的情节.为什么我的GA表现更差的结果呢?
更新:正如你们所有人所建议的那样,我将当前一代的10%的精英主义复制到了下一代.结果仍然保持不变:
可能我应该选择锦标赛.
algorithm python-2.x roulette-wheel-selection fitness genetic-algorithm