メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.404) AYGON3 ニューロン構築の方法  2003/12/03


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第404回 AYGON3 ニューロン構築の方法
 発行    2003年12月3日(水曜日)
 発行数   約3200

{magclick}
{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンはまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・このメールマガジンは、横60文字で作成しています。
 また、インデントはすべて半角スペース4つで構成しています。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、まぐまぐさんのホームページでお願いします。
・まぐまぐさんのバックナンバー(下欄参照)を活用して下さい。
・ここは私の復習の場です。内容は約1ヶ月内外に私が勉強した
 内容になっています。最新の技術があれば、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 先日お伝えした「食事中に見てはいけない」にて、プロテイン
が販売禁止になっていると紹介しました。

 しかし、薬局に普通にうっているそうです。へぇ。

 それから、日本人にはプロテインが効かない、とも紹介しまし
た。

 これは、紹介したとおり、お腹のバランスが悪いとプロテインは
効かないのですが、日本人の多くが便秘でお腹のバランスは基本的
に悪いので、ほとんどの日本人には効かないはずだ、という意味
です。

 お腹のバランスに自信のある人だけが、プロテインに挑戦して
みてください。

{magclick}
/*========================================================*/
 今回のお題  << AYGON3 ニューロン構築の方法 >>
/*========================================================*/

 前々回、ニューロンの基礎を紹介しました。

 前回、ニューロンをどのように使おうかということについて
考えてみました。

 今回は、400キロバイトのデータをどうやって入力するのか、
ということについて考えて見ます。

/*========================================================*/

 その前に! ソフトの名称について。

 はじめは「NAYGO」に使用と思ったのですが、「ないご」と
読むしかなく、かっこ悪いということで却下しました。

 前が駄目なら後ろ、ということで、「AYGON」としました。

 読み方は「あいごん」。なかなかかっこいいです。決定〜

/*========================================================*/

 前回の設計の通りに作ると、データのサイズは400キロバイト
となります。

 とても手打ちできる量ではありませんし、面倒くさいですし、
きっと飽きるでしょう。

 そこで、実際の棋譜データをマウスでカチカチと入力するという
方法にしたいと思います。

/*========================================================*/

 石をカチッと打つと、打った場所のニューロが打つ前の状態を
把握して、自分が持つ触手データを調整します。

// 打った場所を学習する //
void set_neuron( int x, int y )
{
neuron_t* pn = &neuron[ x ][ y ]; // ニューロンポインタ
for( int i = 0; i < NUM; i++ ) { // 盤面ループ
for( int j = 0; j < NUM; j++ ) { // 盤面ループ
if( i == x && j == y ) { // ここが打った場所ならば
pn->sps[ i ][ j ]++; // 空白を推奨する
}
else if( board[ i ][ j ] == 0 ) { // 空白ならば
pn->sps[ i ][ j ]++; // 空白を推奨する
}
else if( board[ i ][ j ] < 0 ) { // 黒ならば
pn->blk[ i ][ j ]++; // 黒を推奨する
}
else { // 白ならば
pn->wht[ i ][ j ]++; // 白を推奨する
}
}
}
}

 こんな感じでしょうか。

/*========================================================*/

 このプログラムを書いて気がついたのですが、触手が持つ
反応の強さは0または1、なのですね。

 ・・・400キロバイトもいらないけど・・・まぁいいか。

/*========================================================*/

 良くないよねぇ?

struct neuron_t
{
    char line[ 19 ][ 19 ];
} neuron[ 19 ][ 19 ];

 ということにして、黒、空白、白をそれぞれbit0,1,2に配置する
ということにしましょうか。

 貧乏臭いですが、これでサイズは3分の1、100キロバイト
少々にまで減ります。

 ・・・それでもそんなにあるのか。

 さっきの関数を書き直してみますと、

// 打った場所を学習する //
void set_neuro( int x, int y )
{
neuron_t* pn = &neuron[ x ][ y ]; // ニューロンポインタ
for( int i = 0; i < NUM; i++ ) { // 盤面ループ
for( int j = 0; j < NUM; j++ ) { // 盤面ループ
if( i == x && j == y ) { // ここが打った場所ならば
pn->line[ i ][ j ] = 2; // 空白を推奨する
}
else { // 白か黒なら、それぞれを推奨する
pn->line[ i ][ j ] = 1 << ( board[ i ][ j ] + 1 );
}
}
}

 あ、こっちのほうが楽かも^^

 でもこれだと、なんか、将来性がない雰囲気がします。

 私のニュータイプ特性が、そのようにささやきかけています。

 ビット策は廃案にしましょう。

/*========================================================*/
 さいごに
/*========================================================*/

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は12月4日(木曜日)に、第405回を送ります。
 お題は「AYGON4 複数データ」

 ところで、この400キロバイトのデータには、1つの棋譜しか
登録できません。

 80個ぐらいは登録しておきたいところです。

 ・・・32メガ!?

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されます。
 このメールマガジンの内容に文面の引用はありません。
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容は、転用、流用、宣伝、リンク、
勉強もかねています なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

まぐまぐアイディー
0000020674

まぐまぐバックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

登録と解除
http://www.mag2.com/m/0000020674.htm

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

めーらっくす <<過去ログがタイトル別になっています>>
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。