22回大会の参加募集が始まったようです。残念ながら、今回は欠場します。
時々、時間をみつけてWILDCATをいじっています。df−pnに一区切りがついたので、次の課題である並列化の効率作業をやっていました。
21回大会(2011年)に参加したバージョンもCrafty流の並列化は施してあったのですが、なぜか2並列以上になると効率が悪くなってしまう症状があり、結局、大会には4コアマシンながら2コアしか使わない片肺飛行で参加しました。
そして並列化との闘いが始まってから苦節、4か月。やっとのこと、Crafty流の並列処理を組み込むことができました。そっくりそのままの利用ですが、それにしても、感心するのは、Craftyがうまく作ってあるなあということです。スレッドをアイドリングさせておいて、仕事がきたら仕事をして、仕事が済んだらアイドリングに戻る。探索で得られたデータは、素直に親に戻すなどなど、うまくやっているなあと思うばかり。
コンピュータ将棋開発を始めて、これはすごいと唸ったのは、(1)持ち駒の優劣関係を一発で求める、いわゆる野下教授の方法、(2)df−pnの仕組み、(3)Craftyの並列処理、の3つかな。
話は変わって、実は、最近、気づいたのですが、キラームーブの登録は、ベータ・カットが起こったところでやるのですね。Craftyのソースを見て初めて知りました。いままでは、アルファー値を更新したところで、登録していたのですが、あまり効果は上がらず、採用はしてきませんでした。
21回大会(2011年)に参加したバージョンもCrafty流の並列化は施してあったのですが、なぜか2並列以上になると効率が悪くなってしまう症状があり、結局、大会には4コアマシンながら2コアしか使わない片肺飛行で参加しました。
そして並列化との闘いが始まってから苦節、4か月。やっとのこと、Crafty流の並列処理を組み込むことができました。そっくりそのままの利用ですが、それにしても、感心するのは、Craftyがうまく作ってあるなあということです。スレッドをアイドリングさせておいて、仕事がきたら仕事をして、仕事が済んだらアイドリングに戻る。探索で得られたデータは、素直に親に戻すなどなど、うまくやっているなあと思うばかり。
コンピュータ将棋開発を始めて、これはすごいと唸ったのは、(1)持ち駒の優劣関係を一発で求める、いわゆる野下教授の方法、(2)df−pnの仕組み、(3)Craftyの並列処理、の3つかな。
話は変わって、実は、最近、気づいたのですが、キラームーブの登録は、ベータ・カットが起こったところでやるのですね。Craftyのソースを見て初めて知りました。いままでは、アルファー値を更新したところで、登録していたのですが、あまり効果は上がらず、採用はしてきませんでした。
山田さんからコメントをいただいたので、ヒューリスティックな調整がどれだけ効果があるのか調べてみました。
「内藤國雄詰将棋200題」の第1問から第80問(第59問は除外)の計79問の解を見つけるのにどれだけの時間とノードを必要とするかの試験です。
・1手詰アリ、攻方での反証数調整アリ、玉方での証明数調整アリ
時間 4,008ms ノード数 145,220
・1手詰ナシ、攻方での反証数調整アリ、玉方での証明数調整アリ
時間 6,261ms ノード数 260,593
・1手詰ナシ、攻方での反証数調整ナシ、玉方での証明数調整アリ
時間 6,475ms ノード数 268,612
・1手詰ナシ、攻方での反証数調整ナシ、玉方での証明数調整ナシ
時間 7,809ms ノード数 327,332
やはり、駒を動かさない1手詰めの効果は大きいようです。なお、反証明数と証明数の調整は、いきあたりばったりの試行錯誤で行ったものです。
「内藤國雄詰将棋200題」の第1問から第80問(第59問は除外)の計79問の解を見つけるのにどれだけの時間とノードを必要とするかの試験です。
・1手詰アリ、攻方での反証数調整アリ、玉方での証明数調整アリ
時間 4,008ms ノード数 145,220
・1手詰ナシ、攻方での反証数調整アリ、玉方での証明数調整アリ
時間 6,261ms ノード数 260,593
・1手詰ナシ、攻方での反証数調整ナシ、玉方での証明数調整アリ
時間 6,475ms ノード数 268,612
・1手詰ナシ、攻方での反証数調整ナシ、玉方での証明数調整ナシ
時間 7,809ms ノード数 327,332
やはり、駒を動かさない1手詰めの効果は大きいようです。なお、反証明数と証明数の調整は、いきあたりばったりの試行錯誤で行ったものです。
新規末端での1手詰とそのデータを利用した証明数予測でプログラムをチューニング。これはびっくり。これなら実戦で十分使えそうな感触。数手詰で瞬間、10手詰程度で50ミリ秒、20手詰前後で500ミリ秒くらいだろうか。
cpu=u9600, max. nodes=65,536
内藤詰将棋80題
第1番 ○ 17ms nodes=50
第2番 ○ 16ms nodes=43
第3番 ○ 16ms nodes=30
第4番 ○ 16ms nodes=35
第5番 ○ 123ms nodes=3588
第6番 ○ 22ms nodes=481
第7番 ○ 13ms nodes=64
第8番 ○ 80ms nodes=3530
第9番 ○ 33ms nodes=942
第10番 ○ 14ms nodes=54
第11番 ○ 13ms nodes=32
第12番 ○ 16ms nodes=155
第13番 ○ 14ms nodes=141
第14番 ○ 81ms nodes=3683
第15番 ○ 13ms nodes=96
第16番 ○ 32ms nodes=959
第17番 ○ 14ms nodes=115
第18番 ○ 20ms nodes=252
第19番 ○ 12ms nodes=29
第20番 ○ 22ms nodes=333
第21番 ○ 14ms nodes=87
第22番 ○ 15ms nodes=193
第23番 ○ 17ms nodes=160
第24番 ○ 12ms nodes=25
第25番 ○ 68ms nodes=3024
第26番 ○ 94ms nodes=4884
第27番 ○ 16ms nodes=217
第28番 ○ 37ms nodes=1414
第29番 ○ 21ms nodes=423
第30番 ○ 20ms nodes=445
第31番 ○ 85ms nodes=4411
第32番 ○ 40ms nodes=1074
第33番 ○ 45ms nodes=1495
第34番 ○ 13ms nodes=58
第35番 ○ 14ms nodes=69
第36番 ○ 36ms nodes=1590
第37番 ○ 15ms nodes=193
第38番 ○ 19ms nodes=266
第39番 ○ 26ms nodes=621
第40番 ○ 80ms nodes=2102
第41番 ○ 12ms nodes=22
第42番 ○ 36ms nodes=1048
第43番 ○ 48ms nodes=1393
第44番 ○ 12ms nodes=40
第45番 ○ 14ms nodes=59
第46番 ○ 29ms nodes=769
第47番 ○ 15ms nodes=105
第48番 ○ 14ms nodes=101
第49番 ○ 18ms nodes=214
第50番 ○ 51ms nodes=1775
第51番 ○ 161ms nodes=8022
第52番 ○ 54ms nodes=1919
第53番 ○ 16ms nodes=195
第54番 ○ 17ms nodes=337
第55番 ○ 13ms nodes=26
第56番 ○ 13ms nodes=36
第57番 ○ 631ms nodes=30783
第58番 ○ 13ms nodes=36
第59番 × 1426ms nodes=65536
第60番 ○ 14ms nodes=127
第61番 ○ 637ms nodes=31386
第62番 ○ 12ms nodes=19
第63番 ○ 32ms nodes=560
第64番 ○ 28ms nodes=844
第65番 ○ 121ms nodes=4855
第66番 ○ 18ms nodes=358
第67番 ○ 15ms nodes=143
第68番 ○ 14ms nodes=94
第69番 ○ 259ms nodes=12211
第70番 ○ 14ms nodes=124
第71番 ○ 14ms nodes=49
第72番 ○ 14ms nodes=87
第73番 ○ 112ms nodes=4123
第74番 ○ 52ms nodes=1865
第75番 ○ 15ms nodes=106
第76番 ○ 73ms nodes=1956
第77番 ○ 13ms nodes=62
第78番 ○ 45ms nodes=1579
第79番 ○ 13ms nodes=36
第80番 ○ 21ms nodes=437
cpu=u9600, max. nodes=65,536
内藤詰将棋80題
第1番 ○ 17ms nodes=50
第2番 ○ 16ms nodes=43
第3番 ○ 16ms nodes=30
第4番 ○ 16ms nodes=35
第5番 ○ 123ms nodes=3588
第6番 ○ 22ms nodes=481
第7番 ○ 13ms nodes=64
第8番 ○ 80ms nodes=3530
第9番 ○ 33ms nodes=942
第10番 ○ 14ms nodes=54
第11番 ○ 13ms nodes=32
第12番 ○ 16ms nodes=155
第13番 ○ 14ms nodes=141
第14番 ○ 81ms nodes=3683
第15番 ○ 13ms nodes=96
第16番 ○ 32ms nodes=959
第17番 ○ 14ms nodes=115
第18番 ○ 20ms nodes=252
第19番 ○ 12ms nodes=29
第20番 ○ 22ms nodes=333
第21番 ○ 14ms nodes=87
第22番 ○ 15ms nodes=193
第23番 ○ 17ms nodes=160
第24番 ○ 12ms nodes=25
第25番 ○ 68ms nodes=3024
第26番 ○ 94ms nodes=4884
第27番 ○ 16ms nodes=217
第28番 ○ 37ms nodes=1414
第29番 ○ 21ms nodes=423
第30番 ○ 20ms nodes=445
第31番 ○ 85ms nodes=4411
第32番 ○ 40ms nodes=1074
第33番 ○ 45ms nodes=1495
第34番 ○ 13ms nodes=58
第35番 ○ 14ms nodes=69
第36番 ○ 36ms nodes=1590
第37番 ○ 15ms nodes=193
第38番 ○ 19ms nodes=266
第39番 ○ 26ms nodes=621
第40番 ○ 80ms nodes=2102
第41番 ○ 12ms nodes=22
第42番 ○ 36ms nodes=1048
第43番 ○ 48ms nodes=1393
第44番 ○ 12ms nodes=40
第45番 ○ 14ms nodes=59
第46番 ○ 29ms nodes=769
第47番 ○ 15ms nodes=105
第48番 ○ 14ms nodes=101
第49番 ○ 18ms nodes=214
第50番 ○ 51ms nodes=1775
第51番 ○ 161ms nodes=8022
第52番 ○ 54ms nodes=1919
第53番 ○ 16ms nodes=195
第54番 ○ 17ms nodes=337
第55番 ○ 13ms nodes=26
第56番 ○ 13ms nodes=36
第57番 ○ 631ms nodes=30783
第58番 ○ 13ms nodes=36
第59番 × 1426ms nodes=65536
第60番 ○ 14ms nodes=127
第61番 ○ 637ms nodes=31386
第62番 ○ 12ms nodes=19
第63番 ○ 32ms nodes=560
第64番 ○ 28ms nodes=844
第65番 ○ 121ms nodes=4855
第66番 ○ 18ms nodes=358
第67番 ○ 15ms nodes=143
第68番 ○ 14ms nodes=94
第69番 ○ 259ms nodes=12211
第70番 ○ 14ms nodes=124
第71番 ○ 14ms nodes=49
第72番 ○ 14ms nodes=87
第73番 ○ 112ms nodes=4123
第74番 ○ 52ms nodes=1865
第75番 ○ 15ms nodes=106
第76番 ○ 73ms nodes=1956
第77番 ○ 13ms nodes=62
第78番 ○ 45ms nodes=1579
第79番 ○ 13ms nodes=36
第80番 ○ 21ms nodes=437
何とか動くようにはなったので、しばらく休憩。ソースを公開しようと思ったが、あまりに汚くて恥ずかしいので、頭の中を整理する時に使った疑似コードを少しだけ。一応、解は見つけてくるので、大きな誤りはないと思うが、、おそまつ、、、、。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////// df-pn //////////////////
main()
{
node->pn = INFINI
node->dn = INFINI
MID(node)
}
MID(TNODE *node)
{
TNODE hnode;
TNODE child;
int pn_c,dn_c,pn_2,dn_2;
int pn_min,dn_sum,dn_min,pn_sum;
IF(ハッシュ表を探す(局面、hnode)= 当 ){
IF(node->pn <= hnode-pn || node->dn <= hnode->dn){
return
}
{
IF(攻め方){
攻め方の候補手を生成
IF(候補手なし){
node->pn = INFINI
node->dn = 0
ハッシュに登録(現在の局面、node)
return
}
WHILE{
pn_c = INFINI
dn_c = INFINI
pn_min = INFINI;
dn_sum = 0;
FORALL(攻め方候補手で局面を進める){
IF(ハッシュ表を探す(局面、hnode)= 当 ){
hnode->pn = ハッシュ表の値
hnode->dn = ハッシュ表の値
}
ELSE{
hnode->pn = 1
hnode->dn = 1
}
MIN(hnode->pn,pn_min)
dn_sum += hnode->dn
IF(hnode->dn = INFINI){
選択手 = 現在の候補手
}
ELSE{
// 一番良さそうな子ノードの選択
IF(hnode->pn < pn_c){
選択手 = 候補手
pn_2 = pn_c;
dn_c = hnode->dn;
pn_c = hnode->pn;
}
ELSE IF(hnode->pn < pn_2){
pn_2 = hnode->pn;
}
}
}
IF(node->pn > pn_min && node->dn > dn_sum) {
child->dn = node->dn + dn_c - dn_sum;
child->pn = MIN(node->pn,pn_2+1);
選択手で局面を進める
MID(child)
選択手で局面を戻す
}
ELSE BREAK;
}
node->pn = pn_min;
node->dn = dn_sum;
ハッシュ表に登録(現在の局面、node)
IF(ルート局面 && pn_min = 0){
選択手が解
}
}
IF(玉方){
玉方の候補手を生成
IF(候補手なし){
node->pn = 0
node->dn = INFINI
ハッシュに登録(現在の局面、node)
return
}
WHILE{
pn_c = INFINI
dn_c = INFINI
dn_min = INFINI;
pn_sum = 0;
FORALL(攻め方候補手で局面を進める){
IF(ハッシュ表を探す(局面、hnode)= 当 ){
hnode->pn = ハッシュ表の値
hnode->dn = ハッシュ表の値
}
ELSE{
hnode->pn = 1
hnode->dn = 1
}
MIN(hnode->dn,dn_min)
pn_sum += hnode->pn
IF(hnode->pn = INFINI){
選択手 = 現在の候補手
}
ELSE{
//// 一番良さそうな子ノードの選択
IF(hnode->dn < dn_c){
選択手 = 現在の候補手
dn_2 = dn_c
pn_c = hnode->pn
dn_c = hnode->dn
}
ELSE{
IF(hnode->dn < dn_2){
dn_2 = hnode->dn
}
}
}
}
IF(node->dn > dn_min && node->pn > pn_sum){
child->pn = node->pn + pn_c - pn_sum
child->dn = MIN(node->dn,dn_2+1)
選択手で局面を進める
MID(child)
選択手で局面を戻す
}
ELSE BREAK
}
node->pn = pn_sum;
node->dn = dn_min;
ハッシュ表に登録(現在の局面、node)
}
}
格闘の末、やっと「非ビットボード利き付き版」で動くようになった。ただし、第59問(13手詰)が解けないのは愛嬌。ハッシュクリアーに10ms程度かかっていることを考えても、これで見ると1秒あたり4万ノード程度しか読めていないようだ。
第59問は、4手進めて9手詰め問題にすると瞬間的に解けるのであるが、原因は不明、真夏の夜の悪夢は続く。今年の夏は、df−pnで終わり。
内藤詰将棋80題
第1番 ○ 18ms nodes=213
第2番 ○ 37ms nodes=586
第3番 ○ 33ms nodes=854
第4番 ○ 16ms nodes=57
第5番 ○ 264ms nodes=10242
第6番 ○ 26ms nodes=676
第7番 ○ 16ms nodes=314
第8番 ○ 57ms nodes=2487
第9番 ○ 43ms nodes=1444
第10番 ○ 17ms nodes=129
第11番 ○ 17ms nodes=187
第12番 ○ 20ms nodes=462
第13番 ○ 22ms nodes=212
第14番 ○ 133ms nodes=6836
第15番 ○ 13ms nodes=81
第16番 ○ 124ms nodes=5942
第17番 ○ 325ms nodes=13021
第18番 ○ 24ms nodes=372
第19番 ○ 15ms nodes=227
第20番 ○ 99ms nodes=3647
第21番 ○ 14ms nodes=107
第22番 ○ 20ms nodes=463
第23番 ○ 21ms nodes=273
第24番 ○ 13ms nodes=35
第25番 ○ 95ms nodes=4529
第26番 ○ 75ms nodes=3931
第27番 ○ 149ms nodes=5770
第28番 ○ 72ms nodes=3466
第29番 ○ 25ms nodes=684
第30番 ○ 29ms nodes=1023
第31番 ○ 103ms nodes=5967
第32番 ○ 116ms nodes=4233
第33番 ○ 55ms nodes=2094
第34番 ○ 14ms nodes=94
第35番 ○ 73ms nodes=2705
第36番 ○ 39ms nodes=1953
第37番 ○ 21ms nodes=463
第38番 ○ 26ms nodes=612
第39番 ○ 116ms nodes=4635
第40番 ○ 156ms nodes=4976
第41番 ○ 12ms nodes=22
第42番 ○ 40ms nodes=1410
第43番 ○ 38ms nodes=1104
第44番 ○ 13ms nodes=78
第45番 ○ 14ms nodes=84
第46番 ○ 32ms nodes=996
第47番 ○ 22ms nodes=588
第48番 ○ 28ms nodes=907
第49番 ○ 24ms nodes=496
第50番 ○ 168ms nodes=7650
第51番 ○ 310ms nodes=16921
第52番 ○ 409ms nodes=21093
第53番 ○ 19ms nodes=371
第54番 ○ 30ms nodes=1152
第55番 ○ 13ms nodes=36
第56番 ○ 15ms nodes=182
第57番 ○ 1731ms nodes=82603
第58番 ○ 55ms nodes=1601
第59番 × 11190ms nodes=524288
第60番 ○ 16ms nodes=393
第61番 ○ 1960ms nodes=101788
第62番 ○ 12ms nodes=26
第63番 ○ 121ms nodes=3776
第64番 ○ 36ms nodes=1313
第65番 ○ 279ms nodes=13595
第66番 ○ 20ms nodes=509
第67番 ○ 29ms nodes=1159
第68番 ○ 25ms nodes=796
第69番 ○ 300ms nodes=14996
第70番 ○ 17ms nodes=283
第71番 ○ 14ms nodes=64
第72番 ○ 18ms nodes=334
第73番 ○ 141ms nodes=5614
第74番 ○ 204ms nodes=10094
第75番 ○ 16ms nodes=167
第76番 ○ 55ms nodes=1599
第77番 ○ 23ms nodes=577
第78番 ○ 62ms nodes=2805
第79番 ○ 13ms nodes=34
第80番 ○ 27ms nodes=736
全時間 23499ms 正解=79 誤解=0 不詰=1
第59問は、4手進めて9手詰め問題にすると瞬間的に解けるのであるが、原因は不明、真夏の夜の悪夢は続く。今年の夏は、df−pnで終わり。
内藤詰将棋80題
第1番 ○ 18ms nodes=213
第2番 ○ 37ms nodes=586
第3番 ○ 33ms nodes=854
第4番 ○ 16ms nodes=57
第5番 ○ 264ms nodes=10242
第6番 ○ 26ms nodes=676
第7番 ○ 16ms nodes=314
第8番 ○ 57ms nodes=2487
第9番 ○ 43ms nodes=1444
第10番 ○ 17ms nodes=129
第11番 ○ 17ms nodes=187
第12番 ○ 20ms nodes=462
第13番 ○ 22ms nodes=212
第14番 ○ 133ms nodes=6836
第15番 ○ 13ms nodes=81
第16番 ○ 124ms nodes=5942
第17番 ○ 325ms nodes=13021
第18番 ○ 24ms nodes=372
第19番 ○ 15ms nodes=227
第20番 ○ 99ms nodes=3647
第21番 ○ 14ms nodes=107
第22番 ○ 20ms nodes=463
第23番 ○ 21ms nodes=273
第24番 ○ 13ms nodes=35
第25番 ○ 95ms nodes=4529
第26番 ○ 75ms nodes=3931
第27番 ○ 149ms nodes=5770
第28番 ○ 72ms nodes=3466
第29番 ○ 25ms nodes=684
第30番 ○ 29ms nodes=1023
第31番 ○ 103ms nodes=5967
第32番 ○ 116ms nodes=4233
第33番 ○ 55ms nodes=2094
第34番 ○ 14ms nodes=94
第35番 ○ 73ms nodes=2705
第36番 ○ 39ms nodes=1953
第37番 ○ 21ms nodes=463
第38番 ○ 26ms nodes=612
第39番 ○ 116ms nodes=4635
第40番 ○ 156ms nodes=4976
第41番 ○ 12ms nodes=22
第42番 ○ 40ms nodes=1410
第43番 ○ 38ms nodes=1104
第44番 ○ 13ms nodes=78
第45番 ○ 14ms nodes=84
第46番 ○ 32ms nodes=996
第47番 ○ 22ms nodes=588
第48番 ○ 28ms nodes=907
第49番 ○ 24ms nodes=496
第50番 ○ 168ms nodes=7650
第51番 ○ 310ms nodes=16921
第52番 ○ 409ms nodes=21093
第53番 ○ 19ms nodes=371
第54番 ○ 30ms nodes=1152
第55番 ○ 13ms nodes=36
第56番 ○ 15ms nodes=182
第57番 ○ 1731ms nodes=82603
第58番 ○ 55ms nodes=1601
第59番 × 11190ms nodes=524288
第60番 ○ 16ms nodes=393
第61番 ○ 1960ms nodes=101788
第62番 ○ 12ms nodes=26
第63番 ○ 121ms nodes=3776
第64番 ○ 36ms nodes=1313
第65番 ○ 279ms nodes=13595
第66番 ○ 20ms nodes=509
第67番 ○ 29ms nodes=1159
第68番 ○ 25ms nodes=796
第69番 ○ 300ms nodes=14996
第70番 ○ 17ms nodes=283
第71番 ○ 14ms nodes=64
第72番 ○ 18ms nodes=334
第73番 ○ 141ms nodes=5614
第74番 ○ 204ms nodes=10094
第75番 ○ 16ms nodes=167
第76番 ○ 55ms nodes=1599
第77番 ○ 23ms nodes=577
第78番 ○ 62ms nodes=2805
第79番 ○ 13ms nodes=34
第80番 ○ 27ms nodes=736
全時間 23499ms 正解=79 誤解=0 不詰=1
ビットボードの宿命なのか、玉を取る寸前まで駒を進めないと詰みを認識しない。かと言って、利きを計算する処理をすると速度が低下してしまう。
それではと、旧バージョンの利きを計算する非ビットボードでやってみるも、なぜかdf−pnが正常に動かない。なぜだ。ドツボにはまってしまった。旧バージョンに少し変更を加えたところが原因なのか、はたまたほかの理由か、真夏の夜の悪夢は続く。
それではと、旧バージョンの利きを計算する非ビットボードでやってみるも、なぜかdf−pnが正常に動かない。なぜだ。ドツボにはまってしまった。旧バージョンに少し変更を加えたところが原因なのか、はたまたほかの理由か、真夏の夜の悪夢は続く。
やっと、「とっておきの詰将棋」内藤國雄著の第1問から第80問(3手詰〜17手詰)まで解けるようになった。苦節3か月で、やっとここまで。
苦戦したの第61問(9手詰)と第65問(13手詰)かな。いずれも証明数を2重カウントしてしまう展開のドツボが準備されていた。ただ、現時点では1問ずつメモリークリアーしているにしろ、もう少し速く解を見つけてくれないと実戦では、使い物にならないなあ。困った。ちなみにCPUは、U9600。
内藤詰将棋80題
第1番 ○ 34ms
第2番 ○ 38ms
第3番 ○ 39ms
第4番 ○ 23ms
第5番 ○ 233ms
第6番 ○ 40ms
第7番 ○ 26ms
第8番 ○ 61ms
第9番 ○ 49ms
第10番 ○ 37ms
第11番 ○ 19ms
第12番 ○ 35ms
第13番 ○ 47ms
第14番 ○ 208ms
第15番 ○ 25ms
第16番 ○ 423ms
第17番 ○ 298ms
第18番 ○ 24ms
第19番 ○ 27ms
第20番 ○ 74ms
第21番 ○ 24ms
第22番 ○ 28ms
第23番 ○ 27ms
第24番 ○ 21ms
第25番 ○ 106ms
第26番 ○ 43ms
第27番 ○ 344ms
第28番 ○ 94ms
第29番 ○ 296ms
第30番 ○ 77ms
第31番 ○ 144ms
第32番 ○ 46ms
第33番 ○ 75ms
第34番 ○ 21ms
第35番 ○ 85ms
第36番 ○ 39ms
第37番 ○ 1177ms
第38番 ○ 41ms
第39番 ○ 234ms
第40番 ○ 558ms
第41番 ○ 23ms
第42番 ○ 61ms
第43番 ○ 495ms
第44番 ○ 21ms
第45番 ○ 23ms
第46番 ○ 45ms
第47番 ○ 33ms
第48番 ○ 45ms
第49番 ○ 37ms
第50番 ○ 137ms
第51番 ○ 257ms
第52番 ○ 336ms
第53番 ○ 28ms
第54番 ○ 38ms
第55番 ○ 22ms
第56番 ○ 24ms
第57番 ○ 3547ms
第58番 ○ 57ms
第59番 ○ 770ms
第60番 ○ 33ms
第61番 ○ 2540ms
第62番 ○ 23ms
第63番 ○ 520ms
第64番 ○ 55ms
第65番 ○ 611ms
第66番 ○ 143ms
第67番 ○ 87ms
第68番 ○ 22ms
第69番 ○ 265ms
第70番 ○ 26ms
第71番 ○ 22ms
第72番 ○ 31ms
第73番 ○ 314ms
第74番 ○ 104ms
第75番 ○ 26ms
第76番 ○ 41ms
第77番 ○ 37ms
第78番 ○ 84ms
第79番 ○ 21ms
第80番 ○ 46ms
全時間 21253ms 正解=80 誤解=0 不詰=0
まだ、持駒の優越関係を考慮していないけれど、結構、行けそうだなあ。
ノード数 従来型:12 df-pn:19
ノード数 従来型:74 df-pn:92
ノード数 従来型:1,388 df-pn:792
ノード数 従来型:60,014 df-pn:11,616
ノード数 従来型:12 df-pn:19
ノード数 従来型:74 df-pn:92
ノード数 従来型:1,388 df-pn:792
ノード数 従来型:60,014 df-pn:11,616
何とか、df-pnの詰ルーチンが動くようになりました。1か月半かかりました。21回大会の際に、参加者アピール文書を読むと、結構、多くの参加者が導入しているようだし、また1次予選6回戦で「なのは」に1手差で負けたのも、どうも詰ルーチンの性能差が出ているような気配が濃厚だったので、大会終了後にdf-pnについて、本格的に取り組んでみました。
まず、進歩本4の長井さんの論文ですが、難解で、今まで、何度も挑戦したのですが、挫折しっぱなしでした。今回も、挑戦しましたが、同じでした。最近は、便利で、WEBでdf-pnのキーワードで検索すると、結構、引っかかるようです。それで、発想の出発点になったのが、石井宏和さんのマスター論文でした。
www.logos.ic.i.u-tokyo.ac.jp/~h-ishii/master_presentation.handout.pdf
この論文の中で、探索木の中で、証明数と反証数が、どのように変化していくかが視覚的にわかり、なるほどと思ったものです。
実は、WILDCATは、数年前にセオ詰めを入れているので、証明数の概念については、なんとなくボヤーとわかっていました。実際、昔、書いたコードを読み返してみるとそれなりのことをやっているのがわかります(数年前のことで、自分の書いたコードを完全に忘れていましたが)。玉方で、まず証明数を得るために、1手進めて、ハッシュテーブルを探し、そこになかったら、+1というい処理をし、全部の数を足し合わせる。要は、探索木にぶら下がっている王様の対応手の総数を計算しています。なるほど、これが証明数なら、反証数は攻方で、同じようなことを王手の可能数で計算すればよいのかなということが少しずつわかってきました。
後は長井さんの疑似コードを「攻方」と「玉方」に分けてコードを書いて、試行錯誤を繰り返せば、なんとかなるとの思いでやってきましたが、そうこうしているうちにdf-pnの詰ルーチンが動き始めました。ただ、わかりやすくするためハッシュの処理を単純にしてあるのと、「合い」を入れてないので、まだまだ道半ばというところでしょうか。
今年のBonanzaはdf-pn実装済ということで、ソースコードをダウンロードし、df-pnの所を見てみました。ただ、まったく意味が分かりませんでした。私のような凡人には天才の保木さんが書くソースはチンプンカンプンです。
少しタイミングを逸しましたが、ボンクラーズ、優勝おめでとうございます。決勝戦は、残念ながら会場にも行けず、ウエブでも観戦できませんでした。なんでも、今年の決勝戦は、混戦模様で、最終戦で優勝が決まったとのこと、ハラハラドキドキだったかと思います。
WILDCATは全体で16位、ぎりぎりで2次予選シードを取ることができました。1次予選突破が目標だったので、大健闘と言ってもよいかもしれません。大会前に、自己対戦を行った際に、駒のどうしようもない変な動きを見て、悲観的でしたが、本番では、なんとかなったようです。
以前、引退宣言をしてしまいましたが、もう少し頑張れば、もう少し上に行けるのではと思うようになり、ちょっと迷っています。
WILDCATは全体で16位、ぎりぎりで2次予選シードを取ることができました。1次予選突破が目標だったので、大健闘と言ってもよいかもしれません。大会前に、自己対戦を行った際に、駒のどうしようもない変な動きを見て、悲観的でしたが、本番では、なんとかなったようです。
以前、引退宣言をしてしまいましたが、もう少し頑張れば、もう少し上に行けるのではと思うようになり、ちょっと迷っています。
予定通り、5月3日から5日の予定で、開催しますよという開催通知をメールでもらった。ついに、この時が来た。
実は、「燃えない」のである。困ったものだ。
例えば、千日手回避の対策を、入れようと思っても、やる気がわかない。現在、未実装状態である。
地震発生以降、忙しいことは分っているが、しかし、本当の面白ければ、寝なくても、食べ物を食べながらでも、キーボードを叩くのに。ところが10秒たったら、別のことを考えているのである。ダメだなあこりゃ。
航空券は既に準備した。何がなんでも日本に行かなければならぬ。パソコンは、どれを持って行こう。手持ちで一番の高性能マシンは重量が重たい。これを持って1万キロの旅をするのは辛い。ノートは、2コアとは言え、U7600では、あまりに非力だ。
例えば、1日〜2日間という超短期間だけでも、高性能マシンをレンタルさせてくれるサービスはないものだろうか。
どなたか、ご存じないですか?
実は、「燃えない」のである。困ったものだ。
例えば、千日手回避の対策を、入れようと思っても、やる気がわかない。現在、未実装状態である。
地震発生以降、忙しいことは分っているが、しかし、本当の面白ければ、寝なくても、食べ物を食べながらでも、キーボードを叩くのに。ところが10秒たったら、別のことを考えているのである。ダメだなあこりゃ。
航空券は既に準備した。何がなんでも日本に行かなければならぬ。パソコンは、どれを持って行こう。手持ちで一番の高性能マシンは重量が重たい。これを持って1万キロの旅をするのは辛い。ノートは、2コアとは言え、U7600では、あまりに非力だ。
例えば、1日〜2日間という超短期間だけでも、高性能マシンをレンタルさせてくれるサービスはないものだろうか。
どなたか、ご存じないですか?
弁当の注文予約まで始めているけど、大会を開催するかどうかは、まだ未定だったような記憶があるが、はて、どうなんだろう。
実は、最近、メチャクチャ忙しいのである。ここ1カ月ほど、WILDCATに触れないのである。今回は最後の大会と決めているから、悔いは残したくないのであるが、せめて、並列探索を安定させるのが、最後のあがきか。
あと、1カ月。もう、桜も満開になってしまった。
5月に開催される選手権に登録を終了しました。今回は、登録と一緒に、解約できない日本往復の格安航空券も購入したので、もう絶対に退けません。
ちなみに、4月30日にパリ発で、5月6日に日本を出発します。航空会社はアリタリア航空で往復ともローマ経由、価格は850ユーロ(約94,000円)でした。
今回が参加する最後の大会と決心し、しっかり準備しなければ、、、。気合が入っています。
ちなみに、4月30日にパリ発で、5月6日に日本を出発します。航空会社はアリタリア航空で往復ともローマ経由、価格は850ユーロ(約94,000円)でした。
今回が参加する最後の大会と決心し、しっかり準備しなければ、、、。気合が入っています。
学習の効果はいかほどであろうかと思い、ここ数日、floodgateに、深さ1手でPrimitive3を投入している。さすがに深さ1手読みなら、あの「pishogi」にも負けるであろうと思ったのであるが、結果は、以下のとおり。WILDCATの勝ちである。pishogiは、駒組みから中盤までは、非常にきれいな指筋でまとまっているので、このソフトを作られた方は、かなりの方と思われる。が、中盤以降の指手は、まさに「接待モード」そのものである。この落差を、ソフトに埋め込む技術は、たいしたもだ。
http://wdoor.c.u-tokyo.ac.jp/shogi/LATEST//2010/11/21/wdoor+floodgate-900-0+pishogi+primitive3+20101121170005.csa
(ゴルフ)
今日は、ゴルフコンペに参加した。なんと、20人参加して20位。最下位だ。いままで、何十回とゴルフコンペには参加したが、最下位は思い浮かばない。ちょっと沈み気味だ。
敗者、敗戦を語らずでもないが、実は、冬ぐらいから、右膝が時々痛くなる症状がでていた。それとともに、四十肩で、時々、左肩に痛みが走る。ゴルフは、球が小さいだけあって、体の変調が、如実に結果に現れる。それに3ヶ月程、一度もクラブを振ったことがなかったことも災いした。トホホだ。
四十肩の悪化は、水が変わったことが、原因だろう。膝痛は、女房に言わせると、家庭サービスを疎かにして、一人でサイクリングばっかりやっているからだそうだ。
いずれにしても、この屈辱は、なんとかせねばならぬ。
(WILDCAT)
ボナンザのソースコードが公開されたことで、かなりの人数の開発者は、コンピュータ将棋の開発に興味を失ってしまったのではなかろうか。私も、その一人になりそうだ。
ポンコツ車を如何に改造しても、現実的には、とてもスポーツカーには、かなわない。いっそ、スポーツカーを買って改造した方が良いのかも。でも、それって、何か、むなしいよなあ。
今日は、ゴルフコンペに参加した。なんと、20人参加して20位。最下位だ。いままで、何十回とゴルフコンペには参加したが、最下位は思い浮かばない。ちょっと沈み気味だ。
敗者、敗戦を語らずでもないが、実は、冬ぐらいから、右膝が時々痛くなる症状がでていた。それとともに、四十肩で、時々、左肩に痛みが走る。ゴルフは、球が小さいだけあって、体の変調が、如実に結果に現れる。それに3ヶ月程、一度もクラブを振ったことがなかったことも災いした。トホホだ。
四十肩の悪化は、水が変わったことが、原因だろう。膝痛は、女房に言わせると、家庭サービスを疎かにして、一人でサイクリングばっかりやっているからだそうだ。
いずれにしても、この屈辱は、なんとかせねばならぬ。
(WILDCAT)
ボナンザのソースコードが公開されたことで、かなりの人数の開発者は、コンピュータ将棋の開発に興味を失ってしまったのではなかろうか。私も、その一人になりそうだ。
ポンコツ車を如何に改造しても、現実的には、とてもスポーツカーには、かなわない。いっそ、スポーツカーを買って改造した方が良いのかも。でも、それって、何か、むなしいよなあ。
(WILDCAT)
少し、本気になって、取っ組み始めた。しかし、もうつまずいてしまった。先手王に対する詰めルーチンが、うまく動かないのである。後手玉のそれはしっかりうごくから、そんなに重症ではないと思うのだが。ただ、数ヶ月前は、問題なかったと記憶している。元気のある頃は、「よっしゃ」と、何はともあれ、即、バグ探しを始めた。しかし今は、「まずは、コーヒー一杯」と、ワンクッション置くようになった。
しかし、数ヶ月前に書いたコードを見て、その時の状況を思い出せなくなるとは、トホホだなあ。
(オリンピヤード)
デンマークの事務局から、参加コンピュータの消費電力を知らせろと、催促の英文メールが来た。なんでも、数日前に100人以上の人にメールを送ったが、今の時点で返答があるのは20人程度とのこと。
当方、今回は、パソコンは借りる予定。したがって、「わかりません。」というメールを送ったら、5分後に「わかりました。」という返答が帰ってきた。対応が恐ろしく速い。
ただ、心配なのは、ほんとうに会場でパソコンを貸してくれるのでしょうか。
少し、本気になって、取っ組み始めた。しかし、もうつまずいてしまった。先手王に対する詰めルーチンが、うまく動かないのである。後手玉のそれはしっかりうごくから、そんなに重症ではないと思うのだが。ただ、数ヶ月前は、問題なかったと記憶している。元気のある頃は、「よっしゃ」と、何はともあれ、即、バグ探しを始めた。しかし今は、「まずは、コーヒー一杯」と、ワンクッション置くようになった。
しかし、数ヶ月前に書いたコードを見て、その時の状況を思い出せなくなるとは、トホホだなあ。
(オリンピヤード)
デンマークの事務局から、参加コンピュータの消費電力を知らせろと、催促の英文メールが来た。なんでも、数日前に100人以上の人にメールを送ったが、今の時点で返答があるのは20人程度とのこと。
当方、今回は、パソコンは借りる予定。したがって、「わかりません。」というメールを送ったら、5分後に「わかりました。」という返答が帰ってきた。対応が恐ろしく速い。
ただ、心配なのは、ほんとうに会場でパソコンを貸してくれるのでしょうか。
あと、2カ月を切ったので、オリンピヤードまでに、現実的にやらねばならないことをまとめてみる。
(1)トン死対策
選択した指し手が20手程度先まで、詰みがないことをチェック。これがあると、早い投了となるので、潔さがカッコ良い。ただし、変な時に投了してしまうことがあるので要注意。
(2)読み手延長と短縮の導入
(3)手入力
トン死対策は、指手を指してみて、相手側からの詰将棋ルーチン起動で、詰められていたらその指手は諦める。これで、そんなに手間はかからないはず。読み手延長と短縮も、王手対応1手延長とLMRで、なんとかなりそう。問題は、手入力だ。そもそもWILDCATは、通信対局しか想定していないので、結構、大変そうだ。アルバイトの方に代理参加をお願いすると、あんまり難しいのは迷惑がかかる。フリーのソフトとRS232Cで、結ぶのも、何か、時代遅れでスマートでないなあ。
どなたか良いアイデアありませんでしょうか。
(1)トン死対策
選択した指し手が20手程度先まで、詰みがないことをチェック。これがあると、早い投了となるので、潔さがカッコ良い。ただし、変な時に投了してしまうことがあるので要注意。
(2)読み手延長と短縮の導入
(3)手入力
トン死対策は、指手を指してみて、相手側からの詰将棋ルーチン起動で、詰められていたらその指手は諦める。これで、そんなに手間はかからないはず。読み手延長と短縮も、王手対応1手延長とLMRで、なんとかなりそう。問題は、手入力だ。そもそもWILDCATは、通信対局しか想定していないので、結構、大変そうだ。アルバイトの方に代理参加をお願いすると、あんまり難しいのは迷惑がかかる。フリーのソフトとRS232Cで、結ぶのも、何か、時代遅れでスマートでないなあ。
どなたか良いアイデアありませんでしょうか。
(オリンピヤード)
Bonanza,EvaristeGalois,Gekisashi,GPSshogi,Qiyi,Shogidoki,Shueso,STR,TACOSYumeki,???
メールをしっかりみてみたら、オリンピヤードの参加チームが英文メールで送られていた。現在の参加チームは11。EvaristeGaloisは、WILDCATのオリンピヤード用の名称です。山下さん(FSS)の名前が無いのは、ちょっと寂しい感じだ。
当初、9月26日に帰国して10月3日まで日本に滞在する予定を考えていたが、9月28日の午前中にどうしても断れないアポが入ってしまた。したがって、28日午後パリ発で29日成田着の予定だと、第1日目のオリンピヤード(将棋)に出場できない。部分参加が可能かどうかを事務局に問い合わせたら、「ダメ」との返答。代理参加は可能だが、アルバイトを雇うので費用として50ユーロ(約6000円)必要とのこと。ちゃっかりしているなあ。
http://vivio.blog.shinobi.jp/
のブログにも書かれているが、「日本初」の大会を、何とか成功させようという意気込みが伝わってこないところが少し寂しい。
(WILDCAT)
少しずつ開発を続けているが、ボナンザ法で、評価関数が重くなり、NPSががた落ちの問題に直面中。NPSが少なくなれば弱くなるというジレンマだ。WILDCATの能力の限界かなあ。
(WILDCAT)
ほそぼそながら開発を続けています。数日前、ほんとうに久し振りに、今の状態で,floodgateにつないで見ました。名前は、primitive3です。でも、2回挑戦して、2回ともうまくいきませんでした。よく調べたら、思考時間制御の時間指定がしてなかたので無限に思考を続けていました。だめだなあこりゃ。一方、4コアマで、学習を続けているマシンが、これも数日前、突然、電源が切れてしまいました。それ以降、うんともすんとも動かなくなってしまいました。1週間程、4コアで100%出力を続けていたのがいけなかったのでしょうか。でも、最近のパソコンはそんなに軟なのかなあ。学習は、駒価値、駒の持ち価値、敵玉25枡への利きのみの状態です。でも、これだけで、次の1手問題を、かなりの数、解くことができるので、学習のところはバグはないようです。
なんとか、9月末の金沢の大会には出場したいと思っています。
ほそぼそながら開発を続けています。数日前、ほんとうに久し振りに、今の状態で,floodgateにつないで見ました。名前は、primitive3です。でも、2回挑戦して、2回ともうまくいきませんでした。よく調べたら、思考時間制御の時間指定がしてなかたので無限に思考を続けていました。だめだなあこりゃ。一方、4コアマで、学習を続けているマシンが、これも数日前、突然、電源が切れてしまいました。それ以降、うんともすんとも動かなくなってしまいました。1週間程、4コアで100%出力を続けていたのがいけなかったのでしょうか。でも、最近のパソコンはそんなに軟なのかなあ。学習は、駒価値、駒の持ち価値、敵玉25枡への利きのみの状態です。でも、これだけで、次の1手問題を、かなりの数、解くことができるので、学習のところはバグはないようです。
なんとか、9月末の金沢の大会には出場したいと思っています。
最新記事
Archives
Categories
訪問者数
- 今日:
- 昨日:
- 累計: