(農業)情報工学・課題 (2023/11/09)

水稲の生育予測プログラムの作成(2)(GAS Version)

改良型生育モデル
今回は、水稲の生育を予想するプログラムに改良を加える。基本とする考え方は、先週の【積算気温モデル】をベースにしている。
今回の課題では、品質と収量に関するモデルを組み込んでみる。また、日本の様々な地方(寒冷地や暖地)での栽培も模式化してみたい。 ただ、複雑なモデルを複数組み合わせて同時に動作させた場合、結果の評価が難しくなるため、それぞれのモデル自体は単純化している。そのため、現実の挙動とは異なる場合も含まれると思うが、あくまでモデル構築実験と割り切って理解して欲しい。

今回の課題で取り扱うのは、基本的には先週と同じく「単純積算気温モデル」とする。
代表的な品種である「コシヒカリ」を考え、田植えからの積算気温が1700度で出穂し、その後1000度で登熟が完了して、収穫日となるという前提は、先週と同一である。
今回は新たに、収量(YIELD)に影響を与える因子(yFactor)と、価格(PRICE)(≒品質)に影響を与える因子(pFactor)を組み込んでモデル化する。当初の因子は、どちらも初期値を1.0(最大値)とし、影響があれば、少しずつ(0.001 から 0.1)程度、値を減少させる。
具体例で示す。(モデル化する場合には、自分で重要と思った物を組み込む。複数の因子をモデル化する事が好ましいが、ここに例示したすべての因子をモデル化する必要は無い。)
  1. 幼苗期に低温に晒されたため発生する生育障害 : 例えば、田植え後15日以内に平均気温が15度以下(又は最低気温が10度以下)になった場合、1日につき(あるいは1度につき)yFactorを、0.01減らす。
  2. 登熟期の低温で発生する「イモチ」病 : 出穂後、平均気温が25度を下回った場合、yFactorを0.01減らす。【サンプルでは、予めこのモデルが組み込んである。なお平均気温25度でと言う条件となっていてるが、本来はこの程度の気温でイモチが発生する可能性は低い(実際には、降水との関連もある。)現在は、プログラムの動作チェックのためにこの設定にしている。】
  3. 夏場の高温に晒された事による食味の低下 : 平均気温が28度を超えた場合、pFactorを0.01減らす。
  4. 収穫日の当日雨が降った事による、胴割れ米の発生 : 収穫予定日の降水量が3mmを超えた場合、pFactorを0.03減らす。収穫可能日まで、それを続ける。この場合、収穫可能日は、一日ずつ変化することになる。
  5. その他にも、コメの生育に関する各種の知見がある。興味のある人は、いろいろと、モデル化してみよう。
 また、今回の気象データは、気温3要素(平均、最高、最低)と降水量の4要素の気象データとしている。地点と年度も複数用意している。自分のモデルが、どの地方で高い年収となるかを考えてみたい。気温データとしては札幌(北海道)、十日町(新潟県)、東京、彦根(滋賀県)、宮崎。年としては、1993,1994,1995,2009,2020年のデータが用意してある。
なお2020年のみ閏年なので2月29日のデータが存在している。そのため、2020年のデータを利用するときは、田植え日を一日ずらす、結果の解釈の日付は一日ずらす。などの必要がある。
これ以外の地域のデータを作成することも可能なので、余裕と興味のある人は、いろいろな地方のデータを用いて、自分のモデルがどのような挙動を示すかを、調べて欲しい。但し、データに欠測値(空白や他の記号など)があると、今回のプログラムではエラーとなる。アメダスの生データは、そういった欠測値が紛れ込んでいる場合がある。自分でデータを取得する際には、注意しよう。なお実用的なプログラムの場合、欠測値の取り扱いは、内挿、あるいは、平年値での代替などの方法がある。(内挿の方が簡単であり、また、欠測値が少ない場合には推定精度も高い)。(気象業務上の平年値は近年の30年間の平均値としている。平年値の見直しは10年に一度なので、現在用いられている平年値は1991年ー2020年の平均である。)
プログラムの動作
今回の課題プログラム-Calc02_02.gsの説明は、前回とほぼ同様の動作を行う。
動作手順は次の通りである。
  1. 共通変数と初期設定値(グローバル領域)
  2. メッセージ表示関数
  3. 基礎(共通)データ表示関数
  4. 計算結果の表示関数
  5. 基礎データ読み込み(mainシートから)
  6. 気象データ読み込み(TEMP_FILEシートから)
  7. シミュレーション関数
    (実行ボタンクリック時)
  8. 計算値の定義・初期化
  9. 日付ループの開始
  10. その日の気温3要素(平均、最高、最低)、降水量を作業用に設定
  11. 田植え後、出穂に必要な積算気温の計算開始
    積算気温が出穂積算気温(1700)を超えたら出穂日!
    ※もし、田植え後の低温(後述)モデルを組み込む場合はここ
  12. 出穂後、登熟に必要な積算気温の計算開始
    積算気温が登熟積算気温(1000)を超えたら登熟日!
    ※今回は、ここに「テスト用イモチモデル」が組み込んである
  13. 日付ループ終了
  14. 年収の計算と結果の書き出し
課題プログラムは、基本的に動作するようになっている。
ただ、現在のイモチモデルは、「登熟期間中に平均気温が25度未満で収量(yFactor)が0.01減少する」というモデルになっている。
これは一般的なイモチ病の発生条件(降水があり平均気温が20度前後)に比べると非常に厳しくしているが、モデル動作チェックのためである。

プログラム中の、主要な変数名とその意味は、以下の通りである。
Variables in Calc02.html
変数名説 明備 考
VARIETY品種名プログラム冒頭で定義(コシヒカリ)
TAUE_DATE田植え日(日付連番)プログラム冒頭で定義(109)
TARGET_EAR_TEMP_SUM出穂に必要な積算温度プログラム冒頭で定義(1700)
TARGET_TOUJUKU_TEMP_SUM登熟に必要な出穂後の積算温度プログラム冒頭で定義(1000)
currentEarTempSum出穂までの積算気温の作業用
TARGET_EAR_TEMP_SUMと比較
計算中に利用
currentToujukuTempSum登熟に必要な積算気温の作業用
ARGET_TOUJUKU_TEMP_SUMと比較
計算中に利用
YIELD平均的な収量(kg/10a)プログラム冒頭で定義(530kg)
PRICE平均的な価格(円:60kgあたり)プログラム冒頭で定義(13000円)
METEO[today][0]today日目(日付連番)の平均気温
366日型で提供
気象データファイルから読込
METEO[today][1]today日目(日付連番)の最高気温
366日型で提供
気象データファイルから読込
METEO[today][2]today日目(日付連番)の最低気温
366日型で提供
気象データファイルから読込
METEO[today][3]today日目(日付連番)の降水量
366日型で提供
気象データファイルから読込
shussuiDate出穂日(日付連番)計算して算出する
toujukuDate登熟日(日付連番)計算して算出する
shukakuDate収穫日(日付連番)計算して算出する
yFactor収量に影響を与えるファクター(因子)初期値は1.0で、影響があれば変化
pFactor価格(品質)に影響を与えるファクター(因子)初期値は1.0で、影響があれば変化
annualSales1ha当たりの売り上げ金額(所得では無い)計算して算出する

<課題ファイルへのリンク>
  1. 気象データ込みのエクセルファイル:calc02.xlsx
  2. プログラムスクリプト :calc02_02.gs
気象データは、以下の年と地域のデータとなっている。
これらの中で、1993年(平成5年)は日本が記録的な冷害を体験した年である。この年にはコメの生産量が約30%減となり、海外からコメを緊急輸入する事態となった。翌年の1994年は一転して猛暑の年であった。なお、2020年はこれまでの観測で最も平均気温が高い年で、2009年は平年値との偏差がゼロの年となっている。
(参考:日本の平均気温の平年値との偏差は、1993(-0.82),1994(+0.26),1995(-0.50),2009(0.00),2020(+0.65)となっている。気象庁ー日本の年平均気温偏差

なお、他の地点の気象データを手に入れたい場合には、次のウェブサイトから入手することが出来る。
課題としては、次の通りに実行する。

課題の提出にあたって
プログラムはGoogle Apps Scriptで作成する。
今回の課題の提出は、
  1. 作成したプログラム部分(追加した部分のみで良い)。ワードファイルなどに貼り付け、必要に応じて注釈(コメント)を付けること。
  2. 実行結果(最低でも2カ所以上の気象データで実行する)。テキストファイルまたはワードファイル
    実行結果には、自分の組み込んだモデルの説明と、結果の解釈を記述すること。
    【重要】自分の組み込んだモデルが、動作している事を確認する。
の2点を送信することである。

【参考1】今回のプログラムの最終的な出力は1haあたりの売上(10a当たり収穫量*10 x 60kgの価格/60)として産出している。日本の農家の平均耕作面積は2.98ha。つまり農家の売上は、ここで得られる数値の約3倍である。なお、価格と収量は2021年時点での標準的な数値である。
【反当収量】:1反(=10a)当たりの玄米の収穫量。現在では1反で10俵(600kg)取ることが目標である。なお農地を貸し出す場合の貸借料は1反で1俵が相場である。
【一合、一升、一斗、(一俵)、一石】: 1合は180ccであるが、玄米では約150gになる。1升は10合、1斗は10升(斗酒なお辞せず)、10斗で1石である。なお1俵は4斗である。
ここで1石とはどのくらいの玄米量であるか。1人が1食に食べる食事の量は1合弱が基本である。となると1年では1x3x365で1000合程度(1石)を食べることになる。(現在の茶碗では1合は茶碗2杯分程度に相当する。)
ごはんとして食べるときは、水の量を白米の容積の1.2-1.4倍追加している。今、1.2倍とすると1合のご飯は(コメ150g+水180g)=330g程度になる。ちなみにココイチのカレーでの標準盛りのグラム数は300gである。(^・^)

【参考2】農家から出荷される米袋には、次のようなスタンプが押されている。

これは、農林水産省の基準で、コメの検査等級を表示したものである。この検査はあくまで外観の検査であるため、食味自体の検査では無い事に注意する必要がある。農林水産省によると、今年度(2023年)は夏場の高温のために白未熟粒が多く混入し1等級のコメが過去最低になった。