進化的プログラミングの布石

たぶん基底はこんな感じ。

struct Command {
  virtual void main(void* pThis) = 0;
  virtual void kill() = 0;
  virtual void makeChild(float p) = 0;
  virtual const string getName() = 0;
  virtual void outTree(FILE* fp, int n) = 0;
};
main
実行時に呼ばれる部分。自分の行う処理を実行した後、子供の処理を実行する(再帰というかChain of Responsibilityというか)
kill
死なす。子供を巻き添えにするので最上位をkillするだけでよろし。
makeChild
子供を作る(なぜか確率p)。子供が子供を作る確率をp*pとかしておけば、適度に収束しそう。
getName, outTree
デバッグ用。

まぁひたすらに再帰的。これを継承した接続クラスと分岐クラスがすべての始まりとなる。「遺伝的プログラミング」と書きたかったけど、交叉とか定義するのが面倒っつーか、事実上強化学習のほうがよさげなので進化的にしといた。