85DATA OTHELLO PAGE ホームへ
MYCARオセロプログラムの作り方掲示板BLOGプロフィール

OthelloPage HOMEオセロプログラムの作り方 

※「Othello、オセロ」は株式会社メガハウスの登録商標です。

2.盤の評価     〜簡単に作成する思考プログラム その2 〜

それよりも強くするには、どうしたら良いのか、かなり悩みました。
「相手がココに置いたら、こうする」なんて考えていたら、パターンが多すぎてキリがありません。
(IF 文ばかりになってしまいそうで、収集つかなくなりそうな感じでした。中々考えがまとまりませんでした)

検討の結果「置ける位置全てを置いた後の盤を評価し、得点を計算する」方法を考えました。
この考えも、多くのプログラマーが簡単に実現できることでしょう。

次のようなテーブルを用意します。
※下記の得点はあくまでも一例です。


上記の例で言えば、
隅に石があったら、+60点
隅の隣(オレンジ)に石があったら、-10点
・・・と言った具合に盤の石の位置を評価値として累計する仕組みです。
人間側の石の評価得点とコンピュータ側の評価得点を計算します。
※隅以外全てゼロとマイナス得点となっているのは、石を多く置いた方が、得点が低くなるというようにするためです。

コンピュータの得点−人間の得点 = 評価とします。
※もちろん、「置いてから」と言っても画面の表示上は置いていませんよ。内部での処理の話です。
この評価が一番高い箇所に石を置く(打つ)ようにします。


例えば、次の盤面(黒番)には、置ける位置が5箇所あります。


5箇所に置いた盤面は以下の通りになります。

@

黒の得点 -7
白の得点 -2

評価点 -5
A

黒の得点 -4
白の得点 -2

評価点 -2
B

黒の得点 -5
白の得点 -2

評価点 -3
C

黒の得点 -5
白の得点 -2

評価点 -3

D

黒の得点 -4
白の得点 -2

評価点 -2


@からDの評価点を比較して、一番高得点である盤面を選択することになります。

この例で言えば、AとDが 高得点です。(-2点)

同点の場合、AとDのどちらを選択するのかは、ランダムで決めても良いかもしれません。

これで、超初心者の打ち方と同じようになると思います。
つまり、これでも、まだまだ弱いということです。


繰り返しますが、この章で言いたい事は
「コンピュータが盤面(局面)の評価をし、その最高点を選択する」と言う事です
その盤面を見て、有利か不利かを数値化する訳です。これは"評価関数"と呼ばれています

この”評価関数”の精度が高ければ高いほど、強いプログラムになります。

この章の評価では精度が低すぎるので、次章以降に少し精度を高める手法を記載していきます。


   B-NEXT.GIF - 453BYTES