前回の記事では、顧客デモをきっかけに、太陽光パネルの配置を「できるだけ多く置く」考え方から、実際の施工を意識したレイアウトへ見直した話を紹介しました。
その流れの中で、次に取り組むことになったのが営農型太陽光発電のPoCです。
当時の自分は、営農型太陽光という言葉自体をほとんど知りませんでした。
農地に太陽光パネルを設置するという意味では、それまで開発していた農地向けの発電量シミュレーションと近いように見えます。
しかし、実際に要件を見てみると、考え方はかなり違っていました。
発電だけではなく、農業も続ける
通常の農地向けシミュレーションでは、対象となる土地にどれだけソーラーパネルを配置できるか、その結果どれくらい発電できるかを計算していました。
一方で営農型太陽光では、太陽光発電と同時に、その土地で農業も続けます。
そのため、
「どれだけ多くパネルを置けるか」だけを考えればいいわけではありません。
パネルを密に配置しすぎれば、その下に届く日光が減ります。
作物を育てることを考えると、発電量だけではなく、
農地にどれくらい光を残すか
という条件も重要になります。
そこで出てきたのが、遮光率という考え方でした。
「遮光率」を指定してパネル間隔を決める
今回のPoCでは、ユーザーが遮光率を指定できるようにしました。
例えば、
遮光率を50%にしたい
という条件を設定すると、その遮光率になるようにパネル同士の間隔を計算し、配置を行います。
つまり、それまでの
対象領域に入るだけパネルを配置する
という考え方から、
農業に必要な日光を残しながら、その条件の中でパネルを配置する
という考え方へ変わりました。
要件定義上も、営農型PPAモードでは遮光率を設定できるようになっており、遮光率はシミュレーション条件の一つとして扱われています。
影を考えると、パネル間隔も単純ではない
営農型に取り組む中では、遮光率とは別に、パネル列の間隔についても考える必要がありました。
顧客との打ち合わせでは、
- 年間の太陽位置を考慮したい
- パネル同士の影が重ならないようにしたい
- 農地内を歩けるスペースも確保したい
という要望が出ていました。
そこでAIチーム側では、太陽高度やパネルの傾斜角、緯度などから影の長さを計算し、必要な列間隔を算出する処理も実装されました。
例えば、冬至のように太陽高度が低く、影が長くなる条件を基準にして、
影の長さ + 歩行スペース
をパネル列の間隔として確保します。
実際のテストでは、列間隔を設けることで配置枚数が大きく減るケースもありました。
ここでも改めて、
パネル枚数を最大化することが、必ずしも目的ではない
ということが分かります。
自分が担当したのは「実装」より「要件とのズレを確認すること」
今回の営農型PoCのアルゴリズム自体は、AIチームのTangさんに実装してもらいました。
自分が担当したのは、その実装結果を実際に動かして確認し、
要件通りになっているかを見ること
でした。
パネル配置結果を確認して、
- 想定していた間隔になっているか
- 指定した条件が配置に反映されているか
- 要件と違う動きになっていないか
を確認し、違う部分があれば修正をお願いしました。
自分でアルゴリズムを書いたわけではありませんが、PoCではこうした実装結果と要件の間をつなぐ作業も重要でした。
仕様上は正しそうに見えていても、実際に配置結果を見てみると、想定していたものと違うことがあります。
そのため、動作確認をしながらAIチームと調整していく形で進めました。
知らない業界要件を、PoCを通して理解する
今回特に印象に残ったのは、営農型太陽光という仕組みをほとんど知らない状態から開発に入ったことです。
最初は、
農地にパネルを置く機能の延長
くらいのイメージでした。
しかし実際には、
- 作物に必要な日射
- パネルによる影
- 遮光率
- 列間隔
- 農地内の歩行スペース
など、通常の太陽光発電とは違う条件を考える必要がありました。
前回の記事では、施工の都合から「最大枚数を配置すればよいわけではない」ということを知りました。
今回の営農型ではさらに、
「最大発電量を出せばよいわけでもない」
という別の考え方が加わりました。
太陽光発電だけを最適化するのではなく、農業と発電をどう両立させるか。
そのために遮光率という条件からパネル配置を変える。
PoCを進める中で、単純な発電量シミュレーションから、より実際の利用目的に合わせたシミュレーションへ発展していった取り組みでした。