PipeTree 発注者の 甲山さん から注文. 半年ほど前に出した怪しげなアロメトリー図を もう一度使いたいから出力して …… うーむ, あのあたりは怪しげな内容だったから, というワケでもないんでしょーが, ついつい手がすべって ディレクトリーごとデーターもコードを 消えてしまいました, ははは …… で済まされるわけもなく, 再びこの問題に取り組むことにしました.
「(何らかの理由で) 植物の光合成速度が高くなると, 樹木集団を構成する個体は細長くなる」 という甲山さん的な「常識」が PipeTree 世界でも実現できるはずだ, ということを無理矢理にでも示すのが 前回はてきとーにゴマかしてしまった課題 でありました. いかなる計算機にとっても 常識と呼ばれるコトほど 苦手な対象もないのですが, ともかくそのようなパターンを 生成しなければなりません (どうしてこういうパターンになるのかは後述).
モデル屋をやっておりますと, こういう「常識」再現型というような 課題にちょくちょく出会うことになります. 場合によっては 妄想先行型とでも呼ぶべき …… いえいえ, 今回がそうであるとは申しておりません. それはともかく, この種の問題においては, その示すべきパターンの妥当性は問わずに, 「いかにして」 もっともらしくそのようなパターンを生成するか, そのあたりの力量だけを 問われることも多々あります. まぁ, クロのものをシロだと言いくるめるような 悪徳弁護士のようなものでしょう.
さて, これまでの PipeTree を構成するサブモデルたちでは 上の要求に対してうまい答えをつくり出すことが できない, ということがわかりました. これが前回の試行錯誤の結論です. これらサブモデルたちの一部を改造する必要があります. 結論から申しますと, 今回は
これら三つのサブモデルに手を加えることで, 所期の目的を達成できました.
PipeTree において個体の樹形を決める上で Pipe 間の資源配分は決定的に重要な意味をもちます. Pipe とは そもそもパイプモデルで導入された 架空概念でした (このモデルは神聖視されたり はたまた破綻ぶりを糾弾されたりしてる 良く分からぬモデルです).
PipeTree においては そのパイプを単位として樹木個体が形成されています. 開発当初はこれらパイプが独立したモジュールとして 機能すればそれらしい樹形が自律的に生成されるのでは, と考えていました. しかしながら, パイプの独立性を強調してみたところで 「とっくり樹形」 のような奇怪な植物の発生をうながすばかり, とわかってきました.
これまでの PipeTree における Pipe 間の資源配分モデルは 「階層搾取的な納税」 と 「非同化部に対する部分的補助」 の二つから成り立っていました. ここではこれらについて解説しません.
重要なのは, それらしい樹形を作るために導入された これらのサブモデルが複雑で難解である, という点です. 複雑で難解なモデルは 多くのパラメーターを持ち, パラメーター感受性が高く, しかも発展する余地がありません.
そこで今回は まずこれらの古い資源配分モデルをすべて捨て, もっと簡単な資源配分モデルで 「それらしい」 樹形が形成されないか, という改造から始めました. 単純化のためにパイプごとの「独立採算」という 複雑なモデルは完全に廃して, パイプの末端についてる「葉群」で稼いだ資源は いったん全部プールします. パイプ樹木の非同化部の全維持コスト (呼吸) は この共産化された資源から支払う, という単純なモデルにしました.
しかしながら, ここで共産化した資源をどのパイプにも 平等に分配すると変な樹形になります. 明るいところにいる枝も あまり光があたらない枝も同じように 資源を利用できてしまうからです. もっともらしい樹形を作るためには 竹中さんの「植物は形で勝負する」 でも述べられているように, 不採算な「枝の間引き」 と暗いところでの「産児制限」が必要, と考えられています.
これを実現する準備として, PipeTree の新しい資源配分サブモデルでは 「パイプに配給される資源量は 資源供給能力の関数になっている」 というモデルを採用しました. 末端の葉群が明るいところにあって 高い光合成速度を達成しているパイプは より多くの資源を受け取ることができます. 竹中さんの樹木モデルではシュート-枝間の 相互作用でこのようなことが 実現しているのに対して, PipeTree においては個々のパイプに対する 中央集権的な統制によっています.
このとき資源配給量が資源供給能力に比例していては, 個々のパイプが独立採算しているのと 同じことになります. これでは「とっくり樹木」になってしまうので, よく稼いでいるパイプは稼いだ以上に資源を受け取り, 稼ぎの悪いパイプが受け取る資源量は 自分の稼ぎより目減りしている, という偏った資源配分を仮定する必要があります.
上の図はその例です. パイプという架空概念を集めて 樹木を作る場合には, このような 「富めるものはますます富む」 資本主義的ともいえる配分を 中央集権的に実現することで, 「それらしい」樹形が形成されます.
しかしながら, このような改造だけでは, 甲山予測 「合成能力が高くなると 森林内の樹木個体は細長くなる」 というパターンはでません.
つぎに導入したのは 「暗い環境ではあまりパイプ分裂しない」 という可塑的なサブモデルです. これまでの PipeTree では パイプの太さに余裕があれば分裂する, というルールを採用していました. 新しいモデルによって, パイプの太さよりむしろ パイプ末端の葉群がおかれている光環境に 依存してパイプ分裂の速度が決まるようになります.
パイプ分裂は親パイプが分割されて いくつかの子供パイプが生じる過程です. 上の図で示しているように, 横軸の個々のパイプでの光合成効率 (実現した光合成速度/最大光合成速度) が 増加するとともに子供パイプに割り振る予定の 断面積が増えると過程しました. パイプには最小断面積という制約があるので, 子への配分面積がこの最小値より小さい場合は 一本の子パイプもできません. つまり光合成が十分にできない場所に葉群をもつ パイプは分裂よりむしろ成長に専念することになります.
なお, この変更にともなってパイプの資源利用の過程も 変わりました. これまでのモデルでは
資源配給→ 葉群の呼吸→ パイプ伸長→ パイプ肥大→ パイプ分裂となっていました. 新しいモデルでは
資源配給→ 葉群の呼吸→ パイプ分裂→ パイプ成長(後述)となります.
親パイプに配給された資源は 子供パイプに分配されます. その分配比はパイプの断面積に比例します. 子供パイプが少ないと 親パイプは手元に多くの資源を残すことができます.
前の節では作ったパイプ分裂サブモデルの 概要を繰り返します. 暗いところでは子供パイプにあまり面積を 割り当てない (極端には分裂しない) 一方で, 明るいところでは親パイプは 「身を削って」 子供をたくさん作ることになります (このあたりウソ臭さが横溢してるかもしれません).
これを導入してもなお甲山予測なる, えー, 「常識」的なパターンは生成されません. パイプが長くなったり太くなったりする パイプ成長のサブモデルも改良する必要あります.
これはそれほど無茶なサブモデルではなく, パイプの太さが決まればパイプは長さも決まる, 単に これだけを述べています (下の図). 十分には調べていませんが, パイプ伸長量がパイプの太さに対して単調に増加する 関数型であれば, どんなものであっても問題ないようです.
ここはむしろ以前のモデルを説明して, それとの対比を強調したほうが良いでしょう. 以前のモデルでは上述のようにまず パイプを伸長させていました. 伸長の上限値まで達してなお パイプ手持ちの資源が余っていれば パイプは肥大しました. つまり 「伸長を優先, 肥大はついでに」 というモデルであったわけです. それに対してパイプ成長の新モデルでは 「太くなければ伸長できない」 あるいは 「太くなるなら必ず伸長しなければならない」 という制約があります.
蛇足ながら, パイプ成長の手順について書いて置きます. PipeTree において一本のパイプの 形状変化 (成長) は 段階的に行われます. パイプはまず 「ちょっと太くなるためにはどれだけ資源が必要か?」 を計算します. パイプは地面にくっついている末端から 葉群を持っている別の末端まで同じ太さを 常に維持しています. ですから「ちょっと太く」なるにしても 長いパイプ全体を均等に太らせなければなりません. また 「太くなるなら必ず伸長しなければならない」 制約もありますから伸長に必要な資源量も 勘案しなければなりません. また パイプモデル教の厳格なる戒律 から葉群の面積も パイプ面積に比例しなければなりません. これらを考慮しつつ 「ちょっと太る」のに必要な資源量の予算を計上します. そのパイプに残されている資源量が この予算請求より多ければ, 資源を「ちょっと太る」ことに使います. そして手持ちの資源が許すかぎり 「ちょっと太り」 を繰り返します. 余った半端な資源は共産資源に返却します. これは次のシミュレイションステップでの 共産資源の一部として繰り越されます.
さて, ここまで述べて来た 資源配分・ パイプ分裂・ パイプ成長の単純化されたサブモデルを使って PipeTree の時間変化を計算すると, 「(何らかの理由で) 植物の光合成速度が高くなると, 樹木集団を構成する個体は細長くなる」 なる甲山予測のパターンが生成されます. 今回は光合成速度を高める操作として 最大光合成速度を二倍してみました. つまり明るい場所では 同じ光量のもとで二倍の同化物が生産できます. つまり PipeTree はとても「大食い」 になったんですけれど, その結果として個体の形状は 「やせ細って」 しまう. まずはこの逆接的な結果について説明し, つぎにそれを 生成させた方法 についての意図を述べます.
上の図は最大光合成速度を倍増した場合 (赤) と元の値 (青) の両方について, PipeTree 0 個体からなる集団の 太さと高さの時間変化を示しています. どちらの場合でも時間とともに PipeTree 個体は太くなり高くなります.
初期状態 (表示していない) 高さと太さの間にベキ乗式で定義される アロメトリックな関係が成立しています. つまり両対数表示では (水平ではない) 直線上にのります. しかし時間の経過とともに そのような関係は崩れて, 個体間の高さの差は縮まり (背ぞろいが生じる), 一方で個体の太さのばらつきが増大していることが 示されています.
さて光合成速度の差異がもたらした結果について見ると, 光合成速度が高い集団のほうが 「より高くより細く」 なっています. つまり同化モジュール (葉群) での効率の高い PipeTree のほうが「やせている」 という結果が得られました.
なぜこのような結果が得られたのか ? 現段階では まだ十分に結果の解析を行っていません. しかしサブモデル設計段階で意図していた アイデアに基づいて おおざっぱな推測を述べます (実際にどうなったのかは PipeTree 個体内の資源配分などを きちんと調べなければならないでしょう). おそらく 「光合成速度が高くなると, 競争が相対的に厳しくなり, 子供パイプを作るパイプ分裂ではなく, パイプ伸長を優先させるようになった」 のではなかろーか,と.
もうちょっと詳しく述べてみます …… 光合成の効率が上がると, なぜ競争が厳しくなったんでしょうか? 葉群がたくさん作られたためでしょうか. しかし それではパイプの面積も いっしょに増大してるはずです. おそらくパイプ分裂時の「審査」が 厳しくなったんでしょう. どれぐらいの面積を子供パイプ用に割り当てるかは, 与えられた資源量ではなく 最大光合成速度の何割を実現できているかで 評価しています. パイプ分裂しないと 親パイプは断面積を維持することができます. 子供パイプに太さを削られた場合に比べて, 断面積を維持していたほうが 各シミュレイションステップにおいて 高く伸びることができます.
ここで注意してもらいたいのが, 上の計算結果のグラフの横軸は 個体の太さであって パイプの太さではありません. 個々のパイプは太さに上限があります. つまり「太い PipeTree 個体」とは たくさんのパイプから構成されている個体 ということになります. ちょっと調べてみると, シミュレイションステップ 30 において 最大光合成速度を倍増させた集団においては 一個体は平均 8.3 本 のパイプから成るのに対して, 元の集団では 12.8 本 と 1.5 倍も 多くの数のパイプで構成されています. また「死んだパイプ」 (葉群を持たないパイプ) も PipeTree 個体の太さには貢献しています. 前者では 10.8 本 に対して後者は 25.8 本 でした. 光合成速度が高い集団は 個体の太さの中で「死んだパイプ」 の占める面積の割合が低い, という結果です.
つまり光合成速度の高い集団では パイプ分裂の回数が少なくなっています. パイプ分裂には資源は使われませんが, 親パイプの面積を削る効果はあります. そして小さくなったパイプは 高く伸びることができません.
じつは PipeTree において個体の高さに 貢献しているのは個体の中央にいる 一本だけある「垂直パイプ」だけなんですよね. 最大光合成速度の高い集団にいる個体では この垂直パイプの分裂が抑えられているために 「樹高」が高くなっている, というところまでは確かです. パイプ分裂が抑制されている原因は, 垂直パイプにおいて (実現している光合成速度)/(最大光合成速度) という比が相対的に低いためです.
では, なぜ低くなっているのかというと …… (たった今わかったコトなんですが) 光合成曲線の関数型に依存している 部分はありますね. 光合成速度を P, 最大光合成速度を Pmax としましょう.
P = (光量×定数) × Pmax / ( Pmax + (光量×定数))というよくあるやつですね. ところで, 光量を定数のように考えてみましょう. すると P/Pmax という比はどの光量においても Pmax の単調な減少関数になっています !! うーむ …… 気づかなかった.
いやはや, モデル屋である私のネライとしては, 光合成速度が増大して PipeTree 個体間の 競争がキビしくなって …… ということを考えていたんですが. 調べてみると, 最大光合成速度を倍増させた集団においては ひとつの葉群から見た 平均開空率は 0.35 であるのに対して, 元の集団では 0.31 ですねえ (こういう平均値の比較に意味があるのかどうかは 再検討する必要ありますが) …… つまり最大光合成の高い集団のほうが 競争は少ないのか …… 困りましたねえ.
シロクロつけるために 全てのパイプの P/Pmax を調べてみました. まだこの比率の平均値しか調べていないんですが …… 最大光合成速度を倍増させた集団においては 各パイプについてる葉群での P/Pmax は 0.32 であるのに対して, 元の集団では 0.39 ですねえ …… つまり最大光合成速度が高い集団のほうが 効率低いわけです, やっぱり. ああ.
それでは 「大食い → 痩せる」 という計算結果. どう解釈すべきでしょうか ……
…… やっぱり前者 ? うう …… インチキモデルを廃して また新しいインチキモデルを 作ってしまったんでしょうかね.