ソース

2進数による個体(染色体)の生成のサンプルです。


void InitGene(int nbit)
{
	int i;

	for(i = 0; i < nbit; i++)
		g[i] = malloc(sizeof(unsigned char));

	for(i = 0; i < nbit; i++){
		g[i] = MyRand()>0.5f ? '1': '0';
	}
}

個体をg[]という配列の集まりで表現します。gというのは遺伝子(gene)の頭文字から 取りました。個体(individual)という配列名にした方が人が見た場合わかりやすいかもしれませんが、 ソースを見やすくするために今回はgということで^^;

nbitによって染色体を構成する遺伝子数を決定します。

なお配列gはグローバルで宣言することを前提としています。そうでない場合はもう少し ややこしいプログラムになります。

ソース内にMyRand()という関数がありますが、これは自作関数です。
0〜1までの乱数を返す関数をご自分で作ってください ・・・というのも無責任ですから近いうちにMyRand()の説明もします。

HOME