フリーソフト囲連星のAIを自作してみませんか?(囲碁+連珠)
デフォルトのAIが弱いので今なら囲連星AIの第一人者になれる。
もし名人より強いAIを作成すればそのAIが名人位に。
詳しいことはソフトダウンロード後、ヘルプメニューを参考に。
作成方法:AI部分をプログラムしコンパイルしたものをファイルコピーすればOK
ソフトダウンロード:http://irensei.com/
探検
【囲碁?】囲連星のAIを作ってみよう【連珠?】
■ このスレッドは過去ログ倉庫に格納されています
2006/08/03(木) 16:13:45ID:jCmv785l
362Y
2007/10/06(土) 17:45:51ID:dvF9v48n363東陶基
2007/10/06(土) 23:45:52ID:xouLI3SB 名人とuctの対局結果です。(AIが白)
名人曰くですが「uctが弱くなった気がする」とのことでした。
どうやら12手目の石を捨てるような手を見かけるようになったとのことでした。
(SZ[19]
;B[lj];W[jj];B[hj];W[ji];B[jl];W[ij];B[hk];W[hi];B[gi];W[gh]
;B[hh];W[fi];B[ii];W[hg];B[ig];W[gj];B[hi];W[fg];B[hf];W[gg]
;B[fj];W[ej];B[fk];W[if];B[ei];W[fh];B[dk];W[je];B[kd];W[jg]
;B[jh];W[ih];B[kh];W[ig];B[eg];W[ef];B[ek];W[he];B[ik];W[gk]
;B[gl];W[kg];B[lg];W[jc];B[gk];W[kc];B[jk])
名人曰くですが「uctが弱くなった気がする」とのことでした。
どうやら12手目の石を捨てるような手を見かけるようになったとのことでした。
(SZ[19]
;B[lj];W[jj];B[hj];W[ji];B[jl];W[ij];B[hk];W[hi];B[gi];W[gh]
;B[hh];W[fi];B[ii];W[hg];B[ig];W[gj];B[hi];W[fg];B[hf];W[gg]
;B[fj];W[ej];B[fk];W[if];B[ei];W[fh];B[dk];W[je];B[kd];W[jg]
;B[jh];W[ih];B[kh];W[ig];B[eg];W[ef];B[ek];W[he];B[ik];W[gk]
;B[gl];W[kg];B[lg];W[jc];B[gk];W[kc];B[jk])
364東陶基
2007/10/06(土) 23:52:36ID:xouLI3SB 更に言うと「2バージョンくらい前はそういう手がなく強かった」とのこと。
ただ2バージョン前が正確かどうかはわからないのでなんとも言えないです。
ちなみに大会は更新日時2007年10月2日、23:48:52のバージョンです。
最新のは珠形が打てなかったので(それ自体は全然構わないです)
ただあくまで参考までに報告なので今から大掛かりな修正とかはいいですよ。
もし何かYさんのヒントになればと思っただけなので。
ただ2バージョン前が正確かどうかはわからないのでなんとも言えないです。
ちなみに大会は更新日時2007年10月2日、23:48:52のバージョンです。
最新のは珠形が打てなかったので(それ自体は全然構わないです)
ただあくまで参考までに報告なので今から大掛かりな修正とかはいいですよ。
もし何かYさんのヒントになればと思っただけなので。
365東陶基
2007/10/07(日) 00:00:35ID:/ks16xwR あとこちらも参考までにはじめて来られた方とAIとの対局です。
バージョンは>>364と同じです。
後半(36手と40手?)にちょっと疑問な手がありました。
単にシュミレーション回数の問題なのかどうかはわからないですけど。
ただ時間的にはいつも大体自分のPCでは10秒前後だったので
シュミレーション回数の問題でもないような・・・。
(;B[jj];W[kk];B[jk];W[jl];B[im];W[il];B[kl];W[km];B[ll];W[lm]
;B[ml];W[in];B[hm];W[hl];B[jm];W[gm];B[jn];W[fl];B[el];W[kn]
;B[jo];W[ek];B[hn];W[dl];B[em];W[dm];B[en];W[dn];B[ho];W[eo]
;B[fn];W[gn];B[fo];W[go];B[ep];W[fp];B[do];W[gk];B[gp];W[gl]
;B[fq];W[ij];B[gi];W[ji];B[lk];W[io];B[ip];W[eq];B[in])
とりあえずこちらでも前のバージョンをもう一回DLして色々試してみます。
バージョンは>>364と同じです。
後半(36手と40手?)にちょっと疑問な手がありました。
単にシュミレーション回数の問題なのかどうかはわからないですけど。
ただ時間的にはいつも大体自分のPCでは10秒前後だったので
シュミレーション回数の問題でもないような・・・。
(;B[jj];W[kk];B[jk];W[jl];B[im];W[il];B[kl];W[km];B[ll];W[lm]
;B[ml];W[in];B[hm];W[hl];B[jm];W[gm];B[jn];W[fl];B[el];W[kn]
;B[jo];W[ek];B[hn];W[dl];B[em];W[dm];B[en];W[dn];B[ho];W[eo]
;B[fn];W[gn];B[fo];W[go];B[ep];W[fp];B[do];W[gk];B[gp];W[gl]
;B[fq];W[ij];B[gi];W[ji];B[lk];W[io];B[ip];W[eq];B[in])
とりあえずこちらでも前のバージョンをもう一回DLして色々試してみます。
366東陶基
2007/10/07(日) 00:08:21ID:/ks16xwR ただ先月の大会の棋譜を見ても同じくらいの強さなような気もしますし
特に弱くなったとかは自分にはわからないですねぇ。
強い人の間ではその微妙なところがわかるのかな。
特に弱くなったとかは自分にはわからないですねぇ。
強い人の間ではその微妙なところがわかるのかな。
367Y
2007/10/07(日) 01:51:00ID:u6VKz1kk >>東陶基さん
ありがとうございます。
こっちの方でもそれを確認してみます。
ai-lv2との対戦結果だけで強さを評価していたのは
失敗だったかも知れないですね。
ありがとうございます。
こっちの方でもそれを確認してみます。
ai-lv2との対戦結果だけで強さを評価していたのは
失敗だったかも知れないですね。
368東陶基
2007/10/07(日) 03:31:57ID:C7piVIY+ とりあえず
2007年8月28日、20:58:18のAIをai-uct1、
2007年10月4日、0:17:44のAI(最新)をai-uct4として白黒それぞれ10戦ずつ対戦したら
白(ai-uct4.dll)の勝利回数: 4
黒(ai-uct1.dll)の勝利回数: 6
黒(ai-uct4.dll)の勝利回数: 8
白(ai-uct1.dll)の勝利回数: 2
ってことでuct4 12-8 uct1ってことで弱くなってるって事はないみたい。
回数が少ないのでまだなんともいえないが最新のが黒の時は途中まで8-0だったから
やっぱり強いと思う。
もう改善案が出尽くしたとYさんが言っていた8月末から1ヵ月位だから
それなりに強くなってるのでは。
ただuct1のころはthink_timeファイルとかから読んでたのに
自動対戦ツールでは必要なくそのままで動いてるのがちょっと意外でした。
そっちのツールで指定してるのかな多分。
2007年8月28日、20:58:18のAIをai-uct1、
2007年10月4日、0:17:44のAI(最新)をai-uct4として白黒それぞれ10戦ずつ対戦したら
白(ai-uct4.dll)の勝利回数: 4
黒(ai-uct1.dll)の勝利回数: 6
黒(ai-uct4.dll)の勝利回数: 8
白(ai-uct1.dll)の勝利回数: 2
ってことでuct4 12-8 uct1ってことで弱くなってるって事はないみたい。
回数が少ないのでまだなんともいえないが最新のが黒の時は途中まで8-0だったから
やっぱり強いと思う。
もう改善案が出尽くしたとYさんが言っていた8月末から1ヵ月位だから
それなりに強くなってるのでは。
ただuct1のころはthink_timeファイルとかから読んでたのに
自動対戦ツールでは必要なくそのままで動いてるのがちょっと意外でした。
そっちのツールで指定してるのかな多分。
369東陶基
2007/10/07(日) 19:08:27ID:L+dIeYc9 (;SZ[19]
;B[jj];W[kj];B[kk];W[ii];B[ki];W[jk];B[lj];W[ij])
もしかしたらこのあたりが疑問手なのかも。
石を捨てる必要がないところで結構頻繁に石を捨てる傾向にある。
「無難に逃げるべきでは?」と言うところで
こういう手を打つ傾向があるのかもしれないです。
ちなみに再度>>368と同じことをやったら
今度はuct4 13-7 uct1 でした。
;B[jj];W[kj];B[kk];W[ii];B[ki];W[jk];B[lj];W[ij])
もしかしたらこのあたりが疑問手なのかも。
石を捨てる必要がないところで結構頻繁に石を捨てる傾向にある。
「無難に逃げるべきでは?」と言うところで
こういう手を打つ傾向があるのかもしれないです。
ちなみに再度>>368と同じことをやったら
今度はuct4 13-7 uct1 でした。
370Y
2007/10/08(月) 10:10:15ID:F9A/XuhC371名前は開発中のものです。
2007/10/08(月) 16:22:27ID:1aN4Cjs/ 初心者ですがLv2もLv3も私にとっては強いですw
372東陶基
2007/10/13(土) 22:23:23ID:4kx2LPF0 >Yさん
携帯のもこちらの板の方が良いかもしれません。
囲碁板だとルールの確認やAIの強さの事については色々あるかもしれませんが
開発の事だとゲ制作板のAIスレの方がヒントが色々得れそうです。
ある程度強さの確認とかになったら囲碁板でも良いかも。
携帯のもこちらの板の方が良いかもしれません。
囲碁板だとルールの確認やAIの強さの事については色々あるかもしれませんが
開発の事だとゲ制作板のAIスレの方がヒントが色々得れそうです。
ある程度強さの確認とかになったら囲碁板でも良いかも。
373東陶基
2007/10/13(土) 22:28:58ID:4kx2LPF0 あともし携帯はやっぱり難しいとか壁にぶつかりましたら
2本制のなんかどうでしょうかw
これに関しては携帯同様全くのボランティアになってしまい
お願い出来るようなものではないですがもし興味を持たれましたら是非。
ルールで2本の7連が繋がると反則というのがあるのでここだけ注意しないといけないですが
他は1本と一緒です。
ただUIも作らないといけないのでどうしてもAIだけの開発に比べると
手間が掛かるかもしれないのであれですが。
2本制のなんかどうでしょうかw
これに関しては携帯同様全くのボランティアになってしまい
お願い出来るようなものではないですがもし興味を持たれましたら是非。
ルールで2本の7連が繋がると反則というのがあるのでここだけ注意しないといけないですが
他は1本と一緒です。
ただUIも作らないといけないのでどうしてもAIだけの開発に比べると
手間が掛かるかもしれないのであれですが。
374東陶基
2007/10/13(土) 22:30:44ID:4kx2LPF0 もしYさん以外にも興味を持たれる方がいましたら2本制のゲーム是非作ってみてください。
もちろん作られたゲームの権利は制作者さんに喜んで譲渡(じゃないか?)しますので
どう使ってもらってもOKです。
もちろん作られたゲームの権利は制作者さんに喜んで譲渡(じゃないか?)しますので
どう使ってもらってもOKです。
375Y
2007/10/21(日) 00:24:00ID:vqkwTMe2 >>東陶基さん
了解です。
今度からこちらの方に書くことにします。
2本制は、まあ気が向いたら挑戦します。
了解です。
今度からこちらの方に書くことにします。
2本制は、まあ気が向いたら挑戦します。
376東陶基
2007/10/31(水) 14:54:19ID:Il5bHQBf 囲碁板がなんか不安定なのは気のせい?
ここ最近読み込みとか書き込みが出来ない気が・・・
ここ最近読み込みとか書き込みが出来ない気が・・・
377名前は開発中のものです。
2007/11/09(金) 20:43:13ID:vsj+IyoU 良スレhosyu
378名前は開発中のものです。
2007/11/11(日) 18:16:06ID:FiaU4VNc 二本制は囲碁みたいになるんだね
379名前は開発中のものです。
2007/11/22(木) 07:17:49ID:EN3VPpIV 去年やった時より明らかに強くなってる
380名前は開発中のものです。
2007/11/22(木) 18:39:41ID:fv+UVy5l おれもAI作ってみたが…
lv1には勝てるがlv2やlv3には歯が立たない。
おれのAIがlv4になるのは何時の日か?
しかし自分で打って勝つより自分のAIが勝つほうが何倍もうれしいね。
lv1には勝てるがlv2やlv3には歯が立たない。
おれのAIがlv4になるのは何時の日か?
しかし自分で打って勝つより自分のAIが勝つほうが何倍もうれしいね。
381名前は開発中のものです。
2007/11/22(木) 20:20:14ID:mGFWWouC >>380
どこか上げて。そのAI打ちたい
どこか上げて。そのAI打ちたい
382名前は開発中のものです。
2007/11/22(木) 22:35:14ID:fv+UVy5l http://www.uploda.net/cgi/uploader4/index.php?file_id=0000022645.udn
上げてみた。
だけど、人間が打つには物足りないと思うよ。
AI開発してる人とってはlv1とlv2に開きがあるから
その間のいい対戦相手になるかもしれないけど。
上げてみた。
だけど、人間が打つには物足りないと思うよ。
AI開発してる人とってはlv1とlv2に開きがあるから
その間のいい対戦相手になるかもしれないけど。
383名前は開発中のものです。
2007/11/22(木) 22:52:39ID:fv+UVy5l ちなみに他のAIとの対戦成績は
黒(ai-lv1_5.dll)の勝利回数: 89
白(ai-lv1.dll)の勝利回数: 11
黒(ai-lv1.dll)の勝利回数: 10
白(ai-lv1_5.dll)の勝利回数: 90
黒(ai-lv1_5.dll)の勝利回数: 32
白(ai-lv2.dll)の勝利回数: 68
黒(ai-lv2.dll)の勝利回数: 75
白(ai-lv1_5.dll)の勝利回数: 25
黒(ai-lv1_5.dll)の勝利回数: 16
白(ai-uct.dll)の勝利回数: 34
黒(ai-uct.dll)の勝利回数: 42
白(ai-lv1_5.dll)の勝利回数: 8
黒(ai-lv1_5.dll)の勝利回数: 12
白(ai-uct+.dll)の勝利回数: 38
黒(ai-uct+.dll)の勝利回数: 43
白(ai-lv1_5.dll)の勝利回数: 7
だった。
データ収集にはYさんのプログラムを使わせていただきました。
感謝。
黒(ai-lv1_5.dll)の勝利回数: 89
白(ai-lv1.dll)の勝利回数: 11
黒(ai-lv1.dll)の勝利回数: 10
白(ai-lv1_5.dll)の勝利回数: 90
黒(ai-lv1_5.dll)の勝利回数: 32
白(ai-lv2.dll)の勝利回数: 68
黒(ai-lv2.dll)の勝利回数: 75
白(ai-lv1_5.dll)の勝利回数: 25
黒(ai-lv1_5.dll)の勝利回数: 16
白(ai-uct.dll)の勝利回数: 34
黒(ai-uct.dll)の勝利回数: 42
白(ai-lv1_5.dll)の勝利回数: 8
黒(ai-lv1_5.dll)の勝利回数: 12
白(ai-uct+.dll)の勝利回数: 38
黒(ai-uct+.dll)の勝利回数: 43
白(ai-lv1_5.dll)の勝利回数: 7
だった。
データ収集にはYさんのプログラムを使わせていただきました。
感謝。
384東陶基
2007/11/23(金) 10:04:15ID:rTCRD4AD AIありがとうございます。
自分も打ってみました。是非Lv4になって下さいw
思考時間に関してはサクサクなので問題ないとは思いますが
Lv3くらいの時間までならOKなので時間が長ければ強くなるようであれば
そのあたりを目処にしてみて下さい。
確かにAIの強さの感覚は微妙なのですが
表示されるAI名を弄るのは開発者しか出来ないので
その後調整とかが難しいのは事実ですね。
確かにlv1とlv2の間にあれば良いとは思いますが。
まぁそれだけLv2はセンセーショナルなデビューでしたからねw
自分も打ってみました。是非Lv4になって下さいw
思考時間に関してはサクサクなので問題ないとは思いますが
Lv3くらいの時間までならOKなので時間が長ければ強くなるようであれば
そのあたりを目処にしてみて下さい。
確かにAIの強さの感覚は微妙なのですが
表示されるAI名を弄るのは開発者しか出来ないので
その後調整とかが難しいのは事実ですね。
確かにlv1とlv2の間にあれば良いとは思いますが。
まぁそれだけLv2はセンセーショナルなデビューでしたからねw
385Y
2007/11/23(金) 14:17:32ID:E1MlNFVu 連続対戦のプログラムを少し修正しました。
http://ud.gs/40bo1
・長連判定にバグ修正した
・棋譜を出力出来るようにした
棋譜を出力したいときは
irensei_auto_game ai-lv2.dll ailefttop.dll 50 .\kif\
のように4番目の引数に棋譜を出力するディレクトリを
指定して下さい。
棋譜はSGFフォーマットで出力されます。
http://olive.zero.ad.jp/qin/kifusaisei.html
では再生出来ることを確認しています。
対局内容が知りたい時は使ってみて下さい。
http://ud.gs/40bo1
・長連判定にバグ修正した
・棋譜を出力出来るようにした
棋譜を出力したいときは
irensei_auto_game ai-lv2.dll ailefttop.dll 50 .\kif\
のように4番目の引数に棋譜を出力するディレクトリを
指定して下さい。
棋譜はSGFフォーマットで出力されます。
http://olive.zero.ad.jp/qin/kifusaisei.html
では再生出来ることを確認しています。
対局内容が知りたい時は使ってみて下さい。
386380
2007/11/23(金) 20:05:48ID:+HNUHx05387名前は開発中のものです。
2007/11/23(金) 23:01:49ID:EVmmcqJM AIの強さは
Lv3>>Lv2>>>>>>Lv1>>Lv0
と言ったところかな?Lv1よりちょっと強いAIを作れてそれをLv1と入れ替えれば
バランスが良くなりそう。
Lv3>>Lv2>>>>>>Lv1>>Lv0
と言ったところかな?Lv1よりちょっと強いAIを作れてそれをLv1と入れ替えれば
バランスが良くなりそう。
388名前は開発中のものです。
2007/11/23(金) 23:05:40ID:EVmmcqJM AIそれぞれの私的な意見として
Lv0・・・弱いわりには守りが良い
Lv1・・・攻撃重視、守りに関してはLv0より弱い?
Lv2・・・攻撃重視、1回攻めのターンを渡すと連続攻撃で相当やっかい。機械的な攻め
Lv3・・・バランス型、攻撃はLv2より少し弱い気もするが人間的な手を打つ
Lv0・・・弱いわりには守りが良い
Lv1・・・攻撃重視、守りに関してはLv0より弱い?
Lv2・・・攻撃重視、1回攻めのターンを渡すと連続攻撃で相当やっかい。機械的な攻め
Lv3・・・バランス型、攻撃はLv2より少し弱い気もするが人間的な手を打つ
389東陶基
2007/11/25(日) 03:51:01ID:9/FsDHFb >>386
そうですね。一手で10個所読んだとしても二手深く読めば100倍掛かっちゃいますからね。
思考時間に関しては皆さん苦労されてるみたいです。
あと自動対局ツールを公式HPに公開しました。
勝手に公開してしまったので
もしYさんが問題があるようでしたら教えて下さい。
そうですね。一手で10個所読んだとしても二手深く読めば100倍掛かっちゃいますからね。
思考時間に関しては皆さん苦労されてるみたいです。
あと自動対局ツールを公式HPに公開しました。
勝手に公開してしまったので
もしYさんが問題があるようでしたら教えて下さい。
390380
2007/11/26(月) 23:23:22ID:48l23v5A そういえば、AIのソースってどれくらいDLされてるんですか?>>会長
もっと囲連星AI開発者が増えてくれると楽しいんだけど。
もっと囲連星AI開発者が増えてくれると楽しいんだけど。
391東陶基
2007/11/27(火) 00:29:03ID:mMnwatqR う〜んソースの方はDL数はわからないですね。カウントしてないので。
一応参考までに本体は毎月500人くらいがDLしてるので1%位はソースもDLしてるんでしょうかね・・・
確かに増えると良いんですけどね。ただもうある程度の強さになってるので
もしかしたらそこまで行かなかった人は人知れず開発して人知れず終えてるかもしれないですね。
もしそういう方がいたら9路とか二本制とかのを作っていただけるとありがたいですね。
そっちはまだソフトがないので作ってもらったらそれが基本となるので。
一応参考までに本体は毎月500人くらいがDLしてるので1%位はソースもDLしてるんでしょうかね・・・
確かに増えると良いんですけどね。ただもうある程度の強さになってるので
もしかしたらそこまで行かなかった人は人知れず開発して人知れず終えてるかもしれないですね。
もしそういう方がいたら9路とか二本制とかのを作っていただけるとありがたいですね。
そっちはまだソフトがないので作ってもらったらそれが基本となるので。
392380
2007/11/27(火) 18:12:18ID:ticjtj6t 9路のほうはまだルールがきまってないようですね。
もう少し様子見でしょうか。
もう少し様子見でしょうか。
393東陶基
2007/11/28(水) 02:21:11ID:S+6McZyc そうですね有効範囲をどうしたらいいのかという点だけ未解決なんですよね。
個人的には一線だけの7は認めないが良いのかなと思ったりはしてるのですが。
あまりにもわからなすぎて逆に皆さんのご意見を聞きたいくらいですね。
個人的には一線だけの7は認めないが良いのかなと思ったりはしてるのですが。
あまりにもわからなすぎて逆に皆さんのご意見を聞きたいくらいですね。
394名前は開発中のものです。
2007/12/15(土) 22:36:02ID:SCtxv3Lo Rubyで囲碁プログラミングは論外ですよね。
C++とJavaどちらが使えますか?
あと既存のインターフェイスってあります?
C++とJavaどちらが使えますか?
あと既存のインターフェイスってあります?
395名前は開発中のものです。
2007/12/16(日) 04:35:50ID:i9IYq0C/396東陶基
2007/12/16(日) 08:40:51ID:zw6zoeyT >>394
知識が古いので大したアドバイスにはならないのかもしれませんが
自分もRubyで最初は良いと思いますよ。
Rubyが今どんな状態なのかは詳しくは知りませんが今もインタプリタだとしたら
速度的な問題は出るとは思いますが一旦Rubyで作っておいてそれをC++とかに
書き直すほうがいきなりC++を覚えながら書くよりは良いかもしれませんね。
知識が古いので大したアドバイスにはならないのかもしれませんが
自分もRubyで最初は良いと思いますよ。
Rubyが今どんな状態なのかは詳しくは知りませんが今もインタプリタだとしたら
速度的な問題は出るとは思いますが一旦Rubyで作っておいてそれをC++とかに
書き直すほうがいきなりC++を覚えながら書くよりは良いかもしれませんね。
397名前は開発中のものです。
2007/12/16(日) 11:32:23ID:Kur0Wr75 でも結局C++を覚えなければいけないのであれば
最初からC++を使った方がいいと思いませんか?
標準ライブラリを見たら、
C++のはかなりlistとかstackとかアルゴリズムに使う概念が充実していますが、
Rubyは文字列操作だったり、その他ソフトウェアに必要なライブラリが充実しています。
結局C++が良い気がしてきました。
しかし、もっとスピードを求めるとすればCやfortranですか?
C++はCより若干遅いそうです。
当方、この分野を自分の専門に決め打ちしようかと悩んでいる電気電子系の学生です。
冬休み中に強化学習の課題が出ました、それはC++で書いてみるつもりです。
(ちなみにCはある程度なら書けますしC++も全く触った事ないわけでもない)
こういうアルゴリズム市場での使用言語はなんなんですか?
おれはRuby厨なので、オブジェクト指向で書けないとめちゃくちゃな事になりそうですが、
囲碁のプログラムって概念が難しいだけで、
実装は手続き型でも全く問題ありませんよね。
研究室では主にC++とJavaが使われているそうです。
Rubyはごくマニアックな人が使うという感じですね。うーん・・・
最初にJava勉強しとけば楽だったかな
最初からC++を使った方がいいと思いませんか?
標準ライブラリを見たら、
C++のはかなりlistとかstackとかアルゴリズムに使う概念が充実していますが、
Rubyは文字列操作だったり、その他ソフトウェアに必要なライブラリが充実しています。
結局C++が良い気がしてきました。
しかし、もっとスピードを求めるとすればCやfortranですか?
C++はCより若干遅いそうです。
当方、この分野を自分の専門に決め打ちしようかと悩んでいる電気電子系の学生です。
冬休み中に強化学習の課題が出ました、それはC++で書いてみるつもりです。
(ちなみにCはある程度なら書けますしC++も全く触った事ないわけでもない)
こういうアルゴリズム市場での使用言語はなんなんですか?
おれはRuby厨なので、オブジェクト指向で書けないとめちゃくちゃな事になりそうですが、
囲碁のプログラムって概念が難しいだけで、
実装は手続き型でも全く問題ありませんよね。
研究室では主にC++とJavaが使われているそうです。
Rubyはごくマニアックな人が使うという感じですね。うーん・・・
最初にJava勉強しとけば楽だったかな
398名前は開発中のものです。
2007/12/16(日) 11:46:04ID:tvhAhM9O >>397
ゲームのAIなら未だにC/C++が多いと思う。Javaは多少遅いけどあり。Rubyはよく知らない。
関数型言語でAI書けたら面白いかもね。
言語に関して言えば、学生ならやれるだけやっとけ。
使わないのは問題ないけど、使えないのは論外。
スピードについては、まだ気にする必要のないレベルだと思うよ。
とっつきやすい言語で始めて、アルゴリズムレベルで改良の余地がないというところまできてから、
C/C++なんかに乗り換えても良いと思う。
もちろん最初からC/C++でもOKだけどね。
ゲームのAIなら未だにC/C++が多いと思う。Javaは多少遅いけどあり。Rubyはよく知らない。
関数型言語でAI書けたら面白いかもね。
言語に関して言えば、学生ならやれるだけやっとけ。
使わないのは問題ないけど、使えないのは論外。
スピードについては、まだ気にする必要のないレベルだと思うよ。
とっつきやすい言語で始めて、アルゴリズムレベルで改良の余地がないというところまできてから、
C/C++なんかに乗り換えても良いと思う。
もちろん最初からC/C++でもOKだけどね。
399名前は開発中のものです。
2007/12/16(日) 12:45:18ID:Kur0Wr75 基本的にAIでもオブジェクト指向を採用していますか?
オブジェクト指向はメモリの使用量が大きくなりそうなのですが。
(オブジェクトを生成したらメソッドなどの領域も確保しますよね?)
構造体すらも使うと遅くなる気がします。
Rubyはクソ遅いです。
びっくりするくらい。実用的には問題ないですけどね。
JRubyというので早くなってるそうですが、それでも遅い。
まずはオセロからですかね?
オセロなら簡単に作れそう。授業で評価関数の話もしてました。
端の方はとられにくいので価値が高いはずだとかね。
オブジェクト指向はメモリの使用量が大きくなりそうなのですが。
(オブジェクトを生成したらメソッドなどの領域も確保しますよね?)
構造体すらも使うと遅くなる気がします。
Rubyはクソ遅いです。
びっくりするくらい。実用的には問題ないですけどね。
JRubyというので早くなってるそうですが、それでも遅い。
まずはオセロからですかね?
オセロなら簡単に作れそう。授業で評価関数の話もしてました。
端の方はとられにくいので価値が高いはずだとかね。
400名前は開発中のものです。
2007/12/16(日) 13:12:35ID:ogsZGdsp とりあえず最強のやつを作るならC++とアセンブラだろう
C言語はC++に含まれる 速度的には純正のC言語の方がいい場合もあるが、アセンブラの方が良いこともある
とりあえず平均点が高いのはC++
どうしても改良が必要なら部分的にアセンブラやCで書き直す
たとえばSTLなどは遅くなる可能性がある 内部で何やってるかよくわからない
C言語はC++に含まれる 速度的には純正のC言語の方がいい場合もあるが、アセンブラの方が良いこともある
とりあえず平均点が高いのはC++
どうしても改良が必要なら部分的にアセンブラやCで書き直す
たとえばSTLなどは遅くなる可能性がある 内部で何やってるかよくわからない
401名前は開発中のものです。
2007/12/16(日) 13:14:50ID:ogsZGdsp402名前は開発中のものです。
2007/12/16(日) 13:16:46ID:ogsZGdsp403名前は開発中のものです。
2007/12/16(日) 13:20:37ID:Kur0Wr75404名前は開発中のものです。
2007/12/16(日) 13:21:03ID:ogsZGdsp しかし重要なのは、言語に依存しない計算量だろう
N*Nの計算量がlog(N)になっとしたら、10000秒かかる計算が10秒で済むことになる
10倍鈍い言語を使っても100秒で済む
ということで一番重要なのはアルゴリズム
N*Nの計算量がlog(N)になっとしたら、10000秒かかる計算が10秒で済むことになる
10倍鈍い言語を使っても100秒で済む
ということで一番重要なのはアルゴリズム
405名前は開発中のものです。
2007/12/16(日) 13:21:37ID:tvhAhM9O >>399
>基本的にAIでもオブジェクト指向を採用していますか?
オブジェクト指向といっても範囲が広すぎるし、人によると思うが、
俺の場合、C++をbetter Cとして使っている。
C++の便利なところは利用するが、Cで書いたものに比べてほとんど遅くならない程度の範囲内でという感じ。
>(オブジェクトを生成したらメソッドなどの領域も確保しますよね?)
C++に関して言えば、それは間違いだと思う。
メンバ関数は通常の関数にthisポインタが引数に加わっただけだし。
>構造体すらも使うと遅くなる気がします。
先にも書いたけど、まだ速度を気にする必要のない(気にしても仕方のない)実力だと思うよ。
あと、速度に関しては実測が全てという面が大きいし、
>>400の通り、そんなに気にするならアセンブラでCPU固有の命令使えという話になる。
結局は開発効率やコードの可読性との兼ね合いで言語を選ばないといけない。
個人的な意見としては、小手先の最適化は後回しにして、とりあえず手を動かすことをお勧めする。
>基本的にAIでもオブジェクト指向を採用していますか?
オブジェクト指向といっても範囲が広すぎるし、人によると思うが、
俺の場合、C++をbetter Cとして使っている。
C++の便利なところは利用するが、Cで書いたものに比べてほとんど遅くならない程度の範囲内でという感じ。
>(オブジェクトを生成したらメソッドなどの領域も確保しますよね?)
C++に関して言えば、それは間違いだと思う。
メンバ関数は通常の関数にthisポインタが引数に加わっただけだし。
>構造体すらも使うと遅くなる気がします。
先にも書いたけど、まだ速度を気にする必要のない(気にしても仕方のない)実力だと思うよ。
あと、速度に関しては実測が全てという面が大きいし、
>>400の通り、そんなに気にするならアセンブラでCPU固有の命令使えという話になる。
結局は開発効率やコードの可読性との兼ね合いで言語を選ばないといけない。
個人的な意見としては、小手先の最適化は後回しにして、とりあえず手を動かすことをお勧めする。
406名前は開発中のものです。
2007/12/16(日) 13:23:22ID:ogsZGdsp >>403
囲碁 モンテカルロ法で検索する
2007年07月30日
古きよき時代の囲碁プログラムの終焉
とうとう、19路でもモンテカルロ法の毒牙にかかってしまいました。
岐阜チャレンジで破竹の4連覇を成し遂げてきた銀星囲碁7が
モンテカルロ法ベースのCrazy Stoneに5勝14敗と完敗。
はっきり今までのクラシックな作り方の囲碁プログラムは終焉を迎えました。
もう、今後10年、いや名人が敗れるその日まで、今までやり方のプログラムが
世に出る日はないと思います。
http://blog.livedoor.jp/yss_fpga/ FPGAで将棋プログラムを作ってみるブログ - livedoor Blog(ブログ)
囲碁 モンテカルロ法で検索する
2007年07月30日
古きよき時代の囲碁プログラムの終焉
とうとう、19路でもモンテカルロ法の毒牙にかかってしまいました。
岐阜チャレンジで破竹の4連覇を成し遂げてきた銀星囲碁7が
モンテカルロ法ベースのCrazy Stoneに5勝14敗と完敗。
はっきり今までのクラシックな作り方の囲碁プログラムは終焉を迎えました。
もう、今後10年、いや名人が敗れるその日まで、今までやり方のプログラムが
世に出る日はないと思います。
http://blog.livedoor.jp/yss_fpga/ FPGAで将棋プログラムを作ってみるブログ - livedoor Blog(ブログ)
407名前は開発中のものです。
2007/12/16(日) 14:47:18ID:ogsZGdsp 戦略としては、相手の駒を取れる手、
2つ、3つ・・・と駒が一列上に並ぶ手(複合する方を優先する)
を生成して、モンテカルロ法やMTD法を使うので決まりだと思うな
指し手と勝ち負けさえ判定できれば、モンテカルロ法は
将棋でも囲碁でもオセロでも同じアルゴリズムで済むので簡単だ
2つ、3つ・・・と駒が一列上に並ぶ手(複合する方を優先する)
を生成して、モンテカルロ法やMTD法を使うので決まりだと思うな
指し手と勝ち負けさえ判定できれば、モンテカルロ法は
将棋でも囲碁でもオセロでも同じアルゴリズムで済むので簡単だ
408名前は開発中のものです。
2007/12/16(日) 15:47:05ID:TljEEkEH 構造体すら使いたくない、真の最速を目指してみたい、というのは一種の熱病みたいなものだけど、
その道は一度通ってみるといいと思う。その体験から得られるものは意外と大きい。
がんばれ!
その道は一度通ってみるといいと思う。その体験から得られるものは意外と大きい。
がんばれ!
409名前は開発中のものです。
2007/12/16(日) 18:10:07ID:i9IYq0C/ >>397
> C++はCより若干遅いそうです。
そこまで速度を追い求めるなら、コンパイル結果のアセンブリを検証することになる。
ターゲット CPU 上で、どういうコードが出力すべきかを考えて、コーディングしたりアセンブラで書き下ろしたりすることになる。
そこまで行ったら、C や Fortran を選ぶ必要はなくなるから C++ ということになるでしょう。
> おれはRuby厨なので、オブジェクト指向で書けないとめちゃくちゃな事になりそうですが、
オブジェクト指向は、分析や設計の概念だから、アセンブラや C でも実践できる。
>>399
> オブジェクト指向はメモリの使用量が大きくなりそうなのですが。
やりかたによる。
> (オブジェクトを生成したらメソッドなどの領域も確保しますよね?)
メソッドのアドレスは、クラスごとに静的なテーブル(vtable とか呼ばれる)になっているので、インスタンスごとのサイズはポインタ1つ分増加するだけ。
Ruby などと違って、クラスの数はコンパイル時に決定できるので、インスタンスが増えてもメソッドの領域でメモリを消費することはない。
> 構造体すらも使うと遅くなる気がします。
動的に生成したら遅くなる。AoS, SoA の話なら、アルゴリズムによるので、構造体だから遅いということにはならない。
>>403
T はテンプレート。
重要なのはそこに列挙されているようなものよりも <algorithm> とか <functional>。
インライン展開されがちだし、書き下ろすより速いことも割とあるよ。
冬休みの課題頑張ってね。
ところで、囲連星の話じゃないような気がするけど?
> C++はCより若干遅いそうです。
そこまで速度を追い求めるなら、コンパイル結果のアセンブリを検証することになる。
ターゲット CPU 上で、どういうコードが出力すべきかを考えて、コーディングしたりアセンブラで書き下ろしたりすることになる。
そこまで行ったら、C や Fortran を選ぶ必要はなくなるから C++ ということになるでしょう。
> おれはRuby厨なので、オブジェクト指向で書けないとめちゃくちゃな事になりそうですが、
オブジェクト指向は、分析や設計の概念だから、アセンブラや C でも実践できる。
>>399
> オブジェクト指向はメモリの使用量が大きくなりそうなのですが。
やりかたによる。
> (オブジェクトを生成したらメソッドなどの領域も確保しますよね?)
メソッドのアドレスは、クラスごとに静的なテーブル(vtable とか呼ばれる)になっているので、インスタンスごとのサイズはポインタ1つ分増加するだけ。
Ruby などと違って、クラスの数はコンパイル時に決定できるので、インスタンスが増えてもメソッドの領域でメモリを消費することはない。
> 構造体すらも使うと遅くなる気がします。
動的に生成したら遅くなる。AoS, SoA の話なら、アルゴリズムによるので、構造体だから遅いということにはならない。
>>403
T はテンプレート。
重要なのはそこに列挙されているようなものよりも <algorithm> とか <functional>。
インライン展開されがちだし、書き下ろすより速いことも割とあるよ。
冬休みの課題頑張ってね。
ところで、囲連星の話じゃないような気がするけど?
410名前は開発中のものです。
2007/12/16(日) 18:11:25ID:ogsZGdsp ちょっとしたことだけど、2バイトで値がおさまったしても、よほどメモリー食わない限りは4バイト使った方が良い
整数演算はint型に変換されるからだ
あと19マスだけど、32マスにして左上に寄せて使うと良い 座標の計算がビットシフトで行える為だ
整数演算はint型に変換されるからだ
あと19マスだけど、32マスにして左上に寄せて使うと良い 座標の計算がビットシフトで行える為だ
411名前は開発中のものです。
2007/12/16(日) 18:30:28ID:tvhAhM9O >>410
>あと19マスだけど、32マスにして左上に寄せて使うと良い 座標の計算がビットシフトで行える為だ
これはどういう意味か教えてください。
19->32はメモリロスのほうが大きそうな気がするのだけど。
>あと19マスだけど、32マスにして左上に寄せて使うと良い 座標の計算がビットシフトで行える為だ
これはどういう意味か教えてください。
19->32はメモリロスのほうが大きそうな気がするのだけど。
412名前は開発中のものです。
2007/12/16(日) 18:49:07ID:ogsZGdsp たとえば普通に19*19マスにしたとする このとき
z = x + 19y の変換は、19の剰余が必要になるが、z = x + 32yとすれば剰余はいらずにビット演算で済む
あと、19を基数にした場合、上下左右の移動はそれぞれ-19,19,-1,1で移動できるが、端の場合は判定が必要になる
(x,y)に対して判定すれば4方向別々に書かなければならない
32を基数にした場合は 上下左右何処へ移動しても、盤面上である事はz>=0 かつ z<=594 かつ z%32<=18の判定で済む
z = x + 19y の変換は、19の剰余が必要になるが、z = x + 32yとすれば剰余はいらずにビット演算で済む
あと、19を基数にした場合、上下左右の移動はそれぞれ-19,19,-1,1で移動できるが、端の場合は判定が必要になる
(x,y)に対して判定すれば4方向別々に書かなければならない
32を基数にした場合は 上下左右何処へ移動しても、盤面上である事はz>=0 かつ z<=594 かつ z%32<=18の判定で済む
413名前は開発中のものです。
2007/12/16(日) 19:15:30ID:Kur0Wr75 囲連星とか聞いた事もない。
414名前は開発中のものです。
2007/12/16(日) 19:16:25ID:tvhAhM9O >>412
なるほど。
横方向に一つマージンとって19*20マスでも同じようなことができそうだけど、
結局ビットシフトやANDで済む32と比べると差が大きいのかな(定数除算や剰余の最適化を期待しても)。
上下左右にマージンをとる方法はどうなんだろう。
有効座標かどうかの判定無しで参照できるという利点はあるよね。
なるほど。
横方向に一つマージンとって19*20マスでも同じようなことができそうだけど、
結局ビットシフトやANDで済む32と比べると差が大きいのかな(定数除算や剰余の最適化を期待しても)。
上下左右にマージンをとる方法はどうなんだろう。
有効座標かどうかの判定無しで参照できるという利点はあるよね。
415名前は開発中のものです。
2007/12/16(日) 20:06:12ID:ogsZGdsp 今も賞金20万もらえるの? 今日、初めて作り始めたんだけど・・
なんかSTLはコンパイル環境によってエラーが出るし、使わずにやることにしたよ
多分グローバルにbitsetやvector使っているせいだとおもうけど
なんかSTLはコンパイル環境によってエラーが出るし、使わずにやることにしたよ
多分グローバルにbitsetやvector使っているせいだとおもうけど
416名前は開発中のものです。
2007/12/16(日) 22:33:38ID:ogsZGdsp 思考ルーチンを考えたので概要を書き込む
次の種類の手を生成して、モンテカルロ法で最善手を選ぶ
・一手、二手で敵の駒が取れる手
・一手で駒が捕られるマス
・縦横斜めに敵の駒が無く7マスが揃いやすいマス
最後の部分は、例えば (端)□□□●●● (□は空白) とすると
一番、右の●を今置いたとすると、端二つは無視する為、右●を含んで7個そろう可能性があるのは
□●●●□□□、 ●●●□□□□、 ●●□□□□□、 ●□□□□□□のパターンがある
これらの黒石の個数の合計を、今置いた石の7が揃いやすい得点として用いる 加えて縦斜めの得点を加算する
この得点が高い手順に生成する
次の種類の手を生成して、モンテカルロ法で最善手を選ぶ
・一手、二手で敵の駒が取れる手
・一手で駒が捕られるマス
・縦横斜めに敵の駒が無く7マスが揃いやすいマス
最後の部分は、例えば (端)□□□●●● (□は空白) とすると
一番、右の●を今置いたとすると、端二つは無視する為、右●を含んで7個そろう可能性があるのは
□●●●□□□、 ●●●□□□□、 ●●□□□□□、 ●□□□□□□のパターンがある
これらの黒石の個数の合計を、今置いた石の7が揃いやすい得点として用いる 加えて縦斜めの得点を加算する
この得点が高い手順に生成する
417東陶基
2007/12/17(月) 06:21:02ID:Tjg1n58r >>415
来年から定期的なオンライン対局を休止する予定なので名人レベルのAIの認定はちょっと微妙かも
しれません。
ただ上級レベルまでは判断できますので上級レベルまでの賞金は今まで通りです。
もし上級レベルが出た後にさらに強いのが出た場合にはその時に考えたいと思います。
HPに残してると紛らわしいのでHPも名人レベルは削除しておきます。
ちなみに中級レベルはほぼ内定してます。YさんのLv3(現在の追加AI)をソースを整理してもらった後
フリーソフトに組み込んだ段階で中級レベルとなる予定ですので、Lv3より明らかに強いAIでかつ
対人でもそれに見合った強さを出した段階で上級レベルとなると思います。
来年から定期的なオンライン対局を休止する予定なので名人レベルのAIの認定はちょっと微妙かも
しれません。
ただ上級レベルまでは判断できますので上級レベルまでの賞金は今まで通りです。
もし上級レベルが出た後にさらに強いのが出た場合にはその時に考えたいと思います。
HPに残してると紛らわしいのでHPも名人レベルは削除しておきます。
ちなみに中級レベルはほぼ内定してます。YさんのLv3(現在の追加AI)をソースを整理してもらった後
フリーソフトに組み込んだ段階で中級レベルとなる予定ですので、Lv3より明らかに強いAIでかつ
対人でもそれに見合った強さを出した段階で上級レベルとなると思います。
418東陶基
2007/12/17(月) 06:25:41ID:Tjg1n58r 一応今の開発者さんにも来年からはオンライン対局の問題もあるので名人レベルの認定は
厳しいかもしれませんが上級レベルまでは自分自身でも判断できると思うので・・・と伝えています。
上級レベルというのは対人レベルでは東陶基がまず勝てないというレベルです。
ちなみに東陶基の棋力は現在最強のLv3に対して勝率はイーブン位だと思います。
厳しいかもしれませんが上級レベルまでは自分自身でも判断できると思うので・・・と伝えています。
上級レベルというのは対人レベルでは東陶基がまず勝てないというレベルです。
ちなみに東陶基の棋力は現在最強のLv3に対して勝率はイーブン位だと思います。
419名前は開発中のものです。
2007/12/17(月) 09:41:51ID:0p5aBMAr 強いかどうか知る前にuctは時間かかりすぎ 今から抜くからまだ決定しないで
420東陶基
2007/12/17(月) 09:55:08ID:Tjg1n58r 別に中級が2人とかでも構わないと思ってますのでいつでもプログラムはお待ちしてます。
他のAI開発者さんも強いのが出来れば目標(ライバル?)になると思うので大変良いことなので。
確かに現時点でのuctは思考時間はPCによってまちまちですね。
最新デスクトップだと2,3秒らしいですが古いマシンだと20秒とかにもなるらしいです。
ただ5年後とかにはハードの進化でどのマシンでも2,3秒以内になってると思うのでそれは
それでいいかなと思ってます。
他のAI開発者さんも強いのが出来れば目標(ライバル?)になると思うので大変良いことなので。
確かに現時点でのuctは思考時間はPCによってまちまちですね。
最新デスクトップだと2,3秒らしいですが古いマシンだと20秒とかにもなるらしいです。
ただ5年後とかにはハードの進化でどのマシンでも2,3秒以内になってると思うのでそれは
それでいいかなと思ってます。
421東陶基
2007/12/17(月) 09:57:14ID:Tjg1n58r あと開発の注意としてはある程度のランダム性もある方が望ましいです。
もちろんある程度でOKです。
同じ様に打てば全く同じ局を再現できるとかだとさすがにまずいので。
もちろんある程度でOKです。
同じ様に打てば全く同じ局を再現できるとかだとさすがにまずいので。
422名前は開発中のものです。
2007/12/17(月) 13:01:02ID:T0APh+4f 必勝形のパターンと解説があると便利なのですが・・・どなたか整理してもらえないですか?
○ ○
○ ○ ○
という形は、へこみに石置けないのでかなり有利だと思うのですが・・・
ひとつ石を追加するごとに相手が置けないマスが一つ増えます
○ ○
○ ○ ○
●
ならへこみに置けますが、そうでない限りほぼ必勝でしょうか
○ ○
○ ○ ○
という形は、へこみに石置けないのでかなり有利だと思うのですが・・・
ひとつ石を追加するごとに相手が置けないマスが一つ増えます
○ ○
○ ○ ○
●
ならへこみに置けますが、そうでない限りほぼ必勝でしょうか
423名前は開発中のものです。
2007/12/17(月) 14:53:05ID:T0APh+4f この打ち方は、コンピュータには非常に有効なんですが・・・
ジグザグ打ち戦法 全てのレベルに対してほぼ勝てます
Lv2です アプロダにのってたやつです 内蔵のやつと同じかも?
(;SZ[19]
;B[jj];W[ki];B[ik];W[lj];B[ii];W[mi];B[jl];W[mk]
;B[im];W[hj];B[ij];W[in];B[jn];W[ih];B[io];W[hn]
;B[jp];W[kk])
(;SZ[19]
;B[jj];W[ik];B[ki];W[jl];B[lj];W[im];B[mi];W[km]
;B[nj];W[hj];B[oi];W[oj])
(;SZ[19]
;B[jj];W[ik];B[ki];W[jl];B[lj];W[im];B[mi];W[km]
;B[nj];W[kk];B[oi];W[nh];B[ni];W[ji];B[ii];W[lh]
;B[li];W[jh];B[pj];W[pi];B[kj];W[ok])
ジグザグ打ち戦法 全てのレベルに対してほぼ勝てます
Lv2です アプロダにのってたやつです 内蔵のやつと同じかも?
(;SZ[19]
;B[jj];W[ki];B[ik];W[lj];B[ii];W[mi];B[jl];W[mk]
;B[im];W[hj];B[ij];W[in];B[jn];W[ih];B[io];W[hn]
;B[jp];W[kk])
(;SZ[19]
;B[jj];W[ik];B[ki];W[jl];B[lj];W[im];B[mi];W[km]
;B[nj];W[hj];B[oi];W[oj])
(;SZ[19]
;B[jj];W[ik];B[ki];W[jl];B[lj];W[im];B[mi];W[km]
;B[nj];W[kk];B[oi];W[nh];B[ni];W[ji];B[ii];W[lh]
;B[li];W[jh];B[pj];W[pi];B[kj];W[ok])
424名前は開発中のものです。
2007/12/17(月) 19:39:27ID:Qu3RH+12425名前は開発中のものです。
2007/12/17(月) 19:59:45ID:T0APh+4f426名前は開発中のものです。
2007/12/17(月) 20:09:07ID:ioAsOlbe Lv2もジグザグ打ちで攻めるよね。
機械的なジグザグ打ちが良いのか
それとも人間的なLv3の様な打ち方が強いのか
まだなんとも言えないね。
機械的なジグザグ打ちが良いのか
それとも人間的なLv3の様な打ち方が強いのか
まだなんとも言えないね。
427名前は開発中のものです。
2007/12/17(月) 20:12:22ID:ioAsOlbe あとジグザグの斜めの位置を先に取る(先回りして守る)と言うのは
有効な守りの手筋なのかもしれない。
有効な守りの手筋なのかもしれない。
428名前は開発中のものです。
2007/12/17(月) 20:16:31ID:T0APh+4f Lv0にはジグザグ通じないなあ 弱いと思って相手にしていなかったがこれが一番苦戦するんだが・・・
429名前は開発中のものです。
2007/12/17(月) 21:42:45ID:T0APh+4f AI開発で、深読みや、モンテカルロ法は重要で無い気がしてきた
囲連星の場合、読み無しで有効手が選びやすいと思う (囲碁は多くの場面で有効手が見つかりにくいが・・)
将棋は、駒交換で評価値が変化するから読みは大事だ
囲連星も取られるが、読み無しでの有効手が、ほんとの有効手である割合が高そうだ
囲連星の場合、読み無しで有効手が選びやすいと思う (囲碁は多くの場面で有効手が見つかりにくいが・・)
将棋は、駒交換で評価値が変化するから読みは大事だ
囲連星も取られるが、読み無しでの有効手が、ほんとの有効手である割合が高そうだ
430名前は開発中のものです。
2007/12/17(月) 22:31:49ID:Qu3RH+12 必勝形に関しては読み無しでも結構いけるし、必勝形を完璧にするだけでもかなり強くはなるだろうが
読み無しで果たしてその先にいけるかどうか…
読み無しで果たしてその先にいけるかどうか…
431名前は開発中のものです。
2007/12/17(月) 22:42:11ID:T0APh+4f 読みが全く無しではなく、指し手生成に重点を置くって事です
せいぜい10手も読めれば十分だと思います
指し手が精密で3、4つに絞れていたら全数読みしてもたいした時間はかかりません
せいぜい10手も読めれば十分だと思います
指し手が精密で3、4つに絞れていたら全数読みしてもたいした時間はかかりません
432東陶基
2007/12/18(火) 22:37:42ID:U8wBaXjp 参考までに言うと今までの開発してくれた方の情報では自分の手を3手(相手も入れると5手)
くらいで時間が10秒とか掛かると言ってました。
もちろん読む場所がある程度あったので本当に3,4箇所に絞れるのであれば10手でも
いけるかもしれないとは思います。
あと囲連星はかなり直感で打つ手が良い手の事が多いと思います。
ただ終盤やお互いが既に必至状態で手数の問題になってくる場合は
一気に読みが大事になってきます。
くらいで時間が10秒とか掛かると言ってました。
もちろん読む場所がある程度あったので本当に3,4箇所に絞れるのであれば10手でも
いけるかもしれないとは思います。
あと囲連星はかなり直感で打つ手が良い手の事が多いと思います。
ただ終盤やお互いが既に必至状態で手数の問題になってくる場合は
一気に読みが大事になってきます。
433名前は開発中のものです。
2007/12/18(火) 22:42:18ID:o/djuCBy 囲連星AI作成は意外と手間暇かかるので>>431には粘り強くがんばってほしい。
俺はもう諦め気味。
俺はもう諦め気味。
434名前は開発中のものです。
2007/12/18(火) 23:19:54ID:HMfOAOUz 2手なら全数読みしても1024局面、4手なら100万局面
将棋のボナンザというソフトは1秒間に約30万局面生成して、数秒で12手以上は読める
モンテカルロ法ならば勝ち負けしかないので評価関数はいらないけれど、手数の限度あると評価関数作らないといけない
将棋のボナンザというソフトは1秒間に約30万局面生成して、数秒で12手以上は読める
モンテカルロ法ならば勝ち負けしかないので評価関数はいらないけれど、手数の限度あると評価関数作らないといけない
435名前は開発中のものです。
2007/12/19(水) 13:05:28ID:3zpiAOw0 相手の手によらずに勝てる方法が判ったよ
1手で7揃うか、必勝形になる
2手続けて指したとき異なる7が2つ揃うか、異なる必勝形が2つ出来る
3手続けて指したとき異なる7が3つ揃うか、異なる必勝形が3つ出来る
今言う必勝形は特に、6個揃って両端が空白のときか、6個の途中がデコボコしていて相手にうたれない状態のとき
1手で7揃うか、必勝形になる
2手続けて指したとき異なる7が2つ揃うか、異なる必勝形が2つ出来る
3手続けて指したとき異なる7が3つ揃うか、異なる必勝形が3つ出来る
今言う必勝形は特に、6個揃って両端が空白のときか、6個の途中がデコボコしていて相手にうたれない状態のとき
436名前は開発中のものです。
2007/12/19(水) 13:10:26ID:3zpiAOw0 ○ ○ ○ は上の判定では勝ち判定ではないが
○ ○
○ ○ ○
○ ○ ○
2手続けて指したとき異なる必勝形が出来るから勝ち
○ ○
○ ○ ○
○ ○ ○
2手続けて指したとき異なる必勝形が出来るから勝ち
437名前は開発中のものです。
2007/12/19(水) 13:11:51ID:3zpiAOw0 >>435の条件は見直す必要があることが判った
438名前は開発中のものです。
2007/12/19(水) 15:44:06ID:KbE0nHU8 開発者の人は、頭で考えてるだけじゃなくて、
人と打ってみた方がいいと思うよ。
人と打ってみた方がいいと思うよ。
439名前は開発中のものです。
2007/12/19(水) 18:27:15ID:SKYB1Ff5 >>435
相手の状態も考えないといけないな。
自分があと4手で7連ができる必勝形をつくっても、相手が3手で7連を作れるなら負けてしまう。
自分と相手、どっちが7連までもって行くのが早いかを常に考慮する必要がある。
多分ほかにも考慮することは沢山あるはず。
相手の状態も考えないといけないな。
自分があと4手で7連ができる必勝形をつくっても、相手が3手で7連を作れるなら負けてしまう。
自分と相手、どっちが7連までもって行くのが早いかを常に考慮する必要がある。
多分ほかにも考慮することは沢山あるはず。
440名前は開発中のものです。
2007/12/19(水) 22:39:55ID:3zpiAOw0 結局、盤面は32を基数にするのは止めました
実際に19で割るのは時間がかかりますけど
あらかじめ計算しておけば(対応表を作っておけば)済むからです
それよりも周囲を1マス多めに取っておくことが高速化、簡略化に繋がると思うので20か21マスにします
盤面の更新は盤面全体をコピーして戻すことにします なるべくコピー速度を上げる為も少ないビット数の方が良いです
あと乱数生成に時間がかかっている場合、これを使ってみて下さい 貼り付けておきます
unsigned int rnd(){
static unsigned int x=3,y=11,z=13,w=17;
unsigned int t=(x^(x<<13));
x=y; y=z; z=w;
return ( w=(w^(w>>7))^(t^(t>>5)) ); }
void srnd(unsigned int n){
for(unsigned int i=0;i<=1000+(n&0xFFFF);i++)rnd();}
実際に19で割るのは時間がかかりますけど
あらかじめ計算しておけば(対応表を作っておけば)済むからです
それよりも周囲を1マス多めに取っておくことが高速化、簡略化に繋がると思うので20か21マスにします
盤面の更新は盤面全体をコピーして戻すことにします なるべくコピー速度を上げる為も少ないビット数の方が良いです
あと乱数生成に時間がかかっている場合、これを使ってみて下さい 貼り付けておきます
unsigned int rnd(){
static unsigned int x=3,y=11,z=13,w=17;
unsigned int t=(x^(x<<13));
x=y; y=z; z=w;
return ( w=(w^(w>>7))^(t^(t>>5)) ); }
void srnd(unsigned int n){
for(unsigned int i=0;i<=1000+(n&0xFFFF);i++)rnd();}
441名前は開発中のものです。
2007/12/19(水) 23:01:46ID:SKYB1Ff5 Yさんはメルセンヌツイスタとかいう乱数生成方法でライセンスがどうとか言ってたけど
これはその辺大丈夫なの?
これはその辺大丈夫なの?
442名前は開発中のものです。
2007/12/19(水) 23:15:03ID:3zpiAOw0 Xorshift RNGs
G. Marsaglia. Xorshift RNGs. Journal of Statistical Software,
8(14) :1 6, 2003
http://www.jstatsoft.org/v08/i14/xorshift.pdf
George Marsaglia 氏により 2003 年に考案された、xor
とシフトを使うだけの超高速な擬似乱数生成器(Random Number Generator, RNG)です。
http://lucille.atso-net.jp/blog/?p=9
G. Marsaglia. Xorshift RNGs. Journal of Statistical Software,
8(14) :1 6, 2003
http://www.jstatsoft.org/v08/i14/xorshift.pdf
George Marsaglia 氏により 2003 年に考案された、xor
とシフトを使うだけの超高速な擬似乱数生成器(Random Number Generator, RNG)です。
http://lucille.atso-net.jp/blog/?p=9
443名前は開発中のものです。
2007/12/19(水) 23:32:32ID:rFn9reOW >>440
どこかで見たことあると思ったらxorshiftか
srandが少し適当な気がするが、モンテカルロなら問題ないだろうね
>盤面の更新は盤面全体をコピーして戻すことにします なるべくコピー速度を上げる為も少ないビット数の方が良いです
囲碁のbitboardはまだないと思うから挑戦してみてはどうだろう?
オセロのは簡単だけど、将棋と囲碁は難しくて見当もつかないのでアドバイスできないけど
どこかで見たことあると思ったらxorshiftか
srandが少し適当な気がするが、モンテカルロなら問題ないだろうね
>盤面の更新は盤面全体をコピーして戻すことにします なるべくコピー速度を上げる為も少ないビット数の方が良いです
囲碁のbitboardはまだないと思うから挑戦してみてはどうだろう?
オセロのは簡単だけど、将棋と囲碁は難しくて見当もつかないのでアドバイスできないけど
444名前は開発中のものです。
2007/12/27(木) 00:18:43ID:ycRoV4dg 9路のAI作ろうと思ったら本体から作らないと駄目?
445東陶基
2007/12/27(木) 14:20:00ID:nFT7zy5G >>444
そうですね9路は本体はないですね。
19路の方のソースは公開してるのである程度流用で簡単にいくところもありますが
逆にGUIなどはどうでしょうねぇ。
個人的には本当に簡易なものでもいいと思うんですけどね。
それであれば本体を作るのもそれほど負担にならないかもと思ったりもします。
色々不便をおかけしますが検討してみてください。
そうですね9路は本体はないですね。
19路の方のソースは公開してるのである程度流用で簡単にいくところもありますが
逆にGUIなどはどうでしょうねぇ。
個人的には本当に簡易なものでもいいと思うんですけどね。
それであれば本体を作るのもそれほど負担にならないかもと思ったりもします。
色々不便をおかけしますが検討してみてください。
446名前は開発中のものです。
2008/01/05(土) 04:49:17ID:t/bMff4b このスレでRuby/tk詳しい人います?
447名前は開発中のものです。
2008/01/05(土) 11:18:40ID:t/bMff4b Ruby/tkで9路の本体作ってみました。
http://www.uploda.net/cgi/uploader4/index.php?file_id=0000024536.zip
とりあえず、IrenseiGUI.rbを実行してみてください。
コメントやドキュメントは全然書いて無いですが需要がありそうだったらぼちぼち書いて見ます。
rubyとtkl/tkのインストールはこの辺
http://www4.ocn.ne.jp/~holmes17/html/rubytk.html
http://www.uploda.net/cgi/uploader4/index.php?file_id=0000024536.zip
とりあえず、IrenseiGUI.rbを実行してみてください。
コメントやドキュメントは全然書いて無いですが需要がありそうだったらぼちぼち書いて見ます。
rubyとtkl/tkのインストールはこの辺
http://www4.ocn.ne.jp/~holmes17/html/rubytk.html
448名前は開発中のものです。
2008/01/05(土) 12:57:46ID:i0mhi2vp なぜか上手く動かない。出来ればexeみたいな状態にしてもらえると・・・
449名前は開発中のものです。
2008/01/05(土) 19:15:25ID:t/bMff4b >>448
exeにしようとexerbやRubyscript2exeを試してみたのですが、なかなか上手くいきません。
とりあえず、Cygwinのrubyで試してみてください。
あとIrenseiCUI.rbのほうにはバグがありました。
もし使う人がいたら修正します。
exeにしようとexerbやRubyscript2exeを試してみたのですが、なかなか上手くいきません。
とりあえず、Cygwinのrubyで試してみてください。
あとIrenseiCUI.rbのほうにはバグがありました。
もし使う人がいたら修正します。
450名前は開発中のものです。
2008/01/05(土) 21:07:10ID:t/bMff4b 9路の本体ダウンロードしていただいた方、何かレスしていただけると助かります。
動いたとか、動かなかったとか。
動いたとか、動かなかったとか。
451名前は開発中のものです。
2008/01/05(土) 22:53:12ID:+41VOTzo exeでないと無理です
452名前は開発中のものです。
2008/01/05(土) 22:54:09ID:WFjXXdLC 囲碁板にも書き込んだらどうだろう。
でもそっちだとexeとかじゃないと見てくれないかもね。
HPに載せれば意見も聞けるだろうけど
ゲームできる状態になってないと厳しそうだしね
でもそっちだとexeとかじゃないと見てくれないかもね。
HPに載せれば意見も聞けるだろうけど
ゲームできる状態になってないと厳しそうだしね
453名前は開発中のものです。
2008/01/05(土) 22:56:35ID:WFjXXdLC 俺も動かなかったくちだがもう後でCygwinで試してみるから
447も頑張って作ってみてくれ、楽しみに待ってるよ。
9路のコンピュータと対戦してみたいから
447も頑張って作ってみてくれ、楽しみに待ってるよ。
9路のコンピュータと対戦してみたいから
454Y
2008/01/05(土) 23:34:10ID:Y297lJT3 exeに変換することが出来たのですが、アップロードしましょうか?
もちろん、作者の方から許可して下されば、という話ですが。
もちろん、作者の方から許可して下されば、という話ですが。
455東陶基
2008/01/06(日) 01:49:14ID:LO0BYfd6 >>454
Yさんありがとうございます。作者の方が良いということになったら上げてみてください。
exeにしといた方がみなさん気軽に試せると思うので。
あと作者の方がexeにする方法でどのあたりが上手くいかなそうかも教えてあげれたら
作者の方としても助かるかもしれませんね。
Yさんありがとうございます。作者の方が良いということになったら上げてみてください。
exeにしといた方がみなさん気軽に試せると思うので。
あと作者の方がexeにする方法でどのあたりが上手くいかなそうかも教えてあげれたら
作者の方としても助かるかもしれませんね。
456447
2008/01/06(日) 09:00:17ID:xl70frxU 447です。
Yさん、exe化ありがとうございます。
ぜひアップしてください。
よろしくお願いします。
Yさん、exe化ありがとうございます。
ぜひアップしてください。
よろしくお願いします。
457Y
2008/01/06(日) 10:04:10ID:V5rG8ep3 ↓にアップロードしました。
http://www.uploda.net/cgi/uploader4/index.php?file_id=0000024589.zip
・ActiveTclをインストール
・環境変数の設定
・tcl8.4.dllとtk8.4.dllがないとエラーが出たので、tcl8.3.dllとtk8.3.dllを
それぞれtcl8.4.dllとtk8.4.dllにファイル名を変更
後は↓を参考にRubyScript2Exeを使ってexeに変換。
http://jitte.net/index.php?%E6%97%A5%E8%A8%98%2F2005-12-17
という手順だったと思います。
http://www.uploda.net/cgi/uploader4/index.php?file_id=0000024589.zip
・ActiveTclをインストール
・環境変数の設定
・tcl8.4.dllとtk8.4.dllがないとエラーが出たので、tcl8.3.dllとtk8.3.dllを
それぞれtcl8.4.dllとtk8.4.dllにファイル名を変更
後は↓を参考にRubyScript2Exeを使ってexeに変換。
http://jitte.net/index.php?%E6%97%A5%E8%A8%98%2F2005-12-17
という手順だったと思います。
458Y
2008/01/06(日) 11:23:08ID:V5rG8ep3459名前は開発中のものです。
2008/01/06(日) 13:00:26ID:N90zFTn1 動作見てみたけど七連の範囲もコウも問題なく動いてるみたい。
後はAIだけだねw
後はAIだけだねw
460名前は開発中のものです。
2008/01/06(日) 13:01:41ID:N90zFTn1 これも19路のようにAI外付けにできると良さそうだけど
461名前は開発中のものです。
2008/01/06(日) 13:03:16ID:N90zFTn1 ごめん、良く見たら外付けできるんだ。これはすごい。ルビー以外でもOKなんだよね?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★3 [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に ★2 [ぐれ★]
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★4 [ニョキニョキ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★3 [ぐれ★]
- 首相就任1か月、目立つ高市流「スピード」「独自性」…発言の率直さで危うさも [蚤の市★]
- 防衛費増額「賛成」62・8% 「反対」32・2%を大きく上回る 賛成「18~29歳で8割」世代差あらわ 産経FNN合同世論調査 ★3 [尺アジ★]
- 【実況】博衣こよりのえちえち朝こよ🧪★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【悲報】小野田紀美さん、宇宙人みたいな服を着てしまう…また、そのことを突っ込まれブチ切れ中www [856698234]
- お前らっていつもここにいるよな
- 🏡
- ホロライブ、上場企業なのに故人を悪質ネタにして炎上 [329329848]
