目的
油田およびガス田の生産性を最適化するための最も重要な要素の 1 つに、過去の生産データの解析があります。減衰曲線解析 (DCA) などの堅牢性の高い生産データ解析手法は、生産エンジニアが減衰率、石油およびガスの平均生産率、累積生産量などの坑井生産性関連指標を評価するのに役立ちます。さらに重要なのは、これらの手法により、石油およびガスの生産量を予測して、アセットの現在の財務実績や長期的な存続可能性を正確に評価できることです。
生産データ解析手法では、坑井性能パラメーターに基づく数学モデルを使用し、回帰分析を介して過去の石油およびガスの生産データに当てはめます。たとえば、DCA では指数関数的な減衰を示す数学関数を使用します。Arps 方程式は、石油およびガス業界で最も一般的で、広く使用されている DCA 手法であると言えます。ほとんどの DCA モデルと同様に、Arps には、レート過渡解析 (RTA) などの複雑な手法に比べて、重要な利点がいくつかあります。1 つ目は、DCA は計算コストが低く、実装が簡単なことです。2 つ目は、DCA はパラメーター数の少なさを特徴とし、回帰結果の解釈が容易なことです。3 つ目は、DCA では、単一または複数の坑井からの高密度の過去の生産記録など、大規模なデータセットを処理できることです。ただし、他のモデルと同様に、データ解析、生産予測、石油経済評価において物理的に有効な DCA モデルを得るには、入力データの品質が重要です。
このホワイトペーパーでは、MATLAB® を使用して、石油およびガスの生産データについて DCA によるデータ解析ワークフローを開発し、デプロイする方法について説明します。過去の生産データセットをフォーマットして前処理する方法、カスタム回帰モデルを作成する方法、生産予測を生成する方法、石油経済解析を行う方法について説明します。主な目的は、MATLAB を使用することで、シンプルでありながら堅牢性の高いソフトウェア開発手法に沿って、ワークフローに含まれる複雑さを簡素化し、扱いやすくする仕組みを示すことです。デモンストレーションを目的として、テキサス州鉄道委員会 (TRRC) の Web サイトで公開されている過去の石油およびガスの生産レポートを使用します。
生産データ解析 Web アプリ
ここからは、MATLAB で石油およびガスの生産データ解析を行うためのワークフローの主な手順と、より信頼性が高くメンテナンスしやすい石油およびガス生産用ソフトウェア アプリケーションの設計とカスタマイズに役立つソフトウェア開発と実装に関するベストプラクティスを紹介します。
データをインポートすると、DCA 回帰分析を実行できます。図 2 は、アプリの [回帰] タブを示しています。このタブでは、回帰設定を調整し、モデルを当てはめるために、特定の流体相 (石油またはガス) の平均生産率あるいは累積量生産データを使用するかを選択します。なお、アプリでは回帰範囲の開始点と終了点を選択できるため、分析の柔軟性が高くなります。関心のある特定の期間の DCA 回帰を作成すると、坑井介入操作の前後などにおける生産挙動を評価できます。すべてのパラメーターを定義したら、基礎となる最適化アルゴリズムの [データの当てはめ] をクリックして、データセットに最も当てはまる DCA パラメーターのセットを推定できます。こうすると、アプリでは、使用されたパラメーターの概要と、各流体相の決定係数 (R2) が表示されます。DCA プロセスの詳細については、「減衰曲線解析」セクションを参照してください。
DCA モデルに基づいて石油およびガスの生産量予測を作成するには、何年先まで予測するかを定義するだけです。アプリが石油およびガスの流体相の平均生産率と総生産量をそれぞれ計算します。図 3 に示すように、アプリでは、スライダーまたは数値テキストフィールドを使用して、予測期間を年単位で指定できます。予測期間の範囲設定を変更すると、平均生産率グラフと累積生産量グラフが自動的に更新されます。
生産予測データに基づいた石油経済解析の実行が、この生産データ解析ワークフローの最終段階です。石油経済評価は、アセット管理者が、産地規模の分析から個々の坑井分析に至るまで、あらゆる段階で十分な情報に基づく意思決定を行うために使用されています。アプリで新しい予測を作成すると、データはすぐに [経済] タブに移動し、そこで税金、資本支出 (CAPEX)、操業費 (OPEX)、石油およびガス価格などのパラメーターを変更できます。次にアプリは、正味現在価値 (NPV)、損益分岐点、景気後退点 (該当する場合)、内部収益率、投資収益率を内部で計算して、グラフ上の NPV 曲線を自動的に更新します。図 4 は、NPV 曲線の例を示しています。この例では、曲線は負から正に転じ (損益分岐点をまたぐ)、最大値 (最大 NPV) を達成し、その後減少し始め、その時点以降、坑井を操業するにはコストがかかりすぎることを示唆しています。アプリは、予測される最高の NPV と実現予定日も表示します。これらの実装の詳細については、「経済解析」セクションで説明します。
石油およびガスの生産データ解析ワークフローを実行するために開発された Web アプリで使用されている、MATLAB のソフトウェア開発機能をいくつか確認してみましょう。
ソフトウェア アーキテクチャ
前のセクションで、あるコンポーネントの入力が別のコンポーネントの出力に依存している、アプリのコンポーネントの線形関係に気付いたと思います。たとえば、DCA のタブは [インポート] タブが提供するデータに依存し、同時にこのデータはユーザーが提供するデータセットに依存していることに注目してください。[経済] タブは [予測] タブで提供される生産予測に依存し、[予測] タブは DCA のタブで提供される DCA モデルに依存しています。これは、パイプとフィルターのソフトウェア アーキテクチャ パターンの典型的な例です。このよく知られたソフトウェア アーキテクチャを考慮して、本アプリのアプリケーション ロジックはその設計パターンの概念に基づいています。表 1 は、コンポーネントまたはフィルターと、それらの役割、入力、出力について説明しています。
コンポーネント | 責任 | 入力 | 出力 |
データのインポート |
|
|
|
データの前処理 |
|
|
|
減衰曲線解析 |
|
|
|
生産予測 |
|
|
|
経済解析 |
|
|
|
これらのコンポーネントとは別に、Analysis と Results という 2 つの包括的なモジュールを構築しました。これらのアセンブリ要素は、プロセスの特定の部分の主な役割を共同でカバーします。図 5 は、現在説明しているソフトウェア アーキテクチャを示しています。
パイプとフィルターのアーキテクチャにはいくつかの利点があり、たとえば、複雑なワークフローを独立した協調的なコンポーネントに分割して、ソフトウェアのデバッグと保守を容易にすることができます。さらに、新しいコンポーネントを追加することでプログラムの機能を拡張できます。ただし、新しいコンポーネントには、パイプ、より正式にはソフトウェアコネクタと互換性のあるアプリケーション プログラミング インターフェイス (API) が必要です。たとえば、Results サブシステムを拡張する方法の 1 つとして、MATLAB Report Generator™ を使用して、生産エンジニアおよびアセット管理者向けに特別に設計されたレポートを生成する Report コンポーネントを追加する方法があります。
サンプル生産データ
TRRC の Public GIS Viewer ツールを使用して、南テキサス州にあるイーグル フォード シェールのブラックオイル領域全体からランダムに選択した 200 の坑井で形成される群を作成しました。次に、Mapping Toolbox™ を使用して、累積石油生産量のバブルプロットを作成しました。
TRRC の Public GIS Viewer ツールを使用して、南テキサス州にあるイーグル フォード シェールのブラックオイル領域全体からランダムに選択した 200 の坑井で形成される群を作成しました。次に、Mapping Toolbox を使用して、図 6 に示す累積石油生産量のバブルプロットを作成しました。
イーグルフォード層の下部から石油を生産している Karnes 郡のこの坑井群からの平均日量が、図 7 に示されています。石油日量の減少率に注目すると、これはべき乗則の減少と非常によく似ており、まさに Arps DCA で説明しようとしているものです。
この記事で取り上げる生産データ解析方法では、前述の坑井群全体から 1 つの坑井をランダムに選択しました。匿名性を保つため、この記事ではこの坑井を単に "サンプル坑井" と呼びます。オペレーター、場所などの坑井メタデータは公開しません。
生産データ解析ワークフロー
前のセクションでは、Web アプリで使用される生産データ解析ワークフローの基礎を説明しました。このセクションでは、「ソフトウェア アーキテクチャ」セクションで説明したコンポーネントのソフトウェア実装に焦点を当て、MATLAB を使用して各コンポーネントに必要な機能を構築する方法を重点的に説明します。コンピューター プログラミングの基礎知識があることを前提として、このホワイトペーパーには、さらに詳しい手順が記載された追加リソースへのリンクが含まれています。
ワークフローは 5 つの異なるサブセクションに分かれています。「データのインポート」では、TRRC データセットを MATLAB にインポートするプロセスと、この特定のタイプのデータ構造に関連するいくつかの課題について説明します。「データの前処理」では、データのクリーニングと外れ値検出を目的とした MATLAB で使用できる各種オプションについて説明し、このプロセスを自動化する方法について考察します。Arps DCA などの MATLAB のカスタム回帰モデルの定義、および生産予測への応用については、サブセクション「減衰曲線解析」および「生産予測」でそれぞれ取り上げています。最後に、ユーザー定義の経済指標を使用して、石油とガスの生産予測から財務に関する洞察を得る方法について、「経済解析」で説明します。
データのインポート
MATLAB の堅牢なデータインポート機能により、EXCEL® スプレッドシート、カンマ区切り値 (CSV) ファイル、画像ファイル、音声や動画ファイルなどの代表的なデータタイプ、その他多くのデータ型を簡単に扱うことができます。ここではローカルに保存されたデータに焦点を当てますが、MATLAB は Amazon® Web Services、Microsoft® Azure®、Google Cloud Platform™ (「クラウドでの MATLAB および Simulink の使用」参照) などのクラウドサービス、また Database Toolbox™ 経由でリレーショナル データベースおよび NoSQL データベースへのインターフェイスを搭載している点を強調しておきます。
サンプル坑井データセットの準備
サンプル坑井の石油およびガスの生産記録は、TRRC テンプレートの形式に従ったローカル CSV ファイルに保存されます。CSV ファイルの表は、MATLAB に直接読み込み、インポートできますが、この特殊なテンプレートの場合はいくつか問題があります。まず、数値データ (石油やガスの純産出量など) とメタデータ (オペレーター名、場所など) が混在しています。次に、いくつかのデータポイントが欠落しており、NO RPT
のラベルが付けられています。最後に、日時の形式が特定の報告が記録された正確な日付を示していないため、通常のものとは若干異なっています。サンプル坑井のデータセットのスクリーンショットを図 8 に示します。
これらの問題があるにもかかわらず、MATLAB はこのデータセットをインポートツール経由で処理することができます。このグラフィカル アプリケーションでは、各列に対応するデータ型を指定し、目的のデータ範囲を定義し、欠損データエントリのある行を含めるかどうかを選択することにより、インポート パラメーターをさらにカスタマイズできます。
ここでは、まず適切なデータ型として Number
を選択し、表中の石油とガスの生産データをハイライトしました。次に、MATLAB が処理レポートの日付を正しく読み取って処理できるように、列 1 にカスタムの datetime 型を定義しました。その後、列 1、2、4 をそれぞれ reportDates
、netOil
、netGas
に変更しました。
カスタムインポート機能の作成
サンプル坑井のデータセットの準備とこれらを正しくインポートするために必要な手順を行った後で、MATLAB のコード生成機能を使用して関数 wellDataParser
を作成しました。この関数は、前述のデータ準備手順を自動的に行います。wellDataParser
関数を使用すると、CSV ファイルの TRRC データセットを MATLAB コマンドラインから直接インポートできます。この関数は、生データを含む table を返します。この生データは、「ソフトウェア アーキテクチャ」セクションで説明されているように、この後の解析で使用できます。
wellDataParser
はホワイトボックス関数として作成されているため、変更してより多くの機能に対応させることが可能です。たとえば、指定のレポートの日付の最終日を計算し、reportDates
のすべてのレポートの日付を図 9 のようにリファクタリングしました。
高度なヒント:データストアと Parallel Computing Toolbox™ を併用して、数百または数千の TRRC データセットを同時にインポートできます。
データの前処理
最後のセクションで確認したように、データセットには Inf
や Nan
などの無効な要素または欠損要素が含まれる場合があります。これらの要素は、データセットに MATLAB の組み込み関数 rmmissing
を適用することによって容易に除去できます。ただし、データには目視の検査では特定が困難な異常値が含まれていることもあります。
生産データセットのクリーニング
幸い、矛盾するデータはデータ クリーナー アプリを使用してクリーニングできます。このアプリはデータを探して視覚化し、外れ値検出のためのルールを定義します。図 10 はデータ クリーナー アプリのスナップショットで、サンプル坑井の netOil
と netGas
を視覚解析したものです。データコレクションをパージするために必要なアクションを定義した後、データ クリーナー アプリを使用してカスタム関数 wellDataCleaner
を作成しました。この関数には、アプリ内で実行した前処理アクションが含まれています。
データ拡張
この時点でデータセットはクリーンな状態です。次のステップでは、DCA 回帰分析を実行するための変数、つまり稼働時間 (流動時間)、石油とガスの平均日量、石油とガスの累積生産量を定義します。wellDataCleaner
はホワイトボックス関数であるため、ソフトウェア アーキテクチャ プランの要件に適合するよう、欠落している特徴 flowTime
、oilRate
、gasRate
、cumOil
、cumGas
を計算し、それらを出力 table に挿入するために必要なコードを追加しました。図 11 は、サンプル坑井の前処理済みの table です。
ソフトウェア アーキテクチャの進捗
生産データ解析パイプラインの開発を図 12 に示しています。MATLAB のカスタム関数 wellDataParser
および wellDataCleaner
は、データのインポートとデータの前処理におけるソフトウェア コンポーネントを示します。このイラストにある青色の矢印は、生の table を表しています。これは最初の関数の結果であり、後の関数で入力として使用されます。MATLAB では、これら 2 つの関係は次のようになります。
>> well = wellDataParser("sampleWellData.csv"); >> well = wellDataCleaner(well);
上のコードは、データインポートとデータ前処理のコンポーネントをつなぐパイプを明確に表しています。wellDataCleaner
が、新しいオブジェクトを返すのではなく、既にある well オブジェクトを変更することにより、メモリを効果的に使用している点に注目してください。
高度なヒント:MATLAB では、データ クリーナー アプリの使用例を多数ご用意しています。詳細については、MATLAB ドキュメンテーションをご覧ください。
減衰曲線解析
多くの実務者が、Arps 方程式を石油とガスの生産データ解析における DCA の標準モデルであると考えています。最も広く利用されている方程式は、生産率ベースの双曲線的減衰です。これは、平均日量の時間の経過にともなう減衰を、初期生産率 \( q_{i} \) (量/日)、減衰率 \( D \) (1/日)、\( b \) 係数の 3 つの回帰パラメーターからなる関数で表した、基準時間 \( t_{i} \) (日数) に関するものです。この方程式は、次のように定義されています。
\( q(t; t_{i}) = \frac{q_{i}}{[1 \ + \ bD(t \ - \ t_{i})]^{\frac{1}{b}}} \)
\( q(t; t_{i}) \) は、\( t > t_{i} \) の時点での生産率を示します。累積生産量に関係する 2 つ目の方程式は、方程式 1 を基準時間 \( t_{i} \) から時間 \(t\) > \( t_{i} \) へ経時的に積分することで得られます。その結果、生産量ベースの Arps 方程式は次のように定義できます。
\( Q(t; t_{i}) = Q_{i} + \frac{q_{i}^{b}}{D(b \ - \ 1)}(q^{1-b}(t; t_{i}) - q_{i}^{1-b}) \)
\( Q(t;t_{i}) \) は、\( t>t_{i} \) の時点での累積生産量を示します。方程式 2 には、パラメーターとして開始累積生産量 \( Q(t_{i}) ≡ Q_{i} \) がある点に注目してください。このパラメーターは、坑井の生産記録から取得するか、追加の回帰パラメーターとして定義できます。表 2 は、DCA 解析に採用した単位をまとめたものです。
流体 | 生産率 | 累積生産量 |
石油 | バレル/日 (bbl/日) |
バレル (bbl) |
ガス | 100 万標準立方フィート/日 (MMscf/日) |
100 万標準立方フィート (MMscf) |
DCA 回帰モデルの作成
方程式 1 および 2 に基づき、Curve Fitting Toolbox™ の曲線フィッターを使用して流体相ごとにカスタムの DCA 回帰モデルを作成しました。ここで、table well
がワークスペースにあると想定して、石油の平均日量について生産率ベースの DCA 回帰を開発する際に使用した 4 つのステージについて説明します。
- 手順 1:
well
をインポートし、x と y のデータをwell.flowTime
とwell.oilRate
にそれぞれ代入します。石油の生産量が 120 日のあたりでピークに達し、減少し始めるため、この時点より前にデータを追加してはならない点に注意してください。 - 手順 2: [カスタム式] オプションを使用して、生産率ベースの DCA モデルを作成します。MATLAB によって、正しい方法で回帰が試行されますが、1 つ以上の回帰パラメーターがゼロに近すぎる、マイナスの値になる、大きすぎるなどの理由で発生する収束の問題により失敗する可能性が高いです。各パラメーターに物理的に意味のある境界値を定義して、この問題を解決します。各パラメーターの最初の推測を適切に行うことで、アルゴリズムの収束も速くなります。
- 手順 3: 演算の要約統計量をチェックし、結果として得られる回帰パラメーターが妥当なものであり、指定範囲内にあることを確認します。値と 95% 信頼限界が MATLAB に表示されます。結果として得られる誤差の平方和 (R2)、および平方根平均二乗誤差 (RMSE) から、回帰の適合度をより深く理解することができます。MATLAB では、この要約統計量を適合度 (
gof
) と呼びます。 - 手順 4: [エクスポート] オプションを使用して、結果として得られる回帰モデルと
gof
統計を含む関数を生成します。
残りの DCA 回帰を作成するために、同じ手順を繰り返しました。その結果、石油とガスの各相について、方程式 1 および 2 に基づいて DCA 回帰を実行するための関数 getDCAParamRate
および getDCAParamProd
を作成し、変更することができました。特定の手順を開始する箇所を示す曲線フィッターアプリのスクリーンショットを図 13 に示します。
表 3 は、サンプル坑井の各 DCA 回帰および各流体相の回帰パラメーターと \( R^{2} \) のリストです。一般に累積産出量データの方が平均日量よりも滑らかであるため、生産量ベースの DCA で \( R^{2} \) スコアが最も高くなるのは自然なことです。
生産率ベースの DCA | 生産量ベースの DCA | |||
石油 | ガス | 石油 | ガス | |
\( Q_{i} \) | 192095 | 84475.5 | 192095 | 84475.5 |
\( q_{i} \) | 1530.6 | 984.06 | 1098.68 | 698.46 |
\( b \) | 1.1398 | 1.279 | 0.9388 | 0.7806 |
\( D \) | 0.0089 | 0.004 | 0.0045 | 0.0015 |
\( R^{2} \) スコア | 0.945 | 0.784 | 0.999 | 0.997 |
方程式 1 および 2 の DCA パラメーターの計算を、getDCAParamRate
および getDCAParamProd
のみが実行するように設計しました。ただし、これらは累積生産量や平均日量は予測できません。そのため、DCA 回帰パラメーターを入力として受け入れたり、流量や体積などの必要な結果を出力できる MATLAB 関数を開発して、DCA モデルを運用可能にすることが必要です。
この目的で、flowRate(t,dcaParam)
および cumulProd(t,dcaParam)
の 2 つの関数をアーキテクチャに追加しました。ここで、t
は単一の正のスカラーまたは複数の正のスカラーのベクトルであり、dcaParam
は \( q_{i} \)、\(Q_{i} \)、\( b \)、\(D \)、および \( t_{i} \) を持つ MATLAB の構造体です。これら 2 つの関数はユーティリティ関数です。つまり、必ずしも特定のデータセットに依存しているわけではなく、DCA 回帰パラメーターに依存しています。これ以降、flowRate
と cumulProd
の両方を、独立したユーティリティ パケージへとパッケージ化できます。
これら 2 つの関数は、生産量ベースと生産率ベースの両方におけるデータセットの DCA 回帰の比較に使用します。図 14a および 14b は、石油およびガスの平均日量を調べるための、生産量ベースと生産率ベースの DCA メソッドの比較を示しています。両方の回帰モデルは生産率の推定において良好に機能しており、非常に類似した結果を生み出します。
図 15a および 15b は、予測される石油およびガスの累積生産量を、それぞれ報告された生産履歴と比較したものです。1 日の平均率と同様に、両方の DCA モデルの累積生産量の予測は優れており、非常に似た結果を出しています。
ソフトウェア アーキテクチャの進捗
図 16 はワークフローの現状を図示しています。ここでの大きなポイントは、DCA コンポーネントで平均率および累積生産値の予測計算に使用するユーティリティ ソフトウェアのコンポーネントを追加することです。
このユーティリティ パッケージをコンポーネント内に直接含める選択肢もありました。しかし、保守性と責任駆動設計のために、それらを分けることにしました。関数のシグネチャが変更されない限り、コンポーネントを独立して構築および保守できるため、この手法によって保守性が大幅に向上しました。同様に、ワークフローを中断せずに他の DCA モデルを今後も追加できるよう、柔軟性を加えました。
加えて、ユーティリティ関数を分離することで、コードの全般的な可読性がより高まります。他の担当者がコーディングの作業をする場合、各部分で実行される内容を正確に把握できるため、コーディング時間を短縮できます。
テストや管理が困難な "god" 関数に数百行または数千行ものコードを詰め込むよりも、最初は高コストであるように見えても、ここで挙げたようなモジュラー式のソフトウェア設計なら保守と拡張が非常に簡単です。
生産予測
このソフトウェア コンポーネントでは、前のセクションで説明したユーティリティ関数 flowRate
および cumulProd
を使用して、将来の石油とガスの生産量を推定するために、DCA コンポーネントから派生した回帰パラメーターを活用しました。生産量の予測の生成に必要なすべての関数が使用できるようになっていたため、それらを呼び出すコードを記述する必要がありました。
そのために、各流体の well
DCA 回帰パラメーターを取り込み、入力引数として予測時間をリクエストして、次の内部タスクを実行することで全体の生産量の予測を生成する、関数 generateForecast
を作成しました。
- 将来の流動時間のベクトルを生成する
- 将来の日のベクトルを生成する
- 石油とガスの減少率を計算する
- 石油およびガスの累積生産量を計算する
結果として、generateForecast
は、生産指標が DCA モデルで生産された予測値であるという点を除いて、元の入力 table と同じ形式を持つ新しい table を返します。
次のサブセクションでは、generateForecast
の仕組みを解説します。生産量の予測は、最後の報告日から 1 か月後に始まり、目的の結果の期間に達するまで毎月報告されるものとします。
生産量の予測の生成
図 17 は、サンプル坑井における、2024 年 1 月 31 日以降の今後 50 年間の石油とガスの予測を示しています。図 17a に示される通り、生産率ベースの DCA のものと比較して、生産量ベースの DCA モデルは、石油の日量が経時的にわずかに早く減少することを予測しています。しかし、図 17b は、ガスの平均日量における予測の差異がさらに顕著であることを示しています。
石油とガスの累積生産量については、図 18a および 18b が示す通り、予測モデル間の差異がより顕著になっています。累積生産量の予測の差異は、石油は 50,000 バレル、ガスは 3 億標準立方フィートであり、予測の経済的評価における不確実性の原因となる点に留意してください。
モデルごとに生産量の推定も異なる可能性を考えると、複数の DCA モデルを試して、調査対象の現場の生産挙動に最も近く一致するモデルを選択することが重要です。この判断を行う 1 つの方法としては、既存の坑井からの生産データを活用して、モデルの比較に役立てることです。このために、DCA コンポーネントにさらに DCA モデルを追加することも検討できますが、それでは関数の複雑性が増してしまいます。これを防ぐためには、各オブジェクトが DCA モデルに対応する、オブジェクト指向の設計を代わりに使用できます。このようにすることで、パイプとフィルターのソフトウェア アーキテクチャ自体と同様に、これらのオブジェクトを個別に管理できるため、システムの保守性と信頼性を強化できます。
ソフトウェア アーキテクチャの進捗
図 19 は、この時点までのソフトウェア アーキテクチャの進捗状況を示しています。前述の通り、生産量の予測コンポーネントは、前のセクションで作成した DCA のユーティリティ パッケージを活用し、石油とガスの生産予測を生成しています。
経済解析
このワークフローの最後の手順は、生産量の予測を経済的な指標に変換することです。アセット管理者は、一般的に石油経済と呼ばれるこの種の解析を使用して、坑井の稼動を維持するか廃棄するかについての決定を下します。投資家はこの解析を使用して、既存の坑井を購入する可能性を評価します。ただし、あらゆる石油経済解析の信頼性は、生産量の予測と関連する経済指標の精度に強く依存しています。
評価事例
ある投資家がサンプル坑井の購入に興味を持っているとします。アセット管理者は 180 万米ドルでの売却に合意しました。投資家の目標は、この投資が経済的に妥当かを判断することです。より優れた判断材料をするために、管理者は次の追加情報を提供してくれました。
- 坑井の操業コスト (OPEX): 毎月 2,000 ドル
- 石油生産税: 36%
- ガス生産税: 16%
また、財務部から、解析のために 10% の割引率と、石油およびガスの平均価格として、それぞれ 1 バレルあたり 80 ドル、1,000 平方フィートあたり 2.78 ドルを検討するよう提案を受けました。さらに、市場の厳しい変動が発生した場合の投資の回復力をより良く理解するために、石油とガスの価格に変動性を取り入れたいと考えています。
経済解析全体を実行するために作成した MATLAB 関数 econAnalysis
には、価格の変動性関数を含めました。この関数は、必要な経済パラメーター (割引率、CAPEX、OPEX、税率など) を含む予測 table と MATLAB 構造体を取り、正味および累積のキャッシュフロー、損益分岐点と景気後退点、および内部収益率 (IRR) を計算します。IRR の計算には、Financial Toolbox™ の xirr
を使用しました。
石油経済の結果
図 21 はこのプロジェクトの結果となる NPV を示しており、ここからいくつかの結論を導き出せます。まず、購入を決定した場合、2026 年 2 月 11 日あたりまでに損益分岐点を迎えます。IRR もこのプロジェクトの健全性を示す、優れた指標です。もう 1 つの興味深い観測結果として、このプロジェクトを続行した場合、少なくとも 2053 年 12 月まで (約 30 年間) で、500 万米ドル近くの収益が得られます。この解析は、保守に関する将来的な支出、操業コストの増加などは考慮していないため、前述の楽観的な収益は誤解を招く可能性があることに注意してください。しかし、NPV 曲線は 2031 年 12 月までに、つまりプロジェクト開始から 8 年以内に、300 万米ドルの収益が得られることを示しており、これは 166.7% の投資回収率となります。
ソフトウェア アーキテクチャの進捗
経済解析コンポーネントの完成は、生産量データ解析のワークフローの完成を意味します。図 22 が示す通り、石油経済解析の関数では外部のユーティリティ コンポーネントの開発や統合が不要だったため、現時点ではアーキテクチャは未変更のままです。とはいえ、補完的なモジュールやユーティリティ パッケージを追加できる柔軟性は残されています。
まとめ
このホワイトペーパーでは、石油とガスの生産量データの解析を自動化するためのパイプとフィルターのソフトウェア アーキテクチャを開発しました。ワークフローの各手順の詳細を確認し、従来は別々のプログラミング言語で何時間ものコーディングが必要であった複雑なタスクを、MATLAB によって実行できる方法を示しました。
また、単一の関数の呼び出しで複雑なタスクを完了できる MATLAB 関数を自動作成する方法を実際に示しました。さらに、保守性と信頼性の観点からモジュール化されたソフトウェア設計を用いることの利点について説明する一方、プロットと図の作成に必要な追加のデータ形式、クリーニング手法、DCA モデルなどの他のユーティリティ パッケージが将来的に必要となる可能性も説明しました。
最後に、本記事は入門資料として提供することを目的としているため、オブジェクト指向設計などの高度なソフトウェア設計手法は意図的に説明していないことにご注意ください。MATLAB はオブジェクト指向のプログラミング言語であるものの、本記事での学習内容を使用して、クラウド展開や C/C++ コード生成などの特定のユースケースに合わせてソフトウェア アーキテクチャを自由に作成することもできます。
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)