- 著者
- John R. Koza
- 編者
- Christopher G. Langton, Charles Taylor, J. Doyne Farmer, Steen Rasmussen
- タイトル
- Genetic Evolution and Co-Evolution of Computer Programs
- 書籍
- Artificial Life II
- シリーズ
- Santa Fe Institute Studies in the Sciences of
Complexity
- ページ
- 603-629
- 日時
- 1991
- 出版
- Addison-Wesley
- コメント
- これは「遺伝子アルゴリズム(GA)を使ってLISPプログラムを
進化させる」というもので、Koza氏はずっとこの手の話をやっ
ています。昨年のICGA(International Conference on
Genetic Algorithms)の講演では「お掃除ロボット」を作っ
たと言っていましたし\cite{Koza:RandomNumberByGA}のよう
な発表をしていましたが、これも似たような話です。
普通のGAでは解を1次元の文字列に写像してそれらの間で交
配/突然変異処理行ないますが、ここではLispの構文木を``
染色体''として用い、ふたつの構文木の部分木を交換する操
作を交配処理としています。構文木のノードには\verb+if+
文や演算子、関数などが入ります。
この論文では3種類の問題に対するプログラムの進化につい
て書かれています。
紹介されているプログラムとその適用結果は以下のとおりで
す。
\begin{enumerate}
\item 平面上の点をたどる問題
32$\times$32の桝目の中に89個の点があり、これを順番にた
どっていくプログラムを生成します。構文木の内部ノードと
しては\verb+if-sensor+ (前方に点が存在するか調べる関数)
と \verb+progn+を使い、葉として\verb+advance+ (前方に
進む関数)\verb+turn-left+ (左を向く関数)
\verb+turn-right+ (右を向く関数)の3個を使用します。こ
れらを使ってランダムな構文木を作り、そのプログラムを実
行させ、その評価値により構文木を進化させることにより最
終的に正しく点をたどるプログラムが生成されます。
\item 「蟻」のシミュレーション
桝目の中に「巣」と「食物」があり、巣の中に20匹の蟻がい
ます。今回は蟻のプログラム要素として「前進」、「回転」
などの他に「フェロモンを出す」「フェロモンをたどる」な
どの関数を加えてあり、最初に餌を発見した蟻に続いて他の
蟻が協調して巣まで餌をはこびこむというプログラムを作ら
せています。
\item 対戦プログラム
最近の進化論では「共生進化説」が力をのばしていますが、
ここではGAの評価関数として「相手に対する自分の評価」を
使うことにより共生進化をGAでシミュレーションし、対戦ゲー
ムのプログラムを作りだすことを試みています。結果として、
ミニマックス法によるものと同等のプログラムが自動的に生
成されたということです。
\end{enumerate}
本当にいろいろなプログラムが自動的に作られるのか、とい
うことは非常に疑問ではありますが、ある程度でも自動的に
プログラムができてしまうということはなかなか面白いので
はないかと思っています。
- カテゴリ
- ALife,
GA
Category: ALife GA
Comment: これは「遺伝子アルゴリズム(GA)を使ってLISPプログラムを
進化させる」というもので、Koza氏はずっとこの手の話をやっ
ています。昨年のICGA(International Conference on
Genetic Algorithms)の講演では「お掃除ロボット」を作っ
たと言っていましたし\cite{Koza:RandomNumberByGA}のよう
な発表をしていましたが、これも似たような話です。
普通のGAでは解を1次元の文字列に写像してそれらの間で交
配/突然変異処理行ないますが、ここではLispの構文木を``
染色体''として用い、ふたつの構文木の部分木を交換する操
作を交配処理としています。構文木のノードには\verb+if+
文や演算子、関数などが入ります。
この論文では3種類の問題に対するプログラムの進化につい
て書かれています。
紹介されているプログラムとその適用結果は以下のとおりで
す。
\begin{enumerate}
\item 平面上の点をたどる問題
32$\times$32の桝目の中に89個の点があり、これを順番にた
どっていくプログラムを生成します。構文木の内部ノードと
しては\verb+if-sensor+ (前方に点が存在するか調べる関数)
と \verb+progn+を使い、葉として\verb+advance+ (前方に
進む関数)\verb+turn-left+ (左を向く関数)
\verb+turn-right+ (右を向く関数)の3個を使用します。こ
れらを使ってランダムな構文木を作り、そのプログラムを実
行させ、その評価値により構文木を進化させることにより最
終的に正しく点をたどるプログラムが生成されます。
\item 「蟻」のシミュレーション
桝目の中に「巣」と「食物」があり、巣の中に20匹の蟻がい
ます。今回は蟻のプログラム要素として「前進」、「回転」
などの他に「フェロモンを出す」「フェロモンをたどる」な
どの関数を加えてあり、最初に餌を発見した蟻に続いて他の
蟻が協調して巣まで餌をはこびこむというプログラムを作ら
せています。
\item 対戦プログラム
最近の進化論では「共生進化説」が力をのばしていますが、
ここではGAの評価関数として「相手に対する自分の評価」を
使うことにより共生進化をGAでシミュレーションし、対戦ゲー
ムのプログラムを作りだすことを試みています。結果として、
ミニマックス法によるものと同等のプログラムが自動的に生
成されたということです。
\end{enumerate}
本当にいろいろなプログラムが自動的に作られるのか、とい
うことは非常に疑問ではありますが、ある程度でも自動的に
プログラムができてしまうということはなかなか面白いので
はないかと思っています。
Bibtype: InBook
Pages: 603-629
Author: John R. Koza
Booktitle: Artificial Life II
Series: Santa Fe Institute Studies in the Sciences of
Complexity
Editor: Christopher G. Langton
Charles Taylor
J. Doyne Farmer
Steen Rasmussen
Title: Genetic Evolution and Co-Evolution of Computer Programs
Year: 1991
Volume: X
Publisher: Addison-Wesley