見出し画像

#011 積算温度を使った発芽日と収穫日の予測計算アルゴリズムおよび実証

1.予測の根幹は「積算温度」

 今回の記事の位置づけを図1に示します。発芽日と収穫日を予測する計算のアルゴリズムについて解説します。また、その予測精度も実際の作物(ほうれん草)で実証したので、それも報告します。
 これがうまくいけば、蒔いた種は、いつになったら芽が出るのだろう?いつまで待てばよいのだろう?、そんな不安を抱きながら地表を観察するという、ツライ作業から解放されます。

図1.今回の記事の位置づけ、積算温度による発芽日と収穫日の予測計算

 発芽日と収穫日の予測には、「積算温度」と呼ばれる指標を用いました。この指標は、植物に与えられるエネルギーのようなものです。温度と時間の積で示され、単位は[℃・日]になります。積算温度は、温度が一定なら長方形の面積になります。この積算温度により、作物の生育にまつわるマイルストーンが示せることを知りました。
 例えば、ほうれん草を播種してから発芽するまでに必要な積算温度は100℃・日、その先の発芽から収穫までにはおよそ500℃・日というのが知られています。 100℃・日で発芽するということは、有効温度20℃が5日間、あるいは、有効温度10℃が10日間で発芽する、というように分解して考えることができます。
 この積算温度に近い考え方は身近にもいろいろあります。例えば電気代の電力量。1kWhといえば、500Wのドライヤーを2時間使った電力量に相当します。100Wの電球を10時間つけっぱなしでもよいでしょう。SEの皆さんなら、プロジェクトの人月工数で示す仕事量が近いです。6人月の仕事量の場合、2人なら3ヶ月、6人なら1ヶ月、といった具合です。ただし、人月はスキルマッチなど人的なゆらぎや、チームワークの成否に大きく左右されるので、このたとえは多くの前提を必要とします。
 温度値を周期的に収集すれば、どれぐらいの期間、何℃の温度にさらされたか分かるはずで、そこから積算温度は計算できそうです。その増加の傾きによって、目標とする発芽や収穫までの時間を見積もれば、発芽日と収穫日の予測ができると考えました。

2.積算温度の計算アルゴリズム

 積算温度をリアルタイム向けのシステムに実装するため、考え出した計算アルゴリズムについて説明します(図2)。

図2.積算温度の計算アルゴリズム

 左上のグラフに示すように、温度は変動します。このグラフで、積算温度は横軸を時間とするグレーの部分の面積に相当します。この面積を求めるには、右上のグラフのように、経過時間と平均温度の積で計算するのが簡単そうです。大きな長方形の面積にしてしまう、ということです。
 ですがこの方法だと、例えば、30分周期のデータ(1日あたり48点)を6ヶ月間(180日)収集した場合に、最終的には8640点あるデータの平均値を計算しなければなりません。前回計算値の結果を再利用することがないので、毎回、似たような計算をすることになり、計算上非効率です。さらに、周期がずれデータ間の期間が変動したり、データが欠損した場合の処理も複雑になります。 この他、実際の生育を考え、「生育に有効な温度は気温5℃以上であり、それを下回った場合は0℃とみなし積算温度から除外する」といった条件づけをすることも難しくなります。つまり、実装には不向きな計算アルゴリズムといえます。
 そこで、別のアルゴリズムを考えることにしました。今回の温度値は離散値が連続する時系列データであることに注目し、数値積分→区分求積法→矩形近似、といった連想をしました。細長い短冊のような矩形(長方形)の合計で近似する、ということです。具体的には、この矩形の縦を区分温度、横を区分期間とし、その小さな区分の面積を合計する計算です。これなら、最新の矩形の区分の面積をこれまでの累積に逐次加算するだけでよくなります。区分温度の条件に生育に有効なのは5℃以上、といった前述の条件を加えるのも簡単です。
 台形近似まで厳密にする必要もなかろう、ということで、この矩形近似で積算温度を計算するコードを生成し、実装することにしました。

3.予測計算のアルゴリズム

 積算温度が計算できれば、予測計算のアルゴリズムは簡単です。予測は線形とする、というのが前提ではありますが。発芽日の予測アルゴリズムを図3に示します。

図3.発芽日の予測アルゴリズム

 この図のグラフは、横軸が時間で縦軸が積算温度です。時間の経過とともに獲得した積算温度が増えていく様子を示しています。線形であれば、「①経過時間」と「②獲得した積算温度」の比率は、「③発芽に必要な時間」と「④発芽に必要な積算温度」の比率に等しく、相似形になります。なので、「③発芽に必要な時間」は、右上の計算式で求められます。この式の意味合いを言葉にすると、『発芽まで経過時間の何倍かかるのか?』ということです。なお、発芽の進捗率は、「②獲得した積算温度」を「④発芽に必要な積算温度」で割れば計算できます。
 収穫日の予測アルゴリズムも同様です(図4)。太字の部分の文言が変わるだけです。ただし、収穫に必要な時間は季節変動を含む長期間におよぶため、積算温度の傾きは全期間ではなく、直近1週間で計算したほうが精度が高くなるなどの工夫は必要です。

図4.収穫日の予測アルゴリズム

4.実証

 実際にほうれん草の種を畝に蒔き、ビニールトンネルを設置して発芽日を記録しました。その際、これまで説明したアルゴリズムを実装した『菜園のリアルタイム温度監視および発芽日と収穫日の逐次予測システム』も稼働させました。このシステムで、発芽の推定進捗率と発芽予測日を計算させ、実際の発芽日と比較しました。その偏差をもって精度を検証しました。
 推定進捗率のトレンドと精度検証の結果を図5に示します。

図5.推定進捗率のトレンドと精度検証(ほうれん草)

 横軸が実時間(年月日時分秒)、縦軸が推定発芽進捗率です。日中は温度が高く進捗が捗り、夜間は温度が低く進捗が停滞するため、進捗率が階段状に上がっていくことが分かりました。推定進捗率が91%の段階で、実物は発芽したので、偏差は-9%の精度となりました。
 実用上は、そろそろ発芽しないとおかしいかも、という不安を払拭できればよいので、これで十分な精度と評価しました。なお、発芽の条件は約半数が発芽すること(今回の播種160粒なので80粒ぐらい)としました。発芽タイミングに種ごとのバラツキは必ずあるからです。この分布もいずれ分析してみたいと思います。分散と偏差値で表現できる予感です。
 次に、発芽予測日のトレンドと精度実証の結果を示します(図6)。

図6.発芽予測日のトレンドと精度検証(ほうれん草)

 同じく、横軸は実時間で、縦軸は発芽するであろう発芽予測年月日です。予測システムは、2/25の8時に発芽と予測しましたが、実際には22時間早い2/24の10時に発芽しました。これも実用には十分耐えられる精度と評価しました。予測日のトレンドから、播種したばかりだと、積算温度の傾きが一日だけの温度変動で大きく振れてしまうので予測日は安定せず、3日ぐらい経つと安定することが分かりました。
 このようにして、予測計算のアルゴリズムを開発・実装し、システムを実現しました。実際に稼働させ、精度の検証も出来ました。成功です。


いいなと思ったら応援しよう!