/sessda2048

地空数算期末大作业 贰零肆捌

Primary LanguagePython

sessda2048

使用

  • 把技术组写的那个sessdsa.2048整个拷到本地
  • 修改variables.py里的路径
  • 直接运行main.py

目前状态(更新在这里添加)

  • Random player拷自技术组
  • Stupid player拷自玩家
  • 基础的Minmax算法已经实现了。可能的改进方式:
    • 加入alpha-beta剪枝(Done by @D-X-Li)
    • 调整估值函数,可以看这个对局,其中12号小萝莉的估值函数为直接求和,13号为平方和。当大棋子权重调高后,更容易合成出高价值棋子,但13号的子儿反而更容易被吃掉了。
    • 采用numpy获得更快速的计算体验(?)
    • 如何针对大怂包这样的拖延时间策略优化?
    • 如何降低一开始棋子较少时对大量空位的搜索耗时?
  • 先后手代码初步分离,只是将原来文件分割成了两个,并且分别用True和False替换了对self.isFirst的调用,可读性有所下降。代码可从lxd文件夹拷贝。

##Bug汇总(代码的Bug在这里添加)

  • [ ]hzy版本_minmaxrecur中第90行self.isFirst可能有误?

20.5.8

  • 增加了Minmax算法,Stable和Preview两个版本

20.5.17

  • 改掉了局面估值函数的bug,使用sum(map(...))形式加快了速度,目前水平在天梯第五左右

20.5.18

  • 将先后手情况分开,主要对两种情行分别调整了搜索深度,目前我的电脑5s可以稳定战胜旧版本,天梯等待检验。放在yjy文件夹底下

分配活儿

  • 写报告
  • 基于现在代码的改进
    • 调现在的局面估值函数
    • 调动态深度 调参数
    • 启发式方法,从十个空位选五个
    • 蒙特卡洛,十个随机几个
    • 先搜“好”的局面
    • 拿着目前的代码轮流盯梢
    • 存固定走法,在一开始做优化
      • 开局是否要在对方位置落子?
    • 先手后手区分
    • 缓存已经搜过的局面
    • 根据时间做优化,避免超时(getTime接口)
    • 到快结束时就不搜了
  • 想新的算法

最先开始干的

  • 先后手代码分开,分到两个文件里封装好 LXD

  • 做搜索缓存 YJY

  • 开局棋谱优化 WZY LJY

  • 调参数

    • 调现在的局面估值函数
    • 调动态深度
  • 不同阶段(局数、剩余时间)

  • 研究五子棋算法

  • 认领自己的活儿

  • 紧密跟进别人的工作