トップ «前の日(11-03) 最新 次の日(11-05)» 追記

U-memo

2006|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|08|
2009|08|10|
2010|02|03|
2011|11|12|
2012|04|
2016|02|
All= / Today= / Yesterday=

2007-11-04

_ [雑記] ブロックスデュオ プログラムメモ

いきなり当たって負かされた1位のhmmm(iroriの日記)

評価関数アルゴリズムのうち、勢力範囲のほうは骨子は同じような。 私のは使用ピースについてはこれから打つものに関しての大きさ以外の考慮なし。

使用ピースは変に考えても、境界の争いで 1,2-オミノ を打てなくなる弊害が大きすぎたので早々に捨てた。ただ、以下のとおり、確定自陣の評価にまだ打っていないピースが効いてくるけど。

私は勢力範囲無限大で傾斜配点をつけた(遠いほど点が減る)んですが、 距離きめ打ちのほうが速いかも。

   1 2 3 4 5 6 7 8 9 A B C D E
 ┏━━━━━━━━━━━━━━┓
1┃      □    ■              ┃
2┃      □  ■■■            ┃
3┃      □・  ■□■■        ┃
4┃    □□・・  □□■■      ┃
5┃      ◎□  □□    ■      ┃
6┃      □□□      ■        ┃
7┃        □  □□■■■      ┃
8┃          □  □□□■      ┃
9┃          □■  ■■        ┃
A┃          □■  ■■        ┃
B┃          □■  ■          ┃
C┃      □  □■■            ┃
D┃      □□                  ┃
E┃        □□                ┃
 ┻━━━━━━━━━━━━━━┛
  • 黒から見て◎のようにすり抜けられる場所は(低めながら)点数をつけた
  • ただし、手持ちのピースからはどうやっても侵入されないエリアが作れたら高い点数をつける (厳密にやると重すぎるのでやや大雑把に判断)

こんなことしてるから評価関数が重くなるんだな。 10/9に公開したヤツ ではその半分くらいインプリされた状態。

最終的には先手が強くなったけど、当初は後手のほうが強かった。 先手が打った直後は先手がリードしている局面であり、 後手が打った直後は互角の局面になっている、 と言う差がうまくバランスさせられなかったわけだが。 先手がやけに守りに入りすぎて後手に逆転されるとかいう感じ。

プログラムがヘボかったのと含めて 評価に時間がかかってしまっていたので、 候補を相当絞った上で(将棋の数え方で)3手先読みが限界でした。 hmmm は序盤から4〜6手読むそうだから勝てるわけがない。

α-βとかまじめにインプリする根性もなかったからいいけど。

あと、定石はなし(先手の初手だけ決めうち)。 最初の数手の手の広がり方が大きすぎるので定石を確立 する時間なんぞあるわけもなく。

大会の様子(おびなたのはてな日記)

モンテカルロがそこそこ強かったと? たまにツボに入って強いケースはあったけど、 自分のインプリのは(時間がかかる割りに)別に強くなかった気がする。

自分のプログラムのレベル5 (評価関数一手読み、思考時間数秒以下) に勝てないけどモンテカルロもどきには勝てるから。

_ [雑記] プログラム対戦反省

そもそもプログラムが汚い(まず関数型言語には見えない)のはさておいて

  • ヘボかった点: matrix_array を使ってしまったところ

局面の生成消失が派手に起こるので、高速化するつもりがあるなら 一次元配列で持っておくべきだった。 matrix_array は簡単に盤面のコピーができないのだ。 このせいでかなり時間は損したはず。 もっとも最初から一次元でやったとしてバグ取れたかどうかは疑問。

  • ヘボかった点2: 自分が弱い

評価関数1手読みで勝てなくなってから、プログラムを強くする手段を 判別するのが相当困難になってしまったとか言う。 イロイロ思いついたのを試してみても弱くなったりする始末。

  • ヘボかった点3: 完全読みがバグってるとか

そもそもαβとか諸々を実装してないとか他イロイロあるけど、 終盤の完全読みも殺してある。 まぁ、1ピース差とかの僅差の勝負にはならなかっただろうから たぶん問題ないと思うけど。

  • ヘボかった点4: 思考時間可変じゃない

消費時間を一切見てない。そこまで考えるのは嫌だったから、 3通りくらいの深さバリエーションを作っておいたけど、 どう実行されたのだろう?

  • 番外

12日の締め切り後に改善する気すらなかったし、 差し替えはしていません。