プログラム / 2007/11/20 (Tue) / 編集 |
「エントリーしたのにまったくメールこないなぁ」と思ってたらHotmailの方に届いてました、もう手遅れです(笑)
今日はどうにか進化計算を今週の目標まで作りました、明日からはロボットをがんばろうと思いますです。魔法使いになれるのはいつの日か
今日はどうにか進化計算を今週の目標まで作りました、明日からはロボットをがんばろうと思いますです。魔法使いになれるのはいつの日か
というわけで遺伝的アルゴリズム、初期集団の生成の巻
今回作成しているプログラムというのが「ユーザが指定した色を進化させる」「評価はユーザが指定した色の系統(癒し系とか)に近いかどうかでする」というもの、色の指定はRGBでやることにした、つまりint型の1バイト。
ユーザが指定した色を進化させると言ってもおなじ遺伝子を大量生産したら遺伝的アルゴリズム的にまったく意味がないわけで(多様性がないとね〜)、かといってランダムに生成してもこれまた意味がない訳です(ユーザに指定させた意味がね〜〜)。
というわけで微妙にこまる要求仕様(ほかの班から依頼を受けて作るという形式なので自分で設計した訳ではない)を実現するため、まずはじめに突然変異を実装。
ユーザが指定した色を大量にコピー→その遺伝子の集団を突然変異の関数で変異させる(ただしあまり元の値より遠くならないように)という方法を考えたわけですよ。
public static int[][] mutation(int MutationRate,int[][] Genes,int MuteLimit){
Random ran = new Random();
int mutateNum = (Genes.length*MutationRate)/100;
for(int i=0;i
int mutate = ran.nextInt(Genes.length);
for(int j=0; j<3; j++){
int temp = (Genes[mutate][j]*MuteLimit)/100;
Genes[mutate][j] = (Genes[mutate][j] + ran.nextInt(temp+1))%255;
}
}
return Genes;
}
ま、話はそれだけなんだけどね(笑)
それはそうとそろそろmixiの画像を部長から変えようと思うんだが、キャロと伊澄さんのどっちにしようか……それともそろそろ自重するか?
今回作成しているプログラムというのが「ユーザが指定した色を進化させる」「評価はユーザが指定した色の系統(癒し系とか)に近いかどうかでする」というもの、色の指定はRGBでやることにした、つまりint型の1バイト。
ユーザが指定した色を進化させると言ってもおなじ遺伝子を大量生産したら遺伝的アルゴリズム的にまったく意味がないわけで(多様性がないとね〜)、かといってランダムに生成してもこれまた意味がない訳です(ユーザに指定させた意味がね〜〜)。
というわけで微妙にこまる要求仕様(ほかの班から依頼を受けて作るという形式なので自分で設計した訳ではない)を実現するため、まずはじめに突然変異を実装。
ユーザが指定した色を大量にコピー→その遺伝子の集団を突然変異の関数で変異させる(ただしあまり元の値より遠くならないように)という方法を考えたわけですよ。
public static int[][] mutation(int MutationRate,int[][] Genes,int MuteLimit){
Random ran = new Random();
int mutateNum = (Genes.length*MutationRate)/100;
for(int i=0;i
for(int j=0; j<3; j++){
int temp = (Genes[mutate][j]*MuteLimit)/100;
Genes[mutate][j] = (Genes[mutate][j] + ran.nextInt(temp+1))%255;
}
}
return Genes;
}
ま、話はそれだけなんだけどね(笑)
それはそうとそろそろmixiの画像を部長から変えようと思うんだが、キャロと伊澄さんのどっちにしようか……それともそろそろ自重するか?
PR
トラックバック
URL :
コメント