$30 off During Our Annual Pro Sale. View Details »

オセロAI / OthelloAI

tasotaku
July 09, 2023
13

オセロAI / OthelloAI

tasotaku

July 09, 2023
Tweet

Transcript

  1. JavaでオセロAI作成
    東京理科大学 創域理工学部情報計算科学科3年
    宮内翼
    2023/04/15
    © 2023 RICORA Programming Team 1

    View Slide

  2. 目次
    自己紹介
    背景など
    ビットボード
    文字列とビットボードの変換
    評価関数
    盤位置
    確定石
    候補数
    αβ法
    2023/04/15
    © 2023 RICORA Programming Team 2

    View Slide

  3. 自己紹介
    東京理科大学 創域理工学部情報計算科学科3年所属
    RICORA部長してます
    RICORA(RIkadai COmputer Research Association)は、東京理科大学野田キャンパスを拠
    点として活動している電子計算機好きのためのサークルです。駄弁ったり自由にそれ
    ぞれの活動をします。
    私は機械学習メイン
    趣味はゲームしたりアニメ見たり
    2023/04/15
    © 2023 RICORA Programming Team 3

    View Slide

  4. 背景など
    学校の授業でオセロサーバーと通信するAIクライアントの大会があり、優勝できまし
    た。
    文字列で盤面を受け取り、文字列でコマを置く命令を送る。
    10秒以内にコマを置かないと強制負け。
    指定言語はJava。
    私はオセロ初心者です。
    2023/04/15
    © 2023 RICORA Programming Team 4

    View Slide

  5. ビットボード
    盤面を二進数で表現する。自分の駒を1、空のマスと相手のコマを0で表し、両陣営そ
    れぞれが持つ。とても速い
    | | | | | | | | |
    | | | | | | | | |
    | | | | | | | | |
    | | | |白|黒| | | |
    | | | |黒|白| | | |
    | | | | | | | | |
    | | | | | | | | |
    | | | | | | | | |
    黒:0000000000000000000000000000100000010000000000000000000000000000
    白:0000000000000000000000000001000000001000000000000000000000000000
    2023/04/15
    © 2023 RICORA Programming Team 5

    View Slide

  6. 文字列とビットボードの変換
    文字列
    "BOARD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 1 -1 0 0 0..."

    配列
    {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,1,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0...}

    ビットボード
    黒:0000000000000000000000000000100000010000000000000000000000000000
    白:0000000000000000000000000001000000001000000000000000000000000000
    2023/04/15
    © 2023 RICORA Programming Team 6

    View Slide

  7. 評価関数
    その盤面がどれだけ良いか評価するための関数。
    盤位置と確定石と候補数を用いる。
    2023/04/15
    © 2023 RICORA Programming Team 7

    View Slide

  8. 盤位置
    盤面のマスに価値を持たせ、自分の
    駒があるなら足し算し、相手の駒が
    あるなら引き算する。
    引用
    https://note.com/nyanyan_cubetech/
    n/n17c169271832?
    magazine_key=m54104c8d2f12
    2023/04/15
    © 2023 RICORA Programming Team 8

    View Slide

  9. 確定石
    確定石とは、もうひっくり返らない石のこと。
    確定石を正確に数えると計算量が多いため、外周の近似値のみを求める
    引用
    https://note.com/nyanyan_cubetech/n/n17c169271832?magazine_key=m54104c8d2f12
    2023/04/15
    © 2023 RICORA Programming Team 9

    View Slide

  10. 候補数
    候補数とは、コマを置けるマスの数のこと。
    候補数が多い方が良いらしい。
    2023/04/15
    © 2023 RICORA Programming Team 10

    View Slide

  11. 重み
    評価関数は、(重み)×(盤位置)+(重み)×(確定石)+(重み)×(候補数)とする。
    それぞれに重みを掛ける事で、どの数を重要視するかを決められる。最終的に、盤位
    置を1倍、確定石を35倍、候補数を5倍で望みました。
    2023/04/15
    © 2023 RICORA Programming Team 11

    View Slide

  12. minimax法
    αβ法はminimax法を効率化したものなので、先にこちらを解説。
    2手読みの場合、1手目は自分が、2手目は相手が打ちます。なので、自分の番では一番
    評価関数の値が高く、相手の番では評価関数の値が低い手を選択します。
    これを全てのパターンで試し、一番評価関数の値が高い手を選びます。
    2023/04/15
    © 2023 RICORA Programming Team 12

    View Slide

  13. αβ法
    minimax法は非効率なので、無駄な探索をカットする。
    自分の手番では、一番高い値を選択するので、すでに計算した手よりも低い手は探索
    しない。
    相手の手番では、一番低い値を選択するので、すでに計算した手よりも高い手は探索
    しない。
    という手法をminimax法に取り込んだのがαβ法です。
    2023/04/15
    © 2023 RICORA Programming Team 13

    View Slide

  14. 参考にしたサイト等
    オセロAIの教科書|にゃにゃん(山名琢翔)|note
    https://note.com/nyanyan_cubetech/m/m54104c8d2f12
    ビットボードによる αβ 法 - interprism's blog
    https://interprism.hatenablog.com/entry/bitboard
    リバーシの評価関数について
    https://www.info.kindai.ac.jp/~takasi-i/thesis/2012_09-1-037-0133_S_Shiota_thesis.pdf
    私のgithub
    https://github.com/tasotaku/OthelloAI
    2023/04/15
    © 2023 RICORA Programming Team 14

    View Slide