■ このスレッドは過去ログ倉庫に格納されています
【囲碁?】囲連星のAIを作ってみよう【連珠?】
- 1 :名前は開発中のものです。:2006/08/03(木) 16:13:45 ID:jCmv785l.net
- フリーソフト囲連星のAIを自作してみませんか?(囲碁+連珠)
デフォルトのAIが弱いので今なら囲連星AIの第一人者になれる。
もし名人より強いAIを作成すればそのAIが名人位に。
詳しいことはソフトダウンロード後、ヘルプメニューを参考に。
作成方法:AI部分をプログラムしコンパイルしたものをファイルコピーすればOK
ソフトダウンロード:http://irensei.com/
- 151 :東陶基:2006/12/01(金) 00:26:41 ID:aHfRZra/.net
- 5を作るより石を取ったほうがいいと感じるのは
どうせ止められる5を作るよりは石を取っといたほうが
勝つ確率が高いような気がしたので書いただけなので
もちろん状況によってはそうじゃない場合も多いと思います。
あとシチョウもそうなのですが石を取れる手筋というのが
定石化してるようです。
ただそれをプログラムに取り込むときはどうするのかはわからないです。
そのパターンを1つ1つチェックしていくというのはプログラムとして
違和感はあるのですがそれしかないのかなと思ったりも。
必勝形も多分同様な気がします。
- 152 :東陶基:2006/12/01(金) 00:32:53 ID:aHfRZra/.net
- 追記ですがこの前応募してもらった11月分のAIですが
あれで決定でもいいのですが、多分最優秀AI+対人初級ということで
公開するとなるとダウンロードされることになると思うのですが
もうちょっと手を入れたバージョンにしますか?
「待った」のところとかもありましたのでダウンロードするに当たって
もうちょっと改善したところで公表にしてという事であれば
全然待ちますけど。多分あのままダウンロードすると
「待った」が効かないよという書き込みとかも出ると思うので。
- 153 :名前は開発中のものです。:2006/12/01(金) 00:54:34 ID:c9tBg3iC.net
- >>150
なるほど。レスありがとうございました。
>>151
> そのパターンを1つ1つチェックしていくというのはプログラムとして
> 違和感はあるのですがそれしかないのかなと思ったりも。
確かにやりたくないことではありますね。
どうしても探索深さが限られて先読みできないので苦労することは多いです。
>>152
もう12月なんですね。
もう少し改良したいので、土日まで待っていただけるとありがたいです。
- 154 :東陶基:2006/12/01(金) 15:35:54 ID:mqhncX4t.net
- >>153
はい、のんびり待ってますので急がずゆっくりでいいですよ。
今月半ばくらいまでなら全然平気ですので
岐阜チャレンジとかに囲連星部門とか出来ないかな。
今度問い合わせてみよう
- 155 :名前は開発中のものです。:2006/12/02(土) 10:43:59 ID:9bHh1U4H.net
- ガイシュツかもしれませんが、一応つっこんでおきます
以下は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 ){}
- 156 :名前は開発中のものです。:2006/12/02(土) 10:44:50 ID:9bHh1U4H.net
- これはまずいんじゃないでしょうか?
(注1)newしたものをdeleteしていない。
Javaとかと違って、newで確保した変数は自動的には破棄されなかったと
思います。メモリリークの原因になるので、
デストラクタとかでdelete boardした方がいいと思います。
(注2)ポインタをコピーしている
このままだとGame hoge1 = new Game(hoge2);
としたときにhoge1.board == hoge2.boardになってしまいます。
これは多分意図した仕様ではないと思うので、
board = new Board;
*board = *(other.board)
とした方がいい気がします。
以上、通りすがりのお節介でした。
ガイシュツだったらごめんなさい
- 157 :名前は開発中のものです。:2006/12/02(土) 10:50:23 ID:9bHh1U4H.net
- おっと間違い
Game::rule() の中で、すでにnew Boardしているので、
コピーコンストラクタの中で再びnew Boardはしなくていいですね
- 158 :東陶基:2006/12/02(土) 17:51:03 ID:YSYCWbvz.net
- ご指摘ありがとうございます。
自分だと完全には理解出来てないので
今度バージョンアップする時に見てもらうようにします。
そういえば前もそんな指摘があったのでそれもまとめて修正しよう
それと今日20時iGoにて対局です。奮ってご参加を
- 159 :名前は開発中のものです。:2006/12/03(日) 10:08:07 ID:u9MJAUlc.net
- 昨日はお疲れさまでした。
今度参加する機会があったら一勝はしたいです。
さて、昨日話した今までに見つけたバグですが
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がリストアップされません。
検索パスは実行ファイルのパスで行うべきだと思います。
以上、小さなバグですが報告しておきます。
- 160 :東陶基:2006/12/04(月) 00:36:05 ID:NCJ8uVrU.net
- >>159
昨日はお疲れ様でした。
多分いつか1勝を挙げる日が来ますよ・・・きっと。
というより序盤を研究してる人とかはいなそうなので
逆に勝てるかもしれないですね。
バグの件了解しました。
もし可能でしたらバグを何かにまとめておいて
いつかメールで送ってもらえますでしょうか?
今度本体を作り直すときにまとめてやってもらうので。
総レス数 799
279 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★