エンジニアが正しく「I love you」と伝えるための遺伝的アルゴリズム(殺伐)

natural-selection-2

エンジニアが正しく「好き」と伝えるための実装法」という記事が話題だったので、乗っかってみました。

内気なエンジニアのために「I love you」と言ってくれるプログラムを遺伝的アルゴリズムで作成します。

【参考】
Machine Learning: Introduction to Genetic Algorithms

遺伝的アルゴリズムとは?

この国はすっかりダメになってしまいました。
だから、偉い人達は相談して、この法律をつくりました。
「バトル・ロワイアル」
そこで今日はみなさんに、ちょっと殺し合いをしてもらいます。
最後の一人になるまでです。

↑これに”交配”と”突然変異”の仕組みが含まれれば遺伝的アルゴリズムです。
ニコニコ大百科にさらにわかりやすい例が掲載されています。

少年少女を100人ずつ用意します。
一生懸命歌っていただきます。
歌の上手い上位5人ずつを残して残りは抹殺します。
互いに交配して彼らの子供を男女100人ずつ用意します。
2〜4を何回も繰り返します。
どっかで停止し、その時一番うまかった一組を残して抹殺します。
残った2人が鏡音リン・レンです。
なんだってー!?
本掲示板>>3より

とりあえず、なんとなく仕組みが分かったところでやってみましょう。

「I love you」に辿りつくまでの流れ

まず、20人の個体を用意します。

  1. 個体それぞれに文字を書かせます。
  2. 文字の内容が「I love you」に近い順に並べます。
  3. 上位2名が子作りして、子供を二人生みます。
  4. 下位2名を処分して、生まれた子供と入れ替えます。
  5. ランダムに選んだ個体の文字を一部変化させます(突然変異)

上記1〜5を「I love you」がちゃんと書ける個体が生まれるまで続けます。

サンプル

コード

Machine Learning: Introduction to Genetic Algorithmsに掲載されているコードにコメント付け加えただけなので、詳しくは先の記事を読んでください。

多大な犠牲を払って作成した「I love you」なら、きっと思いも伝わるはず!