個体値遺伝アルゴリズム
2号館でperlで説明されていたものをC的に記述してみます。
本来行いたかった処理
int stat[6] = { 0 , 1 , 2 , 3 , 4 , 5 } ; /* HP〜SDのかわり */
int iden[3] ; /* ここに遺伝されるステータスをあらわす数が入ります */
int i, j, r;
for ( i = 0 ; i < 3 ; i++ ) {
r = rand() % (6-i) ; /* 遺伝するステータス決定 */
iden[i] = stat[r] ; /* 遺伝するものを記録 */
for( j = r ; j < 5 ; j++) /* 配列から削除 */
stat[j] = stat[j+1];
}
RSFLの場合
int stat[6] = { 0 , 1 , 2 , 3 , 4 , 5 } ; /* HP〜SDのかわり */
int iden[3] ; /* ここに遺伝されるステータスをあらわす数が入ります */
int i, j, r;
for ( i = 0 ; i < 3 ; i++ ) {
r = rand() % (6-i) ; /* 遺伝するステータス決定 */
iden[i] = stat[r] ; /* 遺伝するものを記録 */
for( j = iden[i] ; j < 5 ; j++) /* 配列から削除 */
stat[j] = stat[j+1];
}
EmDPの場合
int stat[6] = { 0 , 1 , 2 , 3 , 4 , 5 } ; /* HP〜SDのかわり */
int iden[3] ; /* ここに遺伝されるステータスをあらわす数が入ります */
int i, j, r;
for ( i = 0 ; i < 3 ; i++ ) {
r = rand() % (6-i) ; /* 遺伝するステータス決定 */
iden[i] = stat[r] ; /* 遺伝するものを記録 */
for( j = i ; j < 5 ; j++) /* 配列から削除 */
stat[j] = stat[j+1];
}
まあ、EmDPについては想像に過ぎませんが・・