遺伝的プログラミング(いでんてきプログラミング、)は、メタヒューリスティックなアルゴリズムである遺伝的アルゴリズムを拡張したもので、進化的アルゴリズムの四つの主要な方法論の内の一つでもある。遺伝的プログラミングは1990年にジョン・コザ(John Koza)によって提案された。他の進化的アルゴリズムの主要な方法論が同時期に提案され独立して研究が進められていたのに対し、遺伝的プログラミングは最初から遺伝的アルゴリズムの拡張として提案されており、他の三つの方法とは大きく立場を異にする。具体的な内容としては、遺伝的アルゴリズムにおける遺伝子型の表現が主に配列であるのに対し、遺伝的プログラミングでは木構造を用いる。このため、遺伝的アルゴリズムでは表現できなかった数式やプログラムのコードなど、構造を持ったデータを表現することができる。大きな違いとしてはこれだけであるが、遺伝的アルゴリズムとは解の探索の傾向が異なり、また独自の現象や問題点が発生する。現在、それに対する改善案などが非常に活発に研究されており、遺伝的アルゴリズムからはほとんど独立して研究が進められている。遺伝的プログラミングのみを扱った書籍も増えている。なお、コザが発表したシステムは Lisp で書かれていたため、現在はあらゆるプログラミング言語で実装されているにもかかわらず解を Lisp のS式で表現することが一種の慣例になっている。遺伝的プログラミングの探索の流れは遺伝的アルゴリズムと全く同じである(遺伝的アルゴリズム#アルゴリズムの流れ参照)。ただし遺伝子型の表現方法が違うため、交叉や突然変異の方法が若干異なったものになっている。遺伝的プログラミングでは遺伝子型の表現に木構造を使うため、取り扱う問題が自然と遺伝的アルゴリズムとは異なってくる。遺伝的プログラミングの適用分野としては関数の同定問題やニューラルネットワークや電子回路の設計、あるいはロボットの制御プログラミングの作成などがある。解の表現は、例えば関数同定問題なら解は関数であるために、配列でこれを表現することは難しい。ところが、例えばという木構造なら formula_1 を表しているというふうに、容易にこれを表現することができる。解個体を表す木にどういった関数記号を用いるかは事前に決めておくのが一般的で、{+, −, ×, ÷}など一般的な演算子の他に{sin, cos, tan, exp, log"x
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。