Optunaを使ってキネマ流出解析GUIアプリ(KinematicGUI_r008)を作成しました
はじめに
山地河川の小流域を対象に、複数の斜面から河道へ流入し、最下流の観測地点で計算流量と実測流量を比較するための簡易プロトタイプを作成しました。
元ネタは弊社のエクセルマクロをpythonへ変換したプログラムを使っています。
今回作成した KinematicGUI_r008 は、1本の河道に複数斜面が接続する流出解析モデルを、GUIで操作できるようにしたものです。パラメータ同定には Optuna を利用しています。
GUIアプリ
対象モデルは、まず理解しやすいように次の条件にしています。
- 河道は1本
- 河道長は1 km
- 計算ピッチは100 m
- 河道セル数は10
- 5つの斜面が河道へ横流入
- 最下流端で計算流量と観測流量を比較
モデルの考え方
このプロトタイプでは、山地流域の流出を次のように分けて考えます。
- 降雨から有効雨量を計算する
- 各斜面で表面流を計算する
- 斜面流出を河道へ横流入として与える
- 河道内を下流へ伝播させる
- 最下流地点でハイドログラフを評価する
斜面流は、概念的に以下のような式で表します。
q = α h^m
ここで、q は斜面の単位幅流量、h は水深または水膜厚、α は流れやすさを表す係数、m は非線形性を表す指数です。
河道流は、以下のような流量と流水断面積の関係で表します。
Q = β A^n
ここで、Q は河道流量、A は流水断面積、β は河道の流下しやすさ、n は非線形性を表す指数です。
インストール方法
今回は exe 版を使います。
ソースファイルについて、後日gitで公開する予定です。
- KinematicGUI_r008.zipをダウンロードします。
- ZIP ファイルを任意のフォルダーに解凍します。
- 解凍したフォルダー内の KinematicGUI_r008.exe を実行します。
主な機能
KinematicBasinPrototype_r008_gui では、以下の操作ができます。
- サンプルCSVの作成・読込
- 観測雨量・観測流量CSVの読込
- 複数斜面 + 1河道の流出計算
- 斜面条件、河道条件、モデルパラメータの編集
- pyqtgraphによるハイドログラフ表示
- 河道セル別の横流入表示
- 斜面別流出量表示
- ピーク時刻の河道流量分布表示
- Optunaによるパラメータ同定
- 同定履歴とbest scoreの表示
- 最良パラメータの計算条件への反映
- 計算結果CSV保存
- 同定履歴CSV保存
- 使用方法HTML表示・保存
画面構成
タブ構成は、流出解析の流れに沿って整理しています。
キネマ概念図
計算条件
雨量・流量データ
斜面・河道条件
雨量・流量図
河道・斜面流出
パラメータ最適化
結果表
使い方・ログ
パラメータ同定
パラメータ同定には Optuna を使っています。
同定対象は、主に次のパラメータです。
| パラメータ | 意味 |
|---|---|
hill_alpha |
斜面流の流下しやすさ |
hill_m |
斜面流の非線形指数 |
channel_alpha |
河道流の流下しやすさ |
channel_m |
河道流の非線形指数 |
runoff_coeff |
降雨のうち直接流出に寄与する割合 |
GUIの「パラメータ最適化」タブでは、探索範囲、試行回数、乱数seedを設定し、Optunaによる探索を実行できます。
評価指標は、まずはRMSEを中心にしています。計算流量と観測流量の差が小さくなるようにパラメータを探索します。
RMSE = sqrt(mean((Qsim - Qobs)^2))
今後の拡張案
今回のモデルは、DEMやGISから自動で流域を構築する前段階のプロトタイプです。今後は次のような拡張を考えていきます。
- DEMから流域・河道・斜面を自動生成する
- 斜面ごとに異なるパラメータを持たせる
- 複数洪水イベントで同定・検証する
- 土壌損失、初期損失、基底流を追加する
- GIS上で斜面と河道セルを確認できるようにする
- 実観測雨量・流量データを使った検証機能を追加する
まとめ
KinematicGUI_r008 は、山地流域の流出解析を理解するための最小構成プロトタイプです。
複数斜面から河道へ流入し、下流観測地点で計算値と実測値を比較する流れを、GUI上で確認できます。さらに、Optunaによるパラメータ同定を組み込むことで、モデル構造と観測データの関係を試行錯誤しながら確認できるようにしました。
今後、GISやDEMと連携することで、より実流域に近い解析ツールへ拡張できると考えています。
キネマティックウェーブ流出解析に関する参考リンク集
キネマティックウェーブ法は、斜面流・河道流を物理式で簡略化して扱える一方で、適用条件や限界もあります。実務や学習で理解を深めるために、以下の資料が参考になります。
基礎理論・考え方
-
USGS: Basic Concepts of Kinematic-Wave Models
キネマティックウェーブ近似の理論、動水勾配を簡略化する考え方、有限差分法、適用限界を理解するための基礎資料です。 -
近畿地方整備局 和歌山河川国道事務所: 洪水流出計算について(Kinematic Wave法)
斜面と河道を仮想的にモデル化して流出を計算するイメージが日本語で説明されています。今回のプロトタイプの概念図に近い内容を理解するのに向いています。 -
京都大学防災研究所系資料: Kinematic Wave Flow Models for River Basin Runoff
流域スケールのキネマティックウェーブ流出モデルや、地形モデル上の流れの扱いを理解するための研究資料です。
既存ソフト・モデルでの扱い
-
HEC-HMS Technical Reference: Kinematic Wave Transform Model
HEC-HMSでのキネマティックウェーブ変換モデルの説明です。斜面長、勾配、粗度、面積割合、routing steps など、実装時に必要になる入力項目の整理に役立ちます。 -
US EPA: Storm Water Management Model / SWMM
雨水流出・排水ネットワーク解析ソフトです。河道・管路の追跡では、キネマティックウェーブ法とダイナミックウェーブ法の考え方を比較する際の参考になります。 -
EPA SWMM 5.1 User’s Manual PDF
SWMMのサブキャッチメント、地表面流、管路・河道追跡、観測値との比較などを具体的に確認できます。
貯留関数法との関係・日本語資料
-
北海道河川財団: Kinematic Wave法の貯留関数法への変換
キネマティックウェーブ法と貯留関数法の関係を考えるうえで参考になります。貯留関数GUIとの考え方の橋渡しにも使いやすい資料です。 -
土木学会附属土木図書館: 雨水流法と貯留関数法との相互関係
単一矩形斜面上の流出過程を想定し、キネマティックウェーブモデルと貯留関数法の関係を検討した古典的資料です。
実装・発展の参考
-
Bentley: Kinematic Wave Equation
斜面流を均一勾配・均一粗度の平面流として扱う場合の説明です。到達時間や斜面分割の考え方を確認する際に参考になります。 -
Optuna Documentation
今回のように流出モデルのパラメータをRMSEやNSEなどの評価指標で同定する場合に利用できる、Python向けハイパーパラメータ最適化ライブラリです。




