評価方式の設定は「管理」メニューの「評価データ」-「評価方式の設定」で起動される評価方式の設定ダイアログで行います。
評価パターンを変更する
評価パターンの設定は、評価方式の設定ダイアログの「パターン」タグで行います。
標準添付されている評価データでは、一般的な11種のパターンが使用されていますが、パターンを削除することも、異なるパターンを追加することも可能です。
パターンを追加する場合には、対象フィールドの「追加」ボタンをクリックして下さい。
「追加」ボタンがクリックされると、パターンの基本特性の入力が求められます。
名称には最大半角31文字で任意の文字列が指定できます。
石数にはパターン上の全てに石が配置された場合の石数を最大10まで指定できます。
対称セットには、パターン内で左右/上下/対角対称となる石のセット数を入力して下さい。
基本特性の入力が完了すると新しいパターンが追加されますので、パターンの位置指定を行って下さい。
「位置指定」ボタンをクリックすると盤面に対するマウス入力で位置指定が行えます。
位置指定時には対称セットとなる位置の指定は連続して行う必要があります。
パターンが対称盤面を持つ場合には、盤面を追加して下さい。
基本盤面から対称盤面を作成するために「90度回転」/「左右反転」ボタンが用意されています。
適用局面フィールドには定義したパターンを使用する局面を指定して下さい。
パターンに対するパラメータは適用局面毎に作成されます。このため、全局面でパターンを使用する場合にも、
その局面を分割しておくことで局面毎に最適なパラメータが設定できる可能性があります。
ただし、局面を分割するとパラメータ割り当てに要する労力と使用時に必要となるメモリ量が増大します。
- ご注意 -
対称セット定義はパラメータ値に反映されます。例えば、対称セット数が2のa1a2b1b2cというパターンを定義した場合、
*OO**とO**O*には常に同じパラメータ値が設定されます。対称セットで定義されるパターン内の対称配置は局面評価では同一の影響力を持つものとして扱われます。
対称セットの指定は必須ではありません。このため、0を指定することもできますが、対称セットを適切に指定する場合に比べて、対称セットを指定しない場合には、学習効率が低下し、データサイズは大きくなります。
内蔵関数の使用形態を変更する
内蔵関数の使用形態変更は、評価方式の設定ダイアログの「内蔵関数」タグで行います。
内蔵関数には「石数」/「着手数」/「潜在的着手数」/「パリティー」が用意されています。
「石数」は手番/非手番の石数の差を出力する関数です。
「着手数」は手番/非手番の着手可能数の差を出力する関数です。
「潜在的着手数」は手番/非手番の空きマスに面した石数の差を出力する関数です。
「パリティー」は残箇所が奇数の場合に1を偶数の場合に-1を出力する関数です。
内蔵関数は適用局面を指定することで有効化されます。
内蔵関数を無効化する場合には全ての適用局面を削除して下さい。
- ご注意 -
「パリティー」は終盤で残箇所が奇数の手番が有利となることを反映させるために一般的に使用されています。
本来の意味ではパリティーは終盤10手程度でのみ有効なため、全局面に適用する必要はありませんが、
標準添付されている評価データでは評価値の局面毎のオフセット吸収を兼ねて全局面で使用しています。
外部関数を使用する
外部関数インターフェースはカスタマイズ性の一環として用意されています。
プログラミングの知識のある方は、JScript/VBScript/DLLが選択できますので、好みの言語で外部関数を作成してみて下さい。
外部関数は盤面の状態を受け取り、それに対する評価値を返す関数です。
先読み等の複雑な処理は本ソフト側が行うことを前提とできるため、入力盤面に対する評価値出力のみを記述すればよく、比較的容易に作成できる筈です。
外部関数の作成時には本ソフトとのインタフェース用にGetFuncName(funcno)/GetEvalProint(funcno,board)の二つの関数を用意して下さい。
GetFuncName(funcno)は関数番号に対応した関数名を返す関数です。
本ソフトは外部関数の組み込み時にfuncnoを0から順次増加させながらNULLが返されるまでこの関数を呼び出します。
この処理によって本ソフトは定義されている外部関数の個数と名称を取得します。
GetEvalPoint(funcno,board)は盤面状態に対する評価値を返す関数です。本ソフトは盤面評価が必要な場合に関数番号と盤面状態を指定してこの関数を呼び出します。
評価値は手番から見た石差として扱われますので、手番有利の場合にはプラス値を、非手番有利の場合にはマイナス値を返すようにして下さい。
ドキュメントフォルダのMasterReversiPro\DataFile\ExtFuncにはJScript/VBScript/DLLの外部関数サンプルがインストールされています。
外部関数を作成する場合にはこれらのソースコードをベースに処理内容を変更して下さい。
JScirpt/VBScriptサンプルはそのままメモ帳で開けますので参照/変更して下さい。DLLのソースコードはドキュメントフォルダのMasterReversiPro\DataFile\DllProjectにVisualStudio2005のプロジェクト形式でインストールされています。
外部関数を使用するためには、JScript/VBScriptの場合にはそのソースコードファイルを、DLLの場合にはその実行バイナリファイルを追加し、各関数の適用局面を指定します。
これらの操作は評価方式の設定ダイアログの「外部関数」タグで行います。
- ご注意 -
JScript/VBScriptを使用して外部関数を作成する場合には必要となるツールはメモ帳等のテキストエディタのみです。
このため、手軽に外部関数を作成することができます。
ただし、動作速度は低速となるため、複雑な処理を行う外部関数を作成した場合には動作速度が問題となるかもしれません。
動作速度が問題となる場合にはDLLを作成する必要があります。
DLLの作成にはコンパイル環境が必要となるため敷居は高くなりますが、プログラミング自体は容易に行える筈です。
探索の枝狩り方式を変更する
探索枝狩りの変更は評価方式の設定ダイアログの「探索枝狩り」タグで行います。
本ソフトの探索の枝狩りでは対象の手数毎に適用局面を指定でき、それぞれの局面毎に、予測値算出用の先読み手数/探索枝狩りの既定精度を設定できます。
予測値算出用の先読みは、対象の先読みが行われた場合の評価値を予測するために使用されます。
予測値算出用の先読みの結果、評価対象の着手が予測誤差を考慮しても最善手とならないと判断できた場合には、対象の先読みが省略され、評価速度の向上が図られます。
予測値算出用の先読み手数を極端に少なくすると、予測誤差が大きくなりすぎるため、対象の先読みを省略できるケースが減少し、処理速度の向上は望めません。
予測値算出用の先読み手数を極端に多くすると、対象の先読みを省略できる可能性は高まりますが、
予測値算出用の先読み自体のオーバーヘッドが増大するため、やはり処理速度の向上は望めません。
既定精度はコンピュータプレイヤーの着手選択用評価での枝狩り精度として使用されます。
枝狩り精度を低く設定した場合、対象手数での評価が省略される可能性が高くなり、評価速度が向上します。
ただし、最善手が評価されない可能性が高まるため、評価結果の信憑性は低下します。
枝狩り精度を高く設定した場合、対象手数での評価が行われる可能性が高くなり、評価結果の信憑性が高まります。
ただし、評価速度は低下します。
一般に、既定精度を大きくするとコンピュータプレイヤーを強くできますが、思考速度は遅くなります。
既定精度を小さくした場合には思考速度は高速化されますが、コンピュータプレイヤーは弱くなります。
- ご注意 -
予測値算出用の先読み手数/既定精度は、処理性能やコンピュータの強さを観測しながらカットアンドトライで決定することになります。
カットアンドトライを行う場合にはデフォルト値を基準として値を増減させることをお勧めします。
Copyright (c) 2007-2025 T.Ishii (t-ishii@js2.so-net.ne.jp) all rights reserved.