【囲碁?】囲連星のAIを作ってみよう【連珠?】
■ このスレッドは過去ログ倉庫に格納されています
フリーソフト囲連星のAIを自作してみませんか?(囲碁+連珠) デフォルトのAIが弱いので今なら囲連星AIの第一人者になれる。 もし名人より強いAIを作成すればそのAIが名人位に。 詳しいことはソフトダウンロード後、ヘルプメニューを参考に。 作成方法:AI部分をプログラムしコンパイルしたものをファイルコピーすればOK ソフトダウンロード:http://irensei.com/ ダウンロードしてみたが弱いwwかなり。 これより強いのを作るのは簡単そうだが そう一筋縄ではいかないのかもね 自作CPU同士で戦わせられないのか? それが出来たら、スレ内で最強決めたり、おもろいかも 面白いな。 なんか、アレだな。 ロボットのAI書いて、戦わすみたいなノリだな。 >>5 自作同士で戦えるよ。 いまでもCPU同士で対戦できる。 でも今だと両方とも同じAIだからどんぐりの背比べになっちゃうけど。 誰か今のより強いの作ったらどっかに上げてみてよ フリーのC++のツールで開発してOK?AIだけなら >>8 VC++とBorlandC++のサンプルがGUIに同梱されてるよ。 >>9 サンクス。C++かぁやったことないんだよな >>10 C++から他の言語へのゲートウェイを作るってのはどう? こういうのは詰みと中盤を分けて作るのが普通なんだろうけど、 5連、6連の連打で勝負をつける本当の詰めを読む部分のほかに 石の取り合いになる攻め合いを読む部分を別に作った方がいいのかな? 連続のアタリで取れるの取れないのぐらい読めた方がいいのかなと 思ったり。 あとは評価関数だよなー。 俺何回か打ったことあるんだけど 5連6連の連打で詰めるというよりは いかに必勝形を作るかにかかってるみたい。 ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ってのよりは ┠┼┼┼┼┼┼○┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼○┼○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ の方が有効な5になる。逆に相手のこれを確実に止める ロジックも必須になるかな守りとしては。 多分相手の必勝形を防ぐことにウェイトを置いたほうが強くなりそう >>14 必勝形のデータベースを持たせてマッチングさせるのかな? 上より下を高く評価するのにどんな関数を定義する? 白地になりそうな点は 白石が置かれているものとしてカウントする、って感じで >>16 だね。すでにあたりになってる場所は既に自分の地(?)って計算にすればいいのかもね >>16 なるほど。中盤の評価関数としては優秀かも。 でも必勝かどうかはわからんし、>>14 の上は先手を取れるけれども、 下は相手に5連があれば受けに回らないといけない。 つーわけで、5連6連の連打で詰める探索は必須だと思うよ? えー、現囲連星名人です。 他によくあるのが ┠┼┼┼┼┼┼○○┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ これで4 ┠┼┼┼┼┼┼○○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ これで5 こういうのが作りやすい。 だから単純にアタリになるところだけでは不十分だと思います。 まあ先に進んでからの話だと思いますが。 ┠┼┼┼┼┼┼○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ こういうのはいい形、というのを評価関数にいれるといいんじゃないかと思います。 アルゴリズム的に、形をマッチングさせるよりも、 探索の結果として好形に高評価が下るようにする方が 個人的には好みかな。 もちろん、パターン認識するのも全然ありだけど、 歴史が浅いゲームだから、手筋自体があまり揃ってない ような気がする。 マッチングはどっちかって言うと 候補手の生成のためのものって気がするが。 てことで、みんな候補手はどうしてる? 棋譜から良いパターン・悪いパターンを検出して、良いパターンほど優先的に生成。 って事をしたいけど、実現出来そうに無いから合法手全部生成する。 そうすると3手読むだけでだいたい(15*15)^3=11 390 625 になっちゃうんですけど。 αβ法とかでカットするにしてもこれは多すぎだべ。 とりあえず標準のAIよりは強くなればOKじゃないのか それでまずは最強AIなわけだし。 囲碁とか将棋もそうやって徐々に進化したわけで。 >>23 たしかに多いね。 石に隣り合わない手を読まないとかどう? ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○┼┼┼○○┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ のとき真ん中に打ってくれなくなるなー。 まあでもこんなのは例外的だから 除外しちゃってもよさそうだけど。 7連を作る手 ないときは相手の7連を防ぐ手 ないときは六を作る手 ないときは相手の六を防ぐ手 … プラス、石を取る手、助ける手は常に候補手 って感じはどうかなあ。 どうも会長です。 もし完成した場合には送ってもらえればダウンロードするファイルに 入れちゃうので宜しくお願いします。 >>26 まず自分に7連を確実に作れる手がなければ 相手の5(もしくはどちらかが止まってる6)を防ぐというのが最優先では。 自分の7連の詰めろ状態と相手の5を比べて 両方FALSEなら布石となる手を、 両方TRUEならどちらが先に勝つかを検討 どちらか片方がTERUの時はそっちを優先でOK? >>28 >>26 じゃないけど 相手の両方開いた5よりも自分の片方開いた6があれば 自分の方が早いってことじゃないかな? まぁでも俺はああいう風に分岐の多いロジックでやるよりも 7連のみを考慮して探索を深くた方がいいと思うんだけど。 あと >>14 >>19 で上がってる好形も同様に手が遅いんだよね。 だから評価関数的には割り引いて判断してあげないといけないと思う。 ┠┼┼┼┼┼┼○○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ そりゃ、相手の打つ手を考えないなら、同じ5でも下の方が早い。 下はあと2手だけど、上はあと5手もかかる。 でも、相手の5や6をちゃんと止めるという基本ができてれば、ひとつだけ5があったって勝ちにはつながらない。 両てんびんをかけなきゃだめなのよ。 5目並べの33や43は結構できるけど、55や56は縦横斜めの組み合わせじゃそうそうできない。 じゃ、どういう形ならできやすいかっつーと、 ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○┼┼○┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼☆○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ 例えばこんなのになる。(ちょっと人工的な例だが) そういう意味で ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ より ┠┼┼┼┼┼┼○○┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ の方が好形 ちなみに、勝負が決まった場面集(対局スレより) ┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○●●┼○┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼○●○○┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼○○●○●┼┼┼┼┼┨ ┠┼┼┼┼┼┼☆●┼●●┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○┼┼┼┼●┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼●○┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼●┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛ ┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼●┼┼┼┼●┼┼┼┼┼┼┼┨ ┠┼┼┼┼●○○○○●┼┼┼┼┼┼┼┨ ┠┼┼○┼●●○●●●┼┼┼┼┼┼┼┨ ┠┼┼+○┼●●○●┼●┼┼┼+┼┼┨ ┠┼┼┼┼○●┼○┼★┼┼┼┼┼┼┼┨ ┠┼┼┼●●○○○○┼●┼┼┼┼┼┼┨ ┠┼┼┼●○┼○●┼○┼┼┼┼┼┼┼┨ ┠┼┼┼○┼○┼●┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛ ┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼○┼┼┼●○┼┼┼┼┨ ┠┼┼+┼┼┼┼┼○○○●┼┼+┼┼┨ ┠┼┼┼┼┼┼┼●●○●●┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼●●○┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼●○○○┼┼┼┼┨ ┠┼┼┼┼┼┼┼●┼┼○┼●┼┼┼┼┨ ┠┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼○┼★+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛ ┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼○┼┼┼┨ ┠┼┼┼┼┼┼┼☆○┼┼┼┼┼●○┼┨ ┠┼┼┼┼┼┼┼●●○○○┼┼●┼┼┨ ┠┼┼┼┼┼┼┼○●●○●●●┼┼┼┨ ┠┼┼┼┼┼┼┼○●●○○●●○┼┼┨ ┠┼┼+┼┼┼┼○●○○●●●●○┼┨ ┠┼┼┼┼┼┼┼┼●○●○┼┼○┼┼┨ ┠┼┼┼┼┼┼┼○○●●○┼○┼┼┼┨ ┠┼┼┼┼┼┼●●○●○○○●┼●┼┨ ┠┼┼┼┼┼┼┼┼○●┼●○○○●┼┨ ┠┼┼┼┼┼┼┼┼○●┼●●┼○┼┼┨ ┠┼┼+┼┼┼┼┼+●○●┼●+○┼┨ ┠┼┼┼┼┼┼┼┼┼┼○┼┼┼●┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛ ┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨白が壱 ┠┼┼┼┼┼┼┼┼┼┼参┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼壱┼┼┼┼┼┨ ┠┼┼┼┼┼┼○●┼┼○●弐┼┼┼┼┨ ┠┼┼┼┼┼┼┼●○┼●○┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼●┼○●○┼┼┼┼┼┨ ┠┼┼+┼┼┼┼●●●○┼┼┼+┼┼┨ ┠┼┼┼┼┼┼●○●○○○┼┼┼┼┼┨ ┠┼┼┼┼┼┼●○○●●┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○●○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛ >>30 言ってることは分かるけど、評価関数は、 もっとシンプルに実装すべきだと思うよ。 ┠┼┼┼┼┼┼○○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ の五の部分に関して、下を高く評価するべきだろうということ。 たとえば下の五が2つあるのと上の五が2つあるのでは、下を選ぶでしょ? 上が好形なのは、五の部分だけではなくて、三が1つ、二が2つある ということだから、五の部分に関しては割り引くべきだという話。 下の五が2つと上の五が2つだったら下を選ぶけど 下の五が1つと上の五が1つだったら上を選ぶ そうだね。フリーの ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ は ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼C┼○○○┼AB┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼○@┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ で ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼○┼○○○┼○●┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼○●┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ となり必勝だけど 上のは ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼B┼┼┼┼A┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○@┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ で ┠┼┼┼┼┼●┼┼┼┼○┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○●┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ってなって優勢ではあるが決定的ではない。白が柳沢ならまだ可能性を残している ってとこかな。 ただしフリーでこういうのが出来るってことはまずなさそうだけど。 って思ったけど ┠┼┼┼┼┼●┼┼┼┼○┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○●A┼┼┼┼┼┨ ┠┼┼┼┼B┼┼┼┼┼@┼┼┼┼┼┼┨ ┠┼┼┼┼┼●┼┼┼┼○┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○●●┼┼┼┼┼┨ ┠┼┼┼┼☆┼┼┼┼┼○┼┼┼┼┼┼┨ でやはり必勝。ってことでフリーで5が出来てたら どっちにしろ防ぎようがないって事だね 評価関数難しいなあ 勝ちは決まってないけどどっちかが優勢って局面のサンプルきぼんぬ 実際に自分で(人と)打ってみるといいと思うよ。 たまにKGS http://kgs.kiseido.com/ja_JP/ で囲連星部屋を立ててるので、 遊びに来てみて。 今日も19:00ころから立てる予定。 世界コンピューター囲碁大会岐阜チャレンジ2006から 参加しませんか?ってメール来た。 いくらなんでも囲連星のAIで参加したら秒殺なんだけど。 作ってみたいけどC++やったことない。 HSPで作ったら意味無いかな。C++勉強した方がいい? HSPの事はよく分からないですが、 >>10-12 辺りの対処法はあるかも。 どうも会長です。 一応、DLL化出来ればそのファイルをexeと同階層に入れれば動くという 仕様でゲームを作ってもらったので多言語でも動くはずなのですが ただHSPがどんな言語使用なのかが不明なのでなんとも・・・。 これもとりあえずゲームを作ってもらったプログラマの人に確認してみますね。 あと、簡単なサンプルAIを作って見てそれで動けばOKって判断も可ですけどね。 ただ囲連星協会としては製作してくれる人には出来る限り 協力していきますのでわからないことありましたら質問はどんどんしてください。 ちょっと誤字訂正 多言語→他言語 言語使用→言語仕様 >>43 囲連星AI的には、7作って勝手に勝利だと思っちゃうってやつですなwww ちょっとかわいい >>44 HSPでも出来るという回答を貰いました。 ただある程度Cのソースも取り込む時に必要らしく サンプルっぽいのを貰ったのですが 自分自身が理解出来ないので後日公式HPの方にでも アップしときます。 ※プログラマーさんからの回答を勝手にまるまる引用 >・HSPとか多言語でもOK? ですが、絶対に作れないということはありません。 HSP とのやりとりのために、いくらかの C のプログラムを書く必要が ありますが、可能です。 例えば、HSP はファイルアクセスが可能なようですので、 1)C で書いた AL DLL から、必要な情報を特定のファイル名で保存 2)C で書いた AL DLL から、HSP のプログラムを起動 3)C で書いた AL DLL は HSP のプログラム終了待ちに入る 4)HSP で書いたプログラムは 1) のファイルを読み込む 5)HSP で書いたプログラムは思考処理をして、結果を特定のファイル名で保存 6)HSP で書いたプログラムは終了する 7)C で書いた AL DLL は 5) のファイルを読み込む 8)7) を囲連星の形に直す のような形で HSP で AI を作成することができます。 この場合、HSP のプログラムは、一手ごとに起動と終了を繰り返すこと になります。 他にも、HSP でもプラグインでソケット通信が可能なようですので、 C で書いた AI DLL と、自身で決めた約束事に沿ってソケット通信 することで、囲連星のゲームと HSP のプログラムとのやりとりを することができます。 この場合、HSP のプログラムは起動しっぱなしになります。 ※引用終了 と言うことらしいです。このサンプルソースを頂いたので(かなりお手数掛けてるかも) いつかまとめて(まとめられるかな・・・)UPします。 ただ個人的には普通にDLL作れる言語で作ったほうが簡単そうな気がする・・・。 あと思うに言語を使ってプログラムを実際書けるというのと AIの理論的な部分のアイデアとはまったく別のものなので こことかでAIのコア部分のアイデアが出れば、それをもとに コーディングをするってのも有りかなと、かなり希望的観測だけど。 むふ。それはDLL作れるので作った方が楽でしょうね。 AIって評価関数のウェイトのおき方が最重要だから、 沢山テストしてパラメータを調整するのが肝なんですよねー。 将棋のbonanzaとかは自律学習させてチューニングしてたとか。 CだとDLLとやらを作れるのでしょうか。 CならC++よかいくぶん簡単ですかね? >>54 AI部分だけならCでもC++でもそんなにかわんなさそう。 >>54 C++を使うにしても、継承とかややこしいの抜きで“構造体(orクラス)の一部に関数を含める”だけなら楽で便利ですよ。 なるほど。ではまあ必要そうなとこだけ勉強するような形で C++で作るのに挑戦してみようかなあ。 アドバイスありがとうございました。 hspで作れるようにする方のUPも一応待ってます。 HSP で作っても構わないと思うくらいスピード無視なら、 ソースに入ってるユーティリティ使ってるうちに C++ に慣れるんじゃない? まあ、その程度にはってことだけど。 キター!ありがとうございます。 でもtest01.hspをコンパイル&実行してみたのですが aiboard.binが見つからないというエラーになってしまいました。 どうしたらいいんでしょう。すいません。 直接実行するんじゃなくて、囲連星から実行されるってのは分かってるのかな? >>60 あのサンプルはメールで問い合わせたときに 囲連星開発プログラマさんのご好意で作ってくれた やつなのでサポート、苦情は無しでねと言われているので ソース読んで理解出来る人は参考にって感じでお願いします。 関連スレにも書きましたが 先ほどとある出版社からメールが来ました。 とりあえずまだ確定ではないので名前は伏せておきますが 囲連星のゲームが雑誌に掲載されるかもしれません。 もし確定しましたら皆さんにもご案内しますので待っててください。 今のところ振込依頼とかは来てないです ただ逆にその後音沙汰もないです。 なんだったんだろ・・・。 Windows100%11月号に掲載されることになりました。 今月中旬くらいに本屋に並ぶと思うので立ち読みしてください。 岐阜チャレンジ出てみるのも手だったかも。 対戦相手のAIが普通に7手打った所で囲連星のAIが7連作ってお終い。 で棄権。 ちょっとは話題になったかもね。 今日Windows100%が送られてきました。 意外と大きく紹介されててちょっと驚きでした。 11月号91ページです。 俺のゲームも載ってたwwww 雑誌? 送られてこねぇよwwwwwwwwww >>72 載せる時に許可取るメールみたいなの来なかった? そこに雑誌いる?見たいなことが書いてあったので 「要る」って返信したら送られてきた。 なんか無許可では掲載しないような感じだったけどどうなんだろね つか、sageを覚えようぜ メール欄にsageと記入すればOK こうですか?わかりません(><) なんかHPの掲示板に載せるから許可クレって書き込みがあったから イイヨーって返信した。それ以後連絡なし。アレ?まあいいや立ち読みで確認したし >>75 そうそう。イイヨーって返信する時に雑誌欲しかったら住所と名前 教えてねってあったからそれを書いてイイヨーって返信した。 それ以降連絡なしは同じかな。 囲連星のAI作ったら20万もらえるのか ttp://irensei.com/html/ai.html 小銭稼ぎになるか DLLはcdeclか stdcallの方がアンダースコア絡みで悩まなくて済むのに stdcallだとVC系の方が_hoge@numになるんだったっけ… cdeclにしろstdcallにしろdefで対応すれば問題ないのかな あとで試してみよう sage進行なのかここ?不明だからsageとくけど AI作る以前に思考が追いつかない。 >>31 や>>40 が必勝ってのがわからん。 囲碁の死活がわからないとどうしようもないのでは 囲碁板へどうぞ >>84 >>31 は、このあと白が壱、二、三or四に打って 7を作るのを黒は阻止できない (黒が壱に打っても白五で取られてしまう) 白より早く7を作れる箇所もないので黒の負け。 ┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼三┼●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○●●┼○┼┼┼┼┼┼┨ ┠┼┼+┼┼五壱○●○○┼┼┼+┼┼┨ ┠┼┼┼┼┼┼二○○●○●┼┼┼┼┼┨ ┠┼┼┼┼┼┼☆●┼●●┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○┼┼┼┼●┼┼┼┼┼┨ ┠┼┼┼┼┼┼四┼┼┼┼●○┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼●┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛ >>40 は☆の行に白が7を作るのを 黒は阻止できない(黒が壱に打てば白二、 黒三なら白四で結局取られる) 黒が他に白より早く7を作れる箇所がないなら白の勝ち ┠┼┼┼┼┼●┼┼┼┼○┼┼┼┼┼┼┨ ┠┼┼┼┼┼○○○○○●●┼┼┼┼┼┨ ┠┼┼┼┼☆┼┼壱三┼○┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼二四┼┼┼┼┼┼┼┼┨ >>86 >>87 わかりやすい解説ありがとうございます。 慣れるまでは、勝てるかどうか判断するのに時間がかかりそうです ageるよ。 俺が思うにもし完成した場合には中途半端な強さじゃなくて すごい強いか無茶苦茶弱いかのどっちかだと思うんだけど そういうもんじゃないの?プログラマの人教えて だろうな。ただ五目並べとオセロは必勝法があるんだよな。 先手必勝だったと そう考えるとその必勝法さえ見つければそれをプログラムすれば おっけーってわけだ > プログラムソースの公開は、囲連星プログラムの改良を目的としています。 > そのため、第三者がこのソースを利用し作成したプログラムもまた > オープンソースとして公開することを義務づけます。 AI作るときにAI用に提供されているAPI使った場合もソース公開しないといけないのかな? どうだろうな。 DLL との通信に必要な部分は、さすがに問題ないだろう。 ユーティリティーは、あれ使ってる間は、別に公開して困るレベルじゃないんじゃない? まあでも、内蔵 AI のソースを流用するならともかく、API つーてるのを使ってライセンス汚染はキツい気がするな。 GUI 部分のソースはどーでもいいし。 >>91 オセロ解明されたの?!! しかも後手じゃないんだ! 俺が知ってるのは、十数手以内にどっちが勝つか分かるって話だったけど。 ソースあったらくれ。 >>94 APIの使用は問題ないと思いたいですね > ユーティリティーは、あれ使ってる間は、別に公開して困るレベルじゃないんじゃない? 確かにそうかも 練習として棋譜再生DLLを作ってみました (AIではありませんが…) 囲連星上で棋譜の確認が出来ると以外何もありませんが、 興味があったら使ってみてください http://gamdev.org/up/img/8017.zip >>95 ツール作成ありがとうございました。 公式HPにアップしてもよいですか? あとライセンスや著作権についてですが 一応ライセンス云々と書いていますが 基本的に作成者のご希望を優先しますのでとりあえず 気にせずガンガン開発してもらえるとうれしいです。 >>97 > 公式HPにアップしてもよいですか? こんなものでよろしければ、好きなようにして下さって構いません > 基本的に作成者のご希望を優先しますのでとりあえず > 気にせずガンガン開発してもらえるとうれしいです。 どこまで出来るかわかりませんが頑張ります コンテストに応募できるくらいになればいいのですが…自信はありません >>98 もしわからない事がありましたら何でも聞いてください。 戦術、ルールなど答えられる限り対応させてもらいます。 そこそこ強いのが携帯とかで遊べたら通勤時間とかいいんだが 碁だと時間かかるし、五目並べはなんだしな オセロでもいいっちゃいいがコンピュータにどうやっても勝てないし 弱い石をまず一子なり二子取ってそこを中心に七連を作るプログラムが 手っ取り早く強そうなんだがどうだろう 序盤での石を取る手の価値を大きくするのはよさそう。 弱い石を無理矢理取りに行って取れるくらい囲碁に明るいプログラムなら、そりゃだいぶ強いだろ。 ところでサンプル通りに作れば動くことは動くのかな? だれか少しでも動かせた人教えて >>104 囲碁のプログラムって序盤で一子(取れることも少ないんだろうけど囲碁の序盤だと) を取りにいけても無理に取りに行かないんじゃない? なんか囲碁のプログラムの難しいのは石を取りに行くより地とか厚みの方が 有効だったりするからだろうなと思ったり。 なので結構取れる石ってある気もするんだけどね。 ルールわからないから作れない。 詳しいルールブックないの? そもそも囲碁なの? ルールみたけど、分かりづらい。 囲碁のベース知ってる前提みたいだから無理だな。 コウのところ以外は読んだらすぐ打てそうだけどね コウなんて囲連星じゃあんまり出ないだろうし 囲まれたら取られる7目並べでルールはOKだと思う >>110 ためしに明日からここで作ってみるわ。 誰かルールに詳しい人サポートお願いします。 >>111 おぉ〜。応援してるよ。 俺も作りかけたんだけど挫折しちまったから 代わりに賞金20万狙って 今、ためしに作ってみたんだけどイマイチ自信がもてない。 この盤ゲームは一番長い連続した碁の長さを競うものなの? で、どんなAIというか 19x19マスに情報を19x19階層分持っておく。 ターンで敵の打ったx,y,nに保存して内部に(1)もしくは(周りの数)を足す。 x,y,nの周辺に合計1~以上を検索してなかったら1以上になる位置に打つ。(ここは適当) ターンを増すごとに階層情報が増えるので何処が重要なのかわかってくるハズ。 連続性がこの勝敗を分けるみたいだから 数の多いところを抑えて、自分はもっとも数の小さな位置からもっとも多い位置の中間を狙わせる。 考え方としてはその位置にどれだけ投資されたかっていう考え方。 このゲームではどこを狙っているのかが問題になっているし、連続性とう位置関係も解決されるハズ。 と長いけど、サンプルあとでうぷしますね。 締め切りっていつ? >>113 >この盤ゲームは一番長い連続した碁の長さを競うものなの? 違う。 ルールをしっかり読んだ方がいい。 ルールの記述は厳密さが足りないところも多々あるが、 そんな風に誤解されるほど酷いものではないと思う。 ちなみに勝敗条件は >先に七連を規定本数作った対局者を勝ちとする。 >白は長連でも七連と認める。 公式で落とせるソフトでは規定本数=1になってるね。 囲めば石を取れる7目並べって考えれば そんな遠くは外れないと思う 締め切りはないんじゃないかな。随時募集みたいだよ >>114 ,115,116 ありがとう もうちょっとがんばって改良するわ >>117 ところでこういうのを作る時って、どのあたりがネックになるの? 躓かないで一応打てるとこまでは直ぐ出来るのかな? 強い弱いを別としたら >>118 強い弱い別にしたら if 分でルールどおりに書いてみただけでも一応は動くよ。 ただし、その if を自動化するからこそ可能性があるのね。 ネックはやっぱりルールでしょう。 この場合は7連続がどうたらとか、囲むとか、それさえなんとかなれば強弱もなんとかなりそう。 オセロのAIなんか見てみると面白いかも。(HSP系なら落ちてるよ >>118 >>119 C++なら盤面の更新や着手可能個所の列挙などを手軽にできるAPIがあるので楽 自分で実装するのも難しいことではないね >オセロのAIなんか見てみると面白いかも。(HSP系なら落ちてるよ なぜHSP?というのは置いておくとして、 オセロは定番だから取っ掛かりにはなるかもしれないね ただオセロと比べると盤面が広いのと、 着手候補数が多い(既に置かれている石の周辺だけを候補としても)のが辛いところかな。 >>119 なんか着手がルールにのっとってるかどうかのチェックするAPIが あったような気がした。ソース読んだときに。 ただ着手候補数が多いってことが逆にオセロと違ってコンピュータより 人間が強いって言う砦を守りそうな気がする これってそんなに数日とかで出来るもんなのかな? ただGUIとかのコーディングがないからソース自体はたいした量にはならない? 出来れば作り始めた人はコテハンでカキコしてくれたらわかりいいな。 123とかがその人なら「期待して待ってるよ」ってなるけど 通りすがりのカキコだと一般論になっちゃうもんね 囲連星のバグ報告 ・対局中にメニューの「待った」と「降参」を押しても反応がない ・AIのIrenseiFinalize() が呼ばれない 前者はそれほど大きな問題でもないけど、 後者に関してはリソースの解放などにも関わる可能性があるので重要かもしれません。 ソースを調べたところ、mainform.cppの以下の箇所が原因のよう。 ASSERT( (*ai.finalize)(ai.param, ai.iout) ); 関数呼び出し自体をASSERTで括ってるので、おそらくデバッグ版の囲連星でしかfinalizeが呼び出されません。 >>125 そうなの?俺のマシンの囲連星は待ったも降参も反応してるけど >>126 もしかしてうちだけなのか… 念のため言っておくと、右ペインの「新規対局」「待った」「降参」が並んでるボタンではなくて、 上部のメニューバーの方ね メニューバーの方ね。それは確かに反応してない。 単純に関数の呼び忘れなのかな? >>先日対局したAI開発者さんへ この前はAIありがとうございました。 AIと対局してみたのですが、多分石が当たられたときに逃げないのが 弱い一因かなと。 ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼○┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼☆●○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ の時に ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼○┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼○●○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼★┼┼┼┼┼┼┼┼┨ と単純に逃げるだけでも強さが改善されるのではないかと。 もちろん7を作れるとか6を止めるとかの方が優先順位は高いと思いますが、 石を取られるのを避けるというのもかなり優先順位が高いと思うので 参考までに。また強くなったらテストさせて下さい。 >>125 そうですね。機会があれば直してもらいます >>129 アドバイスありがとうございます。 この前のAIは何手先まで読めるかを試す程度で、 特に五六七以外のチェックはしていないので、アタリなどの判定はこれから実装予定です。 現状では、この前より少しばかり高速化してさらに一手先を読むことができるようになったので、 今のAIには七割くらいは勝てるようになりました。 が、人間が打っても強くなったとは実感できない程度だと思います。 幾つかあるアイディアを実装すればもう少し強くなるとは思いますが、 大幅に強くなるようなブレイクスルーの見込みはないですね。 機械対機械で7割とかって人間みたいなバランスになるんだな。 なんか強い方が99パーセント勝ちみたいなのかと思ってた >>131 明らかに強ければ99%勝ちになるとおもうのですが、 現段階ではそれだけ微妙な差しかないレベルってことだと思います。 公式サイト以外で囲連星の棋譜が手に入るところってありませんか? まだ囲連星に不慣れなので、いろいろな棋譜を見て調べてみたいと思っています。 >>130 今のAIより強くなったんですか? 凄いですね。もし良かったら適当なところで一旦メールで 送ってもらえると嬉しいです。もしくはUPしたURLを書き込んでおいて もらってもいいのですが。 そうすればまた何か気になるところがあれば報告出来るかなと。 ただAI同士でなく人間との対戦の場合は必勝形を作る、防ぐと言うのが かなり効率的です。 詳しくはこのスレの前半にあるのですが ┠┼┼┼┼┼┼○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ もしこの状況の場合、白なら ┠┼┼┼┼┼┼○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼┼☆┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ 黒なら下の二箇所のいずれかに打つのが有効です。 ┠┼┼┼┼┼┼○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼★★┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ 白の場合は上の状況から黒止め、白伸ばして ┠┼┼┼┼┼┼○○○○┼┼┼┼┼┼┼┨ ┠┼┼┼┼☆○┼┼┼┼○●┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ となりあとは白の4連の下の部分を埋めていけば7が作れます。 黒がそこに打ってきた場合はその下から白で抑えていけば 石が取れるようになります。 人間との対戦の時はこの勝ち方(負け方)が多くなるので その形の一手前を認識できれば相当強いはずですが 今のAIを作る時にそれは難しいと言うことで出来ませんでした。 あと棋譜ですがiGoの方に対局そのものはあるのですが いつまで保存してるのか不明なので今から検索してきます。 もしあったら、何かの方法でお知らせ出来るようにしてみます。 棋譜発見しました。 iGo棋院にログインして棋譜検索ボタンがありますので そこで東陶基で検索してください。日付は2005年からあります。 まだそこで検索された対局者で再度検索すると東陶基以外との 対局もたくさん出てきますので棋譜の量はある程度そろうと思います。 棋譜ここにもあります。 http://www.gokgs.com/gameArchives.jsp?user=mosa 対局形式が自由碁の奴はだいたいそう。 (公式戦は碁の棋譜です。) 7月は結構ある。他の月もちらほら。 >>133 メール送りました。 >>134-135 のような状況の判断に関しては検討中です。 速度的に問題があるかもしれませんが、思いついた方法があるので近々試してみます。 >>136-138 棋譜の件、ありがとうございました。 これから手に入れてみようと思います。 iGoの棋譜をUPしました。 http://gamdev.org/up/img/8252.zip iGoは検索結果の棋譜の一括ダウンロード機能などはないんですね。 最初は手作業で一つ一つsgfファイルを作っていたのですが、 量が多くて大変そうだったので、機械的に処理してsgfを生成しました。 中身をチェックしていないので囲碁の棋譜があったりするかもしれませんが、 それでも良ければ参考にどうぞ。 上の棋譜を用いて何らかの統計情報を得たいと考えています。 例えば>>129 のような状況で逃げる手を打つ確率などです。 人間が特定の状況で打ちやすい手というのは他にもあると思うのですが、 なかなか思いつかないので、何か知っていることや気づくことがあったら教えてください。 極端な例を挙げると、六がある状況で七を作る確率などもそうですね。 これは統計を取らずに100%とした方が良いかと思いますが。 そうですね。あるとしたら 1.5を作るより取れる石があった場合は取る 2.必勝形を作られてほぼ負けの状態でも自分に4,5がある場合は それを5,6にして糸口を見つける 3.シチョウを見つけた場合、追っていってもし相手の7が先に出来てしまう 場合は追わない、それ以外は追って取りにいく 5を止める時にどっちに止めると有利かも考えて止めてくれるといいね >>143 1に関しては統計とって見たほうが良さそうですね。 2, 3に関しては統計を取るまでもなく、ほぼ100%そうするべきという感じでしょうか? 必勝形やシチョウの判定ができればの話ですが。 ちなみに確率は探索の深さに影響させる予定です。 今現在は探索深さを固定しているのですが、 候補手が多いこともあって全然深読みできません。 これを解決するために確率を用います。 より人間が打つ可能性の高い手に関しては深く読み、 可能性の低い手は早めに探索を打ち切るという風に考えています。 確率を用いるにあたって問題点もあります。 今、確率の対象として挙げている事象は排反事象ではありません。 棋譜からある事象の確率を統計的に算出しても、他の事象の影響を受けているため、 当てにならないかもしれません。 算出した確率を無理矢理用いるにしても>>143 の1は、 A. 5を作れる場合に5を作る事象 B. 取れる石があった場合に取る事象 の2つを合わせたものです。 それぞれの確率をP(A), P(B)と仮定したときに、 5を作る確率と石を取る確率はそれぞれどのような求めれば良いのやら。 確率に関してそれ程あかるいわけではないので、 根本的に間違っているところがあるかもしれませんが、 今考えているのはだいたいこんなところです。 >>145 シチョウを追ってくれたらカッコイイ シチョウの判断って囲碁のゲームとかで既に解析済み? 当然解析ずみのはず。 囲碁のなかでは一番計算機が得意な分野でしょ。 みたことないけど、GnuGoの中にも当然そういうルーチンは入っていると思う。 囲碁に関しては無知で、シチョウについても最近知ったばかりなのですが、 階段状に斜めに進んでいくものだけしかないって解釈でいいのかな? 最悪、着手範囲を限定して探索すれば判断できそう それで十分だと思う 碁だと途中で折り曲がったりするのも考えられるんだけど、 囲連星ではそんなの出てこないでしょ。 追ってく先に既に石があることはあんまりないから。 5を作るより石を取ったほうがいいと感じるのは どうせ止められる5を作るよりは石を取っといたほうが 勝つ確率が高いような気がしたので書いただけなので もちろん状況によってはそうじゃない場合も多いと思います。 あとシチョウもそうなのですが石を取れる手筋というのが 定石化してるようです。 ただそれをプログラムに取り込むときはどうするのかはわからないです。 そのパターンを1つ1つチェックしていくというのはプログラムとして 違和感はあるのですがそれしかないのかなと思ったりも。 必勝形も多分同様な気がします。 追記ですがこの前応募してもらった11月分のAIですが あれで決定でもいいのですが、多分最優秀AI+対人初級ということで 公開するとなるとダウンロードされることになると思うのですが もうちょっと手を入れたバージョンにしますか? 「待った」のところとかもありましたのでダウンロードするに当たって もうちょっと改善したところで公表にしてという事であれば 全然待ちますけど。多分あのままダウンロードすると 「待った」が効かないよという書き込みとかも出ると思うので。 >>150 なるほど。レスありがとうございました。 >>151 > そのパターンを1つ1つチェックしていくというのはプログラムとして > 違和感はあるのですがそれしかないのかなと思ったりも。 確かにやりたくないことではありますね。 どうしても探索深さが限られて先読みできないので苦労することは多いです。 >>152 もう12月なんですね。 もう少し改良したいので、土日まで待っていただけるとありがたいです。 >>153 はい、のんびり待ってますので急がずゆっくりでいいですよ。 今月半ばくらいまでなら全然平気ですので 岐阜チャレンジとかに囲連星部門とか出来ないかな。 今度問い合わせてみよう ガイシュツかもしれませんが、一応つっこんでおきます 以下はirensei-aii.zipのaiapiフォルダのgame.cppの一部ですが、 Game::Game() : rule( *MakeDefaultIrenseiRuleDescriptionVer100(static_cast<void*>(&IRENSEI_RULE_DESCRIPTION())) ) {board = new Board; //注1 Reset();} Game::Game( const Game & other ): rule( other.rule ), nextOrder( other.nextOrder ), board( other.board ), //注2 cntNuki( other.cntNuki ), moves( other.moves ){} これはまずいんじゃないでしょうか? (注1)newしたものをdeleteしていない。 Javaとかと違って、newで確保した変数は自動的には破棄されなかったと 思います。メモリリークの原因になるので、 デストラクタとかでdelete boardした方がいいと思います。 (注2)ポインタをコピーしている このままだとGame hoge1 = new Game(hoge2); としたときにhoge1.board == hoge2.boardになってしまいます。 これは多分意図した仕様ではないと思うので、 board = new Board; *board = *(other.board) とした方がいい気がします。 以上、通りすがりのお節介でした。 ガイシュツだったらごめんなさい おっと間違い Game::rule() の中で、すでにnew Boardしているので、 コピーコンストラクタの中で再びnew Boardはしなくていいですね ご指摘ありがとうございます。 自分だと完全には理解出来てないので 今度バージョンアップする時に見てもらうようにします。 そういえば前もそんな指摘があったのでそれもまとめて修正しよう それと今日20時iGoにて対局です。奮ってご参加を 昨日はお疲れさまでした。 今度参加する機会があったら一勝はしたいです。 さて、昨日話した今までに見つけたバグですが mainform.cppのListPlayerTypes()の中の HMODULE hmod = LoadLibrary( itor->c_str() ); if ( hmod && MakeIrenseiAiDesc( &player, hmod ) ) { playerTypes.push_back( player ); aiModules.push_back( hmod ); } この部分。 LoadLibrary()が成功(hmod != NULL)して、必須関数がDLL中にない(MakeIrenseiAiDesc()が0を返す)場合に、 FreeLibrary()で解放すべきですが、呼び出していません。 もう一つ。 DLLの検索パスがカレントディレクトリになっているので、 プログラム実行中にカレントディレクトリが変更されると「新規対局」でAIがリストアップされません。 検索パスは実行ファイルのパスで行うべきだと思います。 以上、小さなバグですが報告しておきます。 >>159 昨日はお疲れ様でした。 多分いつか1勝を挙げる日が来ますよ・・・きっと。 というより序盤を研究してる人とかはいなそうなので 逆に勝てるかもしれないですね。 バグの件了解しました。 もし可能でしたらバグを何かにまとめておいて いつかメールで送ってもらえますでしょうか? 今度本体を作り直すときにまとめてやってもらうので。 >>160 > バグの件了解しました。 > もし可能でしたらバグを何かにまとめておいて > いつかメールで送ってもらえますでしょうか? 了解です。 新しいAI試してみました。 もしかしたらこれで必勝形さえ取り込めれば初心者では なかなか勝てないレベルになるのかも。 気付いた点を上げておきますと @コンピュータ同士で対戦させると中盤は考慮時間が長くなるのだが後半はまた一気に 早くなる。 A7連の防御に関しては既存のAIの方が良い点がある B斜めが多用されているが、縦横の方が強そう C既にほぼ自分のエリアの場所に石を打って5とかを作りに行く D自分が石を取れる状態と相手が取れる状態が重なった時に逃げてしまう 参考までにここから先行ダウンロードできます。解凍してirensei.exeと同じフォルダにコピーしてね ttp://irensei.com/program/ai-lv1.zip 皆さんのご意見もどしどし待ってます。 ちょっと詳細に解説しますと Aについては組込のAIだと ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼☆┼┼┼┼┼○●┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┨ と打つと ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼○★┼┼┼┼○●┼┼┼┼┼┼┨ ┠┼┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┨ このように止めてきます。 多分必勝形を認識してるのでなく 打たれた白と他の白との間で7連が出来る可能性があって なおかつその間に黒が無い場合には止めるとかって感じではないのかと 思っているのですがこれはこれで優れている防御法だと思いますので 参考までに。 ※ただ不思議なことに既存のAIだとその★を取りに行こうとした場合に 黒が逃げに行かないと言う欠点があるのでなんですが。 その点は今回のAIはアタリは逃げるので良いです。 ちなみに今回のAIだと☆に打った場合、黒はほぼ自分の攻めの手を打ってます。 あとCですが ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○┼○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ などのばあい ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○☆○┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ と打ってしまうことが多いので ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○┼○☆┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ と打ったほうが良いのではないかと思います。 ただ打ってないけどほぼ自分のエリアというのを 判別が難しいと言われてたのでそのあたりの問題だと思いますが 最後にDですが ┠┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○●○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼●○●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼●○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼●●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ 上のシチュエーションで白が打つ場合 黒の一子を取れば問題ないのですが ┠┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○●○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼●○●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼●○○☆┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼●●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ と打って逃げることが多いです。 多分優先順位がアタリから逃げるほうが石を取るより 優先されてるのだと思いますが石を取ることでアタリから逃げれる場合は その方がいい手だと思います。 細かい点ですが打っていると「うん?」と思ってしまう個所なので。 色々すいませんが参考にしてもらえると嬉しいです。 自分のとこではDは石を取った。 どういう分岐なのかは知らんが取ることもあるみたいだよ 確かにこっちでも石取りに行ってました。すいません。 取らない時と取る時はなにか違いがあるのかな・・・。 >>162-167 @ 通常三手読みですが思考時間が10秒を超えた次の手から二手読みに切り替えるのが原因です。 予定では、10秒まで思考し、超えた場合は探索を打ち切る方式に変更するつもりです。 (実際は最長思考秒数をユーザが変更できるようにする予定) A 今のところ間に空きのある連候補は考慮していません。 これについては必勝形の判定を含めて策を練っているところです。 B アタリ関連の処理(特に石を取る方)が影響してそうです。 この辺はパラメータ調整のバランスが難しいかも。 C 実装するのはもう少し先になりそうです。 D >>165 の状況なら通常は石を取りに行くと思います。 取りに行かないときは他に何か(AIにとって)優先すべき事項があったのだと思います。 あと「特定条件下で五や六を止めにいかない」という致命的なバグがあります。 このバグと@に関してはすぐに実装できると思います。 A〜Cを解決するのはもう少し先、というか今月の目標といったところになると思います。 空いた時間でOKですけどね。 ただ出来ればLv1状態でのソースを取っておいてもらいたいです。 Lv1を公開したのでそれに何かあったときにその場合のソースがなくなってると 困るので。 あと必勝形とか打てない場所を相手のエリアと判断する。についてですが 囲碁の形勢の計算をする処理が参考になるかもしれません。 囲碁のソフトで現在の状況を判断するボタンとかがあるのですが それを押すと既に死んでいる石や地になっているエリアなどを計算して 現在の形勢を判断するのですが、その処理のルーチンが分かれば 同様に既に打てないエリアや逆に自分が打つ必要の無いエリアを判断できるのでは と思ったりします。 あくまで参考までですが ちなみにAに関してですが 組込のAIでは単に敵の石の間に自分の石が無い場合は危険と判断して 敵の石の端が5以内なら両端を止めに、逆に敵の石の端が6,7なら その敵石の間に自石を打って防御となってるだけみたいです。 ただそれでもかなり防御としては効果ありそうです。 >>170 ソースについては了解です。 >>171-172 情報ありがとうございます。 >>赤桐さんへ もし可能でしたら最終着手表示の画像の変更とかって簡単かみてもらえますか? 現在だと青の縁取りみたいになるのですが KGSみたいな○に小さな□が入るやつの方が見た目がいいかなと。 アタリ表示とかは今のままでもカッコイイのですが最終着手と七連の★の 画像とかがなんか個人的にはイマイチな気が。 >>175 DDSフォーマットの画像ファイルさえ用意していただければできるかと思います DDSフォーマットの画像があればそれを上書きして リコンパイルすればOKなんだろうか・・・。 でもソースのイメージフォルダにその画像のbmpないね。 bmpからDDSに変換するツールは見つけたんですけどね。 まぁこれは別に急がないからいいか・・・。 ところでirensei-allのフォルダの下にあるフォルダとかファイルって どこまでがコンパイルの対象なんですかね? online_helpとかsampleaiのフォルダはゲームの配布のところにも入ってるから コンパイルの対象にはなってない感じですけどね 他のは全部コンパイルされてexeに組み込まれてるんですかね。 >>177-178 DDSフォーマットの画像を mkstoneimg.bat を実行してCのソースに変換してからコンパイルするようです。 コンパイル対象はsounds, aiapiですかね。 imagesはたぶん対象外です。 imagesのBMP画像はmainform.dfmあたりに取り込まれている感じがします。 ところで、Lv1のAIをコピーしてexeの起動後に新規対局画面を 表示したところでメニューバーにAI paramsが出るのは何が原因かわかりますか? 本体の方なのかAIの方なのか見当つかなかったので >>180 デバッグ用の関数をエクスポートしているせいかな。 リリース版では表示されない方が良さそうですね。今度直しておきます。 囲連星本体のバグを修正しました。 画像の差し替えはどうしますか? 今回は見送るということであれば、本体とソースをメールで送ります。 >>181 ありがとうございました。 画像はいつでもいいので今回は見送りで大丈夫です。 そうですねリリース版ではAI paramsはでない方がいいですね。 デバッグ用の関数をエクスポートすると出るって言うのは ある意味理にかなってるといえばかなってるのかも。 では本体送っていただいてAI paramsの問題が直ったところで Ver1.01ってことで差し替えるようにします。 差し替えると言っても今Vectorでダウンロードするようにしているので Vectorに送らないと差し変わらないんですけどね。 本当に色々ありがとうございます。 AI作ってる人が増えればどんどんつよくなりそうなんだけどね >>183 人が増えるのが一番難しそうだ。 やはりプログラムそれもAIを作るってのは特殊技術だからな こういうのを開発する環境がタダで手に入る時代になったんだな C++環境が無料って とりあえずたまにはここでの情報のやりとりもありかなと思って書き込みます mkrさんたまぁ〜に見れたら見てください。 ぽかぼっととちょっと対局してみて気になった点。 ・ぼっとと2人の時に退室すると部屋も閉じる(ぼっと一人きりの時は無い) ・置き碁に対応できる?それとも拒否? 先日相互リンクを貼って頂いた管理人さんからAI強いですねという感想をもらいました。 その管理人さんもプログラマさんなのでAI強いですねが単にプレイヤーとしてなのか AI開発目線なのかはわからないですが結構嬉しかったですね。 意外と囲碁知らない初めての人に対してはLv1のAIはそこそこ頑張ると見た。 俺のセフレはこのゲームに少しだけ嵌ってた。 どうやらこのレベルの強さと五分五分で勝負してた。 なんかこういうゲームに慣れてない人は逆に楽しみが多いんだなと思ったよ。 囲碁とかもそうなんだろうね。俺はある程度のソフトで楽しめるけど 強い奴は売ってる最強のソフトでも弱すぎて楽しめなさそう。 将棋だと強いんだっけ今?オセロはソフトの方が最強らしいし。 このゲームは、石を取られるのが一番致命的だな。 囲碁も石を取られると不利になるので、石を取られない方法が研究されているので、囲碁を参考にすれば強くなるかと。 突然すいませんでしたm(_ _)m 補足すると攻撃側としては石を取ってその地点を基盤にして 攻撃するのが効果的。 ただ今のLv1もそれほど簡単には石は取られないけど かと言って強いってほどでもない。他にも何か要素があるんだろう 折角AI追加できるんだし誰か強いの作ってくれないかな 本気で勝てなかったらかなりやりこみそうなんだが GNU囲連星とかあれば強そうなんだが。 無理かなー。 サンプルのやつのmakefileを実行すると エラー E2209 airandom.cpp 2: インクルードファイル 'irensei_rule_description.h'をオープンできない エラー E2209 airandom.cpp 3: インクルードファイル 'irensei_ai_descripter.h' をオープンできない こんなエラーが出る。サンプルすらコンパイルできない俺って・・・ 誰か詳しい人教えて。 >>198 インクルードを知らない訳ではあるまいな? サンプルのmakefileにはちゃんとインクルードパスを指定するオプションがついてるようだが。 サンプルのフォルダを移動したとか? >>199 >>200 ありがとう。出来た。 ただしAIの中身が作れそうにないw 何手先を読む場合でも本体格納のAIみたいに評価関数を使うのだろうか もうちょっと必勝形の判定や5,6の連打による詰み、パターンマッチとか みんなが必ずつかうものを標準ライブラリとして公開すると、 参入障壁が下がってAIのレベルが上がるはず。 このスレで囲連星標準ライブラリの仕様を議論しないか。 必勝形の判定だけでも出来ると相当強くなるに違いない 攻守共に 縦横に3以上がある場合に必勝形を作りに行くってロジックはどうだろうか? ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼@┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼★★★┼┼┼┼┼┼┼┼┨ このように白に3が存在して@に既に白があった場合(★の位置に黒が無かった場合などは 続き ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼○○○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼@┼┼┼☆☆┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼★★★┼┼┼┼┼┼┼┼┨ その場合☆のどちらかに打てば必至の状態になります。 もちろんかなりの確率で黒が今白の打たなかったほうの☆の位置に 打って防御するとは思いますがとりあえず攻撃を続けていったほうが 有利だと思うので3以上の連がある場合にこのようにするロジックだと強そうです。 もちろんそれまでに出来るだけ3とか4を作りにいくロジックにしておくべきかも (止められるのを承知でも) だれかC++でテンプレートを駆使して汎用性の高くて性能の良いα-β法のアルゴリズム書いてくれんか? それだけでもだいぶみんな助かると思うんだが。 αβは誰が書いても同じだと思うが。 ttp://ja.wikipedia.org/wiki/%CE%91-%CE%B2%E6%B3%95 なかなかAIって難しいよな。 俺普通のビジネスアプリケーション作ってるSEだけど AIのプログラムなんてイメージがわかないよ。 >>210 まずはminmaxとかαβをググルべし。 AIの基本。 本当の初心者なら今のAIのレベルでも楽しめるんだろうが ちょっとしたら余程の人でないかぎりは楽勝になってしまうのが痛いと言えば痛いかも。 せめて人によっては一番強いAIには勝てないとかなら面白いんだが 関数型言語はAIに向いてるらしい。 関数型言語使いに興味を持ってもらえるように ハスケルとかでAI製作できるようにしたらあるいはいいものできるかも? でも関数型言語使いってマイナーそうだし、あんま意味無いかな。 C++あまりよく分かってないけど試しにAI作ってみました。 是非感想お願いします。 http://gamdev.org/up/img/9771.zip >>214 すげぇ、なんか人間っぽい打ち方するw。 つか、一手目を1の1にうつとバグるんだが。 それでも強いけど。 >>217 正確には後手が人間の場合の初手に01-01でバグるね >>214 AIありがとうございました。 問題なく強いのでAIコンテスト参加後にフリーソフトに組み込んでもいいですか? 一応AIコンテスト優勝時(多分優勝ですけどw)には賞金も出ますので 是非宜しくお願いします。 ちなみに前回賞金獲得プログラムが現在のソフトのLv1で組み込まれている AIです。 一応URLです http://irensei.com/html/ai.html 正直ここまでのAIが出てくるとはちょっと驚きの感じではありますね。 多分初心者が勝てるようになるまでにそれなりに時間がかかりそうなくらい 強いですね。 AIコンテストなどで質問ありましたらHPから協会宛にメールを 送ってください。 http://irensei.com/html/kyokai.html ちなみに自分でも最近AIのプログラミングをしていたのですが まだ「おっ、打った」「6なのになぜ止めない?」とか そんなレベルだったのである意味自分自身でのAI開発の 引退のきっかけになりそうなAIでした。 多分自分の開発でこれを超えるには年単位の時間がかかりそうなので。 みなさん感想ありがとうございます。 まずは修正版AIを。 http://gamdev.org/up/img/9774.zip 修正前のAIは削除パスを思い出し次第削除します。 修正点 ・人間が先手の時1手目3手目を1・2線に、 人間が後手の時に2手目を1・2線に打つとバグるのを修正。 ・クラスをソートする方法をなんとなく覚えたのでαβ法に組み込む。 (これで少し思考時間が短くなるはず……) >>219 まだβ版ですがそれでもよろしければ フリーソフトに組み込んで貰っても構わないです。 人間相手にはまだまだ弱いと思っていたので予想以上の評価に驚いています。 それでもまだまだ問題点があるので少しずつ改良していこうと考えています。 他にも意見・感想・バグ報告等ありましたらどんどんお願いします。 >>222 ありがとうございます。 組み込む場合に1つお願いなのですが ファイル名はこちらで変更するので問題ないのですが 新規対局の時に表示されるAIの名称を統一しないといけないので 今「Z_beta・・・」となっているところを他のAIと同様に 「コンピュータ Lv.2」として貰えると助かります。 お手数ですが宜しくお願いできますでしょうか。 ちなみに強さでの改良の余地ってまだ残ってますか? もし短期間でさらに強くなりそうな場合でも出来れば 今のAIの強さくらいをLv2にしたいので一旦ある程度の修正版を 頂けると組み込むのにありがたいです。 あと個人的な感想としては必勝形を次々繰り出すところが強いです。 必勝形の5みたいなのの片方を止めてもさらに隣りの筋でまた必勝形みたいのが いいですね。 ちなみに開発者さん本人は自分の開発したAIには勝てますか? もし楽勝でしたらプレイヤーとしてもそれなりに強いレベルですね。 >今「Z_beta・・・」となっているところを他のAIと同様に >「コンピュータ Lv.2」として貰えると助かります。 >お手数ですが宜しくお願いできますでしょうか。 了解です。 ですが、まだバグが残ってるかもしれないので 2週間様子を見て問題がなければ 名称変更をしたものをUPするという形でよろしいでしょうか? >ちなみに強さでの改良の余地ってまだ残ってますか? 死活に弱い、守りが弱い、時々意味不明な手を打つ 黒の長連対策をしていない、シチョウ対策をしていない、 評価関数のパラメータがいい加減でまともに調整していない、などなど。 >ちなみに開発者さん本人は自分の開発したAIには勝てますか? 9割以上は勝てます。弱点が分かってれば勝つのは結構簡単ですよ。 これは強いね。 ぼーっと打ってると結構負ける。 黒の初手を真ん中に打つようにするだけで、もっと強くなりそう。 2週間の件了解しました。 ただ現名人が226で書いてるように今の段階でそれなりに強いので とりあえず現段階の強さのバグ取り+様子見で名称変更してUPしてもらえますでしょうか? そういう意味では一応2週間と考えておきますがもし雑用係さんが 1週間位で「これくらいでもうバグはないかな」と思ったらUPして貰えると 嬉しいです。 死活、守り、意味不明・・・などの改良は現段階のAIでなくLv.3用として 別AIで改良して貰えるとありがたいです。 ※要するにLv.0,Lv.1とLv.2の強さのバランスを調整したいので Lv.0<<<Lv.1<<<<<<<<<<Lv.2 となるのを防ぐための目的だと思ってください。 色々勝手なことを言ってすいませんがご検討お願いします。 >>226 打ってるとわかるのが序盤からどんどんAIの得意な勝ちパターンを作りにいくから ぼーっと打ってると5,6手目くらいでAIがリーチかけてくるからねぇ。 序盤からちゃんと打たないと防戦一方になっちゃうね。 >雑用係さん もし良かったらプレイヤーとしても大会とか名人戦予選とか出てみてください。 それほど人数はいないですが長く打ってる人も多いので意外と優勝とかは 難しいと思いますよ。 コンピュータの7が確実になると人間の手と関係なく淡々と7をつくりにいくような気もしなくもない 人間の方が7が近い時は防御にいくと良いかも 負けが確定した段階でも考慮時間をかけるね。 勝ちが確定してても時間かける。 慎重なAIだなw 必勝形を理解してるような打ち方をするときもあるし、 理解して無いような打ち方をするときもあるな。 AIが白番。 (;SZ[19] ;B[jj];W[jk];B[ij];W[kj];B[gj];W[kl];B[ej];W[li] ;B[fk];W[kh];B[dj];W[kg];B[hj];W[cj];B[fj]) これが完璧に判断できるようになったらマジでやっても勝てなくなるかも。 あんまりコンピュータに強くなってほしくない俺がいるw >>231 229の意見と似てるのかもしれないけど コンピュータは自分の必勝形を相手の必勝形の防御より優先するってことなのかも。 で、その結果両方とも必勝にはなるんだけど7連までの手数が短い方が 結果的に勝ちになるけどそれを考慮して自分の必勝形の完成と 相手の必勝形の防御を判断した方がってことかもしれない。 確かにこれよりあっさり強くなると賞金の出費もw とりあえずテスト版は中級くらいってことで上級からは実際に トーナメントとか名人戦予選にAIを参加させてみようかなと。 そこで良い成績を上げるようならこれはまぁ上級だと認めざるをw さらに名人位についた日には名人レベルの賞金を潔く支払いますw ただAIって学習はしないから(するAIも作れるのかもしれないけどそれは置いといて) 雑用係さんが言うように弱点を見つけて対策を練ったら さすがに対人だときついのかなぁと思ったりしますね。 リリース後すぐの対局や圧倒的な力の差がある時以外はやはり人間有利なのかなと。 まぁこれは実際にやってみればわかるのでその時が来たら考えましょう。 コンピュータが名人になったりして 五目とかは今の段階で人間よりコンピュータが強いの? はじめまして。 新しく追加されたAIをDLして遊んでみたんですけど いきなり石を挟んできますね〜 コンピュータの手番の時、右下の履歴表示をクリックすると タイトルバーに「応答なし」がでてきます これは長考ゆえのバグなのでしょうか? osはWindowsXPです (;SZ[19] ;B[nk];W[lk];B[mj];W[lj];B[ni];W[li];B[ll];W[ml] ;B[mk];W[nl];B[mh];W[mi];B[oj];W[ok];B[pk];W[nj] ;B[ol]) comが黒でこうなるパターン多し。 ていうか人間が手を変えないと必ずこうなる。 黒15は継いでくれないと困るなあ。 すみません、雑用係です。ちょっといろいろありまして……。 http://gamdev.org/up/img/9823.zip AIの名前変更バージョンです。 名前以外はほとんどスピードアップの為の変更しかしていないので強くなっていないです。 AIについて一言二言 ・必勝形は理解してません。というより必勝形の概念すらありません。 ただ長い連を作ったほうがポイントが高いと判断してるだけです。 ・石が取られるかの判断がおかしいのはパラメータがデタラメな点が大きいです。 >>237 でいうと 3子が取られると-15000点(=-5000x3)なのに対し 連を伸ばす手は35640点になるので3子を見捨てます。 (もちろん今バージョンでは修正してません) 小さなバグ発見 右下の棋譜リストで 普段は1,2,3…と表示されているが 待ったをすると0,1,2…と表示される。 AIを追加するついでに修正してもらえるといいかも。 雑用係さんありがとうございました。 名前の変更だけして頂けただけでたすかります。 もしかしたら一子とられるのを一律で-5000点という判断だと 厳しいかも。と言っても具体的にどの石がポイントが高いかと聞かれても 漠然としかこたえられないですが。 あとバグですがすでにフリーソフト状態なので致命的なバグ以外は 誰かが直してくれるまで放置状態なんですよね。 ただまたどこかでソースに手を加える時にはお願いしておきます。 気づいて頂きありがとうございました。 >>雑用係さん 今動かしてみたらMSVCP80.dllのDLLがないって出てくるみたいです。 一応DLLをDLして入れたら動きましたけど 多分入れなくても動くはずなので前の時のようにDLLのインストールなしで 動くバージョンにして頂けるとありがたいです。 多分DLL作成時のオプションの問題だと思いますので。 正確にはVC++のランタイムを入れたら動くようになりました。 それにしても速度速くなりましたね。長考もあんまりしなくなった。 名人もこのAIはレベルが違うと絶賛でした。 うちもランタイムいれたよ。もとからVC入ってれば動くんだろけど。OSが2000だからかな。XPでもだめ? いっぺんにn子取られるのは一子取られるののn倍の痛さじゃないよね。 場所もありますよね 痛くない一子もあればとてつもなく痛い一子もある とられた一子の縦横が止められてて七が作れない場合は 痛さも軽減 またまたすみません。 これで大丈夫だと思います。 http://gamdev.org/up/img/9829.zip >>239 のファイルは削除しました。 雑用係さんありがとうございます。 正常に作動しました。 これで特に大きな問題が出ないようでしたら AIコンテスト参加可能です。 と言っても既にそれなりに打っているので ほとんど対人中級レベルになると思います。 賞金の支払の問題もあるので参加意思のある場合は メールでお願いします。 賞金振込みの場合は銀行の口座情報も必要なので ここに書き込むのは問題あると思うのでメールで。 >>246 ┏┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┯┓ ┠┼┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼●┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼○●●○●●○┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼★┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼○┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼+┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼●●○●●┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼★┼┼┼┼┼┼┼┼┨ ┠┼┼+┼┼┼┼┼●┼┼┼┼┼+┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┗┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┷┛ 上と下では白が一子抜かれても影響がかなり違うということですね。 (1.2線のルールはここでは省略) ただこれを評価するとなるとやはり大変そうかも やたらと斜めに打ってくる もしかして一番効率的なのか? 雑用係さんからメール来ないな。 AIコンテスト出ないのかな。 新しいAI開発者さん(とりあえずYさんとしときます。)からAIが送られてきましたので 公式HPに追加AIとして公開します。 http://irensei.com/ モンテカルロ法で開発されたらしく考慮時間を長く設定すればするほど 手は良くなるらしいです。 Yさんもプログラムのヒントを求めてらっしゃる様ですので ご意見ご感想書き込んで下さい。 残念ながらあんまり強く無いなぁ。 ルール+モンテカルロ法だけでプログラムしてるかの様な印象を受ける。 もうちょっと他の評価方法も使いつつのモンテカルロ法じゃないと無理なんじゃない? 違ったらごめんなさい。 うん、5とか6とかあんまり止めてくれない。 7連近くは詰め将棋ルーチンのように別にした方がいいんだろうね。 5秒だとどれくらいの試行数になってるのかなあ? 純モンテカルロだと相当数まわさないと強くならないよねえ。 もう一個のuctの方はなんだろ? 碁を打ってるかのような打ち方だったけど。 ぱっと検索したところ、モンテカルロに重み付けをいれたような感じらしいけど、 そんな打ち方にはみえないなあ。 Yさん曰く「3分くらい時間をかければ良い手を打ちます」だそうです。 なのでまだ現段階では5秒とかで良い手を打つというのは無理そうです。 以前モンテカルロで作ってくれた方も一手打つのに1日かかると 言っていたのでまぁ色んな意味でテスト段階なんだと思いますね。 あとuctは改良版でメモリを多く使うAIらしいです。 とりあえず自分のPCでは両方とも落ちるとかはなかったですが。 なんか盤面全部が着手候補になっちゃってるよね。 すでにおいてある石の近くだけに候補を絞るだけでもかなり強くなりそう。 モンテカルロ法でAIを作ったのYです。意見を下さった方ありがとうございます。 改良してみたので、よろしければ試してみてください。 http://www.uploda.net/cgi/uploader1/index.php?file_id=0000241874.zip 東陶基さん、前回メルセンヌ・ツイスタのLICENSE.txtを添付するの忘れてました。 今回アップロードしたファイルに入れたので追加していただけませんか。 Yさんありがとうございます。 ライセンスの件了解しました。 あと「待った」が機能してないようですので お時間があるときで結構ですので対応してもらえますか。 258は東陶基です。専用ブラウザが名前を保持してくれないので たまに書き忘れます。多分設定の問題なのでしょうけど。 >>260 プログラムは趣味でやってるだけです。 メルセンヌ・ツイスタは乱数の生成が高速で、質が良いらしいので使ってみました。 >>東陶基さん 「待った」機能をつけてみました。 自分で試した限りではうまく動いたのでアップロードしておきました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000017780.zip まるで人間と打ってるみたいだ。 ところでうちのPC、デュアルコアCPUなんだけど、 もしできたらマルチコアに対応していただけ無いでしょうか。 倍速で脅威の強さを体感してみたい。 やべぇ、素で負けるw スパコン使えば名人に勝つんじゃないか? これは凄い。 ものすごく手が自然に見える。 uctについて調べたけど結局よく分からなかったので あまりいい意見は言えないけど問題点を報告。 ・同AIで対決すると手が変になる。 ・1・2線に打たないのでそれが弱点になっている。 黒:人間 白:ai-uct (;SZ[19] ;B[cj];W[di];B[ci];W[eh];B[cl];W[fg];B[cn];W[ck] ;B[dk];W[gh];B[cm];W[hg];B[ch];W[hi];B[bk];W[dn] ;B[ck]) >>251 いまのところはAIコンテストには参加しないつもりです。 状況が変われば新AIで参加するかもしれませんが…。 だいぶカッコいい負け方したw (;SZ[19] ;B[ii];W[jj];B[hh];W[jh];B[ji];W[ki];B[kh];W[kg] ;B[lh];W[ig];B[kj];W[li];B[ih];W[jg];B[hg];W[jk] ;B[lj];W[mi];B[gf];W[lk];B[mj];W[nj];B[mk];W[nk] ;B[ll];W[ml];B[fe];W[ed];B[kk];W[kl];B[lk]) >>263 マルチコアに対応するっていうと、OpenMPとか使わないといけないんですかね? 探索部分をマルチスレッドにするだけならそんなに難しくないと思うのですが… 全くその方面の知識がないので、余力があるときに勉強して 対応できるようならしてみたいと思います。 >>雑用係さん 同AIの対決の問題と1・2線の問題は次回公開するときには修正しておきます。 囲連星では1・2線は無視しても大丈夫かなと思っていたのですが 考えが甘かったですね。 報告ありがとうございます。 昨日から出かけていたら出遅れてしまった。 まだ5秒で1局しかしてないので強さはまだ不明ですが この盛り上がりをみたら期待していいのかな。 Yさん、雑用係さんありがとうございました。 ではAIコンテストはYさんか雑用係さんのどちらかが 「これで参加します」という一区切り自信があるAIが出来た段階で 開催するようにしますので宜しくお願いします。 >>267 マルチコアの対応とかは一旦区切りがついた後でOKですよ。 多分AIの強化とそういう対応を同時にやると問題があると思うので。 ちなみにAIの名人戦参加も可能ですので雑用係さんとYさんは もし希望であればご参加ください。 対人上級レベルや名人レベルは実際の大会で使用してチェックしようと思うので。 東陶基さん、わかりました。 今考えている改良点をすべて実装して問題が無さそうだったら AIコンテストに参加させて頂くかもしれません。 少し修正したのでアップロードしました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000017911.zip ・1,2線も考慮するように修正 ・同AIでの対戦時の問題を修正 ・特定の状況で発生する「待った」機能のバグを修正 Yさん修正ありがとうございます。 AIコンテストに参加するAIは今のような感じでも可なのですが もしその後フリーソフトに組み込むようになった場合に 少しお願いがあります。 要するに考慮時間の事になるのですが出来るだけ短くなるでしょうか? もちろん時間をかけるところはかかってもいいのですが 今の様にどの手も必ず20秒だと厳しいです。 出来れば平均10秒くらいが望ましいですね。 平均というのは初手とかほぼ確実に決まってる手なのではすぐに打って 長考が必要な時には20秒くらい考える時があるみたいなのがいいです。 モンテカルロ(?)だとどうしても時間内で出来るだけ検索するというのが 基本になるとは思うのですがそこをなんとか工夫が出来ればと。 あとそれも絡むとは思うのですが考えてる間、固まるというか応答なし状態に なるのって回避方法あります?多分雑用係さんのLv2でも手を考えてる時は 同じだと思うのですが時間の短さからかあんまり気にならないような。 勝手なことを言ってすいませんが出来れば作ってもらったAIを 沢山の人にプレイしてもらえればと思うので出来る限りフリーソフトに組み込みたいと 思ってますのでもし可能でしたら考えてみてください。 今書き込みながら何回か打っているのですが 固まるのは別に今のままでいいかなと思いました。 上の書き込みのその点に関しては無視して結構です、すいません。 他のアプリが動いてて考慮時間中に色々やってたら気になる気がしたけど そんな使い方普通はしないと思うのでその点はいいかな。 あと時間に関してもAIが先手の時の初手だけかも気になるのは。 AIが初手で20秒待たされたらなんかバグかなと思ってしまう感じがあるので。 個人的には対局してみて思うのは 序盤は時間は5秒(ほんの最初の数手だけ)、中盤は10秒、終盤は20秒とかだと なんかいいのかなと。 読みの打ちきりを時間で区切ってるとさ、どのマシンでやるかによって強さ違ってくるよね。 コンテストに参加するとなると、その辺はどうなるんだろ? 他のAIがどう打ち切ってるのかしらないけど。 最後に対人上級者レベルからの認定は実際に名人戦予選などに参加するのが 前提になるので持ち時間などはその対局で時間切れにならないように考えといてください。 具体的に言うと普通は持ち時間3分+1手20秒です。 実際に自分が打ちながら対局することになるので1手あたり1秒くらいは ロスがあると思ってください。 多分1手平均20秒くらいであれば時間切れになる事は無いと思います。 1局の手数が先手後手で200手を越えることはまずないので 最大でもAI側は100手までだと思います。 色々要望ばかり書いてすいませんが AI開発者さんには大変感謝してますので今後ともよろしくお願いします。 序盤は定石データベースを持った方がいいよね。 対局毎にモンテカルロを回すのは無駄だから。 一度ガーッと回して定石データを作っておくといいんじゃないかな。 人の対局から取ってきてもいいけど。 あとこれはどのAIもだけど、一手目は天元固定でいいんじゃない? >>274 確かにそれはありますね。 Yさんので5秒でも負けるって書いてた人がいるのですが 自分は5秒なら比較的まだ余裕あります。 ってことは「自分のPCってそんなにショボイのか?」と思ったりしますがw それに関してはもし時間があれば対局場の方で自信のあるPCを持ってる人などで AIを使って対戦してもらってどんだけ違いがあるのかをチェックしてみようかなと 思ってます。 あとYさんのはAIが結構考えるので逆に自分も色々その間考えるので それなりに自分も考えて打ってるから余裕があるのかも。 逆に雑用係さんのはすぐに打つからこっちもあんまり考えずに打ってるので 結構AIにすぐ負ける。 >>276 データを持つ場合にDLLのサイズとかどうなりそうですかね? もしデータも持つ場合にフリーソフトに組み込む場合はちょっとどうなのかなと。 なんとなくフリーソフト組み込みと最強AIを突き詰めるのは別物と考えた方が いい気がしてきたなぁ。 初手天元固定はどうかと思うので天元を含めた中央の 3×3のマス内にランダムとかがいいような。 う〜ん、でもやっぱりうちのPCがショボイのかも 雑用係さんのLv2とYさんのAI(考慮時間5秒)対戦するとLv2の方が勝つんですよね。 nagataさんとかも「今度のAI強いですね」って言ってたので もしかしたら他の人のPCではかなり強いのかもw ちなみにLv2とYさんのAIの対戦でYさんのが勝つ人がいたら 状況を書き込んでくれないかな。 例) CPU ・・・Mhz メモリ 1G 考慮時間 20秒でYさんのが勝ちます みたいな感じで ちなみに自分の場合は CPU Athlon 2500+ Mem 512MB(デュアルなんとか) 考慮時間 5秒 だとまだ雑用係さんの方が勝ちます。 今から30秒でやってみます。 まず思考中に囲連星が固まってしまう問題ですが、これは囲連星本体の方を 変更しないと難しいんじゃないかと思います。 メニューバーの AI Params -> Show Log Windowで表示されるウインドウに AIが単位時間に行ったシミュレーション回数を表示しているので、 その値を比較すればどのくらいの強さを発揮しているかわかると思います。 (単位時間のシミュレーション回数 * 思考時間)を等しくすれば 他の人が打ってるAIと同等の強さのAIと対戦出来るだろうと思います。 大会での持ち時間については了解しました。 思考時間の調整についても考えて見ます。 定石データベースですか、確かに序盤の同じ局面になることも多そうなので 有効そうですね、思考時間の短縮にも役立ちそうですし。検討してみます。 そうですね固まるのは仕方ないかなと思ってます。 気になるのはAI同士の対戦の時だけなので普通の人はそれほどそういう 使い方はしないはずなのでとりあえずいいかなと。 うちのPCだと4000/sec位から始まって徐々に増えていきますね。 何故増えるのかはよくわからないですが。 今さらながら思考中の時には何か表示するようにしとけばよかったですね。 砂時計とか 思考中・ → 思考中・・ → 思考中・・・ とか 本来オープンソースなのでその辺も弄ってもらってもいいのですが 今となっては公開しているソースが最新なのかどうかすら分からないので。 でもまぁ完成から1年数ヶ月で本当に強くなりましたAI。 完成時はLv0のAIしかなかったので正直DLした人から文句を言われても 何もいえない状態でしたが今のソフトでしたら比較的どこに出しても自信あります。 あとAI開発者の方で携帯アプリとかオンラインで動くやつを作りたいとか 希望がありましたらご自由に行ってもらってOKです。 囲連星の名前は自由に使ってくださいw。 卒論のテーマにしたいなども大歓迎です。 なお作った携帯アプリで商売をしたいとかも基本的にはOKですので ご自由にどうぞ。 ただDL1回5万円とか1クリックで不当請求発生とか囲連星の評判そのものに 影響するのは避けて欲しいですけど。 YさんのAIの毎秒数千シミュレーションって速いね。碁盤の更新処理が優れてるのだろうか? こういうときの1回はどこまでで1回なんだろう まずAIが打って次に人間が打ってまたAIが打つとこまでシュミレーションしたら3回? >>285 特に実行速度を意識して書いたわけではないので、おそらく誰が書いても 囲連星のシミュレーションなら同じ位の速さになるんじゃ無いかと思います。 >>286 終局までシミュレーションして1回とカウントしています。 ただし、MinMax木の探索中に終局局面まで達した場合も 一回シミュレーションしたとカウントしているので、 終局直前だとシミュレーション回数が非常に大きくなっているようです。 改良してみたので、よろしかったら試してみてください。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000018018.zip Yさんありがとうございます。 修正点の概要とかも一言書いといていただけると テストしてくれる人もそのあたりをチェックしながらテスト出来るので 便利かもしれないです。 ちなみに5秒でなんとか勝ててるけどもうそろそろ怪しくなってきたw AIと同じ時間しか考えれなかったらそろそろ負けそうな感じかもしれない。 了解です。 今回の変更点は、 ・良さそうな手を先に探索するようにした。 ・UCTの実装にミスがあったのを修正。 です。 修正したのでアップロードしました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000018092.zip ・ランダムシミュレーション部分のバグを修正 ・手を探索する順番を少し工夫した 多少ましになったと思います。 ありがとうございます。 毎日強くなってるのでちょっと驚きではありますが。 もし良ければLv2より明らかに強くなった段階とかでコンテストに参加して あとは上級レベルを目指して対人戦に参加してみてください。 ちなみに賞金はとりあえずお二人には中級レベル分のをご用意してますので いつでもどうぞw 修正したので、アップロードしました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000018110.zip 修正点 ・重複して手を探索していた問題の修正 ・相手の石を取る手を優先して探索するようにした そろそろネタ切れで、今のところ二つしか改善案がないので Lv2より強いAIが作れるかどうか… 確かにLv2はハードル高いですね。 ただ今でも黒で10秒だとYさんので勝率5割くらいなので 2つも改善案あればそれなりになるかも。 安易過ぎてすいませんが。 出来ればYさんのをとりあえずLv3にしたいので 色々試してみてください。 もうちょっと利き筋のルーチンを強化できないかな。 黒がuctです。 17手目で守らないと利き筋がありすぎてさすがに黒きつい。 一気に押し切られそう。 事前に察知して利き筋が沢山ある状況に陥らないようにできれば。 求めすぎかもしれないけど、がんばってください。 (;SZ[19] ;B[ji];W[kj];B[kh];W[li];B[lh];W[ih];B[mi];W[mj] ;B[ki];W[lj];B[jj];W[ni];B[mg];W[mh];B[lf];W[qj] ;B[ij];W[pj];B[oj];W[ok];B[oi];W[oh];B[pi];W[qi] ;B[hk];W[ph];B[gl];W[nj];B[lg];W[oj]) >>294 了解です >>295 なるほど、確かに17手目で守らないとまずいですね。 そういう局面にも対処できるように努力してみます。 ご報告ありがとうございます。 とりあえず気付いた事なのですが (B[ji];W[kh];B[ki];W[li];B[lj];W[mj];B[lh];W[mi];B[kg];W[jh] ;B[jg];W[ih];B[hh];W[ig];B[ii];W[hg];B[gg];W[gf];B[ff];W[gh] ;B[hi];W[fg];B[gi];W[fi];B[fj];W[lg];B[ei];W[fh];B[ij];W[kj] ;B[gk];W[kf];B[hl];W[im];B[ik];W[jf];B[mg];W[mh];B[hj];W[kg] ;B[gm];W[gg];B[jj];W[jg]) AIが黒です。 これで途中でもAIが勝てそうなところはありますが 31手目のG9の手がちょっと疑問ですね。 D10やK10あたりでもう決まりそうなのになぜかG9。 あんまり詰めの段階で強くなりすぎるのもあれですがとりあえず報告です。 10秒でしたので単に時間の問題だけでしたらスルーして下さい。 あと黒19手目、白20手目のところも両アタリになって基本的に不利になるので 極力その状況を作らない方がいいと思います序盤は特に。 確かに31手目ではD10等に置いた方が良さそうですね、 十分に時間をかければ大丈夫だと思いますが 短時間の思考で打てるようにしたいですね。 なるほど、両アタリの問題も何かしら対処した方が良さそうですね。 修正したので、アップロードしました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000018349.zip 修正点 ・重複して手を探索していた問題を修正 ・自分と相手が同時に6連がある場合に相手の6連を止めてしまう問題を修正 など いつもありがとうございます。 あと土曜日に試して思ったのですがAIを大会に出そうとすると 思いのほか持ち時間のロスがありました。 AIの手を見ながら確認して打っているとAIの思考時間が10秒だとしても 20秒弱一手にかかる事が判明。もちろん3分+1手20秒なので最初の3分の余裕で 時間切れになることはなかったですが。 そういう意味ではこの前も書いたようにあんまり時間かけなくても即指せる手は 即指したほうが持ち時間の節約にもなります。 可能でしたら検討してみてください。 会長がしょぼいPC使っててYさんのプログラムの評価が下がるのはよくない。 会長はCPU&メモリだけでも最新ハイスペックPCを用意すべき、 とはおもうけど、そこまで負担を強いるのも酷かな。 でも賞金にポンと20万だせるなら… それに普通の人のPCが会長くらいのPCだとすれば、 会長のPCで評価するのが妥当ともいえなくも無いし。 二局しか試していませんが今のところ自分の環境では 正常に動いているようだったので、 どういう動作をするのかちょっと確認させていただきたいのですが、 一手に20秒弱かかるというのは毎回20秒弱かかってしまうということか、 それとも一手に20秒弱かかってしまうことがあるということか、 どちらでしょうか? あと一手でどちらかに七連が出来るという時に七連を作るもしくは 相手の七連を止めるというのであれば即指すように修正することは 出来ますが、それ以上の状況だと結構大変だと思います。 自分としては、まだ今はAIの実力が十分ではないので、 AIの強化の方に力を注ぎ、即指しの方は後回しにしたいと思っています。 誤解を生んでしまってすいません。 20秒弱というのはあくまで対人相手に大会とかで確かめようと思った場合に ネット上の対局場で対局する必要がありますよね。 で、その場合にフリーソフトを起動して対人間で動かしてAIの手を確認しながら 人がその手を対局場の画面に打つ必要がありますよね。 わかりやすく言えば将棋で竜王とボナンザ(AI)が対局していましたが ボナンザを竜王が遊ぶわけではなくボナンザのはじき出した手を開発者が 実際の将棋盤に指してましたよね。 その作業のロスが結構あったって意味です。 「AI指した。」 「えっと・・・Gの8か」 「G・・・の8・・・・・ここだなポチッ」 逆に対局者が指した手もフリーソフト上で指す事になりますよね。 そのタイムロスが結構あったなと。 ですのでthinkingtimeを10と設定すればうちのPCでもフリーソフト上では 10秒で指しますw。 >Yさん そうですね。即指しの件はいつでもOKですよ。 ただ上に書いた通りthinkingtimeが10秒でギリギリだときついかなと 勝手に思っただけなので。 もしかしたら会長が不器用なだけかもしれないです。他の人なら早く打てるのかな。 逆に万が一でも打つ場所が1つずれたらまた最初からやるなり投了するなりに なるので思ったより慎重になっちゃいますね。 ちなみに賞金は近々で10万までは覚悟してます。 ただ10万って事は名人戦の予選を勝ちあがる程度の勢いなので 対局者の方々には頑張って死守してもらおうかと。 20万ってことはAIが名人かぁ・・・。時の名人に頑張ってもらおう。 ちなみに会長は昨日ガチで負けました。陥落です。 なるほど、そういうことでしたか。 確かに人を介して打つのは時間がかかりそうですね。 今のところ多少強化を試みてはいるのですが、余りうまくいっていないので 次に公開するまでには少し時間がかかりそうです。 次の大会とかからAIを参加させてみていいですか? とりあえず最新版のやつで参加してみようと思います。 もしYさんが実際に打ってみたいとか自分の所のPCのが早いから使いたいとか もしくは自分が介して打てばロスが少ないから考慮時間を節約できるとかでしたら Yさんが参加して頂いても結構です。 無理なら代わりに打っておきます。 今のAIでどれくらいまでいけるのかはわからないですが 後で結果の棋譜などもHPに載せるので何か参考になるかもしれないです。 AIと対人での棋譜はYさんが自分で打つ以外にあんまり無いと思うので。 どうぞ、自分が今まで作ったAIは自由に使って頂いてかまいませんよ。 大会で打つのは東陶基さんにお願いします。 たまに投了してしまう事があったのですが、それを修正しました。 もし大会にAIを出すときは、お手数ですがこちらを使って下さい。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000018740.zip Yさん了解しました。 もし可能ならテクノエイド杯用に珠形に対応してもらえると助かります。 と言っても一番簡単な修正で白のの時は白の初手天元というのだけを 追加してもらえるといいです。 ただあくまで珠形ありの大会用なので最新のプログラムに珠形ありの 参加時にはその関数を毎回コピペして別にコンパイルとかになるので 手間なら結構です。その場合はとりあえず黒が珠形どおりに打って その時に打ったAIの白でそのまま対局を続けるようにします。 もし可能ならthink_timeのテキストで時間を読込む時に二行目に珠形なり1なりが 書き込まれてたら珠形対応の打ち方をするとかでもいいですが そこはお任せします。Yさんが管理しやすい方で結構です。 あと白が初手を天元に打つだけでいいとうのは珠形は単に先手後手を平等に するためだけの仕組みなので今後初期配置が変わる可能性があります。 ただ白の天元は確定だと思うのでそれだけ対応して頂ければ十分かなと。 黒の方は今の1間飛び状態から斜めとか桂馬とか先手後手の均衡のために 変わるかもしれませんが白はそのままなので。 あと思うのですが(Yさん以外の方にも聞きたい) なんでこんなに早くAI強くなったんでしょうね? オセロや五目並べも今は人間より圧倒的に強いし、 チェスや将棋も互角になりつつありますが こんな一年や二年でってレベルじゃなくて10年20年かけてですよね。 そういうAI開発のノウハウが広まったからなのかなんなのかはわからないですが 囲連星はいきなりもう強くなってるなぁと。 ハードの進化も少なからず影響してるのかな。 東陶基さんのおっしゃるとおり、他のゲームのAIのノウハウが 囲連星に応用できるということだと思います。 数学的にいえば所詮どのゲームのAIもやってることはグラフの探索って事でしょうし。 特にモンテカルロ法は大きなブレークスルーだったと聞きます。 急に囲連星に強いAIが現れたからといって、囲連星の底が浅いとは思えません。 ハードの進化も当然関係あると思います。 あと、10年、20年前というとゲームのAIが研究の題材として 今ほど市民権を得てなかったんじゃないですか? 単にいままで作ってた人がしょぼかっただけじゃない? 確かにAIの開発ノウハウは応用が利くんでしょうね。 逆に囲連星は人間の上達の余地がまだかなりあるので 万が一AIに名人を奪われた場合にまた奪い返すという他のゲームでは なかなかありえない現象も起きるかもしれないなとちょっと期待してたりします。 ヽ- ,r, ミミ Y' ,、i 、ヽ. 、└ヽ l 三 { l`ヾ ゙ "! ノ リ `ヽ\ ヽ _ノ Yの意見を聞こう!! ´,. ト ヽ |'/}ヾ, } ミシ `ヽ ノ //`ヽミ:、 _,.ノ ,l::::( ( ( i _-ニ -‐ ''´ ,r ^ー' |:::::::ヽ ヽ l l i` ‐ r-- ' _,〉 |:::::::::ハ l } 、._i l ;:=ュ |:::::::i' /' / ノ ヽ.`、 l /ニ、l |::::;r'彡-' `7 ::::::::::\. ` l、__,)゙i |::'":::i、 フ ::::::/\::::`ヽ、 ` ー ' |::::::/::ヽ ´ ̄`ヽ、_....._,.--v‐-、/⌒^` 今まで出た意見とほぼ同じですが、 ・AI開発技術の蓄積 ・囲連星が他のゲームと比較して歴史が浅く十分に研究されていない ・石が近くに無いところに打つのは、おそらく悪手になる(だろうと思う)ので 囲碁や将棋に比べて探索すべき手が少ない ことが大きな要因じゃないかと思います。 珠形ありの場合、現行ルールでは黒は天元を避けて打ち、 白は最初に天元に打つということで良いでしょうか? >>315 確かに珠形ありの場合の黒の制限も書いておかないとエラーになっちゃいますね。 そのあたりはお任せします。あくまで珠形のは大会用の暫定処理なので 一応動くというレベルでいいのですが、ただ毎月使うとなると思いのほか使用頻度高いかな。 個人的には if 白の初手の時に 天元に打つ だだしその時に if 黒が既に天元に打っていたら う〜んどうしましょう。天元以外に打つ?もしくは終了させる? まぁYさんの管理しやすいように加えてみてください。 珠形の設定追加しました。 setting.txtの1行目は思考時間です。 2行目は珠形の設定で、1なら珠形ありで打ちます。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000018908.zip 珠形ありの場合 黒…初手は天元に打たない。 白…天元が空いているなら天元に打ち、そうでないときは 何事も無かったかのように続行。 というようにしました。 ありがとうございます。 AIの強化とは関係ないところでお手数掛けてすいませんでした。 この後はどうしましょう? 今後もsetting.txtで1行目が時間で2行目が珠形での管理でOKですか? とりあえず今日の大会に出してみます。一応時間は10秒でやってみようかなと 思ってます。 たいした手間じゃ無いので気にしないで下さい。 >この後はどうしましょう? というのは、setting.txtの仕様をどうするかっていうことですかね? とりあえず、今のところsetting.txtはこのままにしておくつもりです。 珠形でゲームをする人は基本的に対局場に顔を出す人だけなので ファイル名は今まで通りのthink_time.txtの方がいいのかなと思ってます。 普通に一行目には秒数が書いてあって、2行目に1と書いてあれば珠形みたいな感じで。 と言うのはHPから普通に追加AIとしてDLする人がsetting.txtというファイルが合ったときに 何行目に何が書いてあって・・・と言った説明をどこかでする必要があるなと。 それであれば大会とかに参加する人以外が使用しない珠形のモードは隠しコマンド感覚に しておいて、普通の人にとっては単にthink_timeだから秒数が書いてあるだけって方が わかりやすいかなと。 要するに仕様は今のsetting.txtのままでファイル名だけ以前のthink_time.txtのままの方が 良いのかなと思ってます。 http://irensei.com/html/korei5.html ちなみにここに昨日の対局結果が載ってます。 AIは惜しくも負けましたが棋譜などを参考にしてみて下さい。 了解しました。 とりあえず、ファイル名を元に戻したのと、 相手に六連がある時には端を押さえるようにしていたのですが 石を取る手があるかも知れないので普通に探索するように 変更しました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000019105.zip 対応ありがとうございました。 とりあえず暫く今の仕様で行ってみましょう。 確かに六や五は基本的には石を取って止めれるのならそうした方が 有利な事が多いですね。あとYさんも既に理解している事かもしれませんが 思いついた事をちょっと上げておきますね。 ・片方が止まってる五を六にすることで相手が止める石をかなり戦力外の遠い位置に持っていける ・シチョウを追う時にはその過程で七が出来やすいのでそれを考慮する必要有り ・攻撃権をもっているとき(五とか六とかが出来る時)は極力攻撃しつづけた方が良い ・ただし攻めつづけれないと判断した時はとりあえず守りに入るのが無難 ・白の場合は六を止めたらその石が取られても基本的に長連で助かる(斜め以外) などなど、どなたか他にもあったら書き込んで。 あと、石が外側に行くのが良い、というのがありますね。 囲碁的な考え方なんですが囲連星にも通じるものがあるようです。 ちょっと修正したのでアップロードしました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000019243.zip ・探索速度を2倍くらい高速化した。 ・AIが白番の時に、相手が必勝形を作るのを止めないことが多い気がしたので ちょっと修正。 ・シミュレーションの内容が少し劣化した。 アドバイスありがとうございます。 今のところ、AIに組み込む良い方法が思いつかないので、 うまくAIに組み込む方法が思いついたら実装したいと思います。 モンテカルロは人間の経験則を考慮する必要がほとんどないというのが利点だから 組み込む必要はないかもね Yさんいつもありがとうございます。 まだ実際に打ってないので>>327 さんの指摘をまだ検証できてませんが。 そもそも自分にその違いを確認出来るのかも不明ですけど、 あとでちょっとチェックしてみます。 >>326 そうですか…今のところ他にAIを強くする方法が思いつかないので、 一応少しでも強くなるか試して見たいと思います。 >>327 ちょっと検証してみたところ確かに弱くなってしまったようです。 >>325 のAIと>>322 のAIを50回ずつai-lv2と対戦させてみました。 すべてai-lv2が白です。 325のAI:27勝23敗 322のAI:33勝17敗 原因を探って改善したいと思います。 >>Yさん。 もしもAI改善が手詰まりでしたらマルチスレッド化のほうをひとつお願いできないでしょうか。 簡単に、しかも確実に効果があると思います。 宜しくお願いします。 >>329 50回の対戦ありがとうございます。 黒でそれくらいだと白持った時にはどれくらいになるんでしょうね。 人間同士の場合の対戦での白黒の差の参考になるかな。 白でも五分五分程度ですってなると先手後手の差ってそれほどでもないのかな って気もしますが明らかに白もったら負け越したとなると やはり先手かなり有利のゲームなんだなと >>325 を修正しました。 ai-uct.dllがシングルスレッドで、ai-uct-mt.dllがマルチスレッドです。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000019514.zip >>322 からの変更点 ・高速化したが、巨大なテーブルを埋め込んだらファイルの大きさが1MBこえました。 ・白番の時に少し弱いような気がしたんでちょっと修正 >>263 マルチスレッド版を作ってみました。 まだあまり試していないので強さの変化はわかりませんが… >>331 参考までに対戦記録を書いときます。 これはai-uctのシミュレーション回数を25000回に固定して 行いました。 >>322 のAIでは ai-uctが黒番の時 31勝19敗 ai-uctが白番の時 15勝35敗 今回のアップロードしたAIでは ai-uctが黒番の時 27勝23敗 ai-uctが白番の時 24勝26敗 でした。 50回だと回数が少ないかもしれませんね。 今日アクセス解析を見てみるとやたらアクセスが増えてたので スパムかと思っていたら、なんと窓の杜に掲載されてました。 http://www.forest.impress.co.jp/article/2007/09/14/irensei.html すごいですね窓の杜・・・。 >>332 いつもありがとうございます。 シュミレーション回数というのは/secでなくて純粋に25000回終わったら打つ感じですか? それだとマシンによってとか場面によって時間がバラバラになるので なんとなく良い感じはしますね。 263です。 マルチスレッド化対応ありがとうございます。 ところでai-uct vs ai-uct-mt のデータを取ってみようとしたのですが、 なぜかai-uct-mtがあるとai-uctが選択肢から消えてしまいます。 バグでしょうか? あとYさんにお聞きしたいのですが、AI vs AI のデータは 1局づつ手動でファイル→新規対局をやってるのでしょうか。 シェルか何かで50戦なり100戦なり自動でデータが取れるといいのですが… >>333 そうです。この方法ならAIの強さがマシンの性能によらないので、 思考時間を設定するよりも良いかもしれないですね。 >>334 バグです。 二つ目のai-uct〜を読み込む時に呼び出すLoadLibraryでエラーが出ているようです。 原因がわかれば対処したいと思いますが… 自動対戦の時に使っていた実行ファイルをアップロードしておきました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000019560.zip irensei_auto_game 黒番のdllファイル名 白番のdllファイル名 対局回数 というように起動して下さい。 一局終わるごとに、result.txtというファイルに結果を出力します。 この文がわかりにくかったらauto_game.batを見れば多分わかると思います。 auto_game.batは黒番:ai-uct.dll、白番:ai-lv2.dllで 50局連続対戦するように設定しています。 これを使っても、LoadLibraryで失敗してしまうので ai-uct.dllとai-uct-mt.dllでは対戦出来ませんでした。 >>自動対戦 おお、これは便利ですね。 囲連星AI開発における大きな前進ですね。 LoadLibraryですか。 全然見当違いかもしれませんが、あるDll AをLoadLibraryするときにそのDll Aがさらに 別のDll Bを必要としてるときにDll BがロードできないとDll AのLoadLibraryが失敗する ということを昔、経験したことがあります。 ここからは勝手な推測ですがai-uct.dllとai-uct-mt.dllで同じユーティリティdllを参照していて、 それがかぶっているために2つ目のLoadLibraryが失敗するとか… 私よりもYさんのほうがスキルがあるとはおもうのですが一応そんなことを思いついたので。 あ、私はあんまりDllとかLoadLibraryの知識は無いので おかしなことを言ってても聞き流してくださいね。 >>333 窓の杜はすごいね 下手な宣伝より普及効果ありそう >>335 GetLastErrorは試した? >>336 他のDLLを読み込んでいないので、おそらく原因は他のところなんじゃ ないかと思います。 >>338 はい、試しました。 エラーコードは998でした。 日本語エラーメッセージを調べたところ、 "メモリ ロケーションへのアクセスが無効です" ということらしいのですが、どこを直せばよいのかわからず放置していました。 >>335 そうですね。組み込む場合に設定ファイルが無い方がいいので (dll単体のみで組み込む方が良いので) できればその方向でお願いします。 ただ25000回だと強さとしては厳しいですか? 自分のPCが4000〜5000/secなので6秒くらい。 別に問題ないのですが今普通のPCってどれくらいなんでしょうね。 新しいのは早いんでしょうけど普通に使われているPCだとどうなんでしょうね。 逆に早いマシンだと2,3秒とかなのかな25000回は。 >>340 まだ試していないので確かなことはいえませんが、 手が進むごとに試行回数を徐々に増やしていけばそれなりに 打てるんじゃないかと思います。 そうですね。後半になるほど/secの回数が増えていくので その方がいいのかもしれませんね。 そう考えるとthink_timeのテキストとかどうしましょうかね。 オプションで試行回数を増やしたい人は増やすことも可能とかですかね。 もしくはもう完全に別にしてソフトに組み込むAIは試行回数固定で 今と同じ様に別でAI配布してそっちは昔みたいに指定可能ってのがわかりやすいのかも。 お久しぶりです。 AIの強化と投了してしまうことがあったバグの修正をしたので アップロードしました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000020358.zip 今回のAIはシミュレーション回数を五万回固定にしてみました。 参考までに、ai-lv2との対戦結果です。 前回のAIとai-lv2の対戦結果 ・ai-uctが黒番のとき 29勝21敗 (25000回) 33勝17敗 (50000回) ・ai-uctが白番のとき 15勝35敗 (25000回) 22勝28敗 (50000回) 今回のAIとai-lv2の対戦結果 ・ai-uctが黒番のとき 64勝36敗 (25000回) 40勝10敗 (50000回) ・ai-uctが白番のとき 57勝43敗 (25000回) 38勝12敗 (50000回) 括弧内の数字はシミュレーション回数です。 ありがとうございました。 やっぱり回数固定の方が良い感じですね。 自分のPCでは5万回だと時間的には丁度良い感じでしたね。 もう白盤でもlv2に圧倒ですねぇ・・・ とりあえず対人中級レベル認定(賞金支払)に関してはいつでもOKなので 今の段階で参加でしたらいつでも言ってください。 強さに関してはこれくらいで十分ですので。 もし可能でしたら今くらいの強さのままでいいのでファイルサイズと シュミレーション回数(要するに時間)が改良可能でしたらお願いしたいですが これも難しそうでしたら今のままでもOKです。 フリーソフトにLv3で組み込む上でYさんの中で「これで一区切りついたかな」 と思う段階でお願いします。 ちなみに珠形の設定ってまだ有効ですか? 一応白盤で打ってみました。なんとか勝てましたが凄く対人風でよかったです。 終盤で多分自分が勝ったと思った後にAIがそれでもわずかな可能性を求めて 勝ちを狙っていくあたりがいかにも人間風で良い感じでした。 (;SZ[19] ;B[ii];W[jj];B[hj];W[jh];B[ji];W[kj];B[ki];W[gi] ;B[lj];W[jl];B[lh];W[hi];B[kk];W[jk];B[jg];W[ih] ;B[hh];W[ig];B[hg];W[kg];B[lg];W[kl];B[lk];W[ll] ;B[lf];W[le];B[gj];W[fh];B[gh];W[fi];B[jf];W[if] ;B[he];W[kf];B[je];W[ke];B[hf];W[kh];B[li];W[hl] ;B[ml];W[mg];B[mi];W[gl];B[il];W[im];B[mm];W[ik] ;B[fl];W[mn];B[gk];W[lm];B[no];W[fm];B[hm];W[hn] ;B[nj];W[ni];B[jn];W[jm];B[gm];W[gn];B[em];W[gm] ;B[dn];W[co];B[kn];W[km];B[ln];W[hm]) 自分のPCで時間を計測してみました。(単位は秒です) ストップウォッチで手動計測なので誤差はそれなりにあります。 参考までにスペックは [CPU]AthlonXP2500+ [Mem]512MB です。 序盤中盤終盤それぞれで数手抜き出して見ました。 やはり序盤の方が思考時間が長く終盤になるほど段々短くなっていきました。 これより明らかに思考時間が長いPCがありましたらスペックと秒数を書いてもらえると 嬉しいです。 13.36 13.35 13.87 13.92 13.12 13.34 ・ ・ ・ 10.98 12.29 10.17 11.03 9.73 ・ ・ 9.04 7.28 3.62 1.01 ストップウォッチ……。 ううっ、涙ぐましい努力だ……。 囲連星本体のほうでAIの思考時間を測れるようにできるといいんだろうけど。 はい、珠形の設定は前と一緒です。 とりあえず、ファイルサイズにを減らすのは今回保留にさせて下さい。 AIも最初から比べるとかなり強くなりましたし、バグも一通り排除出来て 区切りが良いと思うので、コンテストに参加したいと思います。 ただ、ai-lv2との対戦結果だけを見ていたので、ai-lv2には勝つけど 人が打ったら弱かったなんてことが無いか不安ですが… 少し変更してアップロードしました。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000020421.zip 今回の修正点 ・シミュレーション回数を徐々に増やしていくようにしました。 ・AI Params -> Show Log Windowに思考時間を出力するようにしました。 ・LoadLibraryで落ちてたバグの修正。 CPU:Pen4、メモリ:512Mでは 0回目:8.125000 [sec]. 1回目:9.016000 [sec]. 2回目:9.391000 [sec]. 3回目:9.765000 [sec]. 4回目:11.125000 [sec]. 5回目:11.469000 [sec]. 6回目:9.797000 [sec]. 7回目:10.438000 [sec]. 8回目:10.797000 [sec]. 9回目:13.047000 [sec]. 10回目:6.281000 [sec]. 11回目:0.578000 [sec]. 12回目:0.094000 [sec]. でした。 多分Lv.3になると思いますので参加版では新規対局時に表示される名称を 他と一緒にコンピュータ Lv.3にしておいてもらえますか? 一応バグ取りもOKという事ですのでコンテスト終了時にそのまま組み込んでしまおうと 思ってますので。 ただもしシュミレーション回数の操作が可能なのであれば 初手と二手目くらいまで5秒程度で指してもらえると助かります。 中盤移行は時間かかるのは自然なのですが初手とかが遅いと一瞬バグか? と思ってしまうので強さに影響無いレベルで最初の数手だけ短くしてもらえると ありがたいです。 まぁハードは昔ほどではないですがこれからも確実に進化してくと思うので 最初の数手以外は今の様に10秒前後で問題ないとは思ってます。 とりあえず今回は対人中級で上級以降に関しては大会とかに参加させるなり 強い方に打ってもらっての結果などで判断していこうと思ってます。 今後対人の大会などはどうなるかはちょっと不明ですが とりあえず自分がもう明らかにどう転んでも敵わないレベルを対人上級と考えているので 上級までは囲連星の対人状況がどうなっていても認定は出来ると思います。 囲連星プレイヤーさんもしよかったらLv2と今回のLv3とかと何回か対戦してみて 感想などがありましたら教えてもらえるとありがたいです。 >>347 本体に組み込めればいいんですけどね。 本体を直すとなると色々大変なのでまた機会があるときにでも。 今さらながらタイマー表示はあれば良かったかなと思ってますね。 今回以降思考時間がそれなりにある場合は固まってないかとか もう打ち終わったかもタイマーでわかると思うのであれば重宝したのかも。 >>Yさん シュミレーション回数に関する要望をまとめさせてもらいますと @初手、二手目くらいまでは5秒以内程度で(あんまり早くても途中で遅くなる差が出て変かなと) ALv2との勝率は>>343 にあるように8割以上が希望 B8割以上を満たす上で@以外の思考時間はYさんの自由でOKです といったところです。最後まで色々要望すいませんがご検討お願いします。 ※ファイルサイズにつきましては了解致しました。 >>Yさん 度々すいません。 >>343 を見る限りやっぱり明らかにLv2を超えるにはシュミレーション回数は 多いに超したことはないんですよね・・・ 5万回以上ってのも検討ありなんですかねぇ。 あと序盤・中盤・終盤でどこで時間を長く使うのが勝率あがるんでしょうね・・・。 個人的には序盤の最後の方〜中盤くらいが一番影響力が大きいのかなと 思ったりもしますが根拠はないです。 あとはヘルプにLv3はそれなりに思考時間はかかりますという注を入れて もうそれこそ勝負どころは10万回とか使うのも手なんですかねぇ。 修正してアップロードしました。 http://ud.gs/409yo ・新規対局時に表示される名称をコンピュータ Lv.3に変更 ・待ったをした時にバグが発生していたのを修正 ・少し高速化 ai-lv2との対戦結果 黒(ai-uct.dll)の勝利回数: 43 白(ai-lv2.dll)の勝利回数: 7 ある対局の思考時間です。 0回目:3.422000 [sec]. 1回目:4.547000 [sec]. 2回目:5.062000 [sec]. 3回目:6.078000 [sec]. 4回目:6.656000 [sec]. 5回目:6.656000 [sec]. 6回目:7.750000 [sec]. 7回目:9.000000 [sec]. 8回目:10.375000 [sec]. 9回目:11.188000 [sec]. 10回目:7.781000 [sec]. 11回目:9.953000 [sec]. 12回目:8.844000 [sec]. 13回目:2.062000 [sec]. 14回目:0.406000 [sec]. 15回目:0.078000 [sec]. 同梱されているai-uct+はシミュレーション回数が十万回で固定になっています。 ai-uctで物足りない人は試してみてください。 Yさんありがとうございました。 振込の件などにつきましてメール送りましたのでもしまだ見られてなければ メールチェックしてみてください。 ちなみに3回目というのは3手目と同じと思ってOKですよね。 何回か打ってみてこのバージョンが一番自然な感じはしました。 考えながら打ってるとある程度自然な思考時間かなと。 自分が真剣に打ってみたところ黒ならまだ分が良いです。 白は良くて五分五分。何も考えずにサクサク打つとほぼ負けちゃうくらいですね。 ではもう組み込み版にしてもOKなのでYさんがこれで完成と思ったら 完成版ですってことで公開してください。 1回ソフトに組み込んだらそうそう差し替えることもないので バグ取りやソースを綺麗にとかだけお願いします。 もし試しに動かしてみてバグに気付いた方は是非書き込んで下さい。 そうして頂けると助かります。 あとスペックが低いorノートPCとかで 「思考時間すごいかかるよ」って人がいたらスペックの報告もしてもらえると ありがたいです。 >バグ取りやソースを綺麗にとかだけお願いします。 了解です。 あと組み込んでいただく前にもう一度、 高速化、軽量化に挑戦してみることにします。 >>357 もし可能でしたらお願いします。 少しでも高速化、軽量化が出来ると助かります。 あとなんでしたら珠形のやつも組み込むのからは 外しておいてもらってもいいですよ。 まぁこれはどちらでもいいですけどね。 Yさんの感覚の問題なので。 >>359 LICENSE.txtも一緒に頒布して頂ければOKです。 >>360 そう言えばライセンスの問題なのですがLICENSE.txtをReadMeやヘルプに 組み込んでもOKですか? 単体でライセンスのテキストファイルがあるよりはいいかなと思うんですけど それだと問題ありでしょうか? >>361 修正BSDライセンスは "「無保証」であることの明記と著作権表示だけを 再頒布の条件とするライセンス規定" だそうなので、それで大丈夫だと思います。 名人と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]) 更に言うと「2バージョンくらい前はそういう手がなく強かった」とのこと。 ただ2バージョン前が正確かどうかはわからないのでなんとも言えないです。 ちなみに大会は更新日時2007年10月2日、23:48:52のバージョンです。 最新のは珠形が打てなかったので(それ自体は全然構わないです) ただあくまで参考までに報告なので今から大掛かりな修正とかはいいですよ。 もし何かYさんのヒントになればと思っただけなので。 あとこちらも参考までにはじめて来られた方と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して色々試してみます。 ただ先月の大会の棋譜を見ても同じくらいの強さなような気もしますし 特に弱くなったとかは自分にはわからないですねぇ。 強い人の間ではその微妙なところがわかるのかな。 >>東陶基さん ありがとうございます。 こっちの方でもそれを確認してみます。 ai-lv2との対戦結果だけで強さを評価していたのは 失敗だったかも知れないですね。 とりあえず 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ファイルとかから読んでたのに 自動対戦ツールでは必要なくそのままで動いてるのがちょっと意外でした。 そっちのツールで指定してるのかな多分。 (;SZ[19] ;B[jj];W[kj];B[kk];W[ii];B[ki];W[jk];B[lj];W[ij]) もしかしたらこのあたりが疑問手なのかも。 石を捨てる必要がないところで結構頻繁に石を捨てる傾向にある。 「無難に逃げるべきでは?」と言うところで こういう手を打つ傾向があるのかもしれないです。 ちなみに再度>>368 と同じことをやったら 今度はuct4 13-7 uct1 でした。 >>368 think_timeを読み込むのに失敗したときは思考時間を 5か10秒に固定していたので本体でも多分同じ事が出来ると思います。 >>369 わかりやすい棋譜をありがとうございます。 改善できないか検討してみたいと思います。 初心者ですがLv2もLv3も私にとっては強いですw >Yさん 携帯のもこちらの板の方が良いかもしれません。 囲碁板だとルールの確認やAIの強さの事については色々あるかもしれませんが 開発の事だとゲ制作板のAIスレの方がヒントが色々得れそうです。 ある程度強さの確認とかになったら囲碁板でも良いかも。 あともし携帯はやっぱり難しいとか壁にぶつかりましたら 2本制のなんかどうでしょうかw これに関しては携帯同様全くのボランティアになってしまい お願い出来るようなものではないですがもし興味を持たれましたら是非。 ルールで2本の7連が繋がると反則というのがあるのでここだけ注意しないといけないですが 他は1本と一緒です。 ただUIも作らないといけないのでどうしてもAIだけの開発に比べると 手間が掛かるかもしれないのであれですが。 もしYさん以外にも興味を持たれる方がいましたら2本制のゲーム是非作ってみてください。 もちろん作られたゲームの権利は制作者さんに喜んで譲渡(じゃないか?)しますので どう使ってもらってもOKです。 >>東陶基さん 了解です。 今度からこちらの方に書くことにします。 2本制は、まあ気が向いたら挑戦します。 囲碁板がなんか不安定なのは気のせい? ここ最近読み込みとか書き込みが出来ない気が・・・ おれもAI作ってみたが… lv1には勝てるがlv2やlv3には歯が立たない。 おれのAIがlv4になるのは何時の日か? しかし自分で打って勝つより自分のAIが勝つほうが何倍もうれしいね。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000022645.udn 上げてみた。 だけど、人間が打つには物足りないと思うよ。 AI開発してる人とってはlv1とlv2に開きがあるから その間のいい対戦相手になるかもしれないけど。 ちなみに他の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ありがとうございます。 自分も打ってみました。是非Lv4になって下さいw 思考時間に関してはサクサクなので問題ないとは思いますが Lv3くらいの時間までならOKなので時間が長ければ強くなるようであれば そのあたりを目処にしてみて下さい。 確かにAIの強さの感覚は微妙なのですが 表示されるAI名を弄るのは開発者しか出来ないので その後調整とかが難しいのは事実ですね。 確かにlv1とlv2の間にあれば良いとは思いますが。 まぁそれだけLv2はセンセーショナルなデビューでしたからねw 連続対戦のプログラムを少し修正しました。 http://ud.gs/40bo1 ・長連判定にバグ修正した ・棋譜を出力出来るようにした 棋譜を出力したいときは irensei_auto_game ai-lv2.dll ailefttop.dll 50 .\kif\ のように4番目の引数に棋譜を出力するディレクトリを 指定して下さい。 棋譜はSGFフォーマットで出力されます。 http://olive.zero.ad.jp/qin/kifusaisei.html では再生出来ることを確認しています。 対局内容が知りたい時は使ってみて下さい。 >>384 Lv4目指してがんばります。 思考時間なんですが、ちょっと探索を深くするとあっという間に遅くなってしまうんですよね〜 簡単に10倍100倍の時間が掛かってしまう。 >>385 おおっ!ちょうど棋譜データがほしいなと思ってたところでした。テラエスパーww ありがたく使わせてもらいます。 このツールは非常に重要なので日本囲連星協会のHPでダウンロードできるようにすべきですね。 AIの強さは Lv3>>Lv2>>>>>>Lv1>>Lv0 と言ったところかな?Lv1よりちょっと強いAIを作れてそれをLv1と入れ替えれば バランスが良くなりそう。 AIそれぞれの私的な意見として Lv0・・・弱いわりには守りが良い Lv1・・・攻撃重視、守りに関してはLv0より弱い? Lv2・・・攻撃重視、1回攻めのターンを渡すと連続攻撃で相当やっかい。機械的な攻め Lv3・・・バランス型、攻撃はLv2より少し弱い気もするが人間的な手を打つ >>386 そうですね。一手で10個所読んだとしても二手深く読めば100倍掛かっちゃいますからね。 思考時間に関しては皆さん苦労されてるみたいです。 あと自動対局ツールを公式HPに公開しました。 勝手に公開してしまったので もしYさんが問題があるようでしたら教えて下さい。 そういえば、AIのソースってどれくらいDLされてるんですか?>>会長 もっと囲連星AI開発者が増えてくれると楽しいんだけど。 う〜んソースの方はDL数はわからないですね。カウントしてないので。 一応参考までに本体は毎月500人くらいがDLしてるので1%位はソースもDLしてるんでしょうかね・・・ 確かに増えると良いんですけどね。ただもうある程度の強さになってるので もしかしたらそこまで行かなかった人は人知れず開発して人知れず終えてるかもしれないですね。 もしそういう方がいたら9路とか二本制とかのを作っていただけるとありがたいですね。 そっちはまだソフトがないので作ってもらったらそれが基本となるので。 9路のほうはまだルールがきまってないようですね。 もう少し様子見でしょうか。 そうですね有効範囲をどうしたらいいのかという点だけ未解決なんですよね。 個人的には一線だけの7は認めないが良いのかなと思ったりはしてるのですが。 あまりにもわからなすぎて逆に皆さんのご意見を聞きたいくらいですね。 Rubyで囲碁プログラミングは論外ですよね。 C++とJavaどちらが使えますか? あと既存のインターフェイスってあります? >>394 最初のうちは Ruby でもいいんじゃない? 計算量が問題になってから C/C++ にすればいいんだから。 勘所が分かるまでは手に馴染んだ道具を使えばいいと思うよ。 >>394 知識が古いので大したアドバイスにはならないのかもしれませんが 自分もRubyで最初は良いと思いますよ。 Rubyが今どんな状態なのかは詳しくは知りませんが今もインタプリタだとしたら 速度的な問題は出るとは思いますが一旦Rubyで作っておいてそれをC++とかに 書き直すほうがいきなりC++を覚えながら書くよりは良いかもしれませんね。 でも結局C++を覚えなければいけないのであれば 最初からC++を使った方がいいと思いませんか? 標準ライブラリを見たら、 C++のはかなりlistとかstackとかアルゴリズムに使う概念が充実していますが、 Rubyは文字列操作だったり、その他ソフトウェアに必要なライブラリが充実しています。 結局C++が良い気がしてきました。 しかし、もっとスピードを求めるとすればCやfortranですか? C++はCより若干遅いそうです。 当方、この分野を自分の専門に決め打ちしようかと悩んでいる電気電子系の学生です。 冬休み中に強化学習の課題が出ました、それはC++で書いてみるつもりです。 (ちなみにCはある程度なら書けますしC++も全く触った事ないわけでもない) こういうアルゴリズム市場での使用言語はなんなんですか? おれはRuby厨なので、オブジェクト指向で書けないとめちゃくちゃな事になりそうですが、 囲碁のプログラムって概念が難しいだけで、 実装は手続き型でも全く問題ありませんよね。 研究室では主にC++とJavaが使われているそうです。 Rubyはごくマニアックな人が使うという感じですね。うーん・・・ 最初にJava勉強しとけば楽だったかな >>397 ゲームのAIなら未だにC/C++が多いと思う。Javaは多少遅いけどあり。Rubyはよく知らない。 関数型言語でAI書けたら面白いかもね。 言語に関して言えば、学生ならやれるだけやっとけ。 使わないのは問題ないけど、使えないのは論外。 スピードについては、まだ気にする必要のないレベルだと思うよ。 とっつきやすい言語で始めて、アルゴリズムレベルで改良の余地がないというところまできてから、 C/C++なんかに乗り換えても良いと思う。 もちろん最初からC/C++でもOKだけどね。 基本的にAIでもオブジェクト指向を採用していますか? オブジェクト指向はメモリの使用量が大きくなりそうなのですが。 (オブジェクトを生成したらメソッドなどの領域も確保しますよね?) 構造体すらも使うと遅くなる気がします。 Rubyはクソ遅いです。 びっくりするくらい。実用的には問題ないですけどね。 JRubyというので早くなってるそうですが、それでも遅い。 まずはオセロからですかね? オセロなら簡単に作れそう。授業で評価関数の話もしてました。 端の方はとられにくいので価値が高いはずだとかね。 とりあえず最強のやつを作るならC++とアセンブラだろう C言語はC++に含まれる 速度的には純正のC言語の方がいい場合もあるが、アセンブラの方が良いこともある とりあえず平均点が高いのはC++ どうしても改良が必要なら部分的にアセンブラやCで書き直す たとえばSTLなどは遅くなる可能性がある 内部で何やってるかよくわからない >>399 囲碁の方が易しいのでは? 囲碁だとランダムに打って勝率を調べて一番良いところに指すという手法が有効だから この方法以外にはあり得なさそうだし >>399 クラス、構造体や変数生成の速度さえも稼ぎたいのならアセンブラにしとけ 変数などは使い回して最小のメモリですます STLって <vector>とか <complex>とか <iostream>とかですよね? 良く分からないですが、Tの意味が・・・ STLならEffectiveSTLというのを読めばSTLで何やってるか分かると書いてありました。 >>401 おれが今読んでる本にはそんな事は書いていません。 それは強化学習の話ですか? >>402 アセンブラはちょっと・・・ しかし重要なのは、言語に依存しない計算量だろう N*Nの計算量がlog(N)になっとしたら、10000秒かかる計算が10秒で済むことになる 10倍鈍い言語を使っても100秒で済む ということで一番重要なのはアルゴリズム >>399 >基本的にAIでもオブジェクト指向を採用していますか? オブジェクト指向といっても範囲が広すぎるし、人によると思うが、 俺の場合、C++をbetter Cとして使っている。 C++の便利なところは利用するが、Cで書いたものに比べてほとんど遅くならない程度の範囲内でという感じ。 >(オブジェクトを生成したらメソッドなどの領域も確保しますよね?) C++に関して言えば、それは間違いだと思う。 メンバ関数は通常の関数にthisポインタが引数に加わっただけだし。 >構造体すらも使うと遅くなる気がします。 先にも書いたけど、まだ速度を気にする必要のない(気にしても仕方のない)実力だと思うよ。 あと、速度に関しては実測が全てという面が大きいし、 >>400 の通り、そんなに気にするならアセンブラでCPU固有の命令使えという話になる。 結局は開発効率やコードの可読性との兼ね合いで言語を選ばないといけない。 個人的な意見としては、小手先の最適化は後回しにして、とりあえず手を動かすことをお勧めする。 >>403 囲碁 モンテカルロ法で検索する 2007年07月30日 古きよき時代の囲碁プログラムの終焉 とうとう、19路でもモンテカルロ法の毒牙にかかってしまいました。 岐阜チャレンジで破竹の4連覇を成し遂げてきた銀星囲碁7が モンテカルロ法ベースのCrazy Stoneに5勝14敗と完敗。 はっきり今までのクラシックな作り方の囲碁プログラムは終焉を迎えました。 もう、今後10年、いや名人が敗れるその日まで、今までやり方のプログラムが 世に出る日はないと思います。 http://blog.livedoor.jp/yss_fpga/ FPGAで将棋プログラムを作ってみるブログ - livedoor Blog(ブログ) 戦略としては、相手の駒を取れる手、 2つ、3つ・・・と駒が一列上に並ぶ手(複合する方を優先する) を生成して、モンテカルロ法やMTD法を使うので決まりだと思うな 指し手と勝ち負けさえ判定できれば、モンテカルロ法は 将棋でも囲碁でもオセロでも同じアルゴリズムで済むので簡単だ 構造体すら使いたくない、真の最速を目指してみたい、というのは一種の熱病みたいなものだけど、 その道は一度通ってみるといいと思う。その体験から得られるものは意外と大きい。 がんばれ! >>397 > C++はCより若干遅いそうです。 そこまで速度を追い求めるなら、コンパイル結果のアセンブリを検証することになる。 ターゲット CPU 上で、どういうコードが出力すべきかを考えて、コーディングしたりアセンブラで書き下ろしたりすることになる。 そこまで行ったら、C や Fortran を選ぶ必要はなくなるから C++ ということになるでしょう。 > おれはRuby厨なので、オブジェクト指向で書けないとめちゃくちゃな事になりそうですが、 オブジェクト指向は、分析や設計の概念だから、アセンブラや C でも実践できる。 >>399 > オブジェクト指向はメモリの使用量が大きくなりそうなのですが。 やりかたによる。 > (オブジェクトを生成したらメソッドなどの領域も確保しますよね?) メソッドのアドレスは、クラスごとに静的なテーブル(vtable とか呼ばれる)になっているので、インスタンスごとのサイズはポインタ1つ分増加するだけ。 Ruby などと違って、クラスの数はコンパイル時に決定できるので、インスタンスが増えてもメソッドの領域でメモリを消費することはない。 > 構造体すらも使うと遅くなる気がします。 動的に生成したら遅くなる。AoS, SoA の話なら、アルゴリズムによるので、構造体だから遅いということにはならない。 >>403 T はテンプレート。 重要なのはそこに列挙されているようなものよりも <algorithm> とか <functional>。 インライン展開されがちだし、書き下ろすより速いことも割とあるよ。 冬休みの課題頑張ってね。 ところで、囲連星の話じゃないような気がするけど? ちょっとしたことだけど、2バイトで値がおさまったしても、よほどメモリー食わない限りは4バイト使った方が良い 整数演算はint型に変換されるからだ あと19マスだけど、32マスにして左上に寄せて使うと良い 座標の計算がビットシフトで行える為だ >>410 >あと19マスだけど、32マスにして左上に寄せて使うと良い 座標の計算がビットシフトで行える為だ これはどういう意味か教えてください。 19->32はメモリロスのほうが大きそうな気がするのだけど。 たとえば普通に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の判定で済む >>412 なるほど。 横方向に一つマージンとって19*20マスでも同じようなことができそうだけど、 結局ビットシフトやANDで済む32と比べると差が大きいのかな(定数除算や剰余の最適化を期待しても)。 上下左右にマージンをとる方法はどうなんだろう。 有効座標かどうかの判定無しで参照できるという利点はあるよね。 今も賞金20万もらえるの? 今日、初めて作り始めたんだけど・・ なんかSTLはコンパイル環境によってエラーが出るし、使わずにやることにしたよ 多分グローバルにbitsetやvector使っているせいだとおもうけど 思考ルーチンを考えたので概要を書き込む 次の種類の手を生成して、モンテカルロ法で最善手を選ぶ ・一手、二手で敵の駒が取れる手 ・一手で駒が捕られるマス ・縦横斜めに敵の駒が無く7マスが揃いやすいマス 最後の部分は、例えば (端)□□□●●● (□は空白) とすると 一番、右の●を今置いたとすると、端二つは無視する為、右●を含んで7個そろう可能性があるのは □●●●□□□、 ●●●□□□□、 ●●□□□□□、 ●□□□□□□のパターンがある これらの黒石の個数の合計を、今置いた石の7が揃いやすい得点として用いる 加えて縦斜めの得点を加算する この得点が高い手順に生成する >>415 来年から定期的なオンライン対局を休止する予定なので名人レベルのAIの認定はちょっと微妙かも しれません。 ただ上級レベルまでは判断できますので上級レベルまでの賞金は今まで通りです。 もし上級レベルが出た後にさらに強いのが出た場合にはその時に考えたいと思います。 HPに残してると紛らわしいのでHPも名人レベルは削除しておきます。 ちなみに中級レベルはほぼ内定してます。YさんのLv3(現在の追加AI)をソースを整理してもらった後 フリーソフトに組み込んだ段階で中級レベルとなる予定ですので、Lv3より明らかに強いAIでかつ 対人でもそれに見合った強さを出した段階で上級レベルとなると思います。 一応今の開発者さんにも来年からはオンライン対局の問題もあるので名人レベルの認定は 厳しいかもしれませんが上級レベルまでは自分自身でも判断できると思うので・・・と伝えています。 上級レベルというのは対人レベルでは東陶基がまず勝てないというレベルです。 ちなみに東陶基の棋力は現在最強のLv3に対して勝率はイーブン位だと思います。 強いかどうか知る前にuctは時間かかりすぎ 今から抜くからまだ決定しないで 別に中級が2人とかでも構わないと思ってますのでいつでもプログラムはお待ちしてます。 他のAI開発者さんも強いのが出来れば目標(ライバル?)になると思うので大変良いことなので。 確かに現時点でのuctは思考時間はPCによってまちまちですね。 最新デスクトップだと2,3秒らしいですが古いマシンだと20秒とかにもなるらしいです。 ただ5年後とかにはハードの進化でどのマシンでも2,3秒以内になってると思うのでそれは それでいいかなと思ってます。 あと開発の注意としてはある程度のランダム性もある方が望ましいです。 もちろんある程度で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]) >>423 ジグザグ打ちは手動でやったの? もし、もうジグザグ打ちAIができてるならうp希望。 >>424 手動です ジグザグ打ちだけでは勝てないです 対策取られればそれまでです 斜めの位置を先に取られてしまえば駄目で、より強いAIを開発してます Lv2もジグザグ打ちで攻めるよね。 機械的なジグザグ打ちが良いのか それとも人間的なLv3の様な打ち方が強いのか まだなんとも言えないね。 あとジグザグの斜めの位置を先に取る(先回りして守る)と言うのは 有効な守りの手筋なのかもしれない。 Lv0にはジグザグ通じないなあ 弱いと思って相手にしていなかったがこれが一番苦戦するんだが・・・ AI開発で、深読みや、モンテカルロ法は重要で無い気がしてきた 囲連星の場合、読み無しで有効手が選びやすいと思う (囲碁は多くの場面で有効手が見つかりにくいが・・) 将棋は、駒交換で評価値が変化するから読みは大事だ 囲連星も取られるが、読み無しでの有効手が、ほんとの有効手である割合が高そうだ 必勝形に関しては読み無しでも結構いけるし、必勝形を完璧にするだけでもかなり強くはなるだろうが 読み無しで果たしてその先にいけるかどうか… 読みが全く無しではなく、指し手生成に重点を置くって事です せいぜい10手も読めれば十分だと思います 指し手が精密で3、4つに絞れていたら全数読みしてもたいした時間はかかりません 参考までに言うと今までの開発してくれた方の情報では自分の手を3手(相手も入れると5手) くらいで時間が10秒とか掛かると言ってました。 もちろん読む場所がある程度あったので本当に3,4箇所に絞れるのであれば10手でも いけるかもしれないとは思います。 あと囲連星はかなり直感で打つ手が良い手の事が多いと思います。 ただ終盤やお互いが既に必至状態で手数の問題になってくる場合は 一気に読みが大事になってきます。 囲連星AI作成は意外と手間暇かかるので>>431 には粘り強くがんばってほしい。 俺はもう諦め気味。 2手なら全数読みしても1024局面、4手なら100万局面 将棋のボナンザというソフトは1秒間に約30万局面生成して、数秒で12手以上は読める モンテカルロ法ならば勝ち負けしかないので評価関数はいらないけれど、手数の限度あると評価関数作らないといけない 相手の手によらずに勝てる方法が判ったよ 1手で7揃うか、必勝形になる 2手続けて指したとき異なる7が2つ揃うか、異なる必勝形が2つ出来る 3手続けて指したとき異なる7が3つ揃うか、異なる必勝形が3つ出来る 今言う必勝形は特に、6個揃って両端が空白のときか、6個の途中がデコボコしていて相手にうたれない状態のとき ○ ○ ○ は上の判定では勝ち判定ではないが ○ ○ ○ ○ ○ ○ ○ ○ 2手続けて指したとき異なる必勝形が出来るから勝ち 開発者の人は、頭で考えてるだけじゃなくて、 人と打ってみた方がいいと思うよ。 >>435 相手の状態も考えないといけないな。 自分があと4手で7連ができる必勝形をつくっても、相手が3手で7連を作れるなら負けてしまう。 自分と相手、どっちが7連までもって行くのが早いかを常に考慮する必要がある。 多分ほかにも考慮することは沢山あるはず。 結局、盤面は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();} Yさんはメルセンヌツイスタとかいう乱数生成方法でライセンスがどうとか言ってたけど これはその辺大丈夫なの? 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 >>440 どこかで見たことあると思ったらxorshiftか srandが少し適当な気がするが、モンテカルロなら問題ないだろうね >盤面の更新は盤面全体をコピーして戻すことにします なるべくコピー速度を上げる為も少ないビット数の方が良いです 囲碁のbitboardはまだないと思うから挑戦してみてはどうだろう? オセロのは簡単だけど、将棋と囲碁は難しくて見当もつかないのでアドバイスできないけど 9路のAI作ろうと思ったら本体から作らないと駄目? >>444 そうですね9路は本体はないですね。 19路の方のソースは公開してるのである程度流用で簡単にいくところもありますが 逆にGUIなどはどうでしょうねぇ。 個人的には本当に簡易なものでもいいと思うんですけどね。 それであれば本体を作るのもそれほど負担にならないかもと思ったりもします。 色々不便をおかけしますが検討してみてください。 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 なぜか上手く動かない。出来ればexeみたいな状態にしてもらえると・・・ >>448 exeにしようとexerbやRubyscript2exeを試してみたのですが、なかなか上手くいきません。 とりあえず、Cygwinのrubyで試してみてください。 あとIrenseiCUI.rbのほうにはバグがありました。 もし使う人がいたら修正します。 9路の本体ダウンロードしていただいた方、何かレスしていただけると助かります。 動いたとか、動かなかったとか。 囲碁板にも書き込んだらどうだろう。 でもそっちだとexeとかじゃないと見てくれないかもね。 HPに載せれば意見も聞けるだろうけど ゲームできる状態になってないと厳しそうだしね 俺も動かなかったくちだがもう後でCygwinで試してみるから 447も頑張って作ってみてくれ、楽しみに待ってるよ。 9路のコンピュータと対戦してみたいから exeに変換することが出来たのですが、アップロードしましょうか? もちろん、作者の方から許可して下されば、という話ですが。 >>454 Yさんありがとうございます。作者の方が良いということになったら上げてみてください。 exeにしといた方がみなさん気軽に試せると思うので。 あと作者の方がexeにする方法でどのあたりが上手くいかなそうかも教えてあげれたら 作者の方としても助かるかもしれませんね。 447です。 Yさん、exe化ありがとうございます。 ぜひアップしてください。 よろしくお願いします。 ↓にアップロードしました。 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 という手順だったと思います。 動作見てみたけど七連の範囲もコウも問題なく動いてるみたい。 後はAIだけだねw これも19路のようにAI外付けにできると良さそうだけど ごめん、良く見たら外付けできるんだ。これはすごい。ルビー以外でもOKなんだよね? もしかして画面の意見を求めてるのであれば ・最終着手がわかるようにしてほしい ・操作をわかりやすくしてほしい でしょうかね 具体的に言えば、リストボックスの上に先手:後手と言った表示があって その下にstartなりnewgameがあればわかりやすい あとリストボックスが二つ有るけど片方しか選択状態にならないのは わかりづらいかも知れません。選択したのが上のテキストに表示されるより リストが選択状態に2つともなってるほうが良いかも 最後に碁盤の画面はこういうのでOKだと思う変に凝っても見づらいし Yさん、アップロードありがとうございます。 >>461 一応、AIはC/C++などでもかけますが、その場合Ruby拡張ライブラリという形式にしてやる必要があります。 SWIGとか調べてみてください。 >>462 了解です。実装してみます。 あと、9路だとパスもできないとまずいですね。 9路の場合はすぐにAIが強くなりそうですね。 今ソースをみたらポインタもなかったので自分にもつくれるかもしれない。 って思ったけどYさんの作ってくれたexeはもうその中にAI入ってるのかな。 でも同じディレクトリから.rbファイル消すとAI選択から消えますね・・・。 .rbのソースを変更しても打ち方が変わらないから既にexeに入ってそうだけど。 >>464 自分でAIを変更できるように修正しました。 http://www11.axfc.net/uploader/20/so/He_61636.zip.html パスはirenseiです。 >>447 さん この修正のために、IrenseiGUI.rbの14行目の require ai を require ".\\"+ai に変更しました。 何か問題があるようならアップロードしたファイルを削除します。 >>465 447です。 ソース変更は自由に行ってくださって結構です。 447です。 ちょっと修正したのでアップします。 http://www.uploda.net/cgi/uploader4/index.php?file_id=0000024689.zip 変更点 1.最終着手をわかるようにした。 2.パスに対応。 3.リストボックスの上に先手、後手を表示 4.SGFファイルを出力できるようにした。出力先はresult.sgf 5.Yさんの>>465 の修正を取り込み リストボックスを両方選択状態にする方法はよくわかりませんでした。 あとexe化も、もうちょっと待ってください。 へたれですいません。 リストボックスなんかは普通は両方選択状態になるのが普通っぽいけど なんでそうなるんだろう。 もしかしたら2つのリストボックスの名前が被ってるとかかな。 447です。 exe化に成功したっぽいのでアップします。 http://gamdev.org/up/upload.php 囲連星で検索してください。 皆さんの環境でも動作するか動かしてみてください。 よろしくお願いします。 リストボックスの件はもうちょっと待ってください。 447さん、かなりいい感じですね。ところで447さんはその9路のAIも開発する予定ですか? もしそうで実際ゲームとして完成したらどうします? vectorとかで配布します? もしそうでしたら完成時には囲連星のHPからもリンクを貼らせてもらえると ありがたいです。 ただそのあたりは447さんにお任せします。 とりあえず447さんの採用している1線のみの7連のみ禁止で行ってみようと思ってます。 それなりに強いAIが出てきた時に何か不都合があれば考えますがしばらくはこのルールで。 447です。 もちろんAIは作ります。 完成したら配布するつもりですが配布方法とかまではまだ考えて無いです。 リンクも大歓迎ですが、ちゃんと完成するかどうか?まあ、気長に地道にやっていきます。 あと、私以外の方にもAI作成してほしいと思っているので、 当面はソースにコメント入れたりドキュメントを書いたりしようと思います。 特にC/C++でAIを作る方法は結構難しそうなのでドキュメントが必要だと思っています。 ほかの人に作ってもらうためにはドキュメントやコメントは必要だね あと19路のように本当にAIだけ作るのに専念できるように本体との 依存関係は出来るだけ無くして欲しいかな。 447です。 ちょっと仕事が忙しくなりそうです。 しばらくの間、囲連星の開発はペースダウン(ストップ?)すると思いますがご勘弁を。 はい。のんびり作ってもらってOKですよ。 ちなみにブログにも書きましたが2/14の週刊アスキーの別冊に囲連星が 掲載される事になったので本屋に寄れる方は立ち読みでもしてみて下さい。 447です。 C++でAIを作ってみようと思ったのですが、どうもその場合VC++6.0が必要になるみたいです。 (RubyそのものをコンパイルしたコンパイラとAIをコンパイルするコンパイラは同じでなくてはいけない。) 困りました。VC++6.0はもう販売終了してしまっています。 RubyのほうをVC.netでコンパイルするという荒業もあるみたいですが… 何かよい回避策を知ってる方いらっしゃらないでしょうか。 関数名修飾ならdefファイル使えばOK あとこう書けばいいのでは extern "C" int __stdcall func(){} >>478-479 レスありがとうございます。 参考にさせていただきます。 ちょっと時間掛かりそうですが、がんばります。 あとAIのインターフェースについてなんですが、19路だとイニシャライズやファイナライズ、デバッグ機能がありますね。 デバッグ機能はともかく、イニシャライズ、ファイナライズは無いとまずいでしょうか? ありがとうございます。 自分が詳しくない為皆さんにお手数かけてすいませんが わかる方はわかる範囲で質問にこたえて頂けると嬉しいです。 >477さん デバッグなどですが別に後からつけてもOKですよ。 後からつけると意識しながら作れば後から機能をつけるときもそれほど問題はないと思うので。 でもイニシャライズとかはAI作る段階で既に必要かもしれませんが。 そのあたりはお任せします。 447です。 仕事のほうですが、暇になりそうですw。 VC++2008でAIがコンパイルできたようなのでいったんアップします。 といってもAIの内容は左上から右下に向かって斜めに打つだけです。 aicpp.dllというのがVC++で作ったAIです。 すいませんが皆さんの環境でも動作するか試してみてください。 ご協力お願いします。 http://www.uploda.net/cgi/uploader1/index.php?file_id=0000288158.zip >>482 そういえば、19路の本体のソースってどうなってるんでしたっけ? 447です。 ダウンロードされた方は動いたとか動かなかったとか、なにかレスしていただけるとありがたいです。 動きましたよ ただすぐComputer invalid move!になるけどw >>485 レスありがとうございます。 これからAI作成に励みます。 そういえば、ドキュメントを書くとか言っといてて、書いて無いな。 自分も動かしてみましたがなぜかhuman VS humanしか出来なかったような。 逆に9路のソースも公開すれば誰かが意見をくれるかもしれませんね。 >>487 AIにプレーさせようとすると具体的にどうなるのか教えていただけますか。 random vs randomも動かないですか? 一応、Aicpp vs Aicppだと黒が一手だけ指してinvalid moveになるのが仕様どおりの動作です。 コンビニに寄ったら週刊アスキーの別冊ありました。 相変わらず小さいですが掲載されてました。 ただ小さいのは囲連星のゲーム画面そのものが対局中の碁盤の画面しかないので どうしようもないですけどね。 キャラクターとか作ってRPG風とかにすればもしかしたら・・・。 >>489 そうですね。ランタイム入ってませんでした。すいません。 とりあえず、実装が簡単そうなのでモンテカルロとやらを試してみたが、遅い。 絶望的に遅くて、あんまり強くない。一応それっぽい手は打つけど。 Yさんのプログラムは壮絶な工夫がされてるに違いない。 そうですね。モンテカルロは時間を考えておかないととてつもないらしいです。 今まで試された方も実用的なレベルまでいかなくてYさんのが出来た時には 正直自分も驚きましたね。 あとモンテカルロ(と言うよりは時間のかかるAI)の場合はPCによっても 速度が変わってくるので速いPCだけで試していると遅いPC持ってる人が 「全然遅いよ!」って言われるのでそこも注意が必要ですね。 Yさんのだと速い人だと一手2,3秒らしいですが遅いPCの人は30秒とか かかるらしいです。ただ30秒かかるPCは普通の用途でも遅いと感じる事が 多いんでしょうけど。 >>491 論文を読んでそのとおりに実装しただけで、 あんまりたいした工夫はしてません ご存知かもしれませんが、MoGoやCrazyStoneの 論文を翻訳して公開して下さっている方がいます もしまだ見てなければ、目を通して見ると良いと思います http://www.geocities.jp/hideki_katoh/ 囲連星にも囲碁のCGOSや将棋のfloodgateの ようなものがあったら面白そうですね 今は参加者が少なくて成り立たないかも知れませんが… これを理解するのは相当しんどそうですね。 がんばります。(TдT)。 レンタルサーバーを変更した時に一部DLファイルが移されてなくてDLできない状態でした。 今は直っているのでDL出来なかった人は再度試してみてください。 そういえばそろそろ名人戦やってみようかな。対局場閉じちゃったから人集まるか 不安ではありますが、もし誰かここ見てて参加したいと思ってる人がいたら手を上げてみてください。 数人いたら開催しようかな・・・。 あと別冊アスキーを買って読んでると他にも色々便利なソフトありました。 レジストリを綺麗にしてくれるソフトとか、メモリを整理してくれるソフト、 CPUが暇な時に勝手にデフラグしてくれるやつや、果てはコーディック集まで。 囲連星が載ってる時以外はそういう本をあんまり買わないのでたまに読むと便利ですね。 気分転換に9路のMOGOやってみたがあまりの強さにびっくりした。 白でも黒でもほとんど勝てない。 19路なら勝てるけど。 囲連星でもこれぐらい強いのを作りたいところですね。 最近ふと思うけどAIを追加するとAI Paramsってメニューバーに出てしまうのがどうかと。 当時は深く考えなかったから、せっかくならAI開発用とかってすれば良かったなと。 >>497 9路だと19路より検索するパターンが少ないのでAIが19路よりは強くなるはずなんですよね。 多分Yさんのとかも同じロジックでも9路にカスタマイズすれば時間が早いなり同じ時間なら強いなり すると思います。 9路用のAI作ってみました。 それらしい打ち方をするようになったので公開してみます。 自分で打ったところ、うっかりミスをしなければ負けない 程度の強さでした。 思考時間が多少かかるので試していただける方は 本でも読みながら気長にやってみてください。 URL:http://www-2ch.net:8080/up/download/1206342283000125.Q78KG8 先をこされてしまいましたか。 こっちのAI作成は全然進んでません。(TдT) AI強いです。結構やられます。 あと、*は+とかぶって見難いですw せめて@とかに そういえば、GUIもGTP準拠とかにすればみんな好きな言語で開発できるんですよね。 そっちのほうがいいのかなぁ。 >>501 使って下さってありがとうございます。 人間に勝ち越せるようになるまでには、 まだまだ先が長そうですね。 >>502 >こっちのAI作成は全然進んでません。(TдT) 今は多少時間が取れるのですが、これから忙しくなりそうなので しばらく開発が停滞してしまうかもしれしまそうです。 お互い地道にがんばりましょう! >あと、*は+とかぶって見難いですw >せめて@とかに なるほど、自分でやってるとあまりわからないので、 指摘してくださって助かります。 黒は@に修正しておきます。 あと、個人的な意見ですが、Ruby拡張ライブラリよりは GTPで通信する方が嬉しいです。 >>500 にルールを書き忘れてました。 ルールは1線のみの7連禁止です。 >>500 9路のプログラムありがとうございます。 なんとか勝てました。 確かに対人間だと微妙かもしれませんが そもそも9路だと囲碁の要素が強いので対囲碁を知らない人間だと もしかしたらかなり強いのかも知れないですね。 ちなみにこれもモンテカルロでしょうか? となると環境によって時間が違ったりするのかな。 自分の環境だと1手が20秒弱くらいかな。体感なのでなんとも言えないですが。 >>502 GUIに関してはどうでしょうね。19路のみたくコンパイルしたAIを取り込む と言うのももちろんありなんでしょうけどそのためには誰かがまずAIを取り込めるような GUIを作らないといけないですからねぇ・・・ただ447さんの言われるようにどんな言語でも 最小限の労力で作れるようになるのが理想ですけどね。 >>503 ルールを今までHPで明記しわすれててすいません。 公式HPにも9路の有効範囲をルールに追加しときました。 >>東陶基さん >ちなみにこれもモンテカルロでしょうか? >となると環境によって時間が違ったりするのかな。 はい、モンテカルロです。 どこでも同程度の強さになるように、一手あたりのシミュレーション回数を 同じにしているので環境によって時間は違うと思います。 Yさんの9路AIをGUIで遊べるようにしました。 以下のファイルをDLしておなじフォルダにYさんのプログラムを置いてください。 http://www-2ch.net:8080/up/download/1206527187565943.IG14zh ただ、ちょっとバグがあってIrensieGUI.exeを終了してもirensei_9.exeが 生きたままになってCPUを100%消費することがたまにあります。 すいませんがそのときはタスクマネージャでirensei_9.exeを殺してください。 デバッグにはもうちょっと時間が掛かりそうです。 447さんありがとうございます。 確かにGUIあると使いやすいですねw 個人的にはYさんのコンピュータ勝率予想(?)みたいなのも ちょっと興味ありました。 51%とかどうやって算出してるんだろう?って。 今打ったら負けてしまった。 これもしバグ取れて普通にプレイできるようになったら Vectorとかで配布したらどうでしょうか? 結構十分なレベルだったりしてと思ったりします。 >>447 さん まさかGUIで打てるようにして下さるとは思いませんでした。 GUIだと一目で盤面が理解できて良いですね。 >>東陶基さん 表示している勝率は、ランダムシミュレーションの結果 をそのまま表示しています。 まあ、ほとんど当てになりませんがw Vectorで配布ですか。 YさんのAIがないと遊べない状態なので、 配布するなら一緒に配布しないと意味無いんですけど、 Yさんはその辺どうなんでしょう? あと、いまさらですが、YさんのAIはともかくGUIはなんというかショボイから あんまり派手にやるのはちょっと気が引けるというか。 アップローダに上げて2chで宣伝するくらいでいいのかなとも思ったり。 ところでYさんの9路AIはパスしたり投了したりしますか? このまえ、GUIで打ってたら不正終了してしまったので、 ひょっとしたらパスか投了したのかなと思いました。 配布に関しては自由にして下さって構いません。 >ところでYさんの9路AIはパスしたり投了したりしますか? バグが無ければ、AIはパスや投了はしないはずです。 >>511 多分YさんのはGUIは暫定的に作ってるだけだと思うので そこはいいんじゃないでしょうか。あくまでAIを確認するためのGUIだと思うので。 それと2chで宣伝するよりはVectorの方が地味でリスク少ないので 安心してくださいw あと折角Yさんが待ち時間の割合?(10%・・・15%・・・みたいなの)をアウトプットしてくれてるので 447さんのGUIの方でそれを表示してもらえると使ってる人が時間がどれくらいなのか わかりやすくて良いです。棒グラフみたいなのでもいいですが。 あと個人的ボタンはAI選択の下の方が良いかも。 いまだと右のAIを選択してnew gameボタンが左上なので 流れとしてどうかと。 それならボタン群はAI選択の下にあった方がいいかなと。 でそのボタンの下にCPUの思考時間バーみたいなのを表示というのが 一番わかりやすいかも。 あとコマンドプロンプトは非表示になったらいいかもGUIの画面だけ立ち上がるのが理想かな。 まぁこれらは個人的な感想なので無理ならいいですよ。 それで配布するとなると 1.ソフトを完成させる 2.HPを作る(1ページとかの簡単なので可、ただし連絡先のアドはつける) 3.ベクターに公開し、HPからリンクを貼る と言った流れですね。2は雑誌掲載などの依頼が来るかも知れないので (出来がよければ商品化とかも依頼は来る可能性はあります。なかなか実現は難しいですけどねw) 2.3.はこちらでやってもいいですが折角作ったのですからYさんや447さんで管理されたら 良いのかなと。雑誌掲載依頼とかベクターでのDL数のメールとか来ると作った人だと ちょっと嬉しいもんだと思いますよ。 追記>>514 ×個人的ボタンは → ○個人的にはボタンは >>513-515 Yさんのユーザインターフェースは普通CUIと呼ばれるものでGUIではないです。 この場合、しょぼいGUIといってるのはIrenseiGUI.exeのことです。 Vectorで配布されてるような囲碁関連のソフトと比べると明らかに見劣りするというか。 とりあえず、まだ完成までにはやることがあるし、ベクターで配布できるぐらいのものができたらそのとき考えましょう。 思考時間の表示やレイアウトの変更などはやってみます。 一応、出来るだけ多くの人に遊んで欲しいとは思っているので、がんばります。 がんばれ〜応援してるよ ちなみに俺のPC(セレロン北森2G)で一手に30秒くらいかかりますw 難易度と言うか時間設定みたいなのがあればうれしいかも >>516 そうですね。確かに言われてみればCUIですね。 ただVectorでも個人が作ってるのはGUIそんなにすごくないのもありますよ。 あとGUIは結構すぐにぱっと見は良く出来ますし。 >>517 一手あたりの検索数を減らせばその分早くなるみたいですよ。 ただ今のAIの10分の1の検索数にした場合にどんな強さになるのかは Yさんだけしかわからないですが。 >>517 わかりました 時間等を自分で設定できるようにしておきます >>519 時間というよりは検索回数でいいかも。 5000回(弱い)・10000回(普通)・20000回(強い)みたいに。 回数は表示しなくて、弱い・普通・強いから選択みたいな。 もちろん激弱・最強とかも入れて5段階とか10段階とかにしてもいいと思う。 思ったんですけど、GTP対応のAIなら私がGUI作らなくても、 すでに囲碁用の良いクライアントがたくさんあるんですよね。 クライアントが囲連星のルールを理解していたほうがいいことはいいんですけど、必須ではないし。 なんかGUIは作らなくてもいいような気がしてきましたw。 あ〜でも、囲連星を知らない人がプレーするときはやっぱりクライアントがルール知らなきゃだめかな。 それに長連とか7連が出来るときの自殺手とかあるし。 Yさんにお願いがあるんですが、思考時間の%の表示なんですけど一回%を表示するたびに改行しれくれませんか。 改行がないとRuby側で上手く情報を取得できないのです。 改行が無いと100%になるまで何も取得できないで、100%になってから全ての%がドバッと出てくるという感じです。 IO.flushとかも試してみたのですが駄目でした。 >>東陶基さん 始めは直接探索回数を指定してもらって 強い、普通、弱いの区別はしないつもりです 細かい事はAIがもうちょいマシになってから考えようと思います >>521 9路の方では440さんのコードを使わせてもらってます これがXORSHIFTですよね?多分 >>447 さん わかりました。%の表示は変更しておきます >>525 そうですね。まだそういう細かい調整をする段階ではないですよね。 逆に回数指定であればGUIの方から呼べそうですしね。 例)GUIの方で弱いを選べばAIに回数5000回というパラメータを送って実行 強いを選べば20000回をパラメータとして実行 みたいな方が融通は利きそうですね。 ちなみにそういうイン・アウトの標準を考えた場合に ・GUI→AI (探索回数・ユーザーの打った手) ・AI→GUI (AIの打った手・探索の%) ってところですかね? あと今だと打った手の正当性はどっちで判断してるんでしょうかね? 自殺手やすでに石がある場所への手のチェックなどです。 あと勝敗の判断はどうなんだろう。 まぁ今の状態でも普通にプレイ出来てるので両方でやってる事はあっても 両方ともやってないという事はないので問題はなさそうですけど。 9路はかなり良いと思う。 小さい画面でも遊べるから携帯やDSでもいける。 ルールも19路よりわかりやすいしパズル性も高い。 コンピュータゲームとしては19路より上では。 42 :デフォルトの名無しさん:2007/11/11(日) 19:11:45 unsigned long xor32(){ static unsigned long y=2463534242; y?=(y<<13);y=(y>>17 );return (y?=(y<<5));} unsigned long long xor64(){ static unsigned long long x=88172645463325252LL; x?=(x<<13);x?=(x>>7 );return(x?=(x<<17));} unsigned long xor96(){ static unsigned long x=123456789,y=362436069,z=521288629;unsigned long t; t=(x?(x<<20))?(y?(y>>11 ))?(z?(z<<27))?(w?(w>>6 ));x=y;y=z;z=w;return(w=t);} unsigned long xor128(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123;unsigned long t; t=(x?(x<<11));x=y;y=z;z=w;return(w=(w?(w>>19 ))?(t?(t>>8 )));} unsigned long xor160(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123,v=5783321;unsigned long t; t=(x?(x>>7 ));x=y;y=z;z=w;w=v;return v=(v?(v>>6 ))?(t?(t>>13 ));} unsigned long xor192(){ static unsigned long x=123456789,y=362436069,z=521288629,w=88675123,v=5783321,d=6615241;unsigned long t; t=(x?(x>>2 ));x=y;y=z;z=w;w=v;v=(v?(v<<4))?(t?(t<<1));return(d+=362437)+v;} こんな具合か 43 :42:2007/11/11(日) 19:16:33 コピペ丸張りで色々とおかしくなってることに気付く。 後悔はしていない。 レイアウトを変えて、試験的に思考時間の表示の機能を追加してみました。 http://www-2ch.net:8080/up/download/1206886383510742.oHUDOP コマンドプロンプトも非表示にしてみたんですが、 IO.popenでAIを起動するとコマンドプロンプトが開いてしまいます。 これを開かないように出来るかどうかはまだわかってません。 >>529 XORSHIFTにも色々種類があるのですね。 精度が上がると速度が多少落ちるってことなのかな。 早速xor32を使わせてもらいます。 ^が?に文字化けしてしまっているようですね。 あと、%の表示と、探索回数を修正したのでアップロードしました。 think.txtというファイルにシミュレーション回数を書いてください。 ファイルが見つからない場合、125000回になります。 http://www-2ch.net:8080/up/download/1206886440149113.n4OO2x >>531 のAIに対応しました。 以下のファイルと>>530 と>>531 のを同じフォルダにおいてください。 http://www-2ch.net:8080/up/download/1206956556178240.q9fczr あと、Vectorの囲碁関連のソフト見てみましたが、 確かに個人で作ってるものは、そんなにすごくないのもありますね。 あんまりビビら無くてもいいのかもしれませんね。 >>447 です。 YさんのAIはプレイヤー側のパスに対応してますでしょうか。 ルール上はパスできることになっているので、対応よろしくお願いします。 あと、コマンドプロンプトを出さなくする件ですが、プログラム板のRuby初心者スレッドで教えていただきました。 Cygwinのrun.exeを使うか、AIをGUIモードでコンパイルするとOKとのことです。 Cygwinのrun.exeで上手くいくことは確認しました。 AIをGUIモードでコンパイルするというのは簡単なのでしょうか? もし簡単であれば、GUIモードでのコンパイルをお願いします。 面倒な作業が必要であればrun.exeを使いたいと思いますが、run.exeって再配布可能なんですよね? >>533 別にパスに関してはGUIからパスボタンを外すとかでいいですよ。 あえてAIの方まで修正して対応する必要はないので。 ルールを全部踏まえなくても支障がないものはソフトからは外して良いと思ってます。 テニスゲームでラケットが壊れて予備のラケットを用意とかしなくても良いのと 同じ感覚だと思ってもらえれば。 多分19路のソフトもパスには対応してないと思います。 どちらも簡単に対応できそうなので、 出来次第アップロードします。 >>536 のパスに対応しました。 http://www-2ch.net:8080/up/download/1207136247505268.KzM9Nb あと、ちょっと気になったんですけど、もしかしてYさんのAIはこちらが同じ手をうてば、AIも毎回同じ手を打ちます? コマンドプロンプト消えましたねw もうこれくらいであればバグ取りしたら十分公開して大丈夫なんじゃないかと思います。 あとはソフトの名前でも考えてください。 さっき探索回数を変更して試してみましたが折角なら447さんの方のGUIでコンボボックスとかで 弱い・普通・強いって感じで探索回数を投げれれば良いんですが、今テキストから読んでるから GUIで対局時にそのファイルを書き換えてAIを起動するようにすればいいんでしょうかね。 ただとりあえず1.00バージョンは今のままでバグ取りとファイル名やソフト名を整理して readmeつければ良いと思います。 ちょっと気になったのは 途中で終了するとプロセスは残っててCPUを使用し続けた状態になってる気が しなくもないです。 どうすれば良いのかはわからないですが、ウィンドウ終了時とかのイベントで AIを終了させないといけないのかな。 見当違いだったら忘れてください。 そうなんですよね。AIのプロセスが生き残ってしまうんです。 そのAIを終了させる方法なんですが、popenで開いたプロセスを単にcloseすればいいのかと思ったんですが そうすると「問題が発生したため、irensei_9.exeを終了します。ご不便をおかけして申し訳ありません。」 と言うダイアログが出てきてしまいます。 あとゲーム途中でnew gameを押してもおかしくなるようです。 まだまだ完成は遠いです。 強い、普通、弱いを選択するためにGUIを変更するのは 面倒だと思うので、適切な探索回数を設定した3つのAIを ai_strong, ai_normal, ai_weak のようにしてGUIと一緒に配布するのが楽で良いんじゃないかと 思いますがどうでしょうか。 あと、 Process.kill("KILL", @io.pid) のようにすると、問題無くAIを終了できるようでした。 ただ、Rubyのことはほとんどわからないので、 不適切な方法だったりするかもしれません。 AIが少し強くなったのでアップロードしました http://www-2ch.net:8080/up/download/1207232550803324.V4Pg4d 良かったら試してみて下さい。 Yさんありがとうございます。 AIを正常終了させるようにしました。 http://www-2ch.net:8080/up/download/1207307640752402.86SDGQ ただし、まだ完璧では無い可能性もあるのでしばらくの間、 皆さんでいろいろ動かしてみてください。 もしAIが不正終了しましたら、報告お願いします。 すいませんが、ご協力お願いします。 一応GUI本体のソースも付けときます。 あと、>>518 で簡単にぱっと見は良く出来るということですが、どうすればいいですか。 盤や石に画像を使うとかでしょうか。 >>545 そうですね。背景やボタンに画像でもいいですし、 盤と背景の色の組み合わせを変えるとかでもいいと思います。 ただ石や盤に画像はどうなんでしょうね。そこは普通の色で良いと思いますが やってみないとわからないですね。 ただデザインは人それぞれだと思うので簡単と言うのは語弊があったかも知れません。 あと>>544 でアップロードファイルを開けませんでしたと言うエラーになって DL出来ないかも。 ルール部分だけCのヘッダで提供してくれる神はいないものか? >>548 AIを作るつもりなら強いAIを作るのはルール部分を作るよりもずっと大変なのであんまり意味無いかも。 それとも別の用途? ルール部分に限らずAI以外の部分を考えなくても良いようなGUIというかツールが 理想だとは思いますが、今の段階ならルール部分だけ切り離して共有すると言うのも ありなのかなと言う気はします。 まぁ447さんがAIのdllなりexeなりがあれば読み込めるGUIを作ってくれる日が来ることを 願ってと言うことでw ルールだけなら共有してもあんまり面白く無いけど、 詰み、必勝形、シチョウとかのルーチンとかをみんなで持ち寄って 強いAIを作っていくというなら面白そうな気はします。 447さん ルールをきちんと間違いなく作るのが大変です 最終的には誰が作ってもルールは同じになるので熟練者が作成してくれると便利です C++でテンプレート(STLとか)使っていいなら書いてみるけど、正直Cはあんまり好きじゃないのでCは勘弁してください。 RubyとかになれちゃうとCでリンクリストとか自分で実装するのしんどいですw。 へたれですいません。 単に動くものを作るなら一応作れるんですけど、 どうせならみんなで改良、拡張しやすく、かつみんなで手を入れても壊れにくい、 かつコンパクトで直行性のある、それでいて実行速度は速い、そんなコードがいいですよね。 (わかったようなことを言ってみる。) どうすればそんなコードになりますかね? Yさんや他の人にもご意見いただきたいです。 たとえば平凡な碁盤クラスがあって、それを使ったAIがあったとしますよね。 そのAIはメモリを馬鹿食いして困っているとします。 で、他の人がビット演算を駆使したメモリ使用量の少ない碁盤クラスを作成して そのAIの碁盤クラスを差し替えたらメモリ使用量が下がってめでたしめでたし。 のようなストーリーを可能な限り少ない労力で達成できないものかとか、考えています。 内部のデータ構造は気にせずに、(x,y)に石が置けるかどうかと、置いたら詰みかどうかを判定すればいいんではないでしょうか? より速く判定できるっていう人が、初めのプログラムの入出力と同じ値を返却すれば良いと思います データ構造とアルゴリズムを分離するというとテンプレートを使ったり抽象クラスを使ったり するんでしょうが、抽象クラスを使うと仮想関数呼び出しになってスピードダウンするんですよね。 テンプレートはスピードダウンしないけど、複雑怪奇になって手に負えなくなるという印象が。 まあ、これは私のスキルの問題でしょうけど。 この2つ以外で上手い方法ってありますかね。 いまのところテンプレートを駆使して頑張ってみようかと考えています。 将棋でもオセロでもルールを取り替えたら同じ思考ルーチンで動くようにするって事ですか? 囲連星だけなら 例えばboardというクラスを作って、hantei(x,y)で石が置けるかと詰みかを整数で返却すればいいのでは? さすがに将棋やオセロまでやるつもりは無いです。囲連星だけを考えています。 問題なのはboardクラスの実装をひとつに限定するのではなく、2つ3つとあったときに (たとえば、スピードは速いけどメモリを食う実装とスピードは遅いけどメモリは少ない実装とか。) いかに他のプログラムに変更を強いることなく差し替えられるようにするかってことです。 たとえばboardクラスの実装が Board1,Board2,Board3とあったとして、 #define Board Board1 とかやってこのdefineを変更することで差し替えるのもひとつの手ですが、 なんとなくかっこ悪いというかもっと上手い方法がありそうな気がしてるのです。 あと、データのほうの差し替えだけでなくアルゴリズムの差し替えも 他の部分をなるべく変更することなく出来るといいです。 Boardクラスが定義されているヘッダファイルを取り替えるだけでは? 後続の開発者は先人のの入出力と同じにすればクラス内でどんな処理していても関係ないですが ヘッダファイルを取り替えるというのは実装を差し替えるたびにファイルをリネームするということですか。 なんとなく気持ち悪いですがそれが最善の解決策ならばしかたないですね。 もっといい案知っているという人はいませんでしょうか。 詳しくは読んでないですが 折角なのでとりあえずAI以外の部分のソースをどこかに公開するようにしますか? 適当にHP作ってファイルのDLやソースの公開をする程度で良いと思いますが。 それがあれば具体的にあそこがどうだ、ここがどうだと話しやすいと思うのですが。 すいません。まだコードは一行も書いてませんw。 最終的にはどこかに公開するようにしたいと思いますが。 コードを書く以前の基本設計で迷ってしまったので質問しました。 >>567 とりあえずrubyのソースでも良いと思いますよ。 言語でどうこうという問題はそんなにないと思いますし、 逆にrubyの方がわかる人もいると思うので とりあえず出来てるソースを公開するので良いのでは。 それとは別に概要みたいな説明があるといいですね。 いや、そうではなくて。 とりあえず動くものを出すというならそんなに難しくないんですが、 せっかくならもうちょっと先を見据えたものを作りたいなと思いまして。 あんまり悩んでもしょうがないのでぼちぼちコーディング開始します。 ご意見は随時受付中。 あ、いっときますけど結構時間かかるとおもうので気長に待っててください。 >>569 あ、すいません。 447さんだと思ってレスしてました。 >>571 はい、気長に待ってます。 何か必要な情報がありましたら気軽に聞いてください。 誰かが知ってるかもしれませんw >>565 違うヘッダを使う毎に別のフォルダを作ればいい。 *nix ならそのヘッダをシンボリックリンクにすればファイル名も同じでいい。 極端にスマートというわけでもないが、キモチ悪いというほどでもないと思うよ。 高速なやつ出来れば当分変更しないとおもうんですけど >>570 連の情報はBoardクラスの中に含めるんですか? >>543 >>544 あたりのAIを利用したいのですが、 すでに消えてしまっているようです だれかお持ちではないでしょうか また、囲連星協会の方でアップローダーをご用意いただけると嬉しいです >>572 >>569 =>>447 です。 IDを見ていただければわかると思います。 話がかみ合って無いですか? >>573 了解です。 >>574 当分変更しないかもしれませんが、誰かにいいアイディアが沸いて変更したくなったときに、 そのための作業が面倒くさいとその人は諦めてしまうかもしれません。 そうするといいアイディアが人知れず死んでいくことになります。 それはたった一回のことでも大きな損失になるかもしれません。(大げさ?) とにかく下げれるハードルはなるべく下げておくほうが後々いいことあると思います。 >>575 今のところ連の情報はBoardクラスには含めないつもりです。 一つ一つのクラスはなるべく必要最小限の機能しか持たせなくして、独立して扱えるようにするつもりです。 そのほうが取り回しがよいと思うので。 一応以下のような構想です。 Point 座標を表すクラス。 Board 局面を表すクラス。9x9のマスのどこにどの石がおかれているか、劫の情報、手番の情報を持つ。 PointSet 座標の集合のクラス。 StoneSet 連のクラス。連に含まれる石の座標の集合とその連の隣接点の座標の集合の情報をもつ。 Game ゲームを管理するクラス。囲連星のルールに従って着手したり、勝敗の判定をする。 もし連の情報とBoardの情報を持ったクラスを作りたければ BoardとStoneSetを使ってそれらをもった新しいクラスを作ることは可能です。 >>578 ありがとうございます でもエラーで起動できませんでした なにかライブラリとか必要ですか? アップローダーはどうなるかわかりませんが とりあえず公式HPとは別に囲連星のAIコミュニティサイトみたいなのを作りましょうか。 そこにこのスレでUPしてもらったファイルをそのサイトからDL出来るようにすればいいかなと。 >>579 ライブラリは必要じゃないと思いますが、 447さんが作ったGUIが無いと動かないです。 >>581 >>469 からGUIを落として同じフォルダに入れて起動しましたがAIが出てきません 特別な操作が必要ですか? 447です。 GUIを再アップしました。 http://www-2ch.net:8080/up/download/1208573058915527.9QsKxs このファイルとYさんのAIを同じフォルダに入れて、IrenseiGUI.exeを実行してください。 それにしてもファイルが流れるのはやいですね… 2chロダは3日ぐらいしかもたないので こういうファイルのやりとりにはあまり良くないんじゃないですか? 以前使ってたうpろだ.orgか 会長さんが新しく用意してくださるコミュニティサイトの方が たぶんいいでしょうね 一応暫定的に作りました。 http://ai.irensei.com/ 今度から保存しておいた方がよさそうなファイルをUPした場合は その旨をレスに書いておいてください。 >>583 ありがとうございます 無事起動できました 9路盤だと狭いのでだいぶ感覚が変わりますね 囲連星というより囲碁みたいです あと、9路囲連星のルールについて質問なのですが、 1線で7連を作った場合は勝ちにならないのでしょうか? それでも本家と違って、1線の石を含む7連はOKなのですよね? そのへんのルールの細かい部分が良く分かりませんでした・・・ >>587 含むのはOK。9路は単純に1線のみの7連だけがダメと理解すればOK。 447さん、初めから9*9しかやらないつもりなんですか? >>589 初めは19路のAI作ってたんですけど、あんまり強くならなかったです。>>383 参照。 で、9路なら19路より簡単に強いAIが作れるだろうと思ったんですけど、 意外にそうでもない。もしかしたら同じくらい難しいかもしれません。 あとは詰め囲連星のソフトなんか作れるとおもしろいかなと思っていますが、 それはもしやるとしても当分先ですね。(たぶんやらない。) 19路のルールなら本家のソースがあるのでそちらを使うといいと思います。 >>593 使い方が難しいんです…どれがルールなのか判らないです 9でも19でもその他でも統一的なのが良いです ルールのアルゴリズムわかりました ホームページのAuto対戦のソースがわかりやすいです ありがとう 会長が歯が立たないAI作れば10万出るんでよね? 2006/11となってますけど… >>597 はい、歯が立たない(先手で10回打って1回も勝てないくらい)レベルで10万と思ってます。 会長自身で判断できるのはそこまでの強さなので。 ただCPUの思考時間だけ注意してください。一手に何十秒も考えるようだとフリーソフトに 組み込めないので。要するに強いAIに賞金を出すと言うよりはフリーソフトに組み込める AIに支払うというスタンスだと思ってください。 PCで強くて速いやつ作れたら、携帯で月額100円とかで販売できないかな? >>598 わかりました。19*19でも1手1秒以内に人間相手に圧勝できるのを目標にします。 599を送信したらレスついてました。 >>599 販売そのものは出来ると思いますよ。 実際DL形式での販売なら何度かそういう話もありましたが フリーソフトで公開してるのでほぼ同じものを販売するのは気が引けたので やめてます。 作られた方(GUIも含めて作った場合)が売りたいと言うことであれば日本囲連星協会としては気にしないので どうぞ販売してください。ただぼったくりとか法外な価格で詐欺まがいに売るのは辞めてね。 一応商標も取ってますが囲連星の名前はどうぞ自由に使ってください。 いえいえそんな気はないです 携帯の販売や開発経験ないしそういう話がくる事もないので… 例えばそういう展開もあるかなと思っただけです 一応ルールのコーディングは終わりました。 これからテストです。 今後の事を考えるとやっつけのテストじゃなくて、 使いまわしの利くテストを書いたほうがいいんですよね… 囲連星もちゃんと産業になれば面白いんでしょうけどね。 なにをやるにも会長の持ち出しってワケにも行かないだろうし。 4/27(Sun)の19:00にオンライン対局場で 臨時の定例会を開きますので参加できる方はよろしくお願いします。 http://dojo.irensei.com/ ただ臨時でいきなり告知をしたので 何人くらい参加してくれるのかはわからないです。 >>603 一応HPにアドセンス貼ってみたので持ち出しのたしにでもなればと。 興味がある広告がありましたら見てください。 そうですね今後のことを考えたら19路みたくAIだけ作ればGUIは使いまわせるように なると新しく開発する人は楽でしょうね。 そういう意味ではテストは基本的なバグ取りだけでもとりあえずはいい気がしますけどね。 こっちでも打ってみますので447さんが軽くテストしてもらえば残りはみんなで 使ってテストにするという形式でも良いと思いますよ。 短手数で決着するなら、黒が有利だけど 盤面がかなり埋まるような段階になれば白が断然有利だね 黒は端の2つを含むものは作れないし、8連も作れないけど 白は端も含められるから 19*19の盤面の端の2行と2列は、7連にカウントしないルールがある しかし、黒は端を含めて8連作ると反則負け 9路のルールのソースを一旦アップします。 http://www-2ch.net:8080/up/download/1209126828686063.wHdBWa すいません。 あんまりテストしてません。とりあえず動かしてみてください。 バグがあったら報告or可能ならソースを修正お願いします。 Mainというディレクトリにmakefileが入ってますのでmakeしてください。 makefileのことはあんまり知らないので出来がよくないかも しれませんが誰か書き直してくれるとありがたいです。 拡張性がどうのこうのといいましたが、 特別な仕掛けなどは何も無いです。 あと、doxygenのコメント入れてみました。 htmlというディレクトリにDoxygenのドキュメントが入ってるので見てみてください。 わかりずらいところがあったら報告お願いします。 19路を開発している者ですが、石がいくつつながっているか調べるのに 縦横斜めの列をビットとして登録して表引きするのと、その都度数えるのではどちらが良いんでしょうか? 前者は局面の更新に手間がかかりますが、石が何処でつながっているか直ぐに調べられます。 >>610 ですが、縦横斜めをビット列で記録するのは、やめました。 黒の、縦横斜めの石の個数を記録しておき、8個以上になった場合だけ合法手なのか精密検査します。 そういえば折角なので九路のやつ完成させませんか? 折角ちゃんと動いているので。 今動かしてみたらちょっと直した方がいいかなと思ったところはファイル名を直しただけでOKでした。 ・irenseiGUI.exeだとなんなのでirensei.exeにならないかな→ファイル名直しても正常に動いた ・ai_Yというのはいかがなものか?→ファイル名をAIに変更したら表示も変わった 上の二つが出来たのでそのままVectorに公開してしまおうと思いますがどうでしょうか? AIの表示名はもっといいのがあれば教えてください。 AI(Y氏考案)とかでもいいですし 訂正。 2番目の変更は出来なかったです 表示は変わりますが対局になったら落ちた 九路じゃ勝負つかんだろと思いましたが やってみると最初から終盤戦みたいな感じで難しいですね>< >>615 ai_Y.rbのファイル名を変える場合にはai_Y.rbの5行目の module Ai_Y のところをファイル名にあわせてください。 ファイル名はaiで始まる必要があり、 moduleのところはAiで始まる必要があります。 モジュール名に日本語は使えないので、(Y氏考案)は現状、無理です。 >>617 ありがとうございました。 とりあえず普通に動いてますので ちょっとテストしてベクターとかに上げてみましょうかね。 特に誰かやってみたい人(プログラムの管理など)がいなければ こちらで登録はしますがどうですかね。 >>618 そうですね。 よろしくお願いします。 Yさんの同意も>>512 で取れてますし。 >>620 昨日くらいから公開されてますね。 先週くらいに登録の申し込みをしたんですがベクターはそこそこ公開まで時間かかるんですよね。 このスレの皆さんのおかげで無事公開することが出来ました。 これからも宜しくお願いします。 19路の囲連星でネット対戦するためのDLLを作っていて, 家ではうまく動くようになったので, 実際にネットワーク越しに試してみたいので, 誰か協力してくれませんか? 参考までに,ローカルで動かしたときの動画です. http://f58.aaa.livedoor.jp/ ~protest/irensei.mp4 >>622 これは・・・凄すぎですねw 自分も協力出来ますので必要な時は声掛けてください。 >>622 そのDLLどこにうpされてるの? 早くやってみたいんだが DLLをアップロードしました. DLパスはirenseiです. http://www-2ch.net:8080/up/download/1215785494532021.anWBg5 ここに少しですが説明を書きました. http://f58.aaa.livedoor.jp/ ~protest/tut.htm 今日起きている間は囲連星を立ち上げて待ってますんで, もし試してくれるなら, 囲連星の新規対局ボタンを押して ・黒番にenemy(client) ・白番にplayer(client) をそれぞれ選択して,出てきたプロンプトに, ・アドレス:219.116.88.30 ・ポート:12346 を入力してください. 負けた〜 どなたか存じませんが,ありがとうございました. 本日は終了します. クライアント側が接続に失敗した場合に, ”接続に失敗しました”というエラーメッセージを 表示するようにしました. http://www.dotup.org/uploda/www.dotup.org2456.zip.html 遅かった・・・ 対局できなかったから的違いかもしれないけど疑問点を 1、IPを告知するのは必須? 2、黒番、白番を自分と相手を指定するのは必須? 3、名前とかチャットとか可能? 1は要するにIPを告知しなくても対局できるようになれば便利かなと ただ昔からこういう通信の対戦のゲームありますがハンゲームとかみたいなサイト型でなく この類の対戦だと実際は告知する必要ありそうなんですよね・・・ 2は黒が敵とか白が敵とか指定しないといけない場合は自分がサーバーになるか クライアントになるか以外にも分岐というか選択肢が出て来てわかりづらいかなと 多分この類の問題は一台サーバーとして常時立ち上げていてそこに必ず接続しに行って そこから登録しているメンバーを表示して選択するとその相手のマシンのIPとやり取りする という形になれば一番自然なんでしょうけど常時接続のサーバーとそこでのプログラムが 必要ってことになりますからやっぱり大変かな。 そのあたりはYさんも既に分かっていての一番シンプルなこの方法でやってるんだと思いますが。 まぁ折角なので通信対戦したくなったらとりあえず気軽にすぐ出来るようになると 楽しそうですよね。今のままでも掲示板とかにIPとポートを書き込むとかでOKなのかも 知れないですが。 いつもすばらしいプログラムありがとうございます。>Yさん 囲連星のホームページで使っているサーバーでは駄目ですか? 参考に 将棋の対戦サーバ unofficial shogi server for computer programs http://wdoor.c.u-tokyo.ac.jp/shogi/ LAN内以外で対戦する場合は、サーバー側だけがポート開放すればいいんですか? クライアント側は開けなくてもいいのでしょうか? 利便性との兼ね合いもあるのでわかりませんが、 今みたいにP2Pで対戦できるのは好きですね 運営サーバーが無くなってもプログラムは生き続けますから あ、気になった点は、投了できないことですかね 囲連星を終了すれば投了扱いになりますが 棋譜を保存したりしたいですので Winnyはサーバないのに、相手と自動で接続しますね 今思ったんですけど、WinnyなどのP2Pネットワーク網を利用できないですか? 現在、囲連星のオンラインやっている人が少ないので、 自動で接続しようとすると相手を発見することが困難と思います。 そこで既存のネットワーク網を利用して相手が参加したら直ぐ発見できるようにするんです。 別に対戦相手を見つけるだけだったら、 フリーのFTP鯖かなんかに自分のIPアドレス&ポート&黒番or白番をテキストで上げるだけでいいよ システムが対戦要求開始時にアップロードして、 対戦開始時に削除すればいいだけ 対戦相手はサーバーからランダムに拾ってくればいいかな? Winnyのネットワークとかプロトコルを把握してないと無理だし、 弾かれる可能性もあるし、何より大袈裟すぎね? >>632 普通のレンタルサーバーですがそれで可能なのであればこちらは大丈夫です 基本的に>>637 さんの3行目4行目の意見と同じ考えです。 Winnyとか既存のネットワーク網とかは自分にはどうなるのか理解できてないので 賛成反対は出来ないですが簡単に相手が見つかるというところがポイントだと思ってます。 そういう意味では>>638 さんの意見のように簡易的にHPの方でサーバーリストを 作るのもありかと思ってます。PHPが使えるのでそれでリアルタイムに表示できればと。 さらにユーザーに対してイージーにするにはHPの対戦可能サーバーをクリックすると その情報をクライアントの囲連星のソフトに送って、今のコマンドプロンプトでの入力を 省略できればさらにいいかなとは思います。 さらに追記すると、そのパターンでの理想は ・囲連星のソフトを立ち上げる ・自分がサーバーになる→HPのサーバー情報DBに自分のIP、ポートを書き込みに行く ・対局相手が見つかる→DBに対局中のフラグを立てる ・対局終わる→DBに対戦相手募集のフラグを立てる ・公開されてるサーバーを探す→ソフトの方でDBからサーバー情報リストを取得し表示する ・対局したいサーバーをクリック→DBの対局相手のサーバー情報に対局中フラグを立てる ・・・・ みたいな感じが理想ですが最初は単にHPに対局可能サーバーのリスト表示(手動) だけでいいのかなとは思います。 ゴメン。良く考えたらサーバー今年移転してPHP使えなかった。 CGIとrubyは使えるからDBへの書き込み、表示くらいならすぐ出来るかも知れないけど 会長のプログラム能力からしてちょっと保証は出来ないです。 >>629 1.今のところ必須です. >>637 さんが書いてあるような方法をとれば 自動で相手を探して対戦することは可能だと思います. 2.今のところは必須です. 3.今は不可能ですが,つけようと思えば つけられると思います. >>634 はい,サーバー側がポートを開放するだけで 大丈夫です. >>636 投了はこれから搭載予定です. CUIにTORYOと入力するという方法で考えています. >>637 >>638 や>>640 のような方法が簡単だと思うので, そちらの方法で考えてます. 今のところは, ・投了 ・白黒はランダムで決める ・サーバーから対戦相手を勝手に探してくる ・チャット ・レーティングとか の機能をつけたいと思っています. >>642 参考にしたいけど難しいですね. 少なくとも始めは簡単に>>640 のような仕組みでやろうと思います. 一応さっきまでperlでファイルの読み書きをしてIP公開みたいなのを作ってたのですが Yさんの>>643 の方法がベターですね。 ちなみにサーバーってどうしようと思ってますか? 一旦情報を集めるサーバー(※1)を使ったとしても対局するときは対局者A、Bどちらかが サーバーになってポート開放とかをしないといけない感じですか(ユーザー手動で)? ※1のから対局者Aのマシンのポートをどうこうとなるとファイアウォールの関係とかもあるので まだ色々考えないといけないこととかもあるんでしょうかね。 個人的には新規対局を押すとAIを選択するところで先手、後手とも「ネット対局」みたいのを 選択するとそれだけでもう対局OKみたいなのが良いとは思いますが。 とりあえず今の段階で出来る一番簡単な方法は 公式HPに掲示板を立てるなりスレを立てるなりしてそこに対局したい人が IP、ポートを書き込む方法ですね。 ちなみにサーバーになる方法って今現在どうすればいいんでしょうか? Yさんがサーバーになってくれてた間はIPとポートを聞いて対局できるような感じですが 自分がサーバーになることって簡単ですか? 特にルータが入ってる環境でも簡単になれるのかな? 色々書きましたが自分にはちょっと細かいところはわからないので Yさんが良い(もしくは簡単)と思う方法で進めてください。 囲連星のサーバーがポート固定で公開してれば そこへつなぐだけではないですか? >>649 自分はあんまり理解できてないのかもしれませんが 公開マシン情報を管理するサーバー(A)、対局者でサーバーとなるPC(B)、 対局者でクライアントになるPC(C)の3台が必要なのかなと理解してます。 対局者が増えればBとCのPCはどんどん増えていき、B'、C'、B''、C''・・・・ それらの情報をAのPCで管理するというイメージですね。違ってるかも知れませんが。 で、AのPCの役割を掲示板などで単にB、B'、の情報を公開するだけにするか それともAのPCがある程度頑張ってBとCの対局サポートを自動でするかというあたりが ポイントになってきてるような気がします。 後者のようにBとCとの対局を自動にするような機能はHPを公開しているような レンタルサーバーだとどこまで出来るかは微妙な感じですね。 あとはAというPCはなくしてB,CのPCだけで自動に対局できるようなシステムにするというのも あります。これが出来れば良いのでしょうけどBのIP情報などをCにどうやって自動的に知らせるかが ネックとなりそうな気がします。 >>645 そうですか. IGO棋院では確か自分で白黒決めてましたね. どうするか保留にしときます. >>646 >新規対局を押すとAIを選択するところで先手、後手とも「ネット対局」 自分もそうしたいと思ってます. サーバーは,レンタルサーバーにphpか何かのスクリプトを置いて, そこにIPアドレスとポート番号を登録するつもりです. 他の対局者とマッチングが出来たら,サーバーの方に アクセスして自分のIPアドレスとポート番号を削除してもらうようにするつもりです. >>647 自分はルータ越しですが,ポートマッピングの設定だけで 簡単にサーバーになれました. ↓にある方法でポートを空ければ間違いないと思います ttp://27bit.com/ >>649 問題はそのサーバーのIPアドレスとポートをどうやって 入手するかってことですかね. 文章を間違って理解してたらすみません. >>651 で仰っているGnutellaのような(?)システムは, 主に自分の能力的な理由で実現は難しいと思います. サーバーレスでP2PネットワークでIP情報を管理するのは相当ノード数がないと無理でしょ 本ゲームのネットワークに参加するホストは総台数でもせいぜい数台〜数十台程度と予想する。 サーバレスP2Pでネットワークを構築した場合、ホスト間でネットワーク全体のホスト情報を交換しても問題ない情報量だ。 つまり、ネットワークの構成としては1 対 全ホストとなる 新規参加者がどのようにネットワークに参加するかという点に課題が残るけど スケール感を考えるとWinnyやグヌーテラのようなリレー式ではなく全ホスト接続のスター型のほうが効率が良いのではないか 新規構築ではなく、既存のネットワーク網を利用するんだ。 そこで囲連星のグループでまとまればいい。 隣接のPCが多くあるから見つけやすいはず Winnyネットワークを利用なんて現実的にできるのか? >>656 がプロトタイプのソース書いてみてくれ マッチングの為だけにWinnyクラスタを利用するのは効率が悪くないかな 要するに自分のIPアドレスを書いたテキストファイルを放流して共有するんだろ? ある程度の人数が見込めるならおもしろいけど、数人しか居なければクラスタを構成できるかも怪しい 違うよ。 Winnyは起動せずネットワーク網だけつかうの。 囲連星のグループを作って、試合開始を押したら2台のパソコンをつないで対戦を開始する。 全部DLLが自動でやるようにする。 >>659 だからそのプロトタイプを示してくれ Winnyネットワークを利用してるアプリなんてないだろう エスパーしてみると Winnyで囲連星クラスタを構成して、接続ノード(要するにnetstat -aとかで見える接続相手)に対して 囲連星クライアントからの接続を試行するってことか だいたい仮にも日本囲連星協会公式のソフトが Winnyクラスタを利用するとか心象が悪すぎるだろw そういうのがあるのは知らなかったけど、囲連星の対戦相手探すなんて目的とは全然的外れじゃん サーバーと通信して,相手を探すようにしました. 簡単に↓に説明を書きました. http://f58.aaa.livedoor.jp/ ~protest/irensei_ver0.02.htm サーバーに登録されたIPアドレスとポート番号は ↓のアドレスから見られるので,見られるのが嫌な人は試さない方が良いかも知れません. http://f58.aaa.livedoor.jp/ ~protest/get_server_list.php アップロード先です. http://www-2ch.net:8080/up/download/1216139319408580.xPJyGW >>666 乙かれさまです Addressについてなんですけど、 ユーザーが手動で入力すると間違ったIPアドレスを入力したりして混乱がおきませんか? サーバー側が接続してきたIPアドレス、送られてきたポート番号を記録するほうが 問題が起きにくいような気がするのですが・・・ Yさんありがとうございます。 自分の環境だとデフォルトのIPが自分のマシン127.0.0.1を指してしまいますが サーバーになる場合はIPしらべて入力しないとダメですか? それともルータを挟んでるからこうなるとか? (でもルータ入れてたら192.168.・・・ってなりそうですね) とりあえずしばらくサーバーにならないで繋いでます。 サーバーになれるかたいたらどうぞ。 ※気付かないかもしれないけど。音とか出るのかな? どなたか分かりませんが対局ありがとうございました。 対戦出来ますね。テスト的に公開してみようかな。 人が多い方が対戦しやすいだろうし。 >>667 自分のPCで動作を試すときにはアドレスを指定できた方が 便利なんですよね. なので,通信の部分がある程度出来るまでは アドレスも指定するようにしておきたいと思います. >>668 囲連星の本体を二つ起動してテストするときに127.0.0.1を 指定していたのですが,入力の手間を省くために 初期状態では127.0.0.1を表示するようにしてました. サーバーになるためには,今はIPアドレスを調べてもらう 必要があります. 後々はポート番号だけで良いようにする予定です. ゲームが開始したときには,音を出したりメッセージを 表示したいと思うのですが,あまり良い方法が思いつかずに 放置していました. とりあえず次はゲームが始まったら何かしら知らせるようにします. そうですね。ユーザーは極力何もしなくても出来る方がいいですよね。 ポートはやっぱり解放は手動でユーザーがやらないとダメですかね? 確かに他のサイトとかでもポートの解放はユーザーがやってますしね。 出来る人に極力サーバー側になってもらえるようにするしかないですかね。 常時立ち上がっているサーバーがあればポート開放いらないのではないですか >>671 現状では,というかおそらくずっとポート開放は 手動になると思います. >>672 確かに,一手ごとにサーバーを中継するようにすれば ポートを開放する必要は無くなると思います. ですが,今はレンタルサーバーを借りているので多分その方法は 難しいんじゃないかと思います. もし開発が順調に進んだら,上記のような形態にして, 昔中途半端に作ってたiアプリをネット対応にして, PCと携帯が混在してネット対戦出来るようにしたい,という妄想をした. >>673 と言う事はポート開放が簡単に出来る人は極力そうしうてもらうように readme.txtとかに書いておいた方がいいですね。 テスト的にYさんが次のをUPしてくれたくらいからHPでも公開してみようかなと。 多分ここでだけだと対局者数も少ないと思うので。 その場合はwindows版(GUIになってるやつ)だけで良いのかなと思ったりしてますが CUI版って必要ですか? あと接続中(相手探し中)に閉じると固まることがありますがあれってどのあたりが問題なんでしょうね。 >>674 >と言う事はポート開放が簡単に出来る人は極力そうしうてもらうように >readme.txtとかに書いておいた方がいいですね。 そうですね.UPnPを利用すればポートを勝手にあけられるようなので, それがうまくいけばポートを空ける手間が省けるかもしれません. >テスト的にYさんが次のをUPしてくれたくらいからHPでも公開してみようかなと。 >多分ここでだけだと対局者数も少ないと思うので。 あらかじめ連絡取り合ってタイミング合わせないと,対局するのは難しい んじゃないかと思います で,まだ作りかけの状態だと >その場合はwindows版(GUIになってるやつ)だけで良いのかなと思ったりしてますが >CUI版って必要ですか? CUIの方が多分安定してると思います. >あと接続中(相手探し中)に閉じると固まることがありますがあれってどのあたりが問題>なんでしょうね。 う〜ん,ちょっとすぐにはわからないです. >>675 ポートが勝手にあけれるのであれば思いのほか対局が出来るかも知れませんね。 もちろん「かも」というレベルですが、待ち合わせ無しでも夜とかならいけるのではないかと。 まぁ公開はポートが勝手に開けれるのであれば それが出来たタイミングで良いかもしれませんね。 やはり一般ユーザーが自力でポートの開放までとなるとハードルが若干高くなりますしね。 ソフトダウンロードしたらAIの選択のところにネット対戦ってあるから選んでみたって 感じで繋いでもらうのが一番良いかなと。 ネット対戦で人がいなければサーバーのCPUがお相手する これは未公開のやつ 囲連星の本体から読み込まれるDLLで ネットワーク対戦を実現しようとしてたけど, 多少問題というか無理があったと思ったので 新しく作り直すことにしました. >>676 なのでAI選択画面から選ぶような物にしないつもりです. 囲連星本体を改変すればAI選択画面からネットワーク対戦を選択する ようにすることも出来るとは思うんですけど,1から作ったほうが わかりやすいので,今回は全部新しくします. >>678 そうですね。今のソフトはあくまでAIを作りたい人が作業量が少なくAIを作れるって 方向で開発されてるので、ネットワーク対戦がメインの場合は新しく作ったほうが良いかも知れませんね。 そうでなくても他の人の書いたプログラムを理解するより自分で書いたプログラムの方が 見直す時にもすぐに分かりますし。 ルールのところなどは利用できるところもあると思うので使えるところは使ってください。 お久しぶりです。雑用係です。 もしかするとネットが使えなくなるかもしれません。(理由は聞かないでね) まあ、今年一杯は大丈夫ですが…… そこで、Lv2のソースを公開しようと思います。 C++をまともに理解してない人間が作ったので かなり汚いソースですが、需要あります? お久しぶりです。 色々忙しく囲連星活動がなかなか出来ずすいません。 そうですねサンプルのソースがあれば作る方の参考になると思います。 特に雑用係さんのAIは強いので皆さん興味を持たれると思います。 ソースの公開に関しては雑用係さんの持っているHPスペースでもいいですし ネットが使えなくなりそうならこちらで公開してもOKですよ。 ソース公開希望です. あと,囲連星のネット対戦の件ですが,今のところskype APIを利用して 実現しようかと思っています. まだskype APIについて,細かいとこまで調べてないので 実現可能かどうかわかりませんし,今は忙しいので残念ながら 少なくとも1ヶ月は取りかかれませんが,とりあえず現状報告です. お待たせしました。Lv2のソースです。 本当はコメントを修正した物をUPしたかったんですけど 時間がなかったのでそのままです。 http://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0323.zip パス=LEVEL_2 Visual Studio C++ 2005 Express Edition を DLL作成できるようにしたもので作成しました。 質問等があれば分かる範囲で答えますのでどうぞ。 ソースコード頂きました,お忙しい中ありがとうございます. 長さが5以下の連の片側が押さえられている場合 得点が一律1点になっているようですが 長さによって得点を変化させなかったのは何故ですか? >>687 得点に関しては>>225 や>>239 でも書いているように ほとんど何も考えずに決めたので理由はありません。 古いバージョンも調べましたが最初から全部1点になっていたので 試しに設定したものがそのまま残っただけだと思います。 とりあえず何か起きるかも知れないと思って探偵ナイトスクープに投稿してみました。 一度見ず知らずの人が囲連星で対局しているところを見てみたいという依頼をお願いしてみました。 年末にAIコンテスト中級編でもやろうと思ってます。 とりあえずパソコンの速度も速くなってきてるのでYさんのAIを標準に組み込んでも 良いかなと思って。 で、折角なのでAIコンテストも開いて中級を認定しようかなと。 と言うことでAIを作られたかたはHPの方で後日発表しますので 是非応募してください。 雑用係さんがいつネットが使えるようになるかわからないですが 年末までには見てくれたりするかなと。(参加してくれるかはわかりませんが) 先が長すぎるな。11ヶ月も先の話かよ。プログラムかじったことあれば、仕事、学校の片手間にやっても3ヶ月もあればできるだろ。 囲連星はモンテカルロに向いてないね。 理由は、囲碁だと最後まで指してみないと評価値が決定できないが 囲連星は7連つくればいいので最後まで指す必要はない。 評価がしやすい。 てかまだ人いるの? 会長すら顔出さないし、開発するモチベあがらん・・・ 俺と703で二人はいるみたいだな この状況続いたら囲連星消滅するかもわからんね 競争相手いない状況でモチベ上げるのは無理だよなあ ROM でよければ俺もいるが・・・。 女流vsスパコンで将棋板をたまに見るけど、floodgate ってのが、bot メインでレートつける対戦場? bot でも人でも、気軽に対局できるといいね。 floodgateみたいなのができると良いねえ。 会長いないけど、いっそ今このスレ見てる人で 参加者募って大会やってみようか 強力なソフトが出来れば人集まるだろ 大会いぜんにめだまそふとかいはつだ 囲連星標準ヘッダには、ボード上にある石の色を返す関数付いてないな。 追加するのは簡単だけど。 ソースに互換性が無くなるな。 自分のソース読み間違えか? class Game にこれ追加すればいいかな。ボード上の石。 int Get( int x, int y ) { return board->Get( x, y ); } 確かにGameクラスには直接石の色を取得する関数は無いみたいですね. 自分の使いやすいように適当に書き換えれば良いと思います. DLLがAIとして機能するために必須な関数を実装してれば問題ないはずなので. 新しいAI楽しみだなあ,期待してます. 7連が完成しやすいところ、自分の石の周囲に置く だけ考慮して、アルファベータ探索とかすればいいんでは。 指し手は、上の二つでかなり絞れる。 プログラム板から呼ばれて来ましたよと めっちゃ過疎ってるやん モチベーション上がんな〜い とりあえず、プログラムDLして遊んで見ました。 よくわからんまま数ゲームしてると、どのレベルにも通用する必勝手順みたいなもんができてしまったので いきなりつまんないモード突入ですw ま、そこそこなレベルのオセロプログラムが素人の目先優先の手に全滅させられるみたいなパターンなんでしょうけど 地平線効果にずっぽりはまってるみたいですね (7連完成が確定してるけど実際に完成さそうとすると十数手以上かかるので見えてないみたいな) とりあえず現状の必勝パターン 一直線に伸ばしていきます 相手は黙々と自分の陣形を作ってます ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼○●●●●●┼┼┼┼┼┼┼┼┨ ┠┼○┼○┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┼┨ 5連に達すると止めてきます ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼○●●●●●○┼┼┼┼┼┼┼┼┨ ┠┼○┼○┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┼┨ 敵石交じりの7連にします 相手はまだ気がつきません ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼○●●●●●○●┼┼┼┼┼┼┼┨ ┠┼○┼○┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┼┨ ここまでくれば確定です この辺でやっと、あがき始めますが手遅れです 1線まで寄せて石を取り上げ空いたとこへ打って7連完成 ┠┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┨ ┠┼┼○●●●●●○●┼┼┼┼┼┼┼┨ ┠┼○┼○┼┼┼┼●┼┼┼┼┼┼┼┼┨ ┠┼┼┼┼○┼┼┼┼┼┼┼┼┼┼┼┼┨ AI開発中のかた、ご参考までに >>706 >floodgateみたいなのができると良いねえ。 問題はサーバーの費用かな、 新規に借りるなら独自鯖設置できそうなとこは 年間10Kほどかかる感じ 誰かがうちの使ってもいいよって言ってくれたら一気に実現?w それより現状ではプレイヤーが居なさそうなのが・・・・ iTuneStoreでiPhone用アプリとかって誰でも配信、販売出来るんですね。 囲連星のソフトでも英語対応してれば数千本くらいは売れそうですね。 買った人が使用後にどう思うかはわかりませんが。 >>718 50万本売れてる人っていうのがTVに出てました。個人が作っているようなちょっとしたソフトで。 なので累計で数千本くらいなら売れてもおかしくないと思いますよ。 TVで紹介されるという事はそれがレアケースだからでしょう。 本当はお前らも保守したいんじゃないのか? 我慢しなくてもいいんだぞ。 作れた? 完璧を目指すから書けないのか。 ある程度妥協すべきか。 VC++2008ExpressEditionでsampleaiのlefttopがmakeできない。 windows.hってなんぞ? uuid.libてなんぞ? makefileもまちがってるっぽいし。 だれかVC++2008ExpressEditionでlefttopをmakeできるようにしてくれんか? 自己解決。 というにはあまりに汚いやり方だが、一応動いたからよしとする。 >>735 一応プログラム書いてるけどたぶん完成しないw 最低でもLV3を超えなきゃいけないわけだし。 別に多少弱くてもいいんじゃないかな。 それに人に打ってもらうと何かヒントみたいなのがあったりするしね。 >>733 他人に聞く前に添付の文書くらい読めよ… 9路囲連星のAI、勝が確定してから嬲りプレーするな。 嬲りプレーが過ぎて逆転を許すこともままある。 白が公式AI 勝が確定した後逆転を許す図 ( ;FF[1]GM[1]SZ[9] ;B[ef];W[de];B[gc];W[dc];B[ed];W[ee] ;B[gd];W[ff];B[ge];W[gg];B[dd];W[cd] ;B[cc];W[fd];B[ec];W[fc];B[eb];W[eg] ;B[fe];W[df];B[fb];W[cg];B[db];W[hg] ;B[dg];W[gf];B[bc];W[fc];B[fd];W[cf] ;B[fc];W[hc];B[ac];W[ga];B[dc]) パソコン買い換えたら9路囲連星がエラーはくようになったTT 原因がわからん。 >>743 レス来てるthx. 古いのも新しいのもwin8.1なんだけどなぁ。 なんか微妙に違うのかな。 なんかウィルス対策ソフトが悪いっぽい? よくわからん。 http://www.age2.tv/rd05/src/up9387.zip.html 9路囲連星のAIつくった。 公式のAIともまあまあいい勝負ができるところまできた。 urlのファイルを公式9路囲連星と同じフォルダに入れてください。 言い忘れてたけどIrensei9.exeは64bitアプリなんで、 (今時いないと思うが)32bitOS使ってる人は動かないと思います。 ファイルはダウンロードされた痕跡があるのにレスがないT△T 強さが微妙すぎたかT△T 誰かレスくれT△T 動いたとか動かなかったとかなんでもいいからT△T 良く分からんがlibgcc_s_seh-1.dllがないって言われた 64bitのWin7なんだけどな >>750 レスthx. http://www2.age2.tv/rd2/src/age12190.zip.html ライブラリをスタティックリンクしないといけなかったらしい。 リンクしてみたのでもう一度試してみてください。 よろしくお願いします。 俺も750と一緒でエラーになったけど今やったら出来た 後手で適当にやってたら負けた・・・ >>752 レスthxです。 対人戦だと微妙な強さなんですがAIどうしだとわりといい勝負になりますw Yさんの9路AIは手筋、形に優れますが、終盤がやや弱い気がします。 そこに付け込んで私のAIが勝ったりすることもあるんだと思います。 >>751 あれ? エラーが出るどころかそもそもGUIが動かない? タスクマネージャーではirensei9が動いているんだけど 気になったのは後半になるほど考える時間が長くなるのは良いんだけど 続けて2局目をやろうとすると一手目から一局目の最後の時間よりさらに長くなることだな 何かを解放してないのかな >>755 GUIはvectorで配布してる公式の9路囲連星のものを使ってください。 >>751 のファイルは思考エンジンだけです。 >>756 これはちょっと原因わかんないですね。 パラメータいじるとかなり棋風が変わる。。。 パラメータいじりの沼にはまりそうw 折角だからGUIも作ってベクターとかに登録してみたらどう? できれば公式AIに採用してほしいんだけど。 会長まだ生きてるかな? パラメータ自動学習とか憧れるわ〜 やはり手動だと限界がある。 会長生きてたらレスください。 ここで言っても仕方ないかもしれないけど。 AIがパスしたときに(1,1)に打ったことになってしまうバグがあるっぽい。 http://www2.age2.tv/rd2/src/age12228.zip.html AIのパスに対応。 あとプレイアウトの着手候補いじった。 公式9路AIにも勝ち越せると思う。 誰かレスくれT△T さみしいじゃないかT△T 思考時間長いよ!とかなんでもいいから。 会長です。AIありがとうございます。 本物かどうか怪しい・・・と思うと思いますので囲連星のサイトのアドレスにメール送ってみてください。 会長にメアド晒すの抵抗あるなw 2ch内のことでリアルに発展するのはちょっとw 名無しは名無しのままでいたいw それはどちらでもいいですよ 皆さんの開発したいスタイルでやって頂いてOKです またいつか困ったことや聞きたいことがありましたらお気軽に問い合わせてください 会長io432RphD2のパスワードは忘れちゃいました? おかしいな、こっちのレベル上がってるはずなのに、 YさんのAIもそれに合わせるように強くなってるようなwww やっぱプロファイルとるの重要やな もうちょっと最適化できそう http://www2.age2.tv/rd2/src/age12330.zip.html 最適化 & 七連できやすいところを優先的に探索するようにした。 みんなちょっとはレスくれよw 対YさんのAI戦績 黒番 50戦 35勝 15敗 白番 50戦 32勝 18敗 要石当たりになってるのに斜めに七連作ろうとして抜かれて形勢を悪くすることがあるな。 http://www2.age2.tv/rd2/src/age12353.zip.html プレイアウトで当たりになってる場所へ打つ確率を20倍にした。 勝率若干アップ 黒番 50戦 42勝 8敗 白番 50戦 36勝 14敗 そろそろ対YさんAIの棋譜だけじゃなくて 対人戦の棋譜も欲しいところだ。 だれかうpしてくだしあ。 http://www2.age2.tv/rd2/src/age12395.zip.html SSE4.2 popcntを使って速度アップ SSE4.2非搭載CPU使ってる人は御免なさい 連を伸ばすのは得意だが地というか勢力が認識できてないな http://www2.age2.tv/rd2/src/age12505.zip.html 序盤はなるべく高く(中央に近く)打つようにした。 勝率若干アップ。誤差みたいなものだが。 黒番 50戦 43勝 7敗 白番 50戦 38勝 12敗 http://www2.age2.tv/rd2/src/age12534.zip.html 7連までの手数が相手より短い局面では攻めを重視するようにした。 最終目標達成 黒番 50戦 45勝 5敗 白番 50戦 41勝 9敗 このくらい結果が偏ると微妙な勝率の差とか信用できない感じなのかな。 だれか会長呼んできて。 公式AIに採用してもらおう。 だれかディープラーニングで囲連星AI 組まないか?(他力本願) だれか Visal Stdio 2015 C++のソリューションでサンプルAIビルドできるようにしてくれないか? makefileとかよくわからん makefile は、ファイルパスなどを変数に代入して使って、 各タスクは、cp コピー、mv ファイル移動、rm ファイル削除などをするだけ .c → .o など、処理する、I/Oファイルの拡張子が、デフォルトで決まっている Gradle, Jenkins などなら、もっとわかりやすい だれか>>385 の連続対戦プログラムもってない? もってたらアップしてくれると嬉しい。 簡単にお金が稼げる方法興味ある人だけ見てください。 グーグル検索⇒『来島のモノノリウエ』 UUTXLFLPDQ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる