8000 GitHub - 87170360/beaner
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

87170360/beaner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

吃豆人游戏

规则:在一个10×10格子的棋盘内,有随机50个格子有豆子,吃豆人了解的情况有当前和上下左右5个格子状态, 行为有:不动,上,下,左,右,随机移动,吃等7个,求吃豆人在100个行动周期内得分最高的行为策略。

生活:根据当前和上下左右共5个位置的情况,得到状态,根据状态选择行为。 繁殖:两个基因随机取中位互换,随机部分变异 奖惩:吃到豆子+10,吃空-1,撞墙-5

个体数据,基因组: 建立一个map存储状态和行为索引,一个数组存储行为。状态有3^5 = 243个,行为有3个

地图: 二维数组, 12 × 12, 每个格子状态是0或者1,2,初始化5个for循环 坐标系, mapinfo[y][x] y ^ | | | ------------> x 0,0

1随机生成200个吃豆人个体 dna数组243,存储内容0,1,2, 4, 5, 6 生成得分,墙扣5分,豆加10分,吃空扣2分 dna互换,从半截对调 随机变异 存放个体的map

2随机生成地图 保存地图格子 豆子生成

3遍历所有个体,在地图内运行100次,得分最高选中概率越高的方式得到最优者两个 从高到低排序,权重分别是200-1,累计总权重,在总权重中随机取数。随机数落在的区间就是 遍历权重数列,看累计权重,当随机数比当前累计权重小,就取当前个体

4繁殖新的200个体 随机选择切断位组合一次,个体再随机变异

回到1,直到运行了1000代,保存最优者dna, 得分,写入文件

伪代码:

生成初代个体200

遍历1000代

 遍历200个体
    遍历1000场比赛
       随机地图
       遍历100天                  
              取当前状态
              取相应行为
              评估得分
              更新地图
              新的位置
              累计得分
  得到1000场平均得分
  根据平均得分分配权重,按权重概率挑选父母200次
  基因互换,随机变异得到下一代个体
  得分清理
  出生位置随机

结束1000代进化,输出评分和基因

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0