作者:happyfly
2022.02.06
这个寒假想系统学学Python,没有实战项目学起来劲头不大。正好前几天修改maxiGos,顺便查了用Python写的围棋程序。看了几个项目,各有千秋,忽然想到了Alpha Go,再一查,竟然有一本书专门讲这个——“Deep learning and the game of go”。
看了一天,真是佩服人家专业程序员,能把围棋规则用简单的程序逻辑实现,代码写的也漂亮。现在把第三章看完了,代码也琢磨了七七八八,于是把示例程序改成道棋规则,让计算机自己和自己下了一盘。虽然冠以“AI”,但程序目前只知道规则,还没有一点智能的意思,虽然如此,毕竟是道棋AI第一局,特记录下来,留作纪念。
(; FF[4] CA[UTF-8] GM[1] SZ[16] AP[maxiGos:7.01.02(daoqi)] ;B[fj];W[ho];B[gl];W[lc];B[an] ;W[nk];B[ca];W[hd];B[jk];W[hb] ;B[ge];W[kk];B[ga];W[jf];B[oe] ;W[mn];B[fm];W[ai];B[oo];W[od] ;B[ng];W[ni];B[bn];W[cg];B[eo] ;W[gj];B[la];W[hc];B[ig];W[ad] ;B[fc];W[go];B[be];W[ja];B[nc] ;W[gi];B[dp];W[cn];B[do];W[lm] ;B[jp];W[kn];B[nd];W[kp];B[ec] ;W[dn];B[df];W[ed];B[di];W[id] ;B[ep];W[ll];B[bm];W[eb];B[cb] ;W[ch];B[fk];W[po];B[cp];W[fe] ;B[lb];W[ke];B[me];W[li];B[ph] ;W[al];B[oi];W[ne];B[ko];W[jh] ;B[pj];W[og];B[dh];W[hk];B[pp] ;W[ld];B[np];W[mb];B[dm];W[bd] ;B[lk];W[pd];B[bc];W[na];B[jc] ;W[cd];B[ej];W[ck];B[bl];W[ok] ;B[bo];W[cf];B[mk];W[pi];B[ob] ;W[ha];B[ib];W[mp];B[gc];W[il] ;B[ip];W[lg];B[pn];W[oh];B[jm] ;W[le];B[pm];W[gf];B[nj];W[ae] ;B[je];W[jl];B[af];W[jn];B[eh] ;W[ea];B[de];W[mh];B[fp];W[da] ;B[ic];W[pc];B[pf];W[ap];B[nh] ;W[fn];B[dk];W[in];B[dg];W[ma] ;B[ij];W[mm];B[ih];W[nb];B[em] ;W[bp];B[hj];W[am];B[gd];W[jd] ;B[kf];W[kd];B[ik];W[ek];B[lh] ;W[if];B[hi];W[fd];B[kh];W[ce] ;B[lp];W[pa];B[nn];W[nf];B[kb] ;W[mi];B[mc];W[oc];B[oj];W[bb] ;B[gb];W[hp];B[ba];W[gm];B[co] ;W[cc];B[ab];W[ei];B[el];W[cm] ;B[of];W[fg];B[ml];W[im];B[pl] ;W[hn];B[nm];W[db];B[ln];W[cj] ;B[ac];W[ol];B[ao];W[ef];B[ia] ;W[ee];B[ji];W[jo];B[gp];W[gg] ;B[ah];W[om];B[ii];W[ka];B[aa] ;W[hg];B[op];W[ap];B[eg];W[jg] ;B[dl];W[ci];B[ak];W[md];B[fa] ;W[dj];B[fh];W[gn];B[dc];W[nl] ;B[mo];W[kc];B[pb];W[on];B[cl] ;W[gh];B[fb];W[bf];B[ie];W[bj] ;B[pe];W[al];B[ea];W[eb];B[fi] ;W[kg];B[kl];W[oa];B[dd];W[lj] ;B[mc];W[aj];B[bp];W[da];B[km] ;W[mj];B[ap];W[nc];B[hf];W[pg] ;B[ek];W[mc];B[mg];W[io];B[db] ;W[bg];B[mm];W[ll];B[lf];W[mf] ;B[jh];W[lg];B[fo];W[bk];B[jg] ;W[gk];B[bh];W[kg];B[mn];W[ki] ;B[nh];W[lm];B[am];W[ff];B[ng] ;W[ag];B[he];W[of];B[kl];W[en] ;B[al];W[if];B[pf];W[lo];B[mg] ;W[kj];B[no];W[kg];B[hl];W[pk] ;B[pj];W[oi];B[jf];W[oe];B[fl] ;W[km];B[af];W[jj];B[oj];W[lg] ;B[ng];W[mg];B[nj];W[ol];B[hh] ;W[fe];B[gj];W[nk];B[ko];W[om] ;B[gh];W[ff];B[hg];W[on];B[ee] ;W[ok];B[hm];W[gg];B[ed];W[ef] ;B[gk];W[fg];B[gf];W[bi];B[jb] ;W[ah];B[lo];W[ka];B[kp];W[pe] ;B[nl];W[af];B[fd];W[ef];B[fe] ;W[pk];B[oj];W[me];B[pj];W[nj] ;B[ff];W[oj];B[ja];W[nh];B[fg] ;W[kl];B[];W[])
补充:
让计算机自己下了50次,统计了黑棋得分,平均分为128.4,接近棋盘所有点的半数128。
现在计算机还只懂规则,不懂策略。等它有点智商后再统计黑棋得分情况,据此确定贴子。也许现在它傻了吧唧的样子,才能表现出黑棋真实的先手优势是多少。目前有限的数据说明黑棋并无明显先手优势。无论如何,贴子问题还有待深入研究。
为了充分利用这些数据,我还统计了每局的棋块数,其中黑白各一块棋有44局(占88%),剩下的6局(占12%)为一色一块棋另一色两块棋。就是说,一局棋下来,基本上是一人一块棋。这或许就是无酒居士所说的“道棋是联络的围棋”。这里引出另一个问题,就是16路是不是太小了。为此我生成了10局19路道棋棋局,统计的结果是黑白各一块棋有7局,一块棋加两块棋有3局。直观感觉为了增加棋块而把棋盘扩大到19路并没有太大意义。
注:这些分析在AI数据前都是浮云,具体请见【道棋AI数据分析】。2022.09.08