スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

電王トーナメント PV && 参加ソフト 発表!!!

遂に

電王Tの参加ソフトが公開されました!!!

Noviceも載っていますね〜(感激)

(手動調整が全然うまく行かないよぉ..........(;_;))

PR文書にも書かせて頂きましたが今回は初参戦ということで、

反則無く最後まで!

をなんとか達成したいと思います。

1勝するのはその後で.......(難易度的にはこっちのほうが簡単かも.......)

あと勝手にライバル視しているソフト&目標にしているソフトを紹介します。

ライバル視しているソフト。
・きふわらべ
 前回大会に引き続きPR文書への力の入れ方は最高レベル
 Noviceを作り始めた頃から最初の目標としてきたソフトです。
 是非お手合わせして勝ちたいソフトです。

・ねこ将棋
 アプリも楽しませていただいだいております。(タイムアタックが伸びない.......笑)
 Noviceと同じ初参戦のソフト。同期になるのですかね。
 グラフィック&デザインに関してはクジラちゃんGUIに引けを取らないソフト。
 こちらも勝ちたい相手。

目標にしているソフト
・カツ丼将棋
 「美味しく頂きました」「カツ丼スペシャル」でお馴染みのカツ丼将棋。
 個人的には後述のLabyとライバル関係なのではないかなと勝手読みしております。
 対局がついたら出来る限り食いつきたいソフトです。

・Labyrinthus+

 「辱め詰め」や「喋るソフト」で有名なLaby。
 今大会の手動評価関数勢では、おそらく最強
 色々と機能が増えた?上にBonanzaにそれなりに食いつける程に実力を伸ばしている模様。
 うん。一年後くらいに追い付きたいな........。

と、まあこんなかんじです。

今回は色々と楽しむ&&他の開発者様に挨拶出来たらなあと思います。

大会後、ソースかバイナリは公開したいなと考えております。

ではまた。


スポンサーサイト

評価関数 ボツ案 1 ーーーーKGGーーーー


Noviceは評価関数を手動調整していますが、ボツ案をここに貼っていこうと思います。

//--------------------KGG-----------------------
//

// -2 -1 0 +1
//-------------
// [] 2 1 [] | +1
// [] 3 OU [] | 0
// [] 4 5 [] | -1

int S_OUGI_KI[5][3][4]={

// Criteria is OU

/*-2 -1 0 +1
[] [] GI [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 0 , 3 , 0 , 2 }, //+1
{ 1 , 7 , 0 , 2 },// 0
{ 1 , 5 , 2 , 0 }//-1
},
/*-2 -1 0 +1
[] GI [] [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 2 , 0 , 5 , 2 }, //+1
{ 3 , 7 , 0 , 2 }, // 0
{ 1 , 1 , 2 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] GI OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 4 , 6 , 5 , 2 }, //+1
{ 2 , 0 , 0 , 2 }, // 0
{ 7 , 3 , 2 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] GI [] [] -1
*/
{
// -2 -1 0 +1
{ 0 , 3 , 3 , 2 }, //+1
{ 5 , 7 , 0 , 2 }, // 0
{ 1 , 0 , 2 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] [] GI [] -1
*/
{
// -2 -1 0 +1
{ 0 , 3 , 3 , 2 }, //+1
{ 2 , 7 , 0 , 2 }, // 0
{ 2 , 4 , 0 , 0 } //-1
}

};

//---------------------------------------------
//

// -2 -1 0 +1
//-------------
// [] 2 1 [] | +1
// [] 3 OU [] | 0
// [] 4 5 [] | -1

int S_OUGI_GI[5][3][4]={

// Criteria is OU

/*-2 -1 0 +1
[] [] GI [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 3 , 2 , 0 , 2 }, //+1
{ 2 , 4 , 0 , 2 },// 0
{ 3 , 2 , 2 , 0 }//-1
},
/*-2 -1 0 +1
[] GI [] [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 1 , 0 , 0 , 2 }, //+1
{ 4 , 4 , 0 , 2 }, // 0
{ 2 , 2 , 4 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] GI OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 5 , 0 , 0 , 2 }, //+1
{ 2 , 0 , 0 , 2 }, // 0
{ 7 , 3 , 2 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] GI [] [] -1
*/
{
// -2 -1 0 +1
{ 0 , 0 , 0 , 2 }, //+1
{ 5 , 0 , 0 , 2 }, // 0
{ 1 , 0 , 2 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] [] GI [] -1
*/
{
// -2 -1 0 +1
{ 3 , 0 , 0 , 2 }, //+1
{ 1 , 0 , 0 , 2 }, // 0
{ 3 , 0 , 0 , 0 } //-1
}

};
//------------------------------------------
// -2 -1 0 +1
//-------------
// [] 2 1 [] | +1
// [] 3 OU [] | 0
// [] 4 5 [] | -1

int S_OUKI_GI[5][3][4]={

// Criteria is OU

/*-2 -1 0 +1
[] [] KI [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 3 , 0 , 0 , 2 },//+1
{ 2 , 0 , 0 , 2 },// 0
{ 3 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] KI [] [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 5 , 0 , 0 , 2 }, //+1
{ 2 , 0 , 0 , 2 }, // 0
{ 3 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] KI OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 5 , 0 , 0 , 2 }, //+1
{ 4 , 0 , 0 , 2 }, // 0
{ 2 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] KI [] [] -1
*/
{
// -2 -1 0 +1
{ 3 , 0 , 0 , 2 }, //+1
{ 2 , 0 , 0 , 2 }, // 0
{ 1 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] [] KI [] -1
*/
{
// -2 -1 0 +1
{ 4 , 0 , 0 , 2 }, //+1
{ 2 , 0 , 0 , 2 }, // 0
{ 3 , 0 , 0 , 0 } //-1
}

};
//------------------------------------------
// -2 -1 0 +1
//-------------
// [] 2 1 [] | +1
// [] 3 OU [] | 0
// [] 4 5 [] | -1

int S_OUKI_KI[5][3][4]={

// Criteria is OU

/*-2 -1 0 +1
[] [] KI [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 2 , 0 , 0 , 2 },//+1
{ 5 , 0 , 0 , 2 },// 0
{ 3 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] KI [] [] +1
[] [] OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 5 , 0 , 0 , 2 }, //+1
{ 2 , 0 , 0 , 2 }, // 0
{ 4 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] KI OU [] 0
[] [] [] [] -1
*/
{
// -2 -1 0 +1
{ 3 , 0 , 0 , 2 }, //+1
{ 7 , 0 , 0 , 2 }, // 0
{ 2 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] KI [] [] -1
*/
{
// -2 -1 0 +1
{ 1 , 0 , 0 , 2 }, //+1
{ 3 , 0 , 0 , 2 }, // 0
{ 2 , 0 , 0 , 0 } //-1
},
/*-2 -1 0 +1
[] [] [] [] +1
[] [] OU [] 0
[] [] KI [] -1
*/
{
// -2 -1 0 +1
{ 1 , 0 , 0 , 2 }, //+1
{ 3 , 0 , 0 , 2 }, // 0
{ 3 , 0 , 0 , 0 } //-1
}

};

/*
if(tesu[0]>25){
for(int s=0;s<5;s++){
//------sente-------------------------------------------------
if(KingPos[0]%10>=5){
if(board[KingPos[0]+dir[s]]==SGI){
for(int t=0;t<11;t++){
if(board[KingPos[0]+dir2[t]]==SKI){
P_dan=(KingPos[0]+dir2[t])/10;
P_suji=(KingPos[0]+dir2[t])%10;
score+=S_OUGI_KI[s][P_dan-s_king_d+1][P_suji-s_king_s+2];
}else if(board[KingPos[0]+dir2[t]]==SGI){
P_dan=(KingPos[0]+dir2[t])/10;
P_suji=(KingPos[0]+dir2[t])%10;
score+=S_OUGI_GI[s][P_dan-s_king_d+1][P_suji-s_king_s+2];
}
}
}else if(board[KingPos[0]+dir[s]]==SKI){
for(int t=0;t<11;t++){
if(board[KingPos[0]+dir2[t]]==SGI){
P_dan=(KingPos[0]+dir2[t])/10;
P_suji=(KingPos[0]+dir2[t])%10;
score+=S_OUKI_GI[s][P_dan-s_king_d+1][P_suji-s_king_s+2];
}else if(board[KingPos[0]+dir2[t]]==SKI){
P_dan=(KingPos[0]+dir2[t])/10;
P_suji=(KingPos[0]+dir2[t])%10;
score+=S_OUKI_KI[s][P_dan-s_king_d+1][P_suji-s_king_s+2];
}
}
}
}else{
if(board[KingPos[0]-dir[4-s]]==SGI){
for(int t=0;t<11;t++){
if(board[KingPos[0]-dir2[t]]==SKI){
P_dan=(KingPos[0]-dir2[t])/10;
P_suji=(KingPos[0]-dir2[t])%10;
score+=S_OUGI_KI[s][P_dan-s_king_d+1][-(P_suji-s_king_s)+2];
}else if(board[KingPos[0]-dir2[t]]==SGI){
P_dan=(KingPos[0]-dir2[t])/10;
P_suji=(KingPos[0]-dir2[t])%10;
score+=S_OUGI_GI[s][P_dan-s_king_d+1][-(P_suji-s_king_s)+2];
}
}
}else if(board[KingPos[0]-dir[4-s]]==SKI){
for(int t=0;t<11;t++){
if(board[KingPos[0]-dir2[t]]==SGI){
P_dan=(KingPos[0]-dir2[t])/10;
P_suji=(KingPos[0]-dir2[t])%10;
score+=S_OUKI_GI[s][P_dan-s_king_d+1][-(P_suji-s_king_s)+2];
}else if(board[KingPos[0]-dir2[t]]==SKI){
P_dan=(KingPos[0]-dir2[t])/10;
P_suji=(KingPos[0]-dir2[t])%10;
score+=S_OUKI_KI[s][P_dan-s_king_d+1][-(P_suji-s_king_s)+2];
}
}
}
}
//------gote-------------------------------------------------
if(KingPos[1]%10<=5){
if(board[KingPos[1]-dir[s]]==EGI){
for(int t=0;t<11;t++){
if(board[KingPos[1]-dir2[t]]==EKI){
P_dan=(KingPos[1]-dir2[t])/10;
P_suji=(KingPos[1]-dir2[t])%10;
score-=S_OUGI_KI[s][-(P_dan-s_king_d)+1][-(P_suji-s_king_s)+2];
}else if(board[KingPos[1]-dir2[t]]==EGI){
P_dan=(KingPos[1]-dir2[t])/10;
P_suji=(KingPos[1]-dir2[t])%10;
score-=S_OUGI_GI[s][-(P_dan-s_king_d)+1][-(P_suji-s_king_s)+2];
}
}
}else if(board[KingPos[1]-dir[s]]==EKI){
for(int t=0;t<11;t++){
if(board[KingPos[1]-dir2[t]]==EGI){
P_dan=(KingPos[1]-dir2[t])/10;
P_suji=(KingPos[1]-dir2[t])%10;
score-=S_OUKI_GI[s][-(P_dan-s_king_d)+1][-(P_suji-s_king_s)+2];
}else if(board[KingPos[1]-dir2[t]]==EKI){
P_dan=(KingPos[1]-dir2[t])/10;
P_suji=(KingPos[1]-dir2[t])%10;
score-=S_OUKI_KI[s][-(P_dan-s_king_d)+1][-(P_suji-s_king_s)+2];
}
}
}
}else{
if(board[KingPos[1]+dir[4-s]]==EGI){
for(int t=0;t<11;t++){
if(board[KingPos[1]+dir2[t]]==EKI){
P_dan=(KingPos[1]+dir2[t])/10;
P_suji=(KingPos[1]+dir2[t])%10;
score-=S_OUGI_KI[s][-(P_dan-s_king_d)+1][(P_suji-s_king_s)+2];
}else if(board[KingPos[1]+dir2[t]]==EGI){
P_dan=(KingPos[1]+dir2[t])/10;
P_suji=(KingPos[1]+dir2[t])%10;
score-=S_OUGI_GI[s][-(P_dan-s_king_d)+1][(P_suji-s_king_s)+2];
}
}
}else if(board[KingPos[1]+dir[4-s]]==EKI){
for(int t=0;t<11;t++){
if(board[KingPos[1]+dir2[t]]==EGI){
P_dan=(KingPos[1]+dir2[t])/10;
P_suji=(KingPos[1]+dir2[t])%10;
score-=S_OUKI_GI[s][-(P_dan-s_king_d)+1][(P_suji-s_king_s)+2];
}else if(board[KingPos[1]+dir2[t]]==EKI){
P_dan=(KingPos[1]+dir2[t])/10;
P_suji=(KingPos[1]+dir2[t])%10;
score-=S_OUKI_KI[s][-(P_dan-s_king_d)+1][(P_suji-s_king_s)+2];
}
}
}
}
}
}
*/

プログラミング初心者用の将棋ソフトソース公開


お久しぶりです。

とりあえず電王トーナメントにエントリーしておきました。
何事もなければ参加しますので応援よろしくお願い致します。

ところで、僕のようにプログラミング初心者で将棋ソフトを作ってみたいという方は一定数はいるような気がします。

なので現状のNoviceをベースにソースを整理してプログラミング初心者向けに公開します。

※主はプログラミング初心者です。なのでソースコードが汚い、明らかにおかしいなどあると思いますが、
 その際には優しく教えて頂けると幸いです。

このソースを書く際に、将棋ソフト「うさぴょん」の開発者である池泰弘氏の
コンピュータ将棋の作り方(URL:http://homepage1.nifty.com/Ike/usapyon/HowToMakeShogiProgram.html)
を非常に多くの点でパク.........参考にしています。

池さんには、この場をもってお礼申し上げます。ありがとうございます。

<ソースコードを用いた大会への参加について>
 このソースコードを改造しての大会への参加は自由ですが、その際にはtwitter @naonza0 まで御一報下さい。

以下からDLしていって下さい。その際には絶対にReadme.txtを読んで下さい。
※このソフトウェア、ソースコードを使用したことによって生じたすべての損害・不具合等に関しては、私および私の所属するいかなる団体・組織とも、一切の責任を負いません。

・DL→Novice_mini

・Noviceとの差分
・静止探索 なし
・手のオーダリング なし
・飛車、角、歩の不成の生成 あり
・評価関数 駒得のみ
・その他複数





将棋プログラム制作を意識した三目並べ読み切りプログラム


昨日、Noviceのバグ取りに力尽きて、他の製作者様のブログを飛び回っていたところ、

「shogi686」の製作者であるmerom686氏の「将棋プログラムの作り方」の記事に、

・三目並べの読み切り

という項目があり、そういえば三目並べ作ったことないな。と思ったので作ることにした。

その際に、ただ三目並べのプログラムを書くのもなんだったので、将棋プログラムを意識した構成にした。

このときに参考にしたのは、おなじみ「うさぴょん」「れさぴょん」の製作者である池氏の「コンピューター将棋の作り方」のサイトである。

ソースは以下からDLしてください。
(主はプログラミング初心者なのでソースが汚い、間違っている、など多々あると思いますが優しく指摘していただけると幸いです。)

ソースコード

実行結果はコチラ
Screenshot from 2015-08-13 20:57:44


ていうかコレ、探索局面合っているんだろうか........?

Novice ver.0.9 配布

Noviceは現在、0から作り直しており、ver0.9はこのままお蔵入りさせようと考えていたのですが、

うさぴょんの製作者の池さんから弱いソフトと戦いたい人も一定数いると聞いたので、公開します。

ただ、バグだらけなので反則手を指すかもしれませんし、なんと言っても弱いです。

推定棋力は20級くらいかと笑

あと、将棋所では何故か落ちますww

今回はプチ将棋での動かし方を書きますが、プチ将棋では動作テストしていないので、これもまた落ちるかもしれませんww

Noviceでは初期局面からの対局機能しか使えません。評価値も出ませんし、読み筋も出ません。

それでも遊びたい方だけDLしてください。

〜Noviceを動かすまで〜

1,http://www.geocities.jp/shogi_depot/  
 
このサイトからプチ将棋をDLしてください。

novice.png



2,Novice_ver0.9_DL

次に、ここからNoviceをDLしてください。




3,DLしたプチ将棋とNoviceを展開してください。その際に、Readme.txtはしっかり読んでください。

novice2.png

novice3.png


novice5.png

4,プチ将棋を起動し、ツール→エンジン管理を開いてください。

novice4.png
novice6.png

5,エンジン名のところにNoviceと入力し、実行ファイルの右の方にある ...... から先ほど展開したNovice_ver0.9を選択、開き、追加ボタンを押してください。

novice7.png
novice8.png
novice9.png

エンジン一覧にNoviceの名前が表示されればOKです。


6,OKを押し、対局→開始を開いてください。


novice10.png
novice11.png


7,ここで先手番と後手番を決め、開始ボタンから対局を開始してください。このバージョンのNoviceには時間制御をいれていないので、時間制御は設定してもいみがありません。

novice12.png

対局が始まればOKです。















プロフィール

kuma

Author:kuma
FC2ブログへようこそ!

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。