Skip to content

KnightJun/GA_EightNum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GA_EightNum

用遗传算法解决八数码问题(window + VS2015)
这是《游戏编程中的人工智能技术》中的一道习题,这本书是一本好书,请注意书名的主语是人工智能技术而不是游戏编程。。。

###说明 代码实现了用遗传算法解决了八数码的游戏问题
可以作为遗传算法的入门
一开始是从大量随机解中求可行解,有可行解后再求更优解(步数较少时为优)
当时只是为了练手,没有设置终止条件,代码收敛得比较快,最后会稳定在某一个数,默认起始状态下大概在70~100步之间吧,
如果不停止迭代会持续下去,不过已经没有意义了,稳定之后基本不可能找到更优解了

###改进方向(改进后请pull至此,众人拾柴火焰高) 如果有人想改进这个程序作为练习,以下是几个改进方向:

  • 让程序自动停下来。。。。
    这个很简单,不过我太懒了,而且代码隔太久也不忍回看
  • 增加当前最优解的动画演示过程
    当程序停下来后演示最优解的移动过程,增加滑动的动画效果,这个跟遗传算法没什么关系,就是为了看着爽。。。(看着爽对于学习很重要的。。)
  • 改变杂交方式(EnumKare::Crossover)
    当前的杂交方式有点随便,就是断开两个亲本再拼接,应该发挥想象力,多试试更多的方(ti)法(wei)
  • 寻找更好的参数,用另一个遗传算法来对此算法的参数进行调优。。。
    这份代码里面有很多人为设置的参数(变异率,杂交率等),这些参数对算法的效率影响很大,可以另起一份遗传算法对其调优

About

用遗传算法解决八数码问题(window + VS2015)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published