最新

Miyako Shogi System

コツコツ改良、へこたれない
2014| 1|
2013| 12|
2012| 01| 02| 04| 05| 06| 07| 08| 09| 10|
2011| 01| 02| 03| 04| 05| 07| 08| 10| 11| 12|
2010| 02| 03| 06| 07| 08| 09| 10| 12|

2011/01/16

ブログ旧ymss部分は削除

MiyakoShogiSystem以降の部分だけにした。さすがに古い棋譜やら、メモは恥ずかしい。

現時点での手の構造(int型)

ofs  width  役割
0      8    from
8      8    to
16     4    piece
20     4    capture
24     1    promote
25     1    killer move
26     1    1/2手延長
27     1    1手延長

killer moveビットは手のオーダリング時に付ける。枝刈判定で使う。ハッシュの手は1番目にオーダリングするので、特に印は付けない。王手判定は局面更新時に判断する。(ハッシュの手、キラー手は局面更新せずに判断するため王手判定とならない→1手延長できない)

現時点での評価関数の項目

OffensePos1[81][8][81];        // 歩桂銀金/成金角飛馬竜の位置表(対相手玉)
OffensePos2[9][3][81];         // 歩桂銀の位置表(対自飛車筋)
DefensePos1[81][4][81];        // 歩銀金馬の位置表(対自玉)
DefensePos2[9][2][81];         // 銀金の位置表(対相手飛車筋)
KingPos1[9][81];               // 玉の位置表(対自飛車筋)
KingPos2[9][81];               // 玉の位置表(対相手飛車筋)
KingRank[9];                   // 終盤の玉の段

Mobility[6][9];                // 攻め駒の動ける量(飛車の前/後/横,角,桂馬,銀のバック)
AttackPieceValue[2][16];       // 飛車の先に有る駒

PinPieceValue[16][7];          // ピン駒と王との距離
PinAttacks[4][3];              // ピン駒の利きの差

KingAttacks[13][9];            // 玉の周囲の利き
KingGuardM[9];                 // 玉の周囲の金銀
KingGuardK[9];                 // 玉の周囲の小駒
KingSpace[9];                  // 玉の自由度
KingSpaceInChk[9];             // 王手を受けたときの玉の自由度
ZoneAttacks[3][5];             // 相手陣への利き(段筋別)

AttackKei;                     // 桂頭の利きがある加点
AttackKaku;                    // 角頭の利きがある加点
NoAttackPos[12];               // 自陣に利きが無いマス目数

HandValue[8][8];               // 序中盤持ち駒の価値
HandValueE[8][8];              // 終盤持ち駒の価値

現時点でのハッシュ局面表

// 1エントリ16byte
DWORD64   key;       // ハッシュキー
int       move;      // ハッシュ手
short     score;     // 探索で得た局面の評価値
BYTE      depth;     // 探索を行った際の残り深さ
BYTE      type_age;  // 探索で得た値が局面の評価値そのものか上限値か下限値か (4bit)
                     // 探索のカウンタ (4bit)

リンクはご自由に (Miyako Shogi System Kyoto Japan)

ダウンロードのページ

Lighttpd

DreamPlug