劣化曲線から補修時期を逆算する方法|Excel・VBAで到達年を計算

建設実務

前の記事では、国土交通省 国土技術政策総合研究所(国総研)の資料に掲載されている二次関数型の劣化曲線について、

  • 経過年数からランクを計算する方法
  • 劣化係数aを終端条件から計算する方法

を整理しました。

次に必要になるのが、

「この劣化曲線なら、所定のランクへ何年後に到達するのか」

という逆算です。

例えば、劣化曲線が設定されている状態で、

  • ランク3になるのは何年後か
  • ランク2へ到達するのは何年後か
  • 業務上設定した管理水準へ何年後に到達するか

を計算できれば、補修・更新時期を検討するための時間軸を作れます。

この記事では、国総研資料で扱われている二次関数、

y=-ax^2+b

をxについて解き、

ランクyから経過年数xを逆算する方法

をExcelとVBAで確認します。

重要:利用上の注意

本記事で求める年数は、設定した劣化曲線が所定のランクへ到達する「数学上の年数」です。

その年が、そのまま実際の補修実施年や更新年になるわけではありません。

実際の維持管理計画では、点検結果、管理水準、安全性、予算、施工条件、交通条件、発注者の要求事項などを含めて判断する必要があります。

本記事の数式、Excel式、VBAコードを実務へ適用する場合は、利用者自身の責任で条件と計算結果の妥当性を確認してください。

今回使用する劣化予測モデルの出典

今回も、次の国総研資料を参照します。

国土交通省 国土技術政策総合研究所
国総研プロジェクト研究報告 第4号
『住宅・社会資本の管理運営技術の開発』

該当箇所:

C. ネットワークマネジメント編
→ 第Ⅰ部 土木構造物の群管理手法のケーススタディ
→ 3. ミクロマネジメントの簡易的な手法
→ 3-2. 劣化推定に関する検討

国総研公式ページ:

国総研プロジェクト研究報告 第 4 号

該当PDF:

https://www.nilim.go.jp/lab/bcg/siryou/kpr/prn0004pdf/kp0004324.pdf

国総研資料では、劣化曲線について点検データに基づく解析による予測を基本としています。

また、資料中の曲線はある地域の橋梁を対象とした平均的なものであり、対象構造物によって劣化過程が異なるため、当該構造物の点検結果を基に扱う必要があるとされています。

したがって、この記事で行う逆算も、

採用した劣化曲線を前提にした計算

です。

逆算式そのものが、対象橋梁の実際の劣化時期を保証するものではありません。

二次関数から経過年数xを逆算する

基本となる劣化曲線は、

y=-ax^2+b

です。

ここで、

  • x:経過年数
  • y:求めたいランク・評価値
  • a:劣化係数
  • b:初期値

です。

今回は、y、a、bが分かっている状態から、xを求めます。

まず、

y=-ax^2+b

を整理すると、

ax^2=b-y

となります。

両辺をaで割ると、

x^2=\frac{b-y}{a}

です。

したがって、

x=\sqrt{\frac{b-y}{a}}

となります。

数学上は平方根に正負がありますが、ここで求めたいxは供用開始等の基準時点からの経過年数です。

そのため、実務上扱うのは0以上の値です。

鋼橋の掲載例からランク2への到達年を計算する

国総研資料の鋼橋の例では、

a=0.00389

であり、初期値は、

b=5

です。

したがって劣化曲線は、

y=-0.00389x^2+5

となります。

ここで例として、

ランク2へ到達する年数

を計算します。

注意

ここでランク2を使用するのは、逆算方法を示すための計算例です。

「ランク2を補修実施の管理水準とする」という意味ではありません。

実際にどのランクを管理水準とするかは、対象業務の基準や管理方針によって別途設定する必要があります。

逆算式、

x=\sqrt{\frac{b-y}{a}}

へ、

  • b = 5
  • y = 2
  • a = 0.00389

を代入します。

x=\sqrt{\frac{5-2}{0.00389}}

したがって、

x=\sqrt{\frac{3}{0.00389}}

となり、

x\approx27.77

です。

この劣化曲線上では、

約27.8年後にランク2へ到達する

という計算結果になります。

ランク1への到達年も逆算してみる

同じ方法で、ランク1への到達年を求めます。

x=\sqrt{\frac{5-1}{0.00389}}

より、

x\approx32.07

です。

国総研資料の表3-2-1では、主桁・鋼についてランク1となる年数として32年が掲載されています。

今回の逆算では約32.07年なので、おおむね32年付近となります。

ただし、ここでも重要なのは、

「32年」という数字をそのまま他の橋梁へ適用することではありません。

国総研資料自身が、掲載した劣化曲線は平均的なものであり、対象構造物の点検結果を基に扱う必要があるとしています。

Excelで到達年を逆算する

Excelでは、平方根を計算する SQRT 関数を使えば、そのまま逆算できます。

例えば、

  • B1:初期値b
  • B2:劣化係数a
  • B3:求めたいランクy
  • B4:到達年x

とします。

B1へ、

5

B2へ、

0.00389

B3へ、

2

を入力します。

B4には、

=SQRT(($B$1-$B$3)/$B$2)

と入力します。

この場合、

27.770636...

という結果が得られます。

つまり、約27.77年です。

Excel式と数式は、

x=\sqrt{\frac{b-y}{a}}

そのままの対応です。

  • $B$1 → 初期値b
  • $B$3 → 求めたいランクy
  • $B$2 → 劣化係数a
  • SQRT → 平方根

という関係になります。

Excelでは入力条件をチェックした方がよい

単純な計算だけなら、

=SQRT(($B$1-$B$3)/$B$2)

で十分です。

ただし、実際にシートで利用すると、

  • aが0
  • aが負数
  • 初期値bより大きいyを入力
  • 空欄や入力間違い

などが起こる可能性があります。

特に SQRT の中身が負数になると、Excelでは計算できません。

そのため、簡単な入力チェックを加えるなら、例えば次のようにできます。

=IF(OR($B$2<=0,$B$1<$B$3),"入力条件を確認",SQRT(($B$1-$B$3)/$B$2))

この式では、

  • 劣化係数aが0以下
  • 求めたいランクyが初期値bを上回る

場合には、

入力条件を確認

と表示します。

Excel式利用上の注意

入力エラーを防ぐ式を入れても、モデル自体の妥当性をチェックできるわけではありません。

Excelが正常に数値を返したことと、その到達年が対象構造物の実際の劣化時期として妥当であることは別問題です。

点検結果や劣化係数の設定根拠を別途確認してください。

計算結果が27.77年なら補修年は何年なのか

ここは実務上、意外と重要なところです。

今回の例では、

x\approx27.77

となりました。

では、

27年目に補修するのか、28年目に補修するのか

という問題が出てきます。

しかし、この二次関数だけから、そのルールまでは決まりません。

27.77年という値は、

設定した劣化曲線が設定ランクへ到達する数学上の時点

です。

実際の計画では、

  • 年度単位で整理するのか
  • 点検年度との関係をどう扱うか
  • 管理水準へ到達する前に措置するのか
  • 到達後に措置するのか
  • 予算年度との関係をどう扱うか

といったルールを別途決める必要があります。

そのため、この記事では ROUNDUP などを使って自動的に28年へ丸める処理は入れません。

丸め方そのものが管理上の判断だからです。

必要であれば、業務上のルールを確認したうえでExcel側に丸め処理を追加してください。

VBAで管理水準への到達年を計算する

同じ逆算は、VBAのユーザー定義関数でも計算できます。

ご注意

以下のVBAコードは、計算方法と動作イメージを確認するためのサンプルです。
実行前に必ずExcelファイルのバックアップを作成してください。
業務で使用しているファイルに、いきなり貼り付けて実行しないでください。
Excelのバージョンや設定により、動作が異なる場合があります。

コードの利用および実務への適用は自己責任で行い、必ずテストデータで計算結果を検証してください。

標準モジュールへ次のコードを記述します。

Option Explicit

Public Function CalcTargetYear( _
    ByVal initialRank As Double, _
    ByVal targetRank As Double, _
    ByVal deteriorationCoefficient As Double) As Variant

    If deteriorationCoefficient <= 0 Then
        CalcTargetYear = CVErr(xlErrNum)
        Exit Function
    End If

    If initialRank < targetRank Then
        CalcTargetYear = CVErr(xlErrNum)
        Exit Function
    End If

    CalcTargetYear = _
        Sqr((initialRank - targetRank) / deteriorationCoefficient)

End Function

例えばワークシートから、

=CalcTargetYear(5,2,0.00389)

と入力すると、約、

27.770636

が返ります。

ランク1への到達年なら、

=CalcTargetYear(5,1,0.00389)

として、約、

32.066768

となります。

VBAでも年数を勝手に整数化していない

今回のコードでは、計算結果を整数へ丸めていません。

これは意図的です。

例えば27.77年という結果について、

  • 27年と扱う
  • 28年と扱う
  • 小数のまま保持する

のどれを採用するかは、計算式そのものではなく業務上のルールです。

サンプルコードで自動的に切り上げると、

劣化モデル

と、

補修計画上の年度処理

が一つの関数に混在してしまいます。

そのため、VBAでは数学上の到達年をそのまま返しています。

丸め処理が必要な場合は、別処理として明示的に追加する方が安全です。

コード利用後の確認

VBAが値を返しただけで計算を完了としないでください。

求めた年数を元の劣化曲線へ代入し、設定したランクに戻ることを確認すると、計算ミスの検出に役立ちます。

また、計算上の到達年と実際の点検結果・管理条件の整合性は別途確認してください。

逆算結果を元の劣化曲線へ戻して確認する

計算結果が正しいか確認するには、求めたxを元の式へ戻す方法が簡単です。

今回の例では、

x\approx27.7706

です。

元の式、

y=-0.00389x^2+5

へ代入すると、

y\approx2

となります。

Excelでも同じ確認ができます。

例えばB4に到達年が入っている場合、

=-$B$2*B4^2+$B$1

と入力します。

B3で設定したランクと同じ値へ戻れば、逆算式と入力値の関係が整合していることを確認できます。

このように、

順方向の計算

と、

逆方向の計算

を両方用意しておくと、Excelシートの検算がしやすくなります。

数学上の到達年と実際の補修時期は別

この逆算式は非常にシンプルです。

しかし、実務上最も注意したいのは、

計算された到達年=補修実施年

ではないという点です。

例えば、ある管理水準への到達年が27.8年と計算されたとしても、

  • 直近点検では劣化が予測より進んでいる
  • 逆に予測より状態がよい
  • 他部材の損傷が支配的になっている
  • 予算制約がある
  • 交通規制条件がある
  • 複数橋をまとめて補修した方が合理的
  • 重要路線なので管理水準へ到達する前に措置する

といった条件によって、実際の措置時期は変わり得ます。

国総研資料でも、劣化予測は平均的な劣化過程を与えるものであり、対象構造物の条件によって異なる結果が予想されるため、適宜修正する必要があるという考え方が示されています。

したがって、この逆算式は、

補修時期を自動決定する式

ではなく、

劣化曲線上で所定ランクへ到達する時点を計算する式

として使うのが適切です。

ここまでで劣化予測から時間軸を作れる

ここまでの3つの計算を整理すると、劣化予測モデルの基本的な操作が見えてきます。

まず、

y=-ax^2+b

を使えば、

経過年数x → ランクy

を計算できます。

次に、終端条件を設定すれば、

a=\frac{b-y_T}{T^2}

によって、

到達条件 → 劣化係数a

を計算できます。

そして今回の、

x=\sqrt{\frac{b-y}{a}}

によって、

ランクy → 到達年x

を逆算できます。

つまり、

劣化モデルを設定する
→ 各年の状態を計算する
→ 管理水準への到達時期を求める

ところまでExcelやVBAで扱えるようになります。

次はLCCの費用系列へ接続する

LCCへ接続するには、さらに一段階必要です。

今回求めたのは、

いつ所定の状態へ到達するか

という時間情報です。

次に、

  • その時点でどの措置を行うか
  • 補修費はいくらか
  • 更新費はいくらか
  • 点検費等をどう扱うか

を設定します。

すると、

劣化予測
→ 管理水準への到達年
→ 補修・更新時期
→ 各年の費用

という費用系列を作れます。

ただし、10年後の1,000万円と30年後の1,000万円をLCC上でどのように比較するかを考える場合には、さらに現在価値換算が必要になります。

ここから先が、劣化予測モデルと社会的割引率・LCC計算が直接つながる部分です。

まとめ

二次関数型の劣化曲線、

y=-ax^2+b

について、劣化係数a、初期値b、求めたいランクyが分かっていれば、

x=\sqrt{\frac{b-y}{a}}

によって、そのランクへ到達する経過年数を逆算できます。

国総研資料の鋼橋の例として、

  • a = 0.00389
  • b = 5
  • y = 2

とすれば、

x\approx27.77

となります。

Excelでは、

=SQRT(($B$1-$B$3)/$B$2)

のように計算できます。

VBAでも、Sqr を使って同じ計算をユーザー定義関数にできます。

ただし、この27.77年という値は、

設定した劣化曲線が設定ランクへ到達する数学上の時点

です。

補修年度や更新年度を自動的に決定するものではありません。

実務上は、

  • 劣化係数の根拠
  • 点検結果
  • 管理水準
  • 補修方針
  • 予算
  • 施工条件
  • 発注者条件

などを含めて判断する必要があります。

本記事の数式・Excel式・VBAコードの利用について

本記事は、劣化曲線から到達年を逆算する計算方法を理解するための参考情報です。

実際の維持管理計画、LCC算定、補修・更新判断、業務成果への使用については、発注者仕様、最新の基準・要領、対象構造物の点検結果、部材・環境条件等を確認してください。

実務への適用は利用者自身の責任で行い、採用条件と計算結果の技術的妥当性を必ず検証してください。