橋梁のLCCや長寿命化計画を検討していると、「劣化予測モデル」や「劣化曲線」という言葉が出てきます。
しかし、実際に計算しようとすると、
- 数式の各変数は何を意味するのか
- 劣化係数はどこから出てきたのか
- Excelではどう書けばよいのか
- VBAで計算する場合はどう実装するのか
というところで止まりやすくなります。
この記事では、国土交通省 国土技術政策総合研究所(国総研)の資料に掲載されている二次関数型の劣化曲線をもとに、数式の意味とExcel・VBAでの計算方法を整理します。
重要:利用上の注意
本記事は、国総研資料に掲載された劣化予測の考え方を理解し、Excel・VBAで計算方法を確認するための技術解説です。
掲載する数式、Excel式、VBAコードを実際の維持管理計画、LCC算定、補修・更新判断などへ適用する場合は、対象施設の条件、発注者の要求事項、採用する基準・要領、最新資料などを必ず確認してください。
掲載内容を実務へ適用する場合は、利用者自身の責任で計算条件と結果の妥当性を確認してください。
劣化予測モデルの出典
今回扱う数式の出典は、国土交通省 国土技術政策総合研究所の次の研究報告です。
国総研プロジェクト研究報告 第4号
『住宅・社会資本の管理運営技術の開発』
該当箇所は、
C. ネットワークマネジメント編
→ 第Ⅰ部 土木構造物の群管理手法のケーススタディ
→ 3. ミクロマネジメントの簡易的な手法
→ 3-2. 劣化推定に関する検討
です。
国総研公式ページ:
該当PDF:
https://www.nilim.go.jp/lab/bcg/siryou/kpr/prn0004pdf/kp0004324.pdf
国総研資料では、劣化曲線について、点検データに基づく解析による予測を基本としています。
一方で、資料中の曲線はある地域の橋梁を分析した平均値であり、対象構造物によって劣化過程は異なるため、実際には対象構造物の点検結果をもとに扱う必要があることも示されています。
つまり、これから紹介する式は、
「国総研が示した二次関数型の劣化予測という考え方」
として理解することが重要です。
掲載されている係数を、すべての橋梁へそのまま適用するという意味ではありません。
国総研資料に掲載されている二次関数
国総研資料では、劣化曲線を次の二次関数として仮定しています。
y=-ax^2+bここで、
- x:経過年数
- y:経過年数xにおけるランク
- a:劣化係数
- b:曲線の初期値
です。
資料のケーススタディでは初期値をランク5としているため、
b=5となり、劣化曲線は、
y=-ax^2+5という形になります。
経過年数が増えるにつれてランクが低下し、時間が経過するほど低下量が大きくなる二次曲線です。
「y」を健全度と単純に呼ばない方がよい理由
ここは原典を読むうえで注意が必要です。
国総研資料の直前のページには、部材HIや橋梁全体のBHIとして「健全度」という別の指標が定義されています。
一方、今回扱う劣化曲線の縦軸はランク1~5です。
そのためこの記事では、二次関数の y を単純に「健全度」とせず、
劣化曲線上のランク・評価値
として扱います。
実際の業務で別の健全度尺度や評価尺度を使用する場合には、その尺度とこのモデルの対応関係を別途整理する必要があります。
鋼橋の掲載例は y = -0.00389x² + 5
国総研資料の表3-2-2には、各部材・種類について劣化係数と劣化曲線の例が掲載されています。
鋼橋の例では、劣化係数は、
a=0.00389です。
したがって劣化曲線は、
y=-0.00389x^2+5となります。
では、実際に経過年数を代入してみます。
10年後
経過年数を10年とすると、
y=-0.00389\times10^2+5したがって、
y=4.611です。
20年後
20年後では、
y=-0.00389\times20^2+5となり、
y=3.444です。
30年後
30年後では、
y=-0.00389\times30^2+5より、
y=1.499となります。
国総研資料では、鋼主桁についてランクⅠとなる年数を32年とする例が示されています。
同じ式へ32年を代入すると、
y=-0.00389\times32^2+5となり、
y\approx1.02です。
おおむねランク1へ到達していることが分かります。
ここまで確認すると、この式の基本的な役割は、
劣化係数aと経過年数xから、その時点のランクyを計算すること
だと理解できます。
Excelで劣化曲線を計算する
Excelでは、この二次関数をそのままセル式へ置き換えられます。
例えば次のように配置します。
- B1:劣化係数a
- B2:初期ランクb
- A5以降:経過年数x
- B5以降:計算結果y
B1には次の値を入力します。
0.00389
B2には、
5
を入力します。
A5には0、A6には1、A7には2というように、経過年数を入力します。
B5には次の式を入力します。
=-$B$1*A5^2+$B$2
この式を下方向へコピーすれば、各年のランクを計算できます。
数学上の式、
y=-ax^2+bとExcel式は、そのまま対応しています。
$B$1→ 劣化係数aA5→ 経過年数x^2→ xの2乗$B$2→ 初期値b
特別なExcel関数を使っているわけではありません。
二次関数をそのままセル式として表現しています。
Excelでグラフにすると劣化曲線を確認しやすい
A列の経過年数とB列の計算結果を使って散布図を作成すると、劣化曲線を視覚的に確認できます。
例えば0年から40年程度まで計算すると、初期ランク5から徐々に値が低下し、30年を超える頃にはランク1付近へ到達する曲線になります。
数値だけを並べるより、
どの時期からランク低下が大きくなるのか
を把握しやすくなります。
ただし、グラフがきれいに描けたことと、その劣化曲線が実際の対象橋梁を適切に表していることは別問題です。
Excel式を使う際の注意
Excelで計算できることは、モデルの妥当性を保証するものではありません。
特に、国総研資料に掲載された
0.00389を、対象橋梁の条件を確認せずそのまま実務へ適用しないでください。実務利用時には、対象構造物の点検結果、部材、環境条件、採用する評価尺度、管理水準などを確認する必要があります。
VBAで劣化ランクを計算する
同じ計算は、VBAのユーザー定義関数にすることもできます。
Excelシート上で多数の年次や複数条件を扱う場合には、式の意味を明示した関数として用意する方法があります。
コード利用上の注意
以下のVBAコードは、計算方法を理解し、動作を確認するためのサンプルです。
実行前にはExcelファイルのバックアップを作成してください。
業務で使用しているファイルへ、いきなり貼り付けて使用しないでください。
Excelのバージョンや設定によって、動作が異なる場合があります。コードの利用および実務への適用は自己責任で行い、必ずテストデータで計算結果を検証してください。
標準モジュールへ次のコードを記述します。
Option Explicit
Public Function CalcDeteriorationRank( _
ByVal x As Double, _
ByVal a As Double, _
Optional ByVal b As Double = 5#) As Variant
If x < 0 Then
CalcDeteriorationRank = CVErr(xlErrNum)
Exit Function
End If
If a < 0 Then
CalcDeteriorationRank = CVErr(xlErrNum)
Exit Function
End If
CalcDeteriorationRank = -a * x ^ 2 + b
End Function
標準モジュールへ登録すると、ワークシートから通常のExcel関数と同じように呼び出せます。
例えば、
=CalcDeteriorationRank(20,0.00389,5)
と入力すると、
3.444
が返ります。
計算している内容は、
y=-0.00389\times20^2+5と同じです。
VBAコードで値を1~5に丸めていない理由
今回のサンプルでは、計算結果を強制的に1~5の範囲へ収める処理を入れていません。
これは意図的です。
元の二次関数は、経過年数を大きくすればランク1を下回り、さらに計算を続ければ0以下の値も返します。
しかし、
「1以下になったら必ず1として扱う」
という処理は、元の数式自体には含まれていません。
対象業務で、
- どのランクを管理限界とするのか
- ランク1到達後をどのように扱うのか
- どの時点で補修・更新を設定するのか
は、別途定める管理条件です。
VBAコード側で勝手に値を補正すると、
元の劣化モデル
と、
業務上の管理ルール
が混在してしまいます。
そのため、このサンプルでは二次関数の計算結果をそのまま返しています。
0.00389をそのまま使うことが本質ではない
この記事で重要なのは、0.00389という数値そのものではありません。
国総研資料には、鋼橋以外にも異なる劣化係数が掲載されています。
これは、部材や材料、条件によって劣化の考え方が異なることを示しています。
さらに原典では、この劣化曲線について、
- 点検データに基づく解析による予測を基本とする
- 掲載曲線はある地域の橋梁を分析した平均値である
- 対象構造物によって劣化過程は異なる
- 対象構造物の点検結果を基に扱う
- 今後の点検や検討によって劣化曲線を更新する
という前提が示されています。
つまり、
二次関数というモデル形式を採用すること
と、
国総研資料に掲載されている係数をそのまま採用すること
は別の問題です。
ExcelやVBAへ実装すると計算そのものは簡単です。
実務上、より重要なのは、
どの劣化係数を、どのような根拠で設定したのか
です。
劣化係数aそのものをどのように設定するかについては、次の段階で別途整理します。
原典には数値の不一致が見られる箇所もある
原典を利用する場合には、もう一つ注意しておきたい点があります。
表3-2-2の「床版・塩害地域」の行では、
a=0.00444と掲載されている一方、同じ行の劣化曲線は、
y=-0.00391x^2+5と記載されています。
係数欄と劣化曲線欄の数値が一致していません。
この記事では、どちらが正しいかを推測して補正しません。
原典を計算根拠として利用する場合には、こうした記載も含めて元資料を直接確認し、必要に応じて別資料や業務上の設定根拠と照合することが重要です。
今回の計算例で鋼橋の、
a=0.00389および、
y=-0.00389x^2+5を使用したのは、原典表の係数欄と劣化曲線欄が一致している例だからです。
この式がLCCにつながる理由
LCC計算では、将来のどの時点で補修や更新を行うのかを設定する必要があります。
劣化曲線を使うと、
経過年数x → ランクy
という関係を計算できます。
さらに式を逆に使えば、
ある管理水準のランクへ何年後に到達するのか
という計算も可能です。
そこから、
劣化予測
→ 管理水準への到達時期
→ 補修・更新時期
→ 費用発生年
→ 現在価値換算
→ LCC
という流れへつながります。
この記事では、まず最初の、
経過年数からランクを求める
部分を扱いました。
次に必要になるのが、
- 劣化係数aをどのように設定するか
- 所定の管理水準へ何年後に到達するか
という計算です。
この2つを理解すると、劣化予測モデルをLCCの費用発生時期へ接続しやすくなります。
まとめ
国総研の橋梁ケーススタディでは、簡易的な劣化曲線として、
y=-ax^2+bという二次関数型のモデルが扱われています。
ケーススタディでは初期ランクを5として、
y=-ax^2+5とし、鋼橋の掲載例では、
y=-0.00389x^2+5が示されています。
Excelでは、
=-$B$1*A5^2+$B$2
のようにそのまま計算できます。
VBAでも同じ二次関数をユーザー定義関数として実装できます。
一方で、
数式をExcelやVBAへ実装できることと、その劣化モデルが対象構造物に適していることは別問題です。
計算式そのものより重要なのは、
- 劣化係数
- 評価尺度
- 対象構造物の条件
- 点検結果
- 管理水準
- 採用根拠
です。
本記事の数式・Excel式・VBAコードの利用について
本記事は計算方法を理解するための参考情報です。
実際の維持管理計画、LCC算定、補修・更新判断、業務成果への使用については、発注者仕様、最新の基準・要領、対象施設の点検結果・条件等を確認し、利用者自身の責任で技術的妥当性を検証してください。