指定された物理システムまたは他のターゲットシステムの少なくともいくつかの動作を制御または他の形で操作するように自動化制御システムを実装するための技法が説明される。少なくともいくつかの実施形態では、説明されている技法は、ターゲットシステムの動作に影響するパラメータの将来値を予測することと、ターゲットシステムに対して行う現在の自動化制御アクションを決定することの一部として、予測された将来値を使用することとを含む。このようにして、現在の自動化制御アクションは、そのような予測された将来値を反映しない他の可能なアクションに比べて最適化または他の形で改善されることができる。加えて、様々な自動化された動作が、少なくともいくつかの実施形態において、たとえば、複数の異なるタイプの予測モデルと、それらのモデルをトレーニングするために使用する複数の異なるグループの過去データとの使用を組み合わせることによって、ならびに/またはそれらのモデルの少なくとも一部に反映される推定された内部の観測不能な状態情報を改善することによって、予測を改善するために行われてよい。一般に、予測は、モデルにおいて表現されることが可能な任意の選択された変数に対して行われることができ、予測されない「制御」変数は、予測に影響する他の変数であり得る。そのような予測を行うことおよび改善すること、ならびにそのような予測された将来値を特定の様式で使用することに関係付けられた追加の詳細が、以下に説明され、説明されている技法の一部または全部は、少なくともいくつかの実施形態では、1つまたは複数のパラメータ値予測器(「PVF」)コンポーネントの自動化された動作によって、任意選択で、特定のタイプのターゲットシステムを制御する1つまたは複数のCDD(協働分散判断)システムの一部としてまたはそのようなCDDシステムと関連して、行われる。
パラメータの将来値を予測するため、および行う現在の自動化制御アクションを決定することの一部として、予測された将来値を使用するための説明されている技法は、様々な実施形態において様々なタイプのターゲットシステムに対して行われることができる。1つの非限定的例として、物理ターゲットシステムは、(たとえば、局部負荷のため、様々な位置における様々な負荷をサポートする電気グリッドのためなどに)電力を貯蔵および提供するために使用される1つまたは複数のバッテリを含むことができ、ターゲットシステムを制御するための自動化された動作は、各バッテリの状態の特性を使用して、バッテリから提供されおよび/またはバッテリにより貯蔵されたDC(直流)電力の自動化制御を行うことを含むことができ、ターゲットシステムの動作を制御する指定された目標は、指示された基準に従ってバッテリからエネルギーを供給しながら、バッテリの寿命を最大限にすることを含む。そのような実施形態では、PVFシステムの自動化された動作は、1つもしくは複数のバッテリから供給されるように要求される電力の将来需要を予測すること、1つもしくは複数のバッテリへ提供されるのに利用可能な電力の将来供給を予測すること、ならびに/またはバッテリからおよび/もしくはバッテリへ供給されるそのような電力の将来価格を予測することを含むことができる。1つまたは複数のそのような予測された将来値が与えられると、1つまたは複数のバッテリを制御するCDDシステムは、そのような情報を使用して、そのような予想された将来シナリオをそれらが発生したときにより良くサポートする現在の制御アクション(たとえば、近い将来たとえば次の数分または数時間で電力の需要が著しく増大することが予測された場合に、現在の電力出力を最小限にし、および/または現在の電力貯蔵アクティビティを増大する)を決定することができる。
別の非限定的例として、物理ターゲットシステムは、ネットワークトラフィックが通過する1つまたは複数のコンピュータネットワーク、たとえば、ネットワークトラフィックの一部または全部を規制する(regulate)ことができるファイアウォールデバイスおよび/または他のネットワークデバイスを含むネットワークを含むことができ、ターゲットシステムを制御するための自動化された動作は、ネットワークトラフィックの特性を使用して、(たとえば、侵入の試みもしくは他のサイバーアタックなどの不正なネットワークトラフィックをブロックもしくは他の形で処理するために;または、ネットワークトラフィックにおける異常を検出しそれに対処して、たとえば、1つもしくは複数のネットワークリンクおよび/もしくはノードが故障しているもしくは他の形で利用不可能であることを識別するために、)ファイアウォールデバイスまたは他の規制デバイスの自動化制御を行うことを含むことができ、ターゲットシステムの動作を制御する指定された目標は、1つまたは複数のネットワークデバイスによって許可され、1つまたは複数の指示された基準を満たさないネットワークトラフィックを、1つまたは複数の指示された基準を満たす他のネットワークトラフィックを許可しながら、最小限にすることを含む。そのような実施形態では、PVFシステムの自動化された動作は、発生することが期待される将来のネットワークトラフィック(たとえば、量/ボリューム、タイミング、タイプなどのうちの1つまたは複数などに関する、コンピュータネットワークへの着信トラフィック、および/またはコンピュータネットワークからの発信トラフィック、および/またはコンピュータネットワーク上のノード間の内部トラフィック)を予測することを含むことができる。1つまたは複数のそのような予測された将来値が与えられると、ファイアウォールデバイスまたは他の規制デバイスを制御するCDDシステムは、実際のネットワークトラフィックと予測されたネットワークトラフィックとの間の有意な差異を識別し、任意の対応する問題に対処するために現在の制御アクションを決定することができる。
別の非限定的例として、物理ターゲットシステムは、暖房および/または冷房能力(たとえば、1つまたは複数のHVAC、すなわち暖房、換気および空調ユニット)を含むマルチルーム建物を含むことができ、ターゲットシステムを制御するための自動化された動作は、部屋のサブセットの特性(たとえば、温度センサを有する部屋のサブセットにおいて測定された温度)を使用して、暖房および/または冷房能力から部屋のすべてに対して提供される暖房および/または冷房の自動化制御を行うことを含むことができ、ターゲットシステムの動作を制御する指定された目標は、指示された基準に従って建物の部屋に対する暖房および冷房のうちの少なくとも一方を行いながら温度制御ユニットにより使用されるエネルギーの量を最小限にすることを含む。そのような実施形態では、PVFシステムの自動化された動作は、暖房および/または冷房能力ならびに建物の少なくともいくつかの部屋に対する将来の入力、それらからの将来の出力、それらに対して提供される将来の制御信号命令、ならびにそれらの他の将来の状態のうちの1つまたは複数(たとえば、内部温度示度、暖房および/または冷房能力の時間および/またはエネルギー使用の量、建物の周囲環境の一部としての建物の外部の温度示度など)を予測することを含むことができる。1つまたは複数のそのような予測された将来値が与えられると、暖房および/または冷房を制御するCDDシステムは、実際の条件と予測された条件との間の有意な差異を識別し、任意の対応する問題に対処するために現在の制御アクションを決定することができる。
そのような予測および予測されたパラメータ値の使用に関係付けられた追加の詳細が以下に含まれ、将来パラメータ値を予測し、そのような予測された将来値を使用するための説明されている技法は、それらの一部が以下にさらに説明される他の実施形態において様々な他のタイプのターゲットシステムと共に使用されてよいことは理解されよう。
上記されたように、様々な自動化された動作が、少なくともいくつかの実施形態において、たとえば、複数の異なるタイプの予測モデルと、それらのモデルをトレーニングするために使用する複数の異なる期間の過去データとの使用を組み合わせることによって、予測を改善するために行われてよい。たとえば、少なくともいくつかの実施形態は、複数の異なるそのようなモデルを維持し、様々なモデルの現在の性能を繰り返し評価して、たとえば、複数のモデルから選ばれ所与の時間に使用される(1つまたは複数の定義された評価基準に関して)「最良」のモデルを可能にし、(やはり、1つまたは複数の定義された(最良のモデルを評価するために使用される基準と同じまたは異なる)評価基準に関して)1つまたは複数の「最悪」のモデルを使用中の複数のモデルのグループから任意選択で除去する。少なくともいくつかのそのような実施形態では、モデルの一部または全部が(たとえば、最新のデータを使用して)繰り返し再トレーニングされてもよく、たとえば、最も新しいXのデータ(ここで、Xは、時間の定義された量またはデータの他の定義された量、および任意選択で異なるモデルに対して異なる量)を使用し、そうすることは、異なるモデルに対して異なるデータ量を使用することを含む(たとえば、X量の過去データ上でトレーニングされた所与の初期モデルが、最良および最悪のモデルの評価および選択の目的で、別のY量の過去データ上でトレーニングされた同じ初期モデルと異なる、結果の(resulting)モデルとして扱われる;または、異なるタイプのモデルが異なるデータ量を使用するなど)。以下に、複数の異なるタイプの予測モデルとそれらのモデルをトレーニングするために使用する複数の異なる期間もしくは他の量の過去データとの使用のそのような組み合わせに関係付けられた追加の詳細が含まれる。
予測技法のタイプおよび結果のモデルの非限定的例は、通常の回帰、通常の自己回帰、動的回帰および/または動的自己回帰(新しいデータが利用可能になると係数が更新される)、割り引かれた動的回帰(discounted dynamic regression)および/または割り引かれた動的自己回帰(新しいデータが利用可能になると新しいデータで係数が更新され、また、より新しいデータには、より古いデータよりも大きな重みおよび/または重要性が与えられる)、以前のデータの維持(たとえば、データが予想できない場合に有用であり得る)、固定された係数を有するカルマンフィルタ、動的カルマンフィルタ((たとえば、パラメータ適合エンジン(parameter adaptation engine)すなわち「PAE」の一部として、)新しいデータが利用可能になると係数(たとえば、A、B、およびC)が更新される)、ニューラルネットワーク、決定木、カルマンフィルタおよび回帰モデルの他の変形などを含む。トレーニングのために使用するデータの量の非限定的例は、(たとえば、時間メタデータを一部または全部のデータ値と関連付けた)経時的に変化する時系列データまたは他の時間ベースのデータなどに関し、最後の5つのデータ値または最後の5つの時間期間(たとえば、最後の5秒、最後の5分、最後の5時間、最後の5日、最後の5週間、最後の5カ月、最後の5年など)、最後の10または20または50または100または500または1000または5000または10000または50000または100000または500000または1000000個のデータ値または時間期間、最後に利用可能でない(たとえば、指定された時間期間中に最初に利用可能な)指定されたN量のデータ値または時間期間などを含む。加えて、モデルをトレーニングするとき、様々な実施形態において、二乗誤差、平均絶対誤差、パーセント誤差(正の値の場合のみ)などの非限定的例を含む様々な誤差関数が、最適化中に使用されることができる。モデルのタイプ、予測技法、トレーニングのためのデータの使用、および誤差関数に関係付けられた追加の詳細が以下に含まれる。
上記されたように、様々な自動化された動作が、少なくともいくつか実施形態において、たとえば、使用中のモデルの少なくとも一部に反映される推定された内部の観測不能な状態情報を改善することによって、予測を改善するために行われてよい。そのような改善動作に関して、いくつかのタイプのモデルおよび予測技法(たとえば、上記で「動的」と呼ばれるもの、いくつかのタイプのニューラルネットワークおよび決定木など)は、特定のターゲットシステムに固有の係数、パラメータ、または他の値の表現を、たとえば、そのターゲットシステムの内部状態またはそのターゲットシステムに関する他の情報を反映するように有することができる。少なくともいくつかの実施形態では、説明されている技法は、そのようなモデルのパラメータをそれらの使用中に経時的に更新して、たとえば、それらのモデルを特定のターゲットシステムにさらに適合させる(たとえば、ターゲットシステムの変化しない内部状態をより良く反映する、および/またはターゲットシステムの変化する内部状態を捕捉する)。いくつかのそのような実施形態では、そのようなモデル適合は、モデル内のパラメータ値に対してカルマンフィルタに基づいてパラメータ適合エンジンを使用することを含む。加えて、いくつかのそのような実施形態では、そのようなモデル適合は、自動化されたモデル再トレーニングを含み、そこで、モデル内のパラメータ値に対してカルマンフィルタに基づいてパラメータ適合エンジンを使用することに加えてまたは代えて、モデルは、既存のデータのサブセットを使用して定期的に最初から再トレーニングされる(たとえば、それらの性能は別個のサブセット上で評価される)。他の実施形態では、モデルのパラメータは、一部もしくは全部の状況および/または一部もしくは全部の時間において使用中に更新されない。使用中のモデルの少なくとも一部に反映される推定された内部の観測不能な状態情報のそのような改善に関係付けられた追加の詳細が以下に含まれる。
例示のため、以下に含まれるいくつかの実施形態に関するいくつかの追加の詳細では、特定のタイプのターゲットシステム、および特定の様式で決定された特定のタイプの制御アクティビティに関することを含めて、特定の様式で特定のタイプの動作が行われる。これらの例は、例示のため提供され簡潔にするために単純化されるが、本発明の技法は、他の環境内および他のタイプの自動化制御アクション決定技法を含む様々な他の状況で使用されてよく、それらの一部が以下に論じられる。
しかしながら、予測技法およびそれらの使用のさらなる議論の前に、ターゲットシステムの制御のより一般的な説明がそのような表現および他のモデルを使用して提供される。具体的には、図1Aは、1つまたは複数のターゲットシステムの協調分散制御を行うためのシステムが構成され始動されることができる例示的環境を示すネットワーク図である。具体的には、CDDシステム140の実施形態は、1つまたは複数のコンピューティングシステム190上で実行されており、示された実施形態において、オンライン様式で動作しグラフィカルユーザインターフェース(GUI)(図示せず)および/または他のインターフェース119を提供し、クライアントコンピューティングシステム110の1つまたは複数のリモートユーザを可能にし、1つまたは複数の介在コンピュータネットワーク110を介してCDDシステム140と相互作用し、1つまたは複数の判断モジュールを構成および作成し、自動化制御システムの一部として含み、制御される1つまたは複数のターゲットシステムの各々と使用することを含む。
具体的には、ターゲットシステム1 160およびターゲットシステム2 170は、この例で示された例示的ターゲットシステムであるが、特定の実施形態および状況では、1つのみのターゲットシステムまたは多数のターゲットシステムが利用可能であることができ、各そのようなターゲットシステムは、ターゲットシステムに固有の様式でターゲットシステムの動作を実装するために、様々な機械的、電子的、化学的、生物学的、および/または他のタイプのコンポーネントを含むことができることは理解されよう。この例では、クライアントコンピューティングデバイスの1つまたは複数のユーザ(図示せず)は、CDDシステム140と相互作用して、ターゲットシステム1のための例示的自動化制御システム122を生成することができ、自動化制御システムは、この例では、後で展開および実装されたときにターゲットシステム1 160の部分を制御するように協調的に相互作用する複数の判断モジュール124を含む。自動化制御システム122を作成するためにユーザがCDDシステム140と相互作用するプロセスは、他の箇所でより詳細に論じられるように、場合によってはユーザの異なるグループの独立したアクションを含む、時間経過に伴う様々な相互作用を含むことができる。加えて、自動化制御システム122を作成および/またはトレーニングまたはテストするプロセスの一部として、それは、たとえば部分的初期状態情報を取得するために、示されたようにターゲットシステム1と1つまたは複数の相互作用を行うことができるが、一部または全部のトレーニングアクティビティは、少なくともいくつかの実施形態では、ターゲットシステム1における制御アクションの効果を、それらの制御アクションを実際にその時に実装することなくシミュレートすることを含むことができる。いくつかの実施形態および状況では、そのような初期ユーザ相互作用は、図2Aの例示的CDIエージェント250に反映されるように、バイナリルールに基づくターゲットシステムの初期ルールベースのシステムモデルを生成するために使用されることができる。その場合、1つまたは複数の予測モデルの実施形態および対応するPVFコンポーネントは、図2Aの例示的な電力需要予測器(Power Demand Forecaster)コンポーネント270c、電力供給予測器(Power Supply Forecaster)コンポーネント270b、および/または電力価格予測器(Power Price Forecaster)コンポーネント270aなどに関して、様々なタイプのデータを予測してターゲットシステムの制御を改善するために使用されることができる。
自動化制御システム122が作成された後、自動化制御システムは、CDDシステム140の1つまたは複数のコンピューティングシステム190において自動化制御システム122を任意選択で実行することなどによって、ターゲットシステム1 160の制御を含む動作を行うのを始めるように展開され実装されて、コンピュータネットワーク100を介してターゲットシステム1と相互作用することができる。他の実施形態および状況では、自動化制御システム122は、そうではなく、ターゲットシステム1の一部である1つまたは複数のコンピューティングシステム(図示せず)などにおいて、自動化制御システム1の一部または全部の展開されたコピー121に関して示されるように、ターゲットシステム1に対してローカルな様式で、自動化制御システム122の一部または全部(たとえば、複数の判断モジュール124のうちの1つまたは複数)のローカルコピーを実行することによって、展開されることができる。加えて、バイナリルールに基づくターゲットシステムの初期ルールベースシステムモデルを生成するために初期ユーザ相互作用が使用される実施形態および状況では、初期に展開された自動化制御システム122が、そのような初期ルールベースシステムモデルに基づくことができ、その初期に展開された自動化制御システム122の制御下のターゲットシステムの動作からのデータが収集され、1つまたは複数の予測モデルおよび/または対応するPVFコンポーネントのための後続の自動化された改善のために使用されることができ、それにより、たとえば、そのような予測モデルを再トレーニングし、および/または予測モデルに反映される推定された内部の観測不能な状態情報を改善し、1つまたは複数のそのような予測モデルの改訂されたバージョンが続いて展開され、自動化制御システム122と共に使用されてそれらの機能性を改善する。
自動化制御システム122に関して論じられたのと同様に、(同じユーザ、重複するユーザ、または自動化制御システム122を作成するのに関わったユーザと完全に無関係なユーザであるかに関わらず)1つまたは複数のユーザが、通信ネットワーク100を介してCDDシステム140と同様に相互作用して、ターゲットシステム2 170の一部または全部を制御するのに使用するための別個の自動化制御システム126を作成することができる。この例では、ターゲットシステム2のための自動化制御システム126は、自動化制御システム126のための制御アクションのすべてを行う単一の判断モジュール128を含む。自動化制御システム126は、たとえば、1つもしくは複数のコンピューティングシステム190において、および/またはターゲットシステム2の一部である1つもしくは複数のコンピューティングシステム(図示せず)においてローカルに実行されるように、自動化制御システム122に関して論じられたのと同様の様式でターゲットシステム2について同様に展開および実装されることができるが、自動化制御システム2の展開されたコピーは、この例では示されない。自動化制御システム122および/または126は、それぞれ特定の判断モジュール124および128とは別の他のコンポーネントおよび/または機能性をさらに含むことができるが、そのような他のコンポーネントおよび/または機能性は図1Aに示されていないことは理解されよう。
ネットワーク100は、たとえば、おそらく様々な別々の当事者によって運用されるリンクされたネットワークからなるインターネットなどの公的にアクセス可能なネットワークとすることができ、CDDシステム140は、ネットワーク100を介して任意のユーザにまたは特定のユーザのみに利用可能である。他の実施形態では、ネットワーク100は、プライベートネットワーク、たとえば、特権を与えられていないユーザに全体的または部分的にアクセス可能でない会社または大学のネットワークでとすることができる。さらに他の実施形態では、ネットワーク100は、インターネットへおよび/またはインターネットからのアクセスを有する1つまたは複数のプライベートネットワークを含むことができる。したがって、示された実施形態におけるCDDシステム140は、1つまたは複数のコンピュータネットワーク100を介して様々なユーザをサポートするようにオンライン様式で実装されるが、他の実施形態では、代わりに、CDDシステム140のコピーは、たとえば、1つまたは複数のコンピュータネットワーク100は代わりに会社または他の組織の内部コンピュータネットワークである場合に、単一のユーザまたは関係付けられたユーザのグループ(たとえば、会社または他の組織)をサポートすることを含めて、他の様式で実装されることができ、CDDシステムのそのようなコピーは、任意選択で、会社または他の組織の外部の他のユーザに利用可能でない。CDDシステム140のオンラインバージョン、および/またはCDDシステム140のローカルコピーバージョンは、いくつかの実施形態および状況では、たとえば、相互作用を行って判断モジュールおよび対応する自動化制御システムを生成し、ならびに/または様々な様式でそのような判断モジュールおよび対応する自動化制御システムを展開および実装するために、1つまたは複数のユーザがCDDシステムの様々な動作を利用するための様々な利用料を提供するような、利用料ベースの様式で動作することができる。加えて、CDDシステム140、そのコンポーネントの各々(1つもしくは複数のCDD制御アクション決定コンポーネントおよび/または1つもしくは複数のCDD調整制御管理コンポーネントなど、コンポーネント142および任意選択の他のコンポーネント117を含む)、判断モジュールの各々、ならびに/または自動化制御システムの各々は、ソフトウェア命令を含むことができ、ソフトウェア命令は、1つまたは複数のコンピューティングシステム(図示せず)上で1つまたは複数のプロセッサ(図示せず)によって実行されて、たとえば、それらのプロセッサおよびコンピューティングシステムを、それらのプログラムされた機能性を行うことに関して特化されたマシンとして動作するように構成する。
図1Bは、ターゲットシステムの協調分散制御を行うためのシステムが実装されることができる例示的環境を示すネットワーク図であり、具体的には図1Aに関して論じられた例を継続する。図1Bの例示的環境では、ターゲットシステム1 160がやはり示されており、(初期バージョンであるか改訂されたバージョンであるかに関わらず)自動化制御システム122が、ここで、ターゲットシステム1 160を能動的に制御するのに使用するために展開および実装されている。図1Bの例では、判断モジュール124は、個別判断モジュール124a、124bなどから124nまでとして表され、ターゲットシステム1 160に対してローカルで、および/または1つもしくは複数の介在コンピュータネットワーク(図示せず)を介してリモート様式で実行していることができる。示された例では、判断モジュール124の各々は、CDD制御アクション決定コンポーネント144のローカルコピーを含み、たとえば、コンポーネント144aがそのローカル判断モジュール124aをサポートし、コンポーネント144bがそのローカル判断モジュール124bをサポートし、コンポーネント144nがそのローカル判断モジュール124nをサポートする。同様に、様々な判断モジュール124のアクションが、示された実施形態においてピアツーピア様式で調整および同期され、判断モジュール124の各々は、そのような同期を行うためのCDD調整制御管理コンポーネント146のコピーを含み、コンポーネント146aはそのローカル判断モジュール124aをサポートし、コンポーネント146bはそのローカル判断モジュール124bをサポートし、コンポーネント146nはそのローカル判断モジュール124nをサポートする。
判断モジュール124および自動化制御システム122が実行されると、判断モジュール124間の様々な相互作用175が行われ、そうすることは、判断モジュールの現在のモデルおよび他の状態に関する情報を共有して様々な判断モジュール間の協調および調整を可能にすることを含み、それにより、たとえば、特定の判断モジュールが、1つまたは複数の他の判断モジュールに対して部分的に同期されたコンセンサス様式で(いくつかの状況では、すべての判断モジュール124のコンセンサスアクションが収束する完全に同期された様式で)動作する。判断モジュール124および自動化制御システム122の動作中に、様々な状態情報143が、ターゲットシステム160から自動化制御システム122によって取得されることができ、様々な状態情報143は、初期状態情報および経時的に変化する状態情報などであり、判断モジュール124により行われた制御アクションからのターゲットシステム1における出力または他の結果を含む。そのような状態情報は、たとえば、収集され、使用されている1つまたは複数の予測モデルに対する後続の自動化された改善のために使用されることができるが、そのような動作は図1Bには示されない。
この例におけるターゲットシステム1は、自動化制御システム122が操作することができる様々な制御要素161を含み、この例では、各判断モジュール124は、それが操作する1つまたは複数の制御要素161からなる別個のグループを有することができる(したがって、判断モジュールA124aは、相互作用169aを行って制御要素A161aに対して制御アクションA147aを行い、判断モジュールB124bは、相互作用169bを行って制御要素B161bに対して制御アクションB147bを行い、判断モジュールN124nは、相互作用169nを行って制御要素N161nに対して制御アクションN147nを行う)。そのような制御アクションは、ターゲットシステム1の他の要素の内部状態163に影響し、任意選択で、1つもしくは複数の出力162を引き起こすまたは1つもしくは複数の出力162に影響を与えることを含む。ターゲットシステム1の動作が進行中に、内部状態情報163の少なくとも一部が、判断モジュールの一部または全部に提供されて、それらの進行中の制御アクションに影響を与え、判断モジュール124a~124nの各々は、この例では、場合によっては、状態情報143a~143nの別個のセットをそれぞれ有する。
他の箇所でより詳細に論じられるように、各判断モジュール124は、そのような状態情報143、およびターゲットシステムに関する判断モジュールのローカルモデル145を使用して、たとえば複数の時間期間の各々について、次に行う特定の制御アクション147を決定することができるが、他の実施形態および状況では、特定の自動化制御システムは、1つの時間期間のみ、またはいくつかの時間期間のみに、特定のターゲットシステムと相互作用を行うことができる。たとえば、判断モジュール124のためのローカルCDD制御アクション決定コンポーネント144は、その判断モジュールのローカルモデル145についての最適に近いローカル解を決定することができ、ローカルCDD調整制御管理コンポーネント146は、そのような決定されたローカルおよび/または同期解に基づいて判断モジュールのローカルモデル145を更新することを含めて、他の判断モジュール124を反映するように同期されたコンセンサス解を決定する。したがって、自動化制御システム122の実行中、自動化制御システムは、状態情報を要求し、ターゲットシステム160の制御要素161の値を修正しまたは他の形で制御要素161を操作する命令を提供することを含めて、ターゲットシステム160との様々な相互作用を行う。たとえば、複数の時間期間の各々において、判断モジュール124aは、ターゲットシステムの1つまたは複数の制御要素161aと1つまたは複数の相互作用169aを行うことができ、同様に、判断モジュール124bは、1つまたは複数の別の制御要素B161bと1つまたは複数の相互作用169bを行うことができ、判断モジュール124nは、ターゲットシステム160の1つまたは複数の制御要素N161nと1つまたは複数の相互作用169nを行うことができる。他の実施形態および状況では、少なくともいくつかの制御要素は、各時間期間中に制御アクションを行わなくてよい。
例示的ターゲットシステム2 170は図1Bに示されずに、参照目的で自動化制御システム126の判断モジュール128についてさらなる詳細が示されるが、そのような判断モジュール128は、典型的には、ターゲットシステム1を制御する判断モジュール124と一緒に実装されない。具体的には、自動化制御システム126の展開されたコピーは、この例では単一の実行中の判断モジュール128を含むが、他の実施形態では、自動化制御システム126は、他のコンポーネントおよび機能性を含むことができる。加えて、自動化制御システム126に対して単一の判断モジュール128が実装されるので、判断モジュール128は、ローカルCDD制御アクション決定コンポーネント184を含むが、示された実施形態では、同期および相互作用する他の判断モジュールが存在しないので、ローカルCDD調整制御管理コンポーネントをまったく含まない。
図1Aおよび図1Bには示されていないが、たとえば122の自動化制御システムの動作の分散された性質は、自動化制御システム122が使用されている間に、判断モジュール124のグループに対する修正が時間経過につれて修正されるのを可能にすることを含めて、様々な判断モジュールの部分的に分離された動作を可能にして、たとえば、新しい判断モジュール124を追加し、および/または既存の判断モジュール124を除去する。同様に、特定の判断モジュール124および/または128に対する変更が行われることができ、たとえば、時間経過につれて、特定の判断モジュールに固有のルールもしくは他の制約を変更し、および/または特定の判断モジュールに固有の目標を変更し、新しい対応するモデルが、そのような判断モジュール内で生成および展開され、いくつかの実施形態および状況では、対応する自動化制御システムが対応するターゲットシステムの制御動作を継続しながら、そのようにされる。一例として、少なくともいくつかのそのような修正が、1つまたは複数のPVFコンポーネントの動作を反映して、1つまたは複数の時間において1つまたは複数の予測モデルを改善することができ、そうすることは、そのような予測モデルに利用可能になる新しい制御および状態情報を使用すること、ならびに/または予測モデルに反映される推定された内部の観測不能な状態情報を改善することを含み、1つまたは複数のそのような予測モデルの改訂されたバージョンが続いて展開され使用される。また、図1Aおよび図1Bの例では、各自動化制御システムは単一のターゲットシステムを制御するものとして説明されているが、他の実施形態および状況では、他の構成が使用されることができ、たとえば、単一の自動化制御システムが複数のターゲットシステム(たとえば、複数の相互に関係付けられたターゲットシステム、同じタイプの複数のターゲットシステムなど)を制御し、および/または、たとえば、各々がそのターゲット制御システムの異なる部分を制御するように独立して動作することによって、複数の自動化制御システムが単一のターゲットシステムを制御するように動作することができる。同様に、他の実施形態および状況において他の構成が使用されることができることは理解されよう。
上記されたように、少なくともいくつかの実施形態では、物理ターゲットシステムは、電力を貯蔵および提供するために使用される1つまたは複数のバッテリを含み、ターゲットシステムを制御するための自動化された動作は、各バッテリの状態の特性を使用して、バッテリから提供されるDC(直流)電力の自動化制御を行うことを含み、たとえば、バッテリに接続されたDC-DCコンバータ(たとえば、FET、または電界効果トランジスタ、スイッチングコンバータ)を使用して、バッテリから出力される電流および/または電圧の量を、リアルタイム様式でバッテリの長期動作を最適化するように制御することによって、自動化制御を行う。DC-DCアンプは、たとえば、その入力(供給)からその出力(負荷)への電流を逓増しながら電圧を逓減する降圧コンバータ(またはステップダウンコンバータ)の一部、および/またはその入力(供給)からその出力(負荷)への電流を逓減しながら電圧を逓増する昇圧コンバータ(またはステップアップコンバータ)の一部とすることができ、これらは、本明細書では一般に「昇圧/降圧コントローラ」または「降圧/昇圧コントローラ」と呼ばれることがある。加えて、いくつかの実施形態および状況では、複数のバッテリが、複数の制御システムを使用することによって制御されることができ、各制御システムはバッテリのうちの1つに関連付けられ、複数のバッテリに対する複数の関連付けられた制御システムの間の相互作用に基づくなどして分散された様式で複数のバッテリの全体的制御が調整される。制御される1つまたは複数のバッテリを含むシステムは、いくつかの実施形態および状況において、1つもしくは複数の電源および/または1つもしくは複数の電気負荷のような追加のコンポーネントをさらに含むことができ、そのようなタイプのシステムの非限定的例は、発電源(たとえば、ソーラーパネル、風力タービンなど)および住宅または企業からの電気負荷を任意選択で含むことができる、1つまたは複数の家庭またはビジネス電力システムである。
図2Aは、バッテリの状態の特性を他の関係付けられた情報と共に使用してバッテリからのDC電力の自動化制御を行うためのシステムの実施形態の例示的コンポーネントを示すブロック図200を含み、具体的には、さらに後述されるように、例示的システム200の様々なコンポーネントが、定義された制約条件、ルール、および他の基準に照らして1つまたは複数の定義された目標に従ってバッテリの動作を制御するように相互作用する。いくつかの実施形態では、バッテリを制御するための自動化されたアクティビティが、電力を求める外部要求(たとえば、バッテリが電力を供給できる先のユーティリティからの要求)のできる限り多く(たとえば、そのような要求のうちの少なくとも定義されたパーセンテージまたは量)を満たしながら、電力需要および/または電力供給および/または電力価格の予測された将来値に部分的に基づいて、リアルタイム様式で、および/またはバッテリの長期動作(たとえば、バッテリの寿命)を最適化するように行われることができる。
図2Aの示された例では、バッテリ210が示されており、バッテリ210は、バッテリコントローラコンポーネント240(本明細書では、「追跡コントローラ」および/または「バッテリ追跡コントローラ」と呼ばれることもある)から対応する制御信号を受け取るアクチュエータ230を介して制御され、たとえば、バッテリコントローラがバッテリのDC出力として生成されるべき電力の量を指定することによって制御される。生成されるべき指定された電力量は、たとえば、出力される電力を指定された量だけ増加もしくは減少すること、または電力出力を変更しないことを示す情報を含むことができる。ここでは示されていないが、バッテリの出力は、電力を1つまたは複数の負荷(図示せず)に提供する働きをすることができ、少なくともいくつかの実施形態では、バッテリの電力出力をAC電力に変換して対応する負荷をサポートするためにインバータ/整流器コンポーネントに接続されることができ、そのようなインバータは、たとえば、AC電力の電圧および/または周波数を調節することによってバッテリから提供される電力を制御することができる。同様に、ここではやはり示されていないがバッテリの入力は、1つまたは複数の電源(図示せず)から電力を受け取る働きをすることができ、少なくともいくつかの実施形態では、電源からのAC電力入力をバッテリ用にDC電力に変換するためにインバータ/整流器コンポーネントに接続されることができ、そのような整流器は、たとえば、AC電力の電圧および/または周波数を調節することによってバッテリに提供される電力を制御することができる。
加えて、図2Aの追加のデータソース要素255および260は、システム200の1つまたは複数の予測器コンポーネント270(各々が、図示されない複数の予測モデルを潜在的に含む)が、過去および/または現在の気象データ、過去および/または現在の価格データ、電力供給および/または需要に関する過去および/または現在のデータなどに基づくなどして、1つまたは複数のタイプの電力に関係付けられた情報を予測するために情報を取得し使用することを可能にする。この例では、予測器コンポーネントは、ユーティリティへおよび/またはユーティリティから供給される電力の価格を予測する電力価格予測器コンポーネント270aと、バッテリから供給される電力の需要を予測する電力需要予測器コンポーネント270cと、バッテリから供給される電力の利用可能な供給を予測する電力供給予測器コンポーネント270bとを含むが、他の実施形態では、1つまたは複数のそのようなコンポーネントが存在しなくてもよく、および/または組み合わされてもよい(たとえば、コンポーネント270bおよび270cが、正および負の需要を予測する単一の電力需要/供給予測器に置き換えられ、負の需要は利用可能な供給を示す)。次いで、CDIエージェント250は、そのような予測されたデータを受け取り、それを後述される他のタイプのデータと一緒に使用してバッテリの制御を管理して、たとえば、バッテリ寿命および/または他の性能特性に関係付けられた他の制約条件と組み合わせて、1つまたは複数の経済的制約条件および/または電力利用可能性制約条件を最適化または他の形で改善することができる。
どのようにバッテリを制御するかを決定することの一部として、バッテリコントローラコンポーネントは、バッテリの内部状態(図示せず)、たとえば、電圧、電流、温度などの現在の値に関して、センサモジュール220から入力を受け取り、対応する情報をCDIエージェント250に供給する。本明細書ではCDD(協働分散判断)判断モジュールまたはシステムと呼ばれることもあるCDIエージェントは、バッテリの状態に関係付けられたバッテリコントローラからの情報を受け取り、また、ユーティリティにより制御される電気グリッド(図示せず)に対してバッテリが電力を時々または常に供給する状況などにおいて、ユーティリティコンポーネント260からの電力供給要求を受け取り、また、1つまたは複数のタイプの上記された予測されたデータを受け取る。具体的には、CDIエージェントは、ユーティリティから特定の要求を受け取り、バッテリの状態に関する情報、および1つまたは複数のタイプの予測されたデータに関する情報を受け取って分析し、バッテリについて現在の時間に行う対応する動作(たとえば、バッテリから供給される出力電力の量、および/またはバッテリにより受け取られ貯蔵される入力電力の量)を決定し、少なくともいくつかの状況では、(たとえば、バッテリの推定された内部温度および/またはバッテリの推定された内部の化学的性質に関して)所望の非飽和範囲またはレベルでバッテリが動作することを可能にすること、ならびに予測されたデータに反映される見込まれる将来の動作をサポートすることなどのために、バッテリの現在の状態および定義された目標を所与としてバッテリ性能に対する他の制約条件も満たすように要求が満足できる場合、リアルタイム様式で電力に関するユーティリティからの要求を完全または部分的に満たすように試みることを伴う。バッテリについて現在の時間に行う対応する動作を決定した後、CDIエージェントは、対応する追跡制御信号をバッテリコントローラに提供し、バッテリコントローラは、追跡制御信号の対応する動作をもたらすためにアクチュエータを現在どのように修正または操作するか(たとえば、バッテリから出力される電力の量について行う正または負の変更の量)を決定し、上述されたように対応する制御信号をアクチュエータに送る。図2Aには示されていないが、バッテリについての対応する動作に関する情報(たとえば、追跡制御信号および対応するバッテリ状態情報、結果の制御信号ならびに結果のバッテリ状態動作および状態情報など)が、コンポーネント270のうちの1つもしくは複数のおよび/または1つもしくは複数の他のPVFコンポーネント(図示せず)にさらに提供されて、コンポーネント270によって使用中の1つまたはいくつかまたは全部の予測モデルを改善するのに使用することができ、そうすることは、バッテリ動作に関するそのような情報を使用して、そのような予測モデルを再トレーニングすること、および/または予測モデルに反映される推定された内部の観測不能な状態情報を改善することを含み、1つまたは複数のそのような予測モデルの改訂されたバージョンが続いて展開および使用される。
やはり図2Aには示されていないが、CDIエージェントおよび/またはバッテリコントローラは、いくつかの実施形態では、バッテリの内部状態を推定し、その内部状態に少なくとも部分的に基づいて行う特定の動作を選択するために使用される、バッテリの記憶されたモデルを含む。たとえば、いくつかの実施形態では、任意のタイプのバッテリに適用可能な汎用バッテリモデルが使用されることができ、他の実施形態では、バッテリのタイプ(たとえば、リチウムイオンまたはニッケルカドミウムなど、電気を貯蔵および/または生成するために使用される化学反応のタイプ)に固有のバッテリモデルが使用されることができ、さらに他の実施形態では、使用中の特定のバッテリ専用に設計および/または構成されたバッテリモデルが使用されることができる。加えて、少なくともいくつかの実施形態では、特定のバッテリを有する特定のシステムで当初採用されたバッテリモデルが、時間経過につれて更新されて、(たとえば、観測可能なバッテリ状態の変化が、対応する外部バッテリ電気負荷および/または電源にどのように相関するかを監視することによって、)モデルの基礎となる構造に改善を反映すること、ならびに/またはモデルをトレーニングして使用中の特定のバッテリおよび/もしくはシステムに固有の動作特性を反映することなどができ、特定のバッテリおよび/またはシステムに対してモデルをトレーニングしまたは他の形で適合させるとき、トレーニング/適合動作は、いくつかの実施形態では、自動化制御システムを使用してバッテリを制御する前に初期にトレーニング段階で行われることができ、および/または、いくつかの実施形態では、(たとえば、バッテリのインピーダンスプロファイルの経時的変化を反映するために、)自動化制御システムがバッテリを制御している間に継続的または定期的に行われることができる。そのようなモデルの構築および使用を含むモデルに関する追加の詳細は、本明細書の他の箇所に含まれる。加えて、いくつかの実施形態では、バッテリコントローラおよびCDIエージェントは、別個のコンポーネントとして実装されることができ(たとえば、バッテリコントローラは、バッテリに取り付けられまたは他の形式でバッテリの位置にあるハードウェアおよび/またはファームウェアに全体としてまたは部分的に実装され、CDIエージェントは、バッテリ位置から遠隔の1つまたは複数のコンピューティングシステム上で実行され任意選択で1つまたは複数の介在コンピュータネットワークを介してバッテリコントローラと通信するソフトウェア命令によって、部分的に実装される)、他の実施形態では、CDIエージェントおよびバッテリコントローラは、(バッテリの位置にあるかそれから離れているかに関わらず)単一のコンポーネントとして実装されることができる。バッテリについて行う動作を決定するためのCDIエージェントの動作に関するさらなる詳細は、以下により詳細に論じられる。
加えて、図2Aに関連して示されていないが、いくつかの実施形態では、複数のバッテリ(たとえば、数十、数百、数千、数百万など)の各々が、同様にそのバッテリのアクションを制御する関連付けられたCDIエージェントを有することができ、様々なバッテリが、ユーティリティまたは他のエンティティに集合的電力を供給するために調整された様式で一緒に動作する。そのような実施形態では、ユーティリティまたは他の外部エンティティは、バッテリを含む様々なシステムにより使用するための同期および監視信号を送ることができ、様々なバッテリに関連付けられた複数のCDIエージェントが、相互作用して情報を交換し、バッテリの動作間の少なくとも部分的調整を維持することができる。自動化された動作を行って、1つもしくは複数のバッテリを有するそのようなターゲットシステムおよび/または他のタイプのターゲットシステムを制御するいくつかのさらなる態様は、2016年4月11日に出願された特許文献1、名称「Using Battery DC Characteristics To Control Power Output」、2015年6月22日に出願された特許文献2、名称「Cooperative Distributed Control Of Target Systems」、2015年6月22日に出願された特許文献3、名称「Applications Of Cooperative Distributed Control Of Target Systems」、2015年6月22日に出願された特許文献4、名称「Gauge Systems」、および2015年6月22日に出願された特許文献5、名称「Cooperative Distributed Control Of Target Systems」に含まれており、それらの各々は、参照によりその全体が本明細書に組み込まれている。
図2Dは、1つまたは複数のPVF予測モデル278からの予測情報などに部分的に基づいてCDI制御エージェント279により自動的に制御されている別のターゲットシステムの実施形態の例示的コンポーネントを示すブロック図295を含む。この例では、制御エージェント279は、自動化された動作を行って、1つまたは複数のHVACユニット272を介して建物271の暖房および/または冷房を制御して、たとえば、制御エージェントにおいて表現された定義された制約条件、ルール、および他の基準に照らして1つまたは複数の定義された目標を満たす。いくつかの実施形態では、HVACユニットを制御するための自動化されたアクティビティは、(たとえば、温度範囲内で、利用者に供給された動的要求に応じて特定の時間に特定の部屋の温度を上昇または低下させるように)1つまたは複数の定義された基準に従って建物の一部または全部の部屋の暖房および/または冷房を維持しながら、リアルタイム様式でならびに/または暖房および/もしくは冷房アクティビティのコストを最適化するように行われることができる。
図2Dの示された例では、建物は複数の階274を有し、各階は複数の部屋275を有する。いくつかの部屋は、その部屋の温度を提供するための温度センサ276を有し、(同じ部屋か異なる部屋かに関わらず)いくつかの部屋は、利用者に選択可能な命令ボックス277であって、それらの命令ボックス277に関連付けられた1つまたは複数の部屋の暖房および/または冷房を要求するための命令ボックス277を有することができる。制御エージェント279は、ターゲットシステムのためのセンサ(たとえば、室内温度センサ276、1つまたは複数の外部温度センサ、HVACユニット272および/または建物用の電力供給273の動作に関連付けられたセンサなど)からの情報、制御ユニット279からHVACユニット272および/または電力供給273に供給される制御信号情報、ターゲットシステム動作の出力または結果に関する他の情報、ならびに1つまたは複数のPFF予測モデル278からの1つまたは複数のタイプの(たとえば、制御エージェント279に提供される他のタイプの入力データの1つまたはいくつかまたは全部についての)予測パラメータ値などを受け取り、他方で、制御エージェントは、この例では、HVACユニットおよび/または電力供給に命令を直接提供するように示されているが、他の実施形態では、制御エージェントは、そうではなく、1つまたは複数の中間システム(たとえばスマート建物管理システム)に制御命令を提供することができる。1つまたは複数のPVF予測モデル278は、同様に、ターゲットシステムのためのセンサからの情報、制御エージェント279からHVACユニット272および/もしくは電力供給273に供給される制御信号情報、ならびに/またはターゲットシステム動作の出力もしくは結果に関する他の情報を受け取り、本明細書の他の箇所でより詳細に論じられるように、そのような情報を使用して予測モデル278の動作を改善することができる。図2A~図2Cに関して説明されたのと同様のアクティビティが、ターゲットシステム295について同様に行われることができるが、そのような詳細は簡潔にするために示されていないことは理解されよう。自動化された動作を行ってそのようなターゲットシステムを制御するいくつかのさらなる態様は、参照によりその全体が本明細書に組み込まれている、2017年1月19日に出願された特許文献6、名称「Using Sensor Data To Assist In Controlling A Target System By Modeling The Functionality Of The Target System」に含まれている。
少なくともいくつかの実施形態では、時系列予測に関するパラメータ適合および自動再トレーニングが、(本明細書では「予測器」と呼ばれることもある)予測コンポーネントで使用される予測モデルに対して行われる。1つの非限定的例として、予測器は、以下の方程式によってモデル化される線形系の予想を行うことができる。
xn=Axn-1+Bun-1+wn-1 (0.1)
yn=Cxn+vn (0.2)
上式において、
● xnは、系の状態である(これは、直接観測されなくてよいことに留意されたい)
● unは、制御(すなわち、ある種の予想されない入力変数)である
● wnは、プロセスにおけるノイズである
● ynは、測定されたデータである
● vnは、測定ノイズである
● Aは、以前の状態が新しい状態にどのように影響するかを決定する状態遷移行列である
● Bは、以前の制御が新しい状態にどのように影響するかを決定する入力行列である
● Cは、測定値が状態にどのように関係付けられるかを決定する出力行列である
この一般的フレームワークは、本明細書の他の箇所で論じられるように、複数の異なるタイプのモデルを可能にする。Aが0の場合、これは、自動回帰モデルでなく単純回帰(plain regression)となる。Cが単位行列であり、vnが0である場合、観測と状態の間に差異がない。
加えて、xをより大きなベクトル内にスタックすることによって一度に複数の点が予想されることができ、たとえば、丸一日の毎時の価格を予想するために、状態は、単一の価格でなく、24個、すなわち日の各時(each hour)に1つの価格からなる。行列Aの構造は、時間の各々の間の関係を決定し、典型的な選択は、完全行列(full matrix)、三重対角行列、対角行列、または単位元(identity)の定数倍であり得る。xをさらに大きなベクトル内に(さらに)スタックし、AおよびBに関するより大きなブロック行列を作ることによって、より高次のモデルが取り扱われることができる。たとえば、3次モデル
xn=A1xn-1+A2xn-2+A3xn-3 (0.3)
は、以下のように1次モデルとして記述されることができる。
状態および制御に関して異なる次数のモデルが可能であることに留意されたい。最後に、各ブロックの構造が指定されることができる(たとえば、A1は完全とすることができ、A2は対角行列とすることができる)。加えて、データは、上記のモデルの使用の前に前処理されることができる。例は以下を含む。
● xの各座標を、値が平均0、分散1を有するように正規化する
● (正のデータについて)対数スケールを取る
● (外れ値に対するロバスト性のために)中央絶対偏差を使用して正規化する
● 既知の時間期間を有するデータについて時間に基づいて正規化する。たとえば、データが毎日到着している場合、平日とは別に週末を正規化する。または、データが毎時到着している場合、日を通した周期的傾向を説明するために日の各時を別個に正規化する
予測器を指定するときに、上記のすべてが考慮に入れられることができる。すべてを指定するサンプルJSON構成ファイルが以下に示される。
「samplesPerStep」は、1度に予想される24個の値を示す。正規化器(normalizer)部分は、各入力状態および制御変数に対してどんな正規化器を使用するかを記述する。行列Aは、「model」部分で決定され、コードで完全行列に構築されたブロック構造を有する。パラメータ「stateOrder」および「controlOrder」は、各変数について使用するモデルの次数を定義し、「modelType」は、各ブロックの構造のタイプを指定し、「stateTerms」および「controlTerms」はブロックパターンを示す。最後に、使用する予測器のタイプ、およびどんな誤差をトレーニング中に使用するかを指定するためのパラメータがある。
1つまたは複数のバッテリから供給される電力の将来需要の予測、およびバッテリからまたはバッテリへ供給されるそのような電力の将来価格の予測の一例として、いくつかの実施形態では、電気価格および電力需要は、過去の価格、需要、および予測された温度を所与として、日の各時について予測されることができる。そのような予想は、たとえば、pnが日nの各時についての価格の1×24ベクトルであり、dnが日nの各時についての需要の1×24ベクトルであり、dnが日nの各時についての温度の1×24ベクトルであるモデルを使用することができる。以下の2次プロセスモデルが使用されることができる。
pn=c1pn-1+c2pn-2+c3dn-1+c4tn (0.5)
dn=c5pn-1+c6dn-1+c7dn-2+c8tn (0.6)
これらは以下のように記述されることもできる。
上式において、Iは24×24単位行列であり、0は24x24零行列である。このモデルでは、内部状態(pn,dn)と測定値との間に差がなく、したがって、測定方程式は以下のようになる。
この例では、予想された気象予測は、予想をするために使用されるが、観測された気象は、モデルをトレーニングするために使用される。
この例では、需要および温度は、中央値を差し引き、平均絶対偏差で割ることによって正規化され、データは、日毎の時間(hour)および週毎の日の異なる24*7の組み合わせについて別個にグループ化される。同様に、価格は、まず対数を取り、次いで中央値を差し引き、平均絶対偏差で割ることによって正規化され、各時および曜日の組み合わせによってグループ化される。この機能性を実装するための動作は、以下のような非同期ジョブのセットとして、すなわち、データ抽出(たとえば、これは、履歴価格、履歴需要、履歴温度、および様々なウェブサイトからの予想された温度の抽出を毎日実行する4つのジョブを有し、結果を共有ストレージに保存する)、モデルトレーニング(たとえば、これは、新しいモデルを1週間に3回トレーニングするジョブを有し、最良のモデルを選択し、最悪のモデルを除去する)、および予測/予想(たとえば、これは、毎日実行され、最新の最良のモデルを採用し、次週の予想を行う「ドライバ」プログラミングを有し、結果を、ユーザにそれらを供給することや加入者にそれらを公開することなどによって提供する)として実装されることができる。図2Cの図290に、異なるジョブ間のデータフローが示されている。予測は1週間まで先立って行われるので、システムは、何かが故障した場合にロバストであり、たとえば、データソースが一時的に利用不可担った場合、問題が修復されている間、ユーザは依然として数日間結果を得ることができる。
1つまたは複数のバッテリから供給される電力の将来需要の予測、およびバッテリからまたはバッテリへ供給されるそのような電力の将来価格の予測の他の例は、過去の価格、需要、および予測された温度を所与として、次の1時間について5分間隔でそれを行うことを含むことができる。そのような予想は、たとえば、pn、dn、およびtnが日nの各5分間隔についての価格、需要、および温度の1×12ベクトルであるモデルを使用することができる。温度がこの頻度で利用可能でない場合、5分の温度値が、より長い時間フレーム(たとえば1時間)の温度から内挿されることができる。1次プロセスモデルが以下のように使用されることができ、
測定モデルは次のようになる。
やはり、予想された気象は、予想をするために使用され、過去の観測された気象は、モデルをトレーニングするために使用される。温度および需要を正規化するために、平均が差し引かれ、平均絶対偏差で割られることができ、価格については、対数が取られ、次いで平均を差し引き、平均絶対偏差で割ることができる。これの実装は、上述された時-日予想に類似するが、価格/需要に関するデータソースは、たとえばウェブページをスクレイピングするのではなく、たとえば直接フィードとすることができる。
予測モデルは、様々な実施形態において様々な様式でトレーニングおよび/または更新されることができる。1つの非限定的例として、履歴データが、モデルを初期にトレーニングするために利用可能であってよく、その後、新しいデータが来るとモデルは「オンライン」で実行できる。たとえば、100個の履歴値が利用可能であると想定する。それらの最初の50個は、たとえば、パラメータA、B、Cの初期値を推定するために予約されることができる。次いで、残りの50個の点は、トレーニングされたモデルが生成する予想と比較されて、モデルがその将来データに関してどの程度うまく働くかを測定することができる。この例において、モデルは時間50から時間100へ順方向に実行されるので、パラメータA、B、Cは、上記の動的モデルのいずれかを使用しているとき、変化することができることに留意されたい。最終モデルは、将来時点を予想するために使用されることができ、新しい測定が行われるたびに、モデルはそれ自身で更新することができる。これは、典型的には計算的に安価であり、少なくともいくつかの実施形態ではリアルタイムで行われることができる。
特定の予測モデルが時間経過につれて使用される場合、特に、新しい測定されたデータを用いて自身を更新しない非動的(または「静的」)モデルに関して、その性能は、時間経過につれてデータが変化すると低下する可能性がある。しかしながら、それは動的モデルの場合も発生することがあり、たとえば、いくつかの状況では、少数の非常に不良なデータポイントがカルマンフィルタモデルを永続的に歪めることがあり、またはモデルの予想電力を低下させる数値誤差が蓄積することがある。少なくともいくつかの実施形態では、以下は、手動の介入なしに、その時間で予測に使用されるのに利用可能な任意の所与の時間における最良の可能なモデルを有する機会を増大するために使用され得る、システムの1つの非限定的例である。
● 候補予測モデルのプールから開始する。一部は、より単純なことがあり(たとえば、単純回帰、またはより低次のモデルの使用)、これらは、より少ないトレーニングデータを用いて、またはより複雑なモデルを破損し得る余分なノイズがある場合により良く働く傾向がある。一部は、より複雑なことがあり(たとえば、PAEカルマンフィルタ)、多くのデータが利用可能なときに他より性能が優れることが可能である。
● 最後のT個の点の履歴データでこれらのモデルをトレーニングし、最後のN個の点は測定をするために予約する。測定の前にこれらのモデルを保存し、測定のプロセスと同様に、モデルがそれら自体をデータの最後まで更新する。
● 最も高い性能を有するモデルを選び、これを将来の予想のために使用する。
● 新しい測定値が来るたびに、1つの点を用いて各モデルを更新して、測定され得る履歴データのN個の点を用いて各モデルが常に保存されるようにする。
● 定期的に、新しい最良のモデルを見つけようと試みる。(より古いデータ上でトレーニングされるが、新しいデータで更新される)モデルの既存のプールに加えて、新しいセットのモデルが、最後のT個の点だけでトレーニングされるステップ1および2として作成され、それにより、異なる量のデータ上でトレーニングされた異なるモデルを作成する。
● 最後のN個の点のデータ上でモデルをスコアリングする。作成スコアリングに関する最良の性能のモデルを選び、任意選択で(たとえば、考慮するモデル数が一定に留まることが好まれる場合)、最悪の性能のモデルを除去する。新しい測定値が来ると各モデルを更新することを含む、上記の第4のステップに戻る。
上記のプロセスは、図2Bのアーキテクチャ280に示されている。この例示的な手順の1つの利点は、任意の所与の時間に使用されているモデルが、その予想の精度に関して最近のデータ上での他のモデルに勝り、したがってそれはロバストであることである。さらに、単純なモデルと複雑なモデルの両方が考慮されるので、データのノイズが増え、またはデータの予想可能性が低くなった場合、最良とみなられるモデルが自動的に調整される。最後に、モデルは異なる時間期間においてトレーニングされているので、初期パラメータをトレーニングするための最良のセットのデータがモデルの1つまたは複数において使用される機会が増加される。
PAE(パラメータ適合エンジン)に関する追加の詳細を含む1つの例示的実施形態として、以下の力学系が考えられる。
xn=Axn-1+Bun+wn (0.11)
yn=xn+vn (0.12)
上式において、
xnは、系の状態である(これは、直接観測されなくてよいことに留意されたい)
unは、制御(すなわち、ある種の予想されない入力変数)である
wnは、プロセスにおけるノイズであり、それは、ゼロ平均であると仮定され、共分散Qnを有する
ynは、測定されたデータである
vnは、測定ノイズであり、それは、ゼロ平均および共分散Rnを有すると仮定される
Aは、以前の状態が新しい状態にどのように影響するかを決定する状態遷移行列である
Bは、以前の制御が新しい状態にどのように影響するかを決定する入力行列である
方程式(0.11)はシステムのプロセスモデルとして知られ、(0.12)は測定モデルとして知られている。測定値を与えられた状態推定の一般的方法は、カルマンフィルタである。カルマンフィルタは既知とされるが、一般に、行列AおよびBが一定であるという仮定を有する。実世界のシステムでは、行列AおよびBは時間経過につれて変化する可能性がある。加えて、行列が、「真」の基礎となるシステムダイナミクスと一致しない場合、カルマンフィルタは最適に働かず、したがって、真の基礎となるダイナミクスにより良くフィットするようにAおよびBを適合させる方法を有することが、説明されている技法の使用の利点を提供する。具体的には、行列AおよびBは、時間経過につれて変化することを可能にされ、第2のカルマンフィルタが、観測値を所与として行列を更新するために使用される。AまたはBの任意のサブセットを、どの部分が固定されたままであることが望ましく、どの部分が変更を可能にされることが望ましいかに応じて推定することが可能である。これを行うために、まず、AおよびBの(非ゼロ)エントリがベクトルΨnとして符号化される。このベクトルは、パラメータ状態である。次いで、パラメータ系のプロセスモデルが、
Ψn=Ψn-1+Θn (0.13)
として定義され、ここで、Θnは、パラメータのプロセスノイズである。これのために、複数の単位元が使用され得る。パラメータ系の観測モデルを作るために、測定値はパラメータの関数として書かれ、観測ノイズが加えられ、次のようになる。
xn=FnΨn+ln (0.14)
上式において、lnは、すべての時間について平均0および共分散Λを有して正規分布されると仮定される。ここで、これらの2つの方程式は、カルマンフィルタが適用されることができる力学系を構成する。好ましくは、パラメータは、少なくともいくつかの実施形態において(ロバスト性のために)状態に対する更新よりも遅いスケールで更新されることに留意されたい。加えて、パラメータプロセスノイズおよび測定ノイズについて行われた選択は、パラメータ適合がどのように挙動するかに影響を与えることができる。
パラメータ更新のために動的方程式を構築するやり方に関する1つの具体例として、以下の系を想定する。
そして、これらのパラメータa11、a12、a21、a22、b1、b2は適合されることになる。ここで、パラメータ状態は、下記のように各時間nにおけるパラメータのベクトルである。
観測系の方程式を得るために、プロセス方程式を
として展開し、次いで、以下のようにxn=FnΨnとなるように行列Fを記述し、
結果として、
となる。PAEカルマンフィルタの方程式を完成するために、Θおよびlの共分散に対するいくつかの合理的な行列を選択する。あり得る選択肢は、
cov(Θ)=0.01l6 (0.22)
cov(l)=0.01l2 (0.23)
であり得る。
履歴データを用いて、価格、需要、および気象に関する5分毎のデータを用いて価格および需要予想を行うことに関する追加の詳細を含む1つの例示的実施形態として、カルマンフィルタが、5分の時間スケールで増分価格および増分需要に対して使用される。また、別のカルマンフィルタがパラメータを推定するために使用される。価格Pt、需要Dt、および気象Wtは、スカラーであり、それらの履歴データが存在する。モデルは、増分価格ΔPtおよび増分需要ΔDtに基づき、
であり、ここで、最後のN個の時間期間にわたって平均価格および平均需要が以下のように求められる。
また、以下のような更新方程式がある。
同様に,
である。平均を更新する別の方法は、N個の時間期間のスライド窓を使用することである。
増分モデルのための動的方程式は、
として与えられ、ここで、ノイズベクトルは、ガウシアン、ηt~(0,Q)および
である。
観測方程式を展開し、
であり、これにより、
が得られ、同様に、需要については,
であり、これにより、
が得られ、ここで、観測ノイズは、ガウシアン、γt~(0,R)および
であり、w、価格および需要に関する観測ノイズは、無相関であると仮定される。要約すると、カルマンフィルタに関する増分価格および需要モデルは、
ΔYt=ΔXt+γt (0.34)
であり、上式において、
および
は、第2のカルマンフィルタからのパラメータの推定値である。
カルマンフィルタ方程式が続く。予測方程式は、
であり、補正方程式は、
であり、上式において、
は、利得行列である。カルマンフィルタの共分散行列は、Σとして示され、予測方程式,
および補正方程式
によって計算される。
利得は、
である。初期条件は、
Σ0|0=Σ0 (0.40)
である。
利得行列は、逆行列を含むが、この逆を直接取る代わりに伝播する方法がある。モデルの6個のパラメータのベクトルvect(a11,a12,a21,a22,b1,b2)は、価格および需要状態よりも遅く変化するように仮定され、したがって、履歴価格および需要データがカルマンフィルタにおいてパラメータに使用される。パラメータは、プロセスダイナミクス更新よりも実質的に遅い速度で更新される。
Ψt=vect(a11,a12,a21,a22,b1,b2)t (0.41)
として、パラメータのダイナミクスは、
Ψt+1=Ψt+Θt (0.42)
であり、ここで、ΘtはN(0,λ)である。
パラメータ観測方程式は、(0.28)から導かれ、以下のようになる。
のようになり、ノイズプロセスは、すべてのtについてN(0,λ)である。ここで、カルマンフィルタはパラメータを推定するために使用される。
説明されている技法は、様々な利益および利点を提供することができる。そのような利益および利点の非排他的は、たとえば、複数の異なるタイプの予測モデルと、それらのモデルをトレーニングするために使用する複数の異なるグループの過去データとの使用を組み合わせることによって、ならびに/またはそれらのモデルの少なくとも一部に反映される推定された内部の観測不能な状態情報を改善することによって、将来パラメータの予測が行われるやり方を改善することを含む。加えて、ターゲットシステムの動作に影響するパラメータの将来値を予測すること、およびターゲットシステムに対して行う現在の自動化制御アクションを決定することの一部として、予測された将来値を使用することによって、現在の自動化制御アクションは、そのような予測された将来値を反映しない他の可能なアクションに比べて最適化または他の形で改善されることができる。
加えて、(たとえば、バッテリのDC電流および電圧を変えることによって)DC側でバッテリの電力出力が制御される実施形態に関連して、さらにそのような非排他的利益は、バッテリに接続されたインバータにより提供されるAC(交流)電圧および/または電流を単一の指定されたレベルに固定するのではなく、(たとえば、化学量論的範囲などの1つまたは複数の化学量論的限界内でバッテリの内部の化学的性質を維持することによって)内部温度および/または他のバッテリパラメータに関してバッテリがその最適なまたは最適に近い物理的状態で動作することを可能にすることと、不可逆的バッテリ損傷の可能性という代償を支払うが最大電力を提供する飽和レベルでバッテリを動作させることとを含む。このようにして、電力に関係付けられた1つまたは複数のタイプの予測された将来データに照らして、バッテリの化学的性質の変化が可逆的であって短絡および他の不可逆的損傷が低減または除去される好ましい範囲で、バッテリが動作することを可能にすることによって、バッテリ寿命および他の動作性能が上述された技法により最適化または他の形で向上されることができる。加えて、少なくともいくつかの実施形態では、バッテリの自動化制御は、他のコンポーネント(たとえば、負荷および/または外部電力グリッド)との電力出力量共鳴を向上および維持するためのバッテリの能動制御をさらに含むことができ、したがって、提供される電力の量は、電力出力要求または負荷量の少なくとも定義されたパーセンテージまたは他の量(たとえば、50%、65%、100%、または任意の他の定義されたパーセンテージもしくは他の量)を満たしながらも、必要とされる量を超えない。
このようにして、そのような実施形態は、バッテリ損傷または他の問題(たとえば過剰加熱)を生じてもバッテリの出力電圧または電流を固定しすべての電力要求を満たす既存のシステムではなく、可能な場合に電力出力要求を満たし、予測された将来電力に関係付けられたデータを管理しながら、制御されるバッテリの内部状態および(寿命を含む)動作性能を管理する自動化制御システムとして概念化されることができる。上記および本明細書のいくつかの他の箇所で論じられる利益および動作は、バッテリから出力される電力を制御することに関するが、同じ技法が、1つまたは複数の電源からバッテリ内に貯蔵される電力を制御するために使用されることができ、そうすることで、電力を貯蔵しながら、バッテリが、熱および他のバッテリパラメータに関してその最適なまたは最適に近い物理的状態で動作するようにし、また、予測された将来電力に関係付けられたデータを管理しながら、電力が1つまたは複数の電源により提供されるための電力入力要求の少なくとも定義されたパーセンテージまたは他の量(たとえば、50%、65%、100%、または任意の他の定義されたパーセンテージもしくは他の量)を満たしながら、バッテリの化学的性質の変化が可逆的である好ましい範囲で、バッテリが動作することを可能にすることによって、バッテリ寿命および他の動作性能を最適化または他の形で向上するようにすることは理解されよう。追加の利益および利点は、以下を含み、特に指示されない限り、本明細書で使用される特徴または結果を「最適化する」という用語は、一般にその特徴または結果を(たとえば、部分的または完全な最適化によって)改善することを意味し、本明細書で使用される「リアルタイム」という用語は、制御されている結果のコンポーネントまたはシステムに固有の時間フレーム(たとえば、秒の分数、秒、分など)に関して意味を有する。
● I(電流)、V(電圧)、およびR(出力されている電力の量)のようなDC制御変数を最適化することによって、バッテリ寿命を改善することができる
● バッテリの化学的性質の事前の特徴付けと関連してDC制御変数(I,V,R)を最適化することによってバッテリ寿命を改善することができ、また、性能および寿命を改善するようにDCレベルで最適化することができる
● AC相において目的を解決するためにDC領域でリアルタイムに変数を最適化することができる
● 他のグリッドコンポーネントなしでバッテリ出力のみの制御によるなどして、共鳴動作をもたらすグリッド周波数に一致するようにリアルタイムでAC出力を最適化することができる
● 充電/放電サイクルを改善して長期バッテリ利用可能性を改善することができる
● AC負荷応答を改善することができる
● 長期バッテリ利用可能性を改善することと組み合わせてAC負荷応答を改善することができる
● バッテリコントローラが、プロセッサ上で組み込まれたソフトウェアとして自己充足的に動作することができる
● バッテリコントローラが、外部位置(たとえば、クラウドまたは他のネットワークアクセス可能位置)から継続的に監視および更新されることができる
● バッテリコントローラが、バッテリ特性を送信して性能を改善することができる
● 静止型無効電力補償装置ハードウェアに関する出費を回避することができる
以下により詳細に一部が論じられるように、様々な他の利益および利点が少なくともいくつかの実施形態でさらに実現されることができる。
図3は、本明細書の他の箇所でより詳細に論じられるように、予測されたデータに少なくとも部分的に基づいて、構成された様式で指定された物理システムまたは他のターゲットシステムの少なくともいくつかの動作を制御または他の形で操作する(たとえば、リアルタイム様式でバッテリの長期動作を最適化などするように、各バッテリの状態の特性を使用して、バッテリから提供されるDC電力の自動化制御を行うことによって、1つまたは複数のバッテリを有する物理ターゲットシステムを制御する)ために自動化制御システムを実装するための技法を実施するのに適した例示的コンピューティングシステムを示すブロック図である。
具体的には、図3は、CDDシステムおよび/または1つまたは複数のPVFコンポーネントの少なくとも一部の機能を提供するのに適したサーバコンピューティングシステム300を示すが、他の実施形態では、複数のコンピューティングシステムが実行のために使用されることができる(たとえば、実行時制御が発生する前の初期構成およびセットアップのためのCDD判断モジュール構築コンポーネント、ならびに実際の実行時制御のための1つもしくは複数のコピーのCDD制御アクション決定コンポーネント344および/またはCDD調整制御管理コンポーネント346を、別個のコンピューティングシステムに実行させる;1つまたは複数のコンピューティングシステムにPVFコンポーネントを実行させ、PVFコンポーネントが相互作用するCDDシステムの一部または全部を実行する1つまたは複数の他のコンピューティングシステムとPVFコンポーネントは分離している;異なるコンピューティングシステムに異なるPVFコンポーネントを実行させるなど)。図3はまた、CDDシステム340のカスタマまたは他のユーザによって使用できる様々なクライアントコンピュータシステム350、ならびに制御される1つまたは複数のターゲットシステム(この例では、1つまたは複数のコンピュータネットワーク390を介してCDDシステム340および/またはPVFコンポーネント345にアクセス可能なターゲットシステム1 360およびターゲットシステム2 370)を示す。
示された実施形態では、1つまたは複数のPVFコンポーネント345は、メモリ330において実行されており、いくつかの実施形態では、コンポーネントは各々が様々なソフトウェア命令を含み、これらのソフトウェア命令は、実行されたとき、本明細書の他の箇所に説明されているようにPVFコンポーネントの実施形態を提供するようにCPUプロセッサ305のうちの1つまたは複数をプログラムする。動作中、各PVFコンポーネントは、本明細書の他の箇所でより詳細に論じられるように、1つまたは複数の予測モデル(たとえば、ストレージ320に記憶されたPVFモデル322のメモリ内コピー)を使用し、様々な予測された値326を作成する。この例示的実施形態では、予測された値326の少なくともいくつかは、次いで、たとえば、行うべき自動化制御アクションについての決定を行う際に使用するために、CDDシステム340に利用可能にされる。
サーバコンピューティングシステム300は、示された実施形態では、1つまたは複数のハードウェアCPU(「中央処理装置」)コンピュータプロセッサ305、様々なI/O(「入力/出力」)ハードウェアコンポーネント310、ストレージ320、およびメモリ330を含むコンポーネントを有する。示されたI/Oコンポーネントは、ディスプレイ311、ネットワーク接続312、コンピュータ可読メディアドライブ313、および他のI/Oデバイス315(たとえば、キーボード、マウス、スピーカなど)を含む。加えて、示されたクライアントコンピュータシステム350は各々が、サーバコンピューティングシステム300のコンポーネントに類似するコンポーネントを有することができ、それらのコンポーネントは、1つまたは複数のCPU351、I/Oコンポーネント352、ストレージ354、およびメモリ357を含むが、簡潔にするためにコンピューティングシステム350について一部の詳細は示されていない。ターゲットシステム360および370も各々が、サーバコンピューティングシステム300に関して示されたコンポーネントの一部または全部に類似するコンポーネントを有する1つまたは複数のコンピューティングシステム(図示せず)を含むことができるが、簡潔にするため、この例にはそのようなコンピューティングシステムおよびコンポーネントは示されていない。
CDDシステム340は、メモリ330において実行されており、コンポーネント342~346を含み、いくつかの実施形態では、これらのシステムおよび/またはコンポーネントは各々が、様々なソフトウェア命令を含み、これらのソフトウェア命令は、実行されたとき、本明細書の他の箇所に説明されているようにCDDシステムの実施形態を提供するようにCPUプロセッサ305のうちの1つまたは複数をプログラムする。CDDシステム340は、ネットワーク390を介して(たとえば、インターネットおよび/またはワールドワイドウェブを介して、プライベートセルラーネットワークを介してなど)コンピューティングシステム350と、また、この例ではターゲットシステム360および370と相互作用することができる。この例示的実施形態では、CDDシステムは、本明細書の他の箇所でより詳細に論じられるように、カスタマまたは他のユーザのために構成された様式で判断モジュールを生成および展開することに関係付けられた機能性を含む。他のコンピューティングシステム350も、CDDシステム340および/またはそのコンポーネントとの相互作用の一部として、様々なソフトウェアを実行していることができる。たとえば、クライアントコンピューティングシステム350は、(たとえば、ウェブブラウザの一部、専用クライアント側アプリケーションプログラムなどとして)CDDシステム340と相互作用するためにメモリ357におけるソフトウェアを実行していることができ、それにより、たとえば、CDDシステム340の1つまたは複数のインターフェース(図示せず)と相互作用して、自動化制御システム(たとえば、バッテリを有する1つまたは複数の物理ターゲットシステムを制御する際に使用するためにCDDシステム340によって以前に作成されている記憶された自動化制御システム325)または他の判断モジュール329を構成および展開し、また、他の箇所でより詳細に論じられるように様々な他のタイプのアクションを行う。CDDシステム340の機能性に関係付けられた様々な情報、たとえば、CDDシステムのユーザに関係付けられた情報321(たとえば、アカウント情報)、および制御されるバッテリを有する1つまたは複数のターゲットシステムに関係付けられた情報323が、ストレージ320に記憶されることができる。
したがって、CDDシステムの生成された判断モジュール、および生成されたPVF予測モデル(それらのモデルを適用する対応するPVFコンポーネントを含む)が、ターゲットシステム360および370の一方または両方のような1つまたは複数のターゲットシステムの自動化された動作を制御するように展開されることができる図3には示されていないが、1つまたは複数のターゲットシステムとの生成された判断モジュールおよび/または生成されたPVF予測モデルのそのような使用からの情報が、さらにCDDシステム340および/またはPVFコンポーネント345に戻るように提供されることができ、それにより、たとえば、生成された判断モジュール(およびそれらの内部モデル)の改善、ならびに/またはそれぞれのターゲットシステムを制御するための進行中の動作に組み込まれる生成されたPVF予測モデル(およびそれらのモデルを適用する任意の対応するPVFコンポーネント)の改善を可能にする。たとえば、生成されたPVF予測モデル(およびそれらのモデルを適用する任意の対応するPVFコンポーネント)に関して、そのような進行中の動作からの情報(たとえば、状態情報、制御信号、他の入力など)が、そのような予測モデルを再トレーニングするために、および/または予測モデルに反映される推定された内部の観測不能な状態情報を改善するために使用されることができ、1つまたは複数のそのような予測モデルの改訂されたバージョンが続いて展開および使用される。
特定のターゲットシステムのための自動化制御システムを実装することの一部として、協働分散判断(CDD)システムの実施形態は、説明されている技法を使用して、特定のターゲットシステムを制御するのに使用するための1つまたは複数のCDIエージェント(CDD判断モジュールもしくはシステム、またはそのようなモジュールもしくはシステムの部分とも呼ばれる)を含む、自動化制御システムを構築および実装するのに関与する様々な自動化されたアクティビティを行うことができる。
具体的には、CDDシステムは、いくつかの実施形態では、1つまたは複数のユーザと相互作用してターゲットシステムの記述を取得する判断モジュール構築コンポーネントを実装することができ、ターゲットシステムの記述は、ターゲットシステムの様々な要素に関係付けられた制約、およびターゲットシステムの制御中に達成されるべき1つまたは複数の目標を含む。次いで、判断モジュール構築コンポーネントは、様々な自動化されたアクションを行って、ターゲットシステムの制御を行う際に使用するための1つまたは複数の実行可能判断モジュール(「判断要素」および/または「エージェント」と呼ばれることもある)を生成、テスト、および展開する。1つまたは複数の実行可能判断モジュールが展開および実行されると、CDDシステムは、各判断モジュールが生成する制御アクションを最適化もしくは他の形で向上するための各判断モジュールの制御アクション決定コンポーネント、および/またはターゲットシステムの制御を共同で行っている複数の判断モジュールの制御アクションを調整するための1つもしくは複数の調整制御管理コンポーネントなど、判断モジュールによるターゲットシステムの制御を管理するために実行されている判断モジュールの内部または外部の様々なコンポーネントをさらに提供することができる。
上記されたように、協働分散判断(CDD)システムは、いくつかの実施形態では、指定されたターゲットシステムのための自動化制御システムを構築および実装して、たとえば、ターゲットシステムの動作に影響する(たとえば、ターゲットシステムの1つまたは複数の出力に影響する)ターゲットシステムの入力または他の制御要素を修正または他の形で操作することに関与する、様々な自動化されたアクティビティを行うために、説明されている技法の少なくともいくつかを使用することができる。そのようなターゲットシステムのための自動化制御システムは、いくつかの状況では、ターゲットシステムの協調分散制御を提供する分散されたアーキテクチャを有し、これは、たとえば、ターゲットシステムの部分を各々が制御し互いに対して部分的に分離された様式で動作する複数の判断モジュールを有する。その場合、自動化制御システムのための様々な判断モジュールの動作は、常にすべての判断モジュールの完全に同期された収束が保証または達成されなくても、各々が1つまたは複数の時間において1つまたは複数の他の判断モジュールとのコンセンサスに達することなどによって、少なくとも部分的に同期されることができる。
CDDシステムは、いくつかの実施形態では、1つまたは複数のユーザと相互作用してターゲットシステムの記述を取得する判断モジュール構築コンポーネントを実装することができ、ターゲットシステムの記述は、ターゲットシステムの様々な要素に関係付けられた制約、およびターゲットシステムの制御中に達成されるべき1つまたは複数の目標を含む。次いで、判断モジュール構築コンポーネントは、様々な自動化されたアクションを行って、ターゲットシステムの制御を行う際に使用するための1つまたは複数の実行可能判断モジュールを生成、テスト、および展開する。したがって、判断モジュール構築コンポーネントは、生成された判断モジュールがターゲットシステムの制御を行うように実行される、後の実行時段階よりも前に生じる、構成またはセットアップ段階の一部として動作することができ、いくつかの実施形態および状況では、判断モジュール構築コンポーネントは、自動化制御システムのための判断モジュールの追加、除去、または修正などをするために、1つまたは複数の判断モジュールを有する自動化制御システムを改善、拡張、または他の形で修正するために初期展開の後に(たとえば、自動化制御システムが、ターゲットシステムを制御するために使用され続ける間に)さらに使用されることができる。
いくつかの実施形態では、生成され展開された一部または全部の自動化制御システムは、自動化制御システムの実行時動作中の実行のためにそれらの中に様々なコンポーネントをさらに提供することができ、いくつかの実施形態および状況では、そのようなコンポーネントを判断モジュール内に含めることなどによって提供することができる。そのようなコンポーネントは、たとえば、各判断モジュール(または一部の判断モジュール)の制御アクション決定コンポーネントを含むことができ、これにより、その判断モジュールが生成する制御アクションを最適化または他の形で決定し改善する。たとえば、判断モジュール内のそのような制御アクション決定コンポーネントは、いくつかの実施形態では、1つまたは複数の目標に関して、複数の相互に関係付けられた制約条件を有するターゲットシステムのための判断モジュールのモデルに照らして、最適に近い解を反映するために、特定の時間における判断モジュールの制御アクションを自動的に決定することを試みることができ、その場合、そのような最適に近い解は、完全に最適化された解の閾値量内の部分的に最適化された解に少なくとも部分的に基づくことができる。実行する1つまたは複数の制御アクションのそのような決定は、特定の時間に、1つまたは複数の判断モジュールの各々について発生することができ、また、いくつかの状況において少なくともいくつかの判断モジュールによって進行中の制御に関して複数回にわたって繰り返されることができる。いくつかの実施形態では、判断モジュールのためのモデルは、ターゲットシステムの少なくとも部分を表す制約条件に部分的に基づいて結合された微分方程式のセットを反映するハミルトン関数として実装されて、たとえば、モデルおよびそのハミルトン関数実装が、発展するハミルトン関数内に追加の式を加えることによって複数時間期間にわたって更新されることを可能にする。
いくつかの実施形態では、自動化制御システムの実行時動作中の実行のために生成および展開された自動化制御システム内に含まれたコンポーネントは、自動化制御システムのためのターゲットシステムの制御を共同で行っている複数の判断モジュールの制御アクションを調整するための調整制御管理コンポーネントをさらに含むことができる。たとえば、いくつかの実施形態では、一部または全部の判断モジュールの各々が、そのような制御アクション決定コンポーネントを含むことにより、その判断モジュールのローカル解および提案された制御アクションを自動化制御システム内の1つまたは複数の他の判断モジュールのそれらと同期しようと試みることができ、たとえば、判断モジュールのローカルモデルおよび1つまたは複数の他の判断モジュールのモデルから同時に解を提供するそれら他の判断モジュールとのコンセンサス共有モデルを決定することによって同期を試みる。そのようなモジュール間同期は、繰り返し発生して、特定の時間において各判断モジュールについての1つまたは複数の制御アクションを決定し、また進行中の制御に関して複数回にわたって繰り返されることができる。加えて、各判断モジュールのモデルは、いくつかの実施形態では、ターゲットシステムの少なくとも部分を表す制約条件に部分的に基づいて結合された微分方程式のセットを反映するハミルトン関数として実装されて、たとえば、各判断モジュールのモデルおよびそのハミルトン関数実装が、判断モジュールのローカルモデルに関する初期ハミルトン関数内に1つまたは複数の他の判断モジュールのモデルに関する追加の式を加えることによって、それらの他の判断モジュールのモデルと組み合わされることを可能にする。
コンピューティングシステム300および350ならびにターゲットシステム360および370は例示にすぎず、本発明の範囲を限定することは意図されていないことは理解されよう。むしろ、コンピューティングシステムは各々が、複数の相互作用しているコンピューティングシステムまたはデバイスを含むことができ、コンピューティングシステム/ノードは、インターネットなどの1つもしくは複数のネットワーク、ウェブ、またはプライベートネットワーク(たとえば移動通信ネットワークなど)を介することを含めて、示されていない他のデバイスに接続されることができる。より一般的には、コンピューティングノードまたは他のコンピューティングシステムもしくはデバイスは、相互作用しまた説明されたタイプの機能性を実行することができるハードウェアの任意の組み合わせを含むことができ、そのようなハードウェアは、限定としてではなく、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワークストレージデバイスおよび他のネットワークデバイス、PDA、携帯電話、無線電話、ポケットベル、電子手帳、インターネット機器、テレビベースのシステム(たとえば、セットトップボックスおよび/またはパーソナル/デジタルビデオレコーダを使用するもの)、ならびに適切な通信能力を含む様々な他の消費者製品を含む。加えて、示されたCDDシステム340およびそのコンポーネントにより提供される機能性は、いくつかの実施形態では、追加のコンポーネントに分散されることができる。同様に、いくつかの実施形態では、CDDシステム340および/もしくはCDDコンポーネント342~346の機能性の一部は提供されなくてよく、ならびに/または他の追加の機能が利用可能であってよい。
また、様々な要素が使用されているときにメモリまたはストレージに記憶されているように示されているが、これらの要素およびその部分は、メモリ管理およびデータ整合性のためにメモリおよび他のストレージデバイスの間で転送されることができる。あるいは、他の実施形態では、ソフトウェアモジュール、コンポーネント、および/またはシステムの一部または全部が、別のデバイス上のメモリにおいて実行され、コンピュータ間通信を介して、示されたコンピューティングシステムと通信することができる。したがって、いくつかの実施形態では、説明されている技法の一部または全部は、1つもしくは複数のソフトウェアプログラム(たとえば、PVFコンポーネント345、CDDシステム340、および/もしくはCDDコンポーネント342~346)および/またはデータ構造(たとえば予測モデル322)によって、たとえば、1つもしくは複数のソフトウェアプログラムのソフトウェア命令の実行ならびに/またはそのようなソフトウェア命令および/もしくはデータ構造の記憶によって構成されたとき、1つもしくは複数のプロセッサおよび/またはメモリおよび/またはストレージを含むハードウェア手段によって実行されることができる。さらに、いくつかの実施形態では、システム、モジュール、および/またはコンポーネントの一部または全部が、他の様式で、たとえば、ファームウェアおよび/またはハードウェアに少なくとも部分的にまたは完全に実装された手段を使用することによって、実装または提供されることができ、そうしたファームウェアおよび/またはハードウェアは、以下に限定されないが、1つまたは複数の特定用途向け集積回路(ASIC)、標準集積回路、コントローラ(たとえば、適切な命令を実行することによるコントローラ、マイクロコントローラおよび/または組み込みコントローラを含む)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などを含む。また、コンポーネント、モジュール、システム、およびデータ構造の一部または全部は、非一時的コンピュータ可読記憶媒体、たとえば、ハードディスクもしくはフラッシュドライブもしくは他の不揮発性ストレージデバイス、揮発性もしくは不揮発性メモリ(たとえばRAM)、ネットワークストレージデバイス、または適切なドライブ(たとえば、DVDディスク、CDディスク、光ディスクなど)によってもしくは適切な接続を介して読み取られる携帯媒体物品に、(たとえば、ソフトウェア命令または構造化されたデータとして)記憶されることもできる。また、システム、コンポーネント、モジュールおよびデータ構造は、いくつかの実施形態では、無線ベースおよび有線/ケーブルベースの媒体を含む様々なコンピュータ可読伝送媒体上で、生成されたデータ信号として(たとえば、搬送波の一部、または他のアナログもしくはデジタル伝播信号として)送信されることもでき、(たとえば、単一のもしくは多重化されたアナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして)様々な形態をとることができる。そのようなコンピュータプログラム製品は、他の実施形態では他の形態をとることもできる。したがって、本発明は他のコンピュータシステム構成で実施されることができる。
図4は、協働分散判断(CDD)システムルーチン400の例示的実施形態のフロー図である。このルーチンは、たとえば、図3のCDDシステム340および/または図1AのCDDシステム140の実行によって提供されて、たとえば、指定されたターゲットシステムのために自動化制御システムを構築および実装するための機能性を提供することができる。
ルーチンの示された実施形態はブロック410で始まり、ここでは、情報または命令が受け取られる。ブロック420において、ブロック410の情報または命令が、特定のターゲットシステムのための自動化制御システムの一部として使用するための1つまたは複数の判断モジュールを作成または改訂する標識を含むと決定された場合、ルーチンはブロック425へと続き、判断モジュール構築コンポーネントの実行を開始し、ブロック430で、ブロック425で作成されたターゲットシステムのための1つまたは複数の結果の判断モジュールを取得および記憶する。そのような判断モジュール構築コンポーネントの一例は、図5A~図5Cに関連してより詳細に論じられる。
ブロック430の後、またはそうではなく、ブロック410で受け取られた情報もしくは命令が1つもしくは複数の判断モジュールを作成もしくは改訂するものではないとブロック420で決定された場合、ルーチンはブロック440へと続き、ブロック410で受け取られた情報または命令が、指定されたターゲットシステムを制御するために1つまたは複数の作成された判断モジュール、たとえば、そのターゲットシステムのための自動化制御システムの一部である1つまたは複数の判断モジュールを展開することを指示するかどうかを決定する。展開する1つまたは複数の判断モジュールは、展開が実質的に作成と同時に行われるように、ブロック425に対して直前に作成されていることが可能であり、または他の状況では、以前に作成され後で使用するために記憶された1つまたは複数の判断モジュールを含むことができる。そのようなターゲットシステムのための1つまたは複数のそのような判断モジュールを展開することが決定された場合、ルーチンはブロック450へと続き、たとえば、ターゲットシステムの環境に対してローカルの1つもしくは複数のコンピューティングシステム上で、またはそうではなく、1つもしくは複数の介在コンピューティングネットワークを介してターゲットシステムと通信する1つもしくは複数のリモートコンピューティングシステム(たとえば、CDDシステムのプロバイダの制御下の1つもしくは複数のコンピューティングシステム)上で、そのターゲットシステムのためのそれら1つまたは複数の判断モジュールの実行を開始する。
ブロック450の後、ルーチンはブロック460へと続き、1つまたは複数の集中化された調整制御管理コンポーネントなどを介して、複数の判断モジュールの外部の様式で展開されているそれらの判断モジュールの分散された管理を行うかどうかを決定する。そうする場合、ルーチンはブロック465へと続き、それらの判断モジュールと使用するための1つまたは複数のそのような集中化されたCDD調整制御管理コンポーネントの実行を開始する。ブロック465の後、またはそうではなく、外部の様式でそのような分散された管理を行わないとブロック460で決定された場合(たとえば、1つだけの判断モジュールが実行される場合、複数の判断モジュールが実行されるが、分散されたピアツーピア様式でそれらの動作を調整する場合など)に、ルーチンはブロック470へと続き、任意選択で、1つもしくは複数の判断モジュールの動作および/またはターゲットシステムで発生する結果のアクティビティに関する情報を、後の分析および/または報告などのために、取得および記憶する。
そうではなく、ブロック410で受け取られた情報または命令が1つまたは複数の判断モジュールを展開するものではないとブロック440で決定された場合、ルーチンは代わりにブロック485に続き、必要に応じて1つまたは複数の他の指示された動作を行う。たとえば、そのような他の許可される動作は、他の様式で(たとえば、ターゲットシステムに関する出力または他の状態情報を監視することによって)ターゲットシステムの動作に関する結果情報を取得すること、判断モジュールの動作の結果および/または対応するターゲットシステムのアクティビティを分析すること、そのような動作および/またはアクティビティに関してユーザに対して報告を生成するまたは他の形で情報を提供することを含むことができる。加えて、いくつかの実施形態では、経時的な特定のターゲットシステムのアクティビティの分析は、ターゲットシステムの動作においてパターンが識別されるのを可能にすることができ、たとえば、それらのパターンを反映しそれらに基づいて応答するために、そのターゲットシステムのモデルが(手動または自動化された学習様式で)相応に修正されることを可能にする。加えて、他の箇所でより詳細に論じられるように、部分的に分離された様式での自動化制御システムのための複数の判断モジュールの分散された動作は、自動化制御システムが動作中に様々な変更が行われることを可能にし、たとえば、1つまたは複数の新しい判断モジュールを追加すること、1つまたは複数の既存の判断モジュールを除去すること、(判断モジュールのモデルの一部であるターゲットシステムを記述するルールまたは他の情報を変更することによって)特定の判断モジュールの動作を修正することなどを可能にする。加えて、自動化制御システムにおける複数のそのような判断モジュールの部分的に分離された性質は、たとえば、ネットワーク通信問題または他の問題が、そうでなければ判断モジュールの個別化された制御アクションが調整されることを可能にする複数の判断モジュール間の通信を防止する場合に、1つまたは複数のそのような判断モジュールが折に触れて独立して動作することを可能にし、そのような状況では、一部または全部のそのような判断モジュールが個別化された様式で動作を続けて、たとえば、最適または最適に近い解が、ターゲットシステムのための自動化制御システムを共同で提供するグループの複数の判断モジュールの間の調整および同期から識別できない場合でも、ターゲットシステムのための有用な続行する制御動作を提供することができる。
ブロック470または485の後、ルーチンはブロック495へと続き、継続するかどうかを決定し、たとえば停止する明示的標識が受け取られるまで継続する。継続すると決定された場合、ルーチンはブロック410に戻り、そうでない場合はブロック499に進んで終了する。
図5A~図5Cは、CDD判断モジュール構築ルーチン500の例示的実施形態のフロー図を示す。ルーチンは、たとえば、図3のコンポーネント342および/または図1Aのコンポーネント142に実行によって提供されることができ、たとえば、関心のあるターゲットシステムを記述する情報をユーザが提供することを可能にする機能性を提供し、対応する自動化された動作を行って、指定された様式でターゲットシステムを制御するのに使用するための1つまたは複数の判断モジュールを構築する。ルーチンの示された実施形態は、表示されたGUI(グラフィカルユーザインターフェース)などを介して特定の様式でユーザと相互作用するが、ルーチンの他の実施形態は、他の様式で、たとえば、ユーザの代わりに実行プログラムが呼び出す定義されたAPI(アプリケーションプログラミングインターフェース)を介して、ユーザと相互作用することができることは理解されよう。いくつかの実施形態では、ルーチンはさらに、統合された開発環境の一部として、または、たとえば、インターネットなどの公衆ネットワークを介して様々なリモートユーザに利用可能なオンラインインターフェースを実装することによって、1つもしくは複数のユーザが使用できる他のソフトウェアツールとして実装されることもでき、他の実施形態では、CDDシステムおよび/または特定のCDDコンポーネントのコピーが、たとえば、組織またはグループの制御下でコンピューティングシステム上で実行されることによって、単一の組織または1つもしくは複数のユーザからなる他のグループをサポートするために使用されることができる。加えて、CDD判断モジュール構築コンポーネントは、いくつかの実施形態および状況では、ターゲットシステムに関するルールおよび他の記述情報を指定するためにユーザが相互作用するルールエディタコンポーネント、ならびに、ユーザ指定されたルールおよび他の情報を処理して1つまたは複数の対応する判断モジュールを作成するルールコンパイラエンジンなど、複数のサブコンポーネントに分割されることができる。
ルーチン500の示された実施形態はブロック505で始まり、ここでは、ルーチンは、たとえば、定期的に、図6Bのブロック684により呼び出されることに基づいて、または1つもしくは複数のトリガー条件が満たされることに応答して、ターゲットシステムのモデルに対するあり得る追加のために新しいソフトルールを学習するためにデータトモグラフ(data tomograph)コンポーネントを現在使用するかどうかを決定する。使用する場合、ルーチンは、図5Cのブロック563へと続き、そうでない場合はブロック510へと続き、ルーチンは、1つまたは複数のユーザへの表示されたユーザインターフェースを、たとえば、ルーチンを実装しているコンポーネントのオンラインバージョンで受け取られた要求を介して、またはそうではなく、1つもしくは複数のそのようなユーザによってそれらが制御するコンピューティングシステム上でルーチンが実行されていることに基づいて、提供または更新する。ルーチンの示された実施形態では、例示の目的で、様々な動作が連続した様式で発生するように示されているが、そのようなユーザインターフェースとのユーザ相互作用は、反復する様式で、ならびに/または複数の時間期間および/もしくはユーザセッションにわたって行うことができ、さらに以下に論じられるように、様々な様式でユーザに以前に表示されたユーザインターフェースを更新すること(たとえば、ユーザアクションを反映する、ルーチンの動作によってもしくは別のコンポーネントから生成されたユーザフィードバックを反映するなど)を含むことは理解されよう。
ブロック510の後、ルーチンはブロック520へと続き、制御されるターゲットシステムを記述する1つまたは複数のそのようなユーザからの情報を受け取り、この情報は、1つまたは複数の操作可能な制御要素および任意選択で制御要素が影響する1つまたは複数の出力を含む、ターゲットシステムの複数の要素に関する情報と、要素に関わる制約を指定するルールに関する情報と、システムの制御中に利用可能となる状態情報に関する情報(たとえば、特定の要素の値または他の状態変数)と、ターゲットシステムの制御中に達成すべき1つまたは複数の目標とを含む。そのような情報は、1つまたは複数のユーザから時間の期間にわたって取得されることができ、そうすることは、いくつかの実施形態では、たとえば、異なるユーザの異なる領域の専門知識および/またはターゲットシステムの異なる部分を反映するために、第1のグループの1つまたは複数のユーザが、ターゲットシステムに関係付けられたある種の情報を提供し、1つまたは複数の他の第2のグループのユーザが、ターゲットシステムに関する他の情報を独立して提供することを含むことは理解されよう。
ブロック520の後、ルーチンはブロック525へと続き、ユーザ入力で受け取られた任意のエラーを識別し、たとえばブロック510に関連して論じられた対応する様式で表示を更新することによって、ユーザにそれらのエラーを訂正するように促す。そのようなエラーの識別はブロック520での情報の受け取り後に発生するように示されているが、そうではなく、一部または全部のそのようなエラーは、たとえば、ユーザが指定するルールまたは他の情報における構文エラーを識別するために、ユーザがユーザインターフェースに情報を入力しているときに識別されることができることは理解されよう。ブロック525の後、ルーチンの示された実施形態はブロック530へと続き、任意選択で、ターゲットシステムに関する情報を、各々がターゲットシステムの部分に対応する複数のサブセットへ分解し、たとえば、各サブセットは、ルーチンによって作成されている自動化制御システムにより操作可能な1つまたは複数の異なる制御要素を有し、任意選択で、ターゲットシステムの各部分を記述するルールおよび他の情報の重複するまたは完全に異なる目標および/またはセットを有する。他の箇所でより詳細に論じられるように、そのような分解は、行われる場合、いくつかの状況において、ユーザが入力する情報の異なるサブグループをユーザが指示することによって手動で、および/または指定されている情報の分析に基づいて(たとえば、ターゲットシステムに関して供給されるルールのサイズおよび他の記述情報に基づく、異なるルールまたは目標または他の情報の間の相互関係に基づくなどして)ルーチンによって自動化された様式で、行われることができる。他の実施形態では、そのような分解は行われなくてよい。
ブロック530の後、ルーチンはブロック535へと続き、ターゲットシステム記述情報の各サブセットについて(または、そのようなサブセットが識別されない場合にすべての受け取られた情報について)、そのサブセット(またはすべての情報)を、そのサブセット(またはすべての情報)についての制約、目標、および他の指定された情報を封入する制約条件のセットへ変換する。ブロック540では、ルーチンは、次いで、変換プロセスから発生する任意のエラーを識別し、何らかのエラーが識別された場合、ブロック525および510に関連して説明されたのと同様の様式などで、ユーザにそれらのエラーを訂正するように促すことができる。この例では示されていないが、ルーチンは、いくつかの状況では、ブロック525および/または540でそのようなエラーが識別された場合にブロック510に戻って、対応するフィードバックをユーザへ表示し、ユーザが訂正を行ってブロック520~540などの後続の動作を再実行することを可能にすることができる。ブロック540において変換プロセスで識別されたエラーは、たとえば、グループとして制約を満たすことが不可能である場合などに、不整合な制約に関連付けられたエラーを含むことができる。
ブロック540の後、ルーチンはブロック545へと続き、制約条件の各セット(またはブロック530でサブセットが識別されなかった場合は単一の制約条件)について、1つまたは複数の検証ルールを制約条件のセットに適用して、制約条件が表す対応する情報の全体的効果をテストし、ブロック525、540、および510に関する様式と同様の様式で、識別された任意のエラーを訂正するように1つまたは複数のユーザに促す。そのような検証は、他の箇所でより詳細に論じられるように、可制御性、可観測性、安定性、および目標完全性、ならびにユーザにより追加された任意の検証ルールのうちの1つまたは複数をテストすることができる。ブロック550では、ルーチンは次いで、制約条件の各検証されたセットを、基礎となる情報が対応するターゲットシステム少なくとも部分をモデル化する結合された微分方程式のセットに変換する。
ブロック550の後、ルーチンはブロック553へと続き、結合された微分方程式の各セットについてモデルをトレーニングすることに関係付けられたアクティビティを行い、そうすることは、使用するトレーニング時間窓のサイズ、時間窓内の複数のトレーニング時間スライスのサイズ、および/または時間窓内のトレーニング時間スライスのタイプのうちの1つまたは複数を決定することを含む。いくつかの実施形態および状況では、1つまたは複数のそのようなサイズまたはタイプの情報の決定は、デフォルトまたは予め指定された情報によって行われるが、他の実施形態および状況では、ユーザがそのような情報を指定することができ、または、そのような情報の自動化された決定が、1つもしくは複数の様式で(たとえば、異なるサイズをテストし、結果を評価して最良の性能を伴うサイズを見つけることによって)行われることができる。異なるタイプの時間スライスは、たとえば、重複するまたは重複しない時間スライスの連続を含むことができ、そうすることで、第2の時間スライスに関するトレーニングは、第1の時間スライスの結果のみに(それらが重複しない場合に)依存することができ、またはそうではなく(それらが部分的または全体として重複する場合に)第1の時間スライスの少なくとも部分について既に決定された情報の更新に少なくとも部分的に基づくことができる。ブロック553の後、ルーチンはブロック555へと続き、モデルを表す結合された微分方程式の各セットについて、ターゲットシステムの部分的初期状態情報を使用してそのセットの結合された微分方程式のモデルをトレーニングし、そうすることは、時間窓にわたって、たとえば時間窓を通して連続する時間スライスにおいて制御アクションを行う効果をシミュレートすることによって、ターゲットシステムについて知られていないおよび/または直接観測可能でない変数の値を推定し、トレーニングされたモデルのシミュレートされた性能をテストすることを含む。トレーニングおよびテストに関係付けられた追加の詳細は、本明細書の他の箇所に含まれる。
ブロック555の後、ルーチンはブロック560へと続き、トレーニングおよびテストが成功したかどうかを決定し、成功しない場合はブロック510に戻り、対応するフィードバック情報をユーザへ表示し、成功を欠如させたエラーをユーザが訂正することを可能にする。しかしながら、ブロック560で、そうではなくテストおよびトレーニングが成功したと決定された場合、またはモデルが1つまたは複数の学習されたソフトルールで更新された図5Cのブロック581の後、ルーチンは代わりにブロック585へと続き、各トレーニングおよびテストされたモデルについて実行可能判断モジュールを生成し、このモジュールは、そのモデル、およびローカルCCD制御アクション決定コンポーネントを含み、ローカルCCD制御アクション決定コンポーネントは、実行されたときに、判断モジュールが使用し、モデルに含まれる情報に基づいて、またその判断モジュールについての1つまたは複数の目標に照らして、ターゲットシステムについて行う最適または最適に近い制御アクションを決定する。生成された実行可能判断モジュールは、いくつかの実施形態および状況では、時間経過と共に様々な判断モジュールの各モデルを同期させることなどによって、ターゲットシステムのための自動化制御システムを共同で提供する複数の判断モジュールの制御アクションを調整するためのローカルCCD調整制御管理コンポーネントをさらに含むことができる。ブロック585の後、ルーチンはブロック590へと続き、使用のために生成された実行可能判断モジュールを提供し、そうすることは、任意選択で、後での実行および/または展開のためにそれらを記憶することを含む。
ブロック505で、ターゲットシステムのモデルに対するあり得る追加のために新しいソフトルールを学習するためにデータトモグラフコンポーネントを使用すると決定された場合、ルーチンは図5Cのブロック563へと続き、ターゲットシステムについての1つまたは複数の既存の生成されたモデル(たとえば、バイナリルールに基づく初期モデル)が取得される。ブロック565では、ルーチンは次いで、時間経過と共に(たとえば、1つまたは複数の既存の生成されたモデルによって制御される)ターゲットシステムの動作から実際の動作データを収集し、たとえば、以前に生成され記憶されたデータをストレージから取り出すこと、指定された量のデータが利用可能になるまで続くデータ収集段階に入ることなどを行う。ブロックの後565、ルーチンはブロック567へと続き、データトモグラフコンポーネントを使用して、収集されたデータからのデータモデルを繰り返し問い合わせて、達成すべき指定された目標に対応するターゲットシステムの1つまたは複数の出力などに関して、1つまたは複数のセンサおよび/または制御部に対する変化する状況および値のもとでターゲットシステムの性能に関する回答を取得する。569ブロックでは、ルーチンは次いで、たとえば全体的ハミルトン関数を構築するために、問い合わせ/回答ペアに基づいてシステムに関する全体的データモデルを作成する。ブロックでは571、ルーチンは次いで、システムについてのルールベースのモデル(たとえば、ルールベースのハミルトン関数)を取得し、差異を識別するために全体的モデルとルールベースのモデルを比較し、これらを使用して、問い合わせに関係付けられたゼロ以上のあり得るソフトルールを作成する。
ブロックでは573、ルーチンは次いで、たとえば、ブロック565から571の実行が、あり得るソフトルールに関して新しい情報を作成することを続けるかどうかに基づいて、各そのようなあり得るソフトルールに対する関連付けられた完全性値(completeness value)を決定する。そのようなあり得るソフトルールが十分に完全でない(たとえば、関連付けられた閾値を下回る完全性値を有する)場合、ルーチンはブロック567に戻り、追加の問い合わせを行いそうでない場合は、ブロック577へと続き、ターゲットシステムの改善された更新されたモデルで使用するために候補として十分に完全なあり得るソフトルールのいずれかを選択する。ブロック579では、ルーチンは次いで、既存モデルを自動的に更新するかどうかを決定し、更新する場合、ブロック851へと続き、学習された候補ソフトルールを使用し、既存のルールベースのモデルを更新し、その後にブロック585へと続く。そうでない場合は、ルーチンはブロック583へと続き、既存のモデルおよび/またはターゲットシステムに関連付けられた1つまたは複数のユーザに対して、学習された候補ソフトルールに関する情報を提供して、たとえば、ユーザがそれらを使用して既存のルールベースのモデルを更新するかどうかを可能にし、その後、ブロック505へと進む(たとえば、ブロック520に関連してそのような更新についてユーザからさらなる命令を受け取る)。
ブロック590の後、ルーチンはブロック595へと続き、継続するかどうかを決定し、たとえば停止する明示的標識が受け取られるまで継続する。継続すると決定された場合、ルーチンはブロック510に戻り、そうでない場合はブロック599に進んで終了する。
図6A~図6Bは、実行されている判断モジュールの一般的表現に対応するルーチン600の例示的実施形態のフロー図を示す。ルーチンは、たとえば、判断モジュール329の実行によって、または図3の自動化制御システム325および/もしくは図1Aもしくは図1Bの判断モジュール124もしくは128の一部として提供されることができ、たとえば、判断モジュールについて符号化された情報またはモデルに固有の様式でターゲットシステムの少なくとも部分を制御するための機能性を提供し、そうすることは、判断モジュールによってその制御アクティビティ中に達成されるべき1つまたは複数の目標を反映することを含む。他の箇所でより詳細に論じられるように、いくつかの実施形態および状況では、複数の判断モジュールは、特定のターゲットシステムを制御するために共同で協調的に動作することができ、たとえば、各判断モジュールは、ターゲットシステムのための1つまたは複数の異なる制御要素を制御し、または他の形式でターゲットシステムの部分を表しもしくはそれと相互作用し、他の実施形態および状況では、単一の判断モジュールがターゲットシステムを制御するように単独で動作することができる。ルーチン600はさらに、特定の例示的判断モジュールによって実行されるアクションを、ターゲットシステムの部分を制御する際にそれが展開されたときに反映するが、判断モジュールの少なくとも部分の実行は、他の時間に行うことができ、図5A~図5CのCDD判断モジュール構築ルーチン500に関連してより詳細に論じられるように、たとえば、判断モジュールが展開される前に判断モジュールに関するモデルを初めにトレーニングする。
ルーチン600の示された実施形態はブロック610で始まり、ここでは、判断モジュールに関する初期モデルが決定され、初期モデルは、制御されるターゲットシステムの少なくとも部分、ターゲットシステムの制御に関係付けられた達成を試みる判断モジュールの1つまたは複数の目標、および任意選択でターゲットシステムの初期状態情報を記述する。ルーチンはブロック615へと続き、図5A~図5Cのブロック553および555に関連してより詳細に論じられるように、必要に応じて初期モデルをトレーニングするための1つまたは複数のアクションを行うが、いくつかの実施形態および状況では、ブロック615のそのようなトレーニングは、図5A~図5Cのルーチン500によって初期トレーニングがされない場合のみに行われ、他の実施形態および状況では、ブロック615のトレーニングは、判断モジュールが実行を開始したときに(たとえば、初期作成およびトレーニングの後に直ちに展開されない場合に)ターゲットシステムの現在の状態に関する情報を捕捉し、および/またはブロック630で開始される図7A~図7Bのルーチン700に関連してより詳細に論じられるように折に触れてモデルを再トレーニングするために行われる。
ブロックの後615、ルーチンはブロック617へと続き、判断モジュールの各制御アクション判断を行うために使用する時間期間を決定し、たとえば、ターゲットシステムにおける制御要素修正が必要とされる率を反映し、および/または制御要素の将来の操作を変更できる新しく来る状態情報が受け取られる率を反映する。次いで、ルーチンはブロック620へと続き、次の時間期間を開始し、これは、判断モジュールの実行の始動から前進する第1の時間期間から始まる。次いで、ブロック620~680が、判断モジュールの実行が中断または終了されるまで、そのような各時間期間が進むループで実行されるが、他の実施形態では、特定の判断モジュールが、その各実行の際には単一の時間期間のみで実行されることができる。
ブロック625では、ルーチンは、任意選択で、時間期間における状態情報を取得し、状態情報は、たとえば、最終の時間期間が始まってからターゲットシステムまたは1つもしくは複数の関係付けられた外部ソースに関して受け取られた、および/または必要に応じてターゲットシステムの1つもしくは複数の要素の現在の値または対応する変数を能動的に取り出すことによって受け取られた現在の状態情報である。ブロック627では、ルーチンは次いで、任意選択で、ターゲットシステムの1つまたは複数のパラメータに関する時間期間についての予測情報を取得し、たとえば、1つもしくは複数の予測モデルがそのような予測情報を動的に提供するために利用可能である場合、または時間期間についてそのような情報を以前に予測している場合に、そのような情報を取得する。ブロック630では、ルーチンは次いで、判断モジュールのローカルCCD制御アクション決定コンポーネントの実行を開始し、そのようなルーチンの一例は、図7A~図7Bのルーチン700に関連してより詳細に論じられ、ブロック625および/または627で取得された情報を(もしあれば)提供することを含む。ブロックでは635、ブロック630におけるコンポーネントの実行の結果が受け取られ、そうすることは、現在の時間期間について判断モジュールが行うことができる1つまたは複数の提案された制御アクション決定を含む現在の時間期間および判断モジュールについてのローカル解を有する判断モジュールの更新されたモデルを取得するか、または、ブロック630におけるコンポーネントの実行の許容された時間において判断モジュールについてローカル解が見つけられなかったという標識を受け取ることを含む。次いでブロック640で、解が見つけられたかどうかが決定され、見つけられた場合、ブロック642へと続いて、判断モジュールの更新されたモデルを記憶し、そうでない場合、ブロック643へと続き、判断モジュールの先行モデルを使用して、図7A~図7Bのルーチン700に関連してより詳細に論じられるように、以前のモデル(たとえば、状態情報の最近の変化および/または他の判断モジュールのアクティビティの最近の変化をあったとしても反映していない)に基づいて、現在の時間期間について提案された1つまたは複数の制御アクション決定を決定する。
ブロック642または643の後、ルーチンはブロック644へと続き、ローカル判断モジュールと同じ自動化制御システムの一部のような現在のターゲットシステムの部分を他の判断モジュールが共同で制御しているかどうかを決定し、そうしている場合はブロック645へと続く。そうでない場合は、ルーチンは、実行する最終の決定された制御アクションとして判断モジュールのローカルの提案された制御アクションを選択し、ブロック675へと続いて、現在の時間期間にそれらの制御アクションを実装する。
他の動作している判断モジュールがある場合、ブロック645においてルーチンは、判断モジュールのローカル解の提案された制御アクション決定を、同じターゲットシステムを共同で制御している他の判断モジュールのアクティビティと同期する際に使用するための、CDD調整制御管理(CCM)コンポーネントのローカルコピーを、ローカル判断モジュールが含むかどうかを決定する。含む場合、ルーチンはブロック647へと続き、判断モジュールの1つまたは複数の提案された制御アクション決定と、判断モジュールの対応する現在のローカルモデルとを、ローカルCDD CCMコンポーネントに提供し、そうでない場合、ブロック649へと続いて、判断モジュールの1つまたは複数の提案された制御アクション決定と、判断モジュールの対応するローカルモデルとを、1つまたは複数の集中化されたCDD CCMコンポーネントに提供する。
ブロック647または649の後、ルーチンはブロック655へと続き、ブロック647または649におけるCDD CCMコンポーネントのアクションの結果を取得し、そうすることは、さらに更新されたモデルが現在の判断モジュールに関する時間期間に行う1つまたは複数の最終制御アクション決定を示すように、現在の判断モジュールのローカルモデルと1つまたは複数の他の判断モジュールからの情報との同期によりもたらされる、さらに更新されたモデルを取得すること、または、そのような同期が許容された時間内に完成されなかったという標識を取得することのいずれかを含む。ルーチンはブロック660へと続き、同期が完成されたかどうかを決定し、完成された場合、ブロック665へと続いて、同期によるさらに更新されたモデルを記憶し、そうでない場合、ブロック670へと続き、時間期間についての最終制御アクション決定として、判断モジュールに対してローカルに先行の提案された制御アクション決定を使用する。
ブロック665または670の後、ルーチンはブロック675へと続き、たとえば、値を修正するもしく他の形でターゲットシステムの1つもしくは複数の制御要素を操作するターゲットにおける1つもしくは複数のイフェクチュエータ(effectuator)と相互作用することによって、または他の形でそのような修正もしくは他の操作を生じさせるようにターゲットシステムに入力を提供することによって、ターゲットシステムに判断モジュールの1つまたは複数の最終の決定された制御アクションを実装する。ブロック680では、ルーチンは任意選択で、行われた制御アクションのターゲットシステムにおける結果に関する情報を取得し、そのような取得された結果に関する、および/または現在の時間期間の判断モジュールのアクティビティに関する情報を、CDDシステムに記憶および/または提供する。ルーチンはさらに任意選択で、そのような情報、およびブロック625で取得された対応する状態情報を、予測モデルのさらなる動作を改善するのに使用するために、(もしあれば)判断モジュールと共に使用される1つまたは複数の予測モデル、たとえば、ブロック627で予測情報を提供する1つまたは複数の予測モデルに提供することができ、他の実施形態では、任意のそのような予測モデルおよび/または関連付けられたPVFモジュールが、代わりに、CDDシステムにより記憶された情報を取り出すことなどによって他の様式でそのような情報を取得することができる。ブロック680の後、ルーチンはブロック682へと続き、学習されたソフトルールに基づいて可能な構造モデル適合更新を行うかどうかを決定し、これは、たとえば、定期的に、ブロック640に関連して解が見つけられたかどうかに基づいて、ブロック660に関連して同期が行われたかどうかに基づいて、または他に基づいて決定する。行う場合、ルーチンはブロック684へと続き、ブロック563~583におけるデータトモグラフコンポーネントに関連するCDD判断モジュール構築コンポーネントの動作を開始して、たとえば、モデルの更新されたバージョンおよび/または対応する判断モジュールを伴って戻る。
ブロックの後684、または学習されたソフトルールに基づいて可能な構造モデル適合更新を行わないとブロック682で決定された場合、ルーチンはブロック695へと続き、(たとえば、ターゲットシステムの現在の動作の終了、またはターゲットシステムの少なくとも部分を制御するための判断モジュールの使用の終了を反映するために)継続するかどうかを決定し、たとえば停止または中断する標識が受け取られるまで継続する。継続すると決定された場合、ルーチンはブロック620に戻り、次の時間期間を開始し、そうでない場合はブロック699に進んで終了する。
図7A~図7Bは、CDD制御アクション決定ルーチン700の例示的実施形態のフロー図である。ルーチンは、たとえば、図3のコンポーネント344および/または図2のコンポーネント144a~nもしくは184の実行によって提供されて、たとえば、特定の時間期間中にターゲットシステムに関して提案および/または実装する判断モジュールについての制御アクションを決定することができ、いくつかの実施形態では、そうすることは、可能な場合に1つまたは複数の目標に関して行う最適に近い(たとえば、最適解の閾値内の)アクションを決定するために最適化を行うことを含む。ルーチンの示された実施形態は、特定の判断モジュールにローカルな様式で実行され、したがって、一部または全部の判断モジュールは各々がそのようなルーチンのローカルバージョンを実装することができるが、他の実施形態では、ルーチンは、1つまたは複数の判断モジュールが1つまたは複数のネットワークを介して相互作用する1つまたは複数のコンポーネントによって、集中化された様式で実装されてよく、たとえば、特定の判断モジュールが、ローカル判断モジュールの代わりに動作するのではなく、特定の時間に使用されるように指示される。
ルーチンの示された実施形態700はブロック703で始まり、ここでは、情報または要求が受け取られる。ルーチンはブロック705へと続き、情報または要求のタイプを決定し、それに応じて進行する。具体的には、ローカル判断モジュールの現在のモデルが与えられたとして現在の時間期間についての解を決定することを試みる要求が、ブロック703で受け取られた場合、ルーチンはブロック710へと続き、ブロック710~790に関連してより詳細に論じられるようなアクティビティの実行を始める。そうではなく、ブロック760および765に関連してより詳細に論じられるように、ローカル判断モジュールの現在のモデルについて1つまたは複数のルールまたは他の制約を緩和する要求が受け取られたと、ブロック705で決定された場合、ルーチンはブロック765へと続く。ブロック775および780に関連してより詳細に論じられるように、ローカル判断モジュールの現在のモデルに対する1つまたは複数のルールまたは他の制約を修復する要求が受け取られたと、ブロック705で決定された場合、ルーチンはブロック780へと続き、(たとえば、CDD判断モジュール構築コンポーネントと相互作用するため、またはそうではなく別の様式で1つもしくは複数のユーザと相互作用するために)ルール修復プロセス中に使用するユーザ入力を取得して、たとえば、ローカル判断モジュールの現在のモデルが、さらに結果のユーザアクションに基づいて後で更新および置換されることを可能にし、または任意選択で、ターゲットシステムの動作が中断できる場合に、そのような更新されたモデルが受け取られるまでルーチン700をさらに実行するのを待つ。そうではなく、情報または要求が別のタイプであるとブロック705で決定された場合、ルーチンは代わりにブロック708へと続き、適宜に1つまたは複数の他の指示された動作を行い、次いでブロック799に進む。そのような他の指示された動作は、たとえば、ローカル判断モジュールと共にターゲットシステムを共同で制御している1つまたは複数の他の判断モジュールによって提案または実行される現在のモデルおよび/または制御アクションに関する情報(たとえば、図8A~図8Bのルーチン800に関連してより詳細に論じられるように、コンセンサスまたは収束された共有モデルを生成することによって、そのような他の判断モジュールとローカル判断モジュールのモデルを同期する際に使用する)を受け取ること、ルーチン700の進行中の動作に使用するためのモデルまたはモデルの基礎となる情報に対する更新を(たとえば、CDD判断モジュール構築コンポーネントから、たとえば、ブロック780で行われた相互作用の結果を)受け取ること、図6A~図6Bのルーチン600で論じられたように使用するためなどに、ターゲットシステムの現在の状態情報を受け取ることなどを含むことができる。
現在の時間期間についてローカル判断モジュールの現在のモデルに基づいて解の要求がブロック703で受け取られたとブロック705で決定された場合、ルーチンはブロック710へと続き、ターゲットシステムの少なくとも部分のローカル判断モジュールの現在のモデルを表す結合された微分方程式の現在のセットを、任意選択で現在の時間についてのターゲットシステムの追加の状態情報および/または現在の時間についてのターゲットシステムの予測パラメータ情報と共に、受け取る。ルーチンは次いで、ブロック715へと続き、ブロック755、770、および730に関連してより詳細に論じられるように、たとえば、対応する判断モジュールの初期実行の際に初めて呼び出される場合、または進行中の動作からのエラー測定が再トレーニングの必要を指示する場合に、モデルをトレーニングまたは再トレーニングするかどうかを決定する。トレーニングまたは再トレーニングすると決定された場合、ルーチンはブロック720へと続き、たとえば図5A~図5Cのルーチン500のブロック553に関連して先に論じられたのと同様の様式で、トレーニング時間窓のサイズ、時間窓内のトレーニング時間スライスのサイズ、および/またはトレーニング時間窓内のトレーニング時間スライスのタイプのうちの1つまたは複数を決定する。ブロック720の後、ルーチンはブロック725へと続き、ターゲットシステムの部分的初期状態情報を使用してモデルをトレーニングし、そうすることは、図5A~図5Cのルーチン500のブロック555に関連してより詳細に論じられるように、時間スライスの各々について時間窓にわたって制御アクションを行う効果をシミュレートすることによって、知られていないおよび/または直接観測可能でないターゲットシステムについての状態変数の値を推定することを含む。
ブロック725の後、またはそうではなくモデルをトレーニングもしくは再トレーニングしないとブロック715で決定された場合、ルーチンはブロック730へと続き、区分線形解析を行って、ブロック710で取得された現在のモデルおよび任意の追加の状態情報の解を決定するように試み、解は(決定された場合、)現在の時間期間に行うべきローカル判断モジュールについての1つまたは複数の提案された制御アクション決定を含み、また、いくつかの実施形態では、他の箇所でより詳細に論じられるように、1つまたは複数のモデルエラーゲージを使用して、現在のモードに関して1つまたは複数のエラー測定を行う。ルーチンは次いでブロック735へと続き、ブロック730の動作に許容された量の時間(たとえば、現在の時間期間の定義されたサブセットまたは割合)内でブロック730の動作が解を決定したかどうかを決定し、解を決定した場合、ブロック740へと続き、解を反映するように、結合された微分方程式の現在のセット、およびローカル判断モジュールの結果の現在のモデルを更新し、結果の更新された情報はルーチン700の出力として提供される。
そうではなく、ブロック730の動作が解を決定しなかったとブロック735で決定された場合、ルーチンはブロック745へと続き、解を決定するさらなる試みのために追加の時間が現在の時間期間内で利用可能であるかどうかを決定し、利用可能でない場合、ブロック790へと続いて、現在の時間期間について解が決定されなかったことを指示するルーチン700の出力を提供する。
他方、現在の時間期間内で追加の時間が利用可能である場合、ルーチンは続いてブロック755~780を実行して、解を識別するための1つまたは複数のさらなる試みを行う。さらなる解決定の試みを続けるために充分な時間が利用可能である場合、ブロック755~780の動作のうちの1つまたは複数が、与えられた時間期間において複数回繰り返し実行されることができることは理解されよう。具体的には、ルーチンは、追加の時間が利用可能であるとブロック745で決定された場合にブロック755へと続き、ここでは、それは、ブロック730に関連して論じられたゲージからのモデルエラー測定値などに基づいて、モデルに対する修正が必要とされることを指示する1つまたは複数の閾値を超えるモデルエラー測定値を、1つまたは複数のゲージからの測定値が指示するかどうかを決定する。指示した場合、ルーチンはブロック760へと続き、(これが、現在の時間期間においてルートのこの部分の最初の通過ではない場合、時間期間中に以前に緩和されることが試みられていない)現在の時間期間について緩和されるべく利用可能な現在のモデルにおける1つまたは複数のルールまたは他の制約が存在するかどうかを決定し、存在する場合、ブロック765へと続き、1つまたは複数のそのようなルールまたは他の制約を緩和し、ブロック730に戻って、それらの緩和されたルールまたは他の制約に基づいて、改訂されたモデルを用いて区分線形解析を再試行する。
そうではなく、ゲージの1つまたは複数からのモデルエラー測定値が1つまたは複数の対応する閾値を満たすのに充分であるとブロック755で決定された場合、ルーチンは代わりにブロック770へと続き、そうするのに充分なエラーを指示するゲージの1つまたは複数に基づいて、たとえばモデルに対する更新の1つまたは複数の時間期間にわたる蓄積されたエラーに基づいて、モデルを再トレーニングするかどうかを決定する。再トレーニングする場合、ルーチンはブロック720に戻って、ブロック720および725でそのような再トレーニングを行い、次いでブロック739へと続いて、結果の再トレーニングされたモデルを用いて区間線形解析を再試行する。
そうではなく、モデルを再トレーニングしないとブロック770で決定された場合(または、モデルが、現在の時間期間において既に再トレーニングされてブロック730の結果の再試行が解を見つけるのに再び失敗した場合)、ルーチンはブロック775へと続き、ゲージの1つまたは複数からのモデルエラー測定値が、修復される必要があるエラーを潜在的に有するモデルにおける1つまたは複数のルールまたは他の制約のサブセットを指示するかどうかを決定する。指示した場合、ルーチンはブロック780へと続き、CDD判断モジュール構築コンポーネントを介して1つまたは複数のユーザへ情報を提供して、ユーザが適宜にルールまたは他の制約を改訂することを可能にするが、他の実施形態では、そうではなく、一部または全部のそのようなルール修復アクティビティが、自動化された様式で試みられまたは行われる。ブロック780の後、またはそうではなく、どのルールも修復しないとブロック775で決定された場合、ルーチンはブロック790へと続き、現在の時間期間において解が決定されなかったという標識を提供する。ブロック740、708、または790の後、ルーチンはブロック799に進んで終了する。そうではなく、ルーチン700が、ルーチンのための実行コンポーネントに対してリモートの1つまたは複数の判断モジュールをサポートする集中化されたルーチンとして実装された場合、ルーチン700は代わりにブロック703に戻って、さらなる情報または要求を待つことは理解されよう。
図8A~図8Bは、CDD調整制御管理ルーチン800の例示的実施形態のフロー図である。ルーチンは、たとえば、図3のコンポーネント346および/または図1Bのコンポーネント146a~nの実行によって提供されて、たとえば、ターゲットシステムを共同で制御している複数の判断モジュールの間で現在のモデルおよびそれらの提案された制御アクションを同期しようと試みることができる。ルーチンの示された実施形態では、同期は、可能な場合にコンセンサス共有モデルで表されるパレート均衡を決定するパレートゲーム技法を使用して、1つまたは複数の他の判断モジュールの現在の状態に関する情報に基づく、特定のローカル判断モジュールに関する中間共有モデルと、その特定のローカル判断モジュールのローカルの現在のモデルとの間の対の様式で行われるが、他の実施形態では、他のタイプの同期方法が使用されることができる。加えて、示された実施形態では、ルーチン800は、特定のローカル判断モジュールについてローカルな様式で行われ、たとえば、そのローカル判断モジュール内に含まれることによって行われるが、他の実施形態では、ルーチン800は、1つまたは複数の判断モジュールであって、そのルーチンのためのコンポーネントを実装するコンピューティングシステムからリモートであり、1つまたは複数のネットワークを介してそれらの判断モジュールと通信する、1つまたは複数の判断モジュールをサポートするように集中化された様式で実装されることができ、たとえば、特定の判断モジュールが、ローカル判断モジュールの代わりに動作するのではなく、特定の時間に使用されるように指示される。
ルーチン800の示された実施形態は、ブロック805で始まり、ここでは、それが情報または別の標識を受け取るのを待つ。ルーチンはブロック810へと続き、別の判断モジュールに関するコンセンサスモデルまたは他の更新された情報が受け取られたかどうかを、たとえばこの別の判断モジュールのために実行されるルーチン800のコピーから、決定し、受け取られた場合、ブロック815へと続き、ブロック830に関連してより詳細に論じられるように、ルーチン800の現在のコピーが代わりに実行されているローカル判断モジュールと共に使用するためのローカル中間共有モデル情報を、改訂された情報を使用して更新する。そうではなく、ブロック805で受け取られた情報または要求が1つもしくは複数の他の判断モジュールに関係付けられた情報でないとブロック810で決定された場合、またはブロック815の後で、ルーチンはブロック820へと続き、1つまたは複数の他の判断モジュールについての情報を含むローカル判断モジュールの中間共有モデルに関する情報を使用することによって、ローカル判断モジュールの現在のローカルモデルについての同期を現在行うかどうかを決定し、たとえば、ブロック805で(たとえば、その判断モジュールに対してローカルなCDD制御アクション決定コンポーネントのコピーについてのルーチン700の動作に基づいて)ローカル判断モジュールのモデルに対する更新が受け取られるたびに、および/または、ローカル判断モジュールの中間共有モデルを更新する情報がブロック805で受け取られブロック815で使用され、もしくは代わりにブロック805で明示的に指示されるたびに、そのような同期を行う。同期が現在実行されるべき場合、ルーチンはブロック825へと続き、そのような同期アクティビティに関係付けられたブロック820~880の実行を始める。そうでない場合は、ルーチンはブロック885へと続き、適宜に1つまたは複数の他の指示された動作を行って、たとえば、ルーチン800の動作に関する現在の情報を求めるCDDシステムもしくは他の要求元からの要求を受け取り、および/または(たとえば、先行の要求を反映するために)対応する情報を1つまたは複数のエンティティに提供する。
ブロック805で受け取られた更新されたモデルに関係付けられた情報などに基づいて、同期が現在行われるべきとブロック820で決定された場合、ルーチンはブロック825へと続き、同期の際に使用するローカル判断モジュールについての現在のローカルモデルを取得し、このモデルは、ローカル判断モジュールに関するローカル解に基づく現在の時間期間において行う1つまたは複数の提案された制御アクションを含む。ルーチンは次いで、ブロック830へと続き、ターゲットシステムの制御に共同して参加している1つまたは複数の他の判断モジュール(たとえば、すべての他の判断モジュール)についての情報を表すローカル判断モジュールの中間共有モデルについての情報を取り出し、その中間共有モデルは、それらの1つまたは複数の他の判断モジュールのローカル解によりもたらされる1つまたは複数の他の提案された制御アクションを同様に表し、任意選択で、部分的または完全な同期がそれらの1つまたは複数の他の判断モジュールについてそれら自体の間で行われた後に取り出しをする。
ルーチンは次いで、ブロック835へと続き、ローカル判断モジュールの現在のモデルと中間共有モデルとの両方に解を同時に提供することによって、ローカル判断モジュールの現在のモデルと中間共有モデルとを同期するコンセンサス共有モデルを決定しようと試みる。いくつかの実施形態では、ブロック835の動作は、ローカルモデルと中間共有モデルが組み合わされて、1つまたは複数の解が識別されるべき組み合わせモデルを作成する場合などに、図7A~図7Bのルーチン700のブロック710~730に関連して論じられたのと同様の様式で行われる。他の箇所でより詳細に論じられるように、いくつかの実施形態では、ローカルな現在のモデルおよび中間共有モデルは各々が、ハミルトン関数によって表され、それぞれのハミルトン関数について加法様式でそのような組み合わされたモデルの簡単な作成を可能にし、図6A~図6Bおよび図7A~図7Bのルーチン600および/または700の動作はそれぞれ、そのようなハミルトン関数を使用してそれらが更新および他の形で操作するモデルを同様に表す。
ブロック835の後、ルーチンはブロック840へと続き、同期が行われるように試みられる現在の時間期間の断片または他の部分などの許容される時間の量においてブロック835の動作が成功したかどうかを決定し、成功した場合、ルーチンはブロック845へと続き、コンセンサス共有モデルを反映するようにローカル判断モジュールのローカルモデルおよび中間共有モデルの両方を更新する。前述されたように、集合的グループの1つまたは複数の他の判断モジュールを表す中間共有モデルを変更すると共に、各判断モジュールがコンセンサス共有モデルを繰り返し決定するために充分な時間が許容される場合、集合的グループの判断モジュールは、最終的に単一の収束された共有モデルに収束することができるが、他の実施形態および状況では、そのような収束が生じるのに充分な時間が存在しないことがあり、または他の問題がそのような収束を妨げることがある。ブロック845の後、ルーチンはブロック850へと続き、任意選択で、ローカル判断モジュールについて決定されたコンセンサス共有モデル(および/または、835の動作が収束された共有モデルを作成する最後のステップであった場合のそのような収束された共有モデル)を他の判断モジュールに通知し、たとえば、通知される判断モジュールがルーチン800のそれ自体のローカルバージョンを実装しており、提供される情報は、現在のローカル判断モジュールの新しく構築されたコンセンサス共有モデルからの情報を含むそれら他の判断モジュールの中間共有モデルの一部として使用される場合に、そのように通知する。
そうではなく、許容された時間内で同期が発生しなかったとブロック840で決定された場合、ルーチンは続いてブロック860~875を実行して、図7A~図7Bのルーチン700のブロック745~780に関連して論じられたのと同様の様式で、1つまたは複数の修正との同期を再試行し、充分な時間が利用可能である場合は繰り返し再試行することがある。示された例では、ルーチンは、同期の1つまたは複数のそのような再試行に追加の時間が利用可能であるかどうかをブロック860で決定し、利用可能でない場合、ルーチンはブロック880へと続き、許容された時間内で同期が行われなかったという標識を提供する。さもなければ、ルーチンはブロック870へと続き、ローカル判断モジュールの現在のモデルおよび/またはローカル判断モジュールの中間共有モデルでその情報が表される1つもしくは複数の他のモジュールの一方または両方に関して、ルールもしくは他の制約を緩和すること、ルールもしくは他の制約を修復すること、および/またはモデルを再トレーニングすることのうちの1つまたは複数を実行するために1つまたは複数のアクションを行う。このように進行するとブロック870で決定された場合、ルーチンはブロック875へと続き、往々にしてルーチン700に関連して論じられたのと同様の様式で1つずつ、対応するアクションを行い、そうすることは、ローカル判断モジュールの現在のモデルおよび/またはローカル判断モジュールのローカル中間共有モデルに対して結果の更新を生じることを含み、その後、ルーチンはブロック835に戻って、ローカル判断モジュールのローカルモデルと中間共有モデルの同期を再試行する。
そうではなく、緩和、修復、および/または再トレーニングに関してさらなるアクションが行われないとブロック870で決定された場合、ルーチンは代わりにブロック880へと続く。ブロック850、880、または885の後、ルーチンはブロック895へと続き、継続するかどうかを決定し、たとえばルーチン800の動作を停止または中断する明示的標識が受け取られるまで継続し、たとえば、ターゲットシステムの動作の終了、ならびに/またはターゲットシステムを制御するためのローカル判断モジュールおよび/もしくは複数の判断モジュールの集合的グループの使用の終了を反映するようにする。継続すると決定された場合、ルーチンは805に戻り、そうでない場合はブロック899に進んで終了する。
図9は、ターゲットシステムとターゲットシステムの少なくとも部分を制御している1つまたは複数の判断モジュールとの間の相互作用に関して、代表的な一般的ターゲットシステムについて実行されるルーチン900の例示的実施形態のフロー図を示す。ルーチンは、たとえば、図3のターゲットシステム360および/もしくは370ならびに/または図1Aおよび図1Bのターゲットシステム160および/もしくは170の実行によって提供されて、たとえば、ターゲットシステムに固有の動作を実装することができる。ルーチンの示された実施形態は、1つまたは複数の判断モジュールとターゲットシステムの相互作用に焦点を当てていること、ならびに、多くまたはすべてのそのようなターゲットシステムが、簡潔にするためにここでは示されていないそれらのターゲットシステムに固有の様式で多くの他の動作を行うことは理解されよう。
ルーチンはブロック910で始まり、ここでは、それが、任意選択で、ターゲットシステムについてのCDDシステムの自動化制御システムにおいて使用するためのターゲットシステムの初期状態情報をCDDシステムに提供し、たとえば、CDDシステムもしくはターゲットシステムのためのその自動化制御システムからの要求に応答して、またはそうではなく(たとえば、ターゲットシステムの始動時に実行されるように)ターゲットシステムに固有の構成に基づいて提供する。ブロック910の後、ルーチンはブロック920へと続き、ターゲットシステムのための自動化制御システムを実装する1つまたは複数の判断モジュールの集合的グループからの1つまたは複数の入力を受け取り、そのような入力は、自動化制御システムの1つまたは複数のそのような判断モジュールによって実行されるターゲットシステムの複数の要素の1つまたは複数の制御要素についての1つまたは複数の修正された値または他の操作を含む。他の箇所でより詳細に論じられるように、ブロック920、930、940は、複数の時間期間の各々について繰り返し実行されることができ、それは、ターゲットシステムに応じて時間が大きく異なることがある(たとえば、マイクロ秒、ミリ秒、秒の100分の1、秒の10分の1、1秒、2秒、5秒、10秒、15秒、30秒、1分、5分、10分、15分、30分、1時間など)。
ブロック920の後、ルーチンはブロック930へと続き、受け取られた入力に基づいてターゲットシステムにおいて1つまたは複数のアクションを行い、そうすることは、任意選択で、制御要素の操作に基づいてターゲットシステム内で1つまたは複数の結果の出力または他の結果を生成することを含む。ブロック940では、ルーチンは次いで、任意選択で、ターゲットシステム内の出力もしくは他の結果に関する情報、および/またはターゲットシステムに関する他の現在の状態情報を、CDDシステムの自動化制御システム、および/または自動化制御システムの特定の判断モジュールに提供する。ルーチンは次いで、ブロック995へと続き、継続するかどうかを決定し、たとえばターゲットシステムの動作を停止または中断する明示的標識が受け取られるまで継続する。継続すると決定された場合、ルーチンはブロック920に戻って、次の時間期間についての次のセットの制御アクションを始め、そうでない場合はブロック999に進んで終了する。他の箇所でより詳細に論じられるように、特定の判断モジュールに提供される状態情報は、外部システムからターゲットシステムへの要求を含むことができ、自動化制御システムおよびその判断モジュールは、その要求にどのように応答するかを1つまたは複数の様式で決定することができる。
図10A~図10Bは、パラメータ値予測器ルーチン1000の例示的実施形態のフロー図を示す。ルーチンは、たとえば、図1A~図2Dに関して論じられたように、図3の1つもしくは複数のPVFコンポーネント345および/または機能性をサポートするPVFコンポーネントの実行によって提供されることができ、たとえば、1つまたは複数の指定されたターゲットシステムの将来の動作に関する情報を予測する予測モデルを生成、トレーニング、使用、および更新するための機能性を提供する。少なくともいくつかの実施形態および状況では、ルーチンは、1つもしくは複数のターゲットシステムおよび/または1つもしくは複数のCDDシステムの一部であるまたはそれらと関連して動作する、1つまたは複数のPVFコンポーネントの一部であることができ、たとえば、図4~図9に関連して論じられたルーチンで使用するための予測パラメータ情報を提供する。
ルーチンの示された実施形態はブロック1003で始まり、ここでは、情報または命令が受け取られる。ブロック1003の情報または命令が、特定のターゲットシステムをサポートする(たとえば、ターゲットシステムの自動化制御を支援する)ためのプールの一部として使用される1つまたは複数の予測モデルを作成または改訂する標識を含むと、ブロック1005で決定された場合、ルーチンは続いてブロック1010~1025を実行して、その後に使用するためにそのような予測モデルを作成およびトレーニングする。具体的には、ルーチンは、記憶された情報を取り出すことなどによって、ターゲットシステムの先行の性能に対応する動作データをブロック1010で取得するが、他の実施形態および状況では、取得された動作データの一部または全部は、代わりに異なるターゲットシステム(たとえば、同じタイプの別のターゲットシステム)らのものであってよく、または他の形で作成されてよい(たとえば、シミュレートされた動作データ)。ルーチンさらに示された実施形態では、ブロック1010で、ターゲットシステムに使用するために生成される予測モデルに対応する情報を取得し、そのような情報は、たとえば、予測モデルの1つまたは複数のタイプ、トレーニングに使用する動作データの1つまたは複数の量/タイプ(たとえば、最後のN個のデータサンプル、ここで、Nは指定された数であり、異なる予測モデルでは異なることがある)、および、各予測モデルに関して値が予測されるべき1つまたは複数のパラメータ(たとえば、異なる予測モデルに対して異なるパラメータ)である。そのような情報は、様々な様式で取得されることができ、たとえば、1つまたは複数のユーザによって動的に指定され、および/または(たとえば、1つまたは複数の指定されたタイプの予測モデルを常に使用するために)再構成される。少なくともいくつかの実施形態では、指示されたパラメータは、指示されたパラメータの追加の将来値を予測するように予測モデルをトレーニングするのに使用するために、他のパラメータの関連付けられた値と共に、取得された動作データにおける1つまたは複数の過去の時間についての対応する値を有する。ブロック1010の後、ルーチンはブロック1015へと続き、ブロック1010から取得された情報を使用して、ターゲットシステムと共に使用するための1つまたは複数の予測モデルのプールを作成する。
ルーチンは次いで、ブロック1020および1025へと続き、取得された動作データのサブセットを使用することなどによって、プールの予測モデルをトレーニングする。具体的には、ルーチンは、ブロック1020で、取得された動作データの1つまたは複数のグループを選択し、また任意選択で、たとえば図5A~図5Cのブロック553および555に関連して先に論じられたのと同様の様式で、必要に応じて使用するための1つまたは複数の追加のトレーニングファクタを決定する。次いで、ルーチンは進行して、ブロック1025で、ブロック1020からの選択および決定された情報を使用してプールの予測モデルをトレーニングし、そうすることは、任意選択で、初期トレーニングのために選択されなかった動作データの追加のサブセットを使用して、トレーニングされたモデルの性能をテストすることを含む。図10Aには示されていないが、ブロック1025の動作は、たとえば、1つまたは複数の指定された基準をテストが満たさない予測モデルの使用を(一時的または永続的に)再トレーニングまたは中断するために、追加のアクティビティを含むことができる。トレーニングされた予測モデルは次いで、ブロック1050~1075に関連してより詳細に論じられるように、たとえば1つまたは複数の将来の時間についての指示されたパラメータの将来値を予測するために、記憶されまたは他の形で使用可能にされる。
そうではなく、ブロック1003の情報または命令が、1つまたは複数の将来の時間についての予測パラメータ値を生成するためにターゲットシステムのためのプールの1つまたは複数の既存の予測モデルを使用することであると、ブロック1005で決定された場合、ルーチンは代わりにブロック1050へと続く。ルーチンの示された実施形態は、1つまたは複数の将来の時間について、たとえば後でそれらの将来の時間で使用するために、予測パラメータ値を生成するが、他の実施形態は、(将来の時間に加えてまたは代えて)他の時間、たとえば、過去、現在、および/または近い将来の時間について、予測パラメータ値を生成することができることは理解されよう。ブロック1050では、ルーチンは、たとえばブロック1010~1025に関連して以前に生成およびトレーニングされたモデルである、指示されたターゲットシステムのためのプールからの1つまたは複数の予測モデルを取り出す。ブロック1055では、ルーチンは次いで、任意選択で、予測モデルのうちの1つまたは複数についての係数または他の内部状態を更新して、たとえば、ターゲットシステムに関する最近の動作データを反映する、および/または、不良なトレーニングデータが予測モデルの先行の性能を望ましくないものにしている場合に、予測モデルをリセットする。
ブロック1055の後、ルーチンは、本明細書の他の箇所でより詳細に論じられるように、予測モデルのタイプに固有の様式で、1つまたは複数の将来の時間の各々について、予測モデルの各々について、予測された将来パラメータ値を生成する。ブロック1065では、ルーチンは次いで、任意選択で、プール内の1つまたはいくつかまたは全部の予測モデルの先行および/または現在の性能に関するデータを分析して、たとえば、それらの予測モデルの精度または他の有効性を(たとえば、指示された時間についての予測パラメータ値が、その時間についてのパラメータの実際値にどれほど正確に一致するかに関して)査定する。いくつかの実施形態および状況では、査定は、精度などの1つまたは複数の基準に関して予測モデルをランク付けすることを含むことができる。さらに、少なくともいくつかの実施形態および状況では、査定からの結果の情報を使用して、1つまたは複数の将来の時間の各々について使用する単一の「最良」予測モデルを選択することができ、そうすることは、たとえば、複数の異なる予測モデルがそのパラメータの値を予測していても、対応するCDDシステムが、単一の予測モデルからの予測パラメータ値のみを使用する、または特定のパラメータに対し1つのみの予測値を使用する場合に、異なる時間にプールからの「最良」の予測モデルを潜在的に変更することを含む。ルーチンは次いで、ブロック1075へと続き、後で使用するための1つまたは複数の将来の時間についての生成された予測された将来パラメータ値を記憶し、任意選択でさらに、(たとえば、図6Aのブロック627に関連して論じられるように)CDDシステムおよび/または1つもしくは複数の他の要求側に対して生成された値の一部または全部を提供する。
そうではなく、ブロック1003の情報または命令が、追加の動作データ(たとえば、1つまたは複数の予測モデルの現在または先行のバージョンからの予測パラメータ値を部分的に使用してターゲットシステムを制御することから生成された動作データ)を使用してターゲットシステムのためのプールの1つまたは複数の予測モデルを再トレーニングすることであると、ブロック1005で決定された場合、ルーチンは代わりにブロック1080へと続き、追加の動作データを取得し(たとえば、それをストレージから取り出す、ターゲットシステムのさらなる動作によりデータが生成されるまで待つなど)、次いでブロック1020へと続く。
そうではなく、ブロック1003の情報または命令が、プールでの1つまたは複数の予測モデルの追加および/または除去など、ターゲットシステムのための1つまたは複数の予測モデルのプールを更新することであると、ブロック1005で決定された場合、ルーチンは代わりにブロック1035へと続き、プール内の1つまたはいくつかまたは全部の予測モデルの先行の性能に関するデータを取得し(たとえば、それをストレージから取り出す、ターゲットシステムのさらなる動作によりデータが生成されるまで待つなど)、次いで、データを分析して、それらの予測モデルの精度または他の有効性を(たとえば、指示された時間についての予測パラメータ値が、その時間についてのパラメータの実際値にどれほど正確に一致するかに関して)査定する。いくつかの実施形態および状況では、査定は、精度などの1つまたは複数の基準に関して予測モデルをランク付けすることを含むことができる。ルーチンは次いで、ブロック1040へと続き、任意選択で、プールの一部である予測モデルを修正して、たとえば、それらの過去の性能の分析に基づいてプールから1つもしくは複数の既存のモデルを除去し(たとえば、最も低くランク付けされたM個の予測モデルを除去し)、ならびに/または、ブロック1010~1025に関連して論じられたのと同様の様式で1つまたは複数の新しい予測モデルを生成、トレーニング、テスト、および保存することによって、それらをプールに追加する。たとえば、少なくともいくつかの実施形態および状況では、プール内の1つまたは複数の以前から存在する予測モデルと同じタイプの1つまたは複数の新しい予測モデルが追加されてよく、異なる量および/またはタイプの動作データが(より多いまたはより少ない、重複するまたは完全に分離するなどに関わらず)以前から存在する予測モデルと比べて新しい予測モデルをトレーニングするために使用される。ターゲットシステムと共に使用される予測モデルを使用、再トレーニング、および更新することに関する追加の詳細は、本明細書の他の箇所に含まれる。
そうではなく、ブロック1003の情報または命令が、1つまたは複数の他の指示されたタイプの動作を行うことであると、ブロック1005で決定された場合、ルーチンは代わりにブロック1090へと続き、そのような他の動作を適宜に行う。そのような他の動作は、たとえば、以前に生成された記憶された情報を取り出し提供することおよび/または一部もしくは全部のそのような情報を動的に生成および提供することなどによって(たとえば、ターゲットシステムを制御するCDDシステムからの)予測パラメータ値の要求を受け取りそれに応答すること、後で使用するための構成情報(たとえば、予測モデルのタイプ、トレーニングファクタのタイプなどに関する情報など)を受け取り記憶すること、以前に生成された予測パラメータ値の使用に対応する動作からであるかどうかに関わらず1つまたは複数のターゲットシステムに関する動作データ(たとえば、図6Bのブロック680および/または図9のブロック940などで生成されたデータなど)を受け取り記憶すること、1つまたは複数の生成およびトレーニングされた予測モデル(たとえば、プールの予測モデル)の要求を受け取りそれに応答することのうちの1つまたは複数を含むことができる。
ブロック1025、1040、1075または1090の後、ルーチンはブロック1095へと続き、継続するかどうかを決定し、たとえば停止する明示的標識が受け取られるまで継続する。継続すると決定された場合、ルーチンはブロック1003に戻り、そうでない場合はブロック1099に進んで終了する。
いくつかの実施形態では、上記に論じられたルーチンによって提供される機能性は、より多くのルーチンに分割されるまたはより少ないルーチンに統合されるなど、代替的方法で提供されてよいことは理解されよう。同様に、いくつかの実施形態では、示されたルーチンは、他の示されたルーチンがそれぞれそのような機能性を欠くもしくは含むとき、または提供される機能性の量が変更されたときなどに、説明されたものより多いまたは少ない機能を提供することができる。加えて、様々な動作が、特定の様式(たとえば、直列、並列、同期、または非同期など)および/または特定の順序で行われるように示されることがあるが、他の実施形態において他の順序および他の様式で動作が実行されてよいことは当業者には理解されよう。また、上記に論じられたデータ構造は、異なる様式で、たとえば、単一のデータ構造を複数のデータ構造に分割させることによって、または複数のデータ構造を単一のデータ構造に統合させることによって構造化されてよいことは、当業者には理解されよう。同様に、いくつかの実施形態では、示されたデータ構造は、説明されたものより多いまたは少ない情報を他の示されたデータ構造がそれぞれそのような情報を欠いたときもしくは含むとき、または記憶される情報の量もしくはタイプが変更されたときなどに、記憶することができる。
図12は、より大きなターゲットシステムの一部としてバッテリを制御する実施形態を示し、この例では、そのターゲットシステムは、ソーラーパネルを含む家庭電力システムを含むシステム1200であり、したがって、図2Aおよび/または本明細書の他の箇所に関連して先に論じられた例示的実施形態が、いくつかの状況では、例示的システム1200のような、より大きなシステムの一部として使用されることができる。具体的には、図12のブロック図は、ソーラー電力が生成されている家庭電力システムの一部であるバッテリからのDC電力の自動化制御を行うためのシステム1200の実施形態の例示的コンポーネントを示し、自動化制御は、たとえば、リアルタイム様式で、および/またはバッテリの長期動作を最適化するように行われ、家庭の発電および電力使用が、外部エンティティによって、たとえば、システム1200のバッテリを制御するために1つまたは複数のCDIエージェントを提供または管理するエンティティによって監視および同期される。図12の例では、例示的な家庭の電力システムが、外部電気グリッドにも接続され、それは、様々な時間に外部電気グリッドから電力を受け取り、また電力を提供し、バッテリは、ソーラー電力システムにより生成された電力を貯蔵し、電力を適宜に住宅および/または電気グリッドに供給する役割をする。
図12の示された例では、バッテリ210、センサモジュール220、バッテリ用アクチュエータ230、オンサイトバッテリ追跡コントローラ240などを含む、図2Aのコンポーネントと同様のコンポーネントが引き続き示されている。しかしながら、図12の例では、図2AのCDIエージェント250は、例示的住宅の物理的位置に存在するコンポーネントの一部として示されておらず、これは、たとえば、図12に関して使用されているCDIエージェント250は、代わりに遠隔位置(たとえば、クラウドまたは他のコンピュータネットワーク位置)で実行され、図2Aに関して示されたのと同様の様式で追跡および/または同期信号を図12のバッテリ追跡コントローラ240に提供する場合である。そのような追跡および/または同期信号は、たとえば、現在の時間または直後の時間のバッテリの所望の電力出力および/または所望のバッテリパラメータ(たとえば、内部温度、電圧、電流など)を含むことができる。加えて、本明細書の他の箇所でより詳細に論じられるように、CDIエージェントは、バッテリ210(および制御されている任意の他のバッテリ)に関する監視された情報、外部電気グリッドを管理するユーティリティからの電力要求、使用される定義された制約条件または他のルール、予測された電力に関係付けられた値などに基づいて、そのような追跡および/または同期信号を生成することができる。この例示的実施形態では別個のPVFコンポーネントが示されていないが、それらは、たとえば、コンポーネント240、1260、および/または1270などの1つまたは複数の他のコンポーネントの一部として動作することができる。
加えて、いくつかの追加のコンポーネントが図12に示されており、これらのコンポーネントはバッテリからの出力電力を受け取り、および/または貯蔵のためにバッテリへ電力を供給するインバータ/整流器モジュール1210、電力を生成し、自身の関連付けられたセンサおよびインバータを有するソーラーパネル1220、外部電気グリッドに対する電力の受け取りおよび/または供給をし、住宅用の負荷1240への配電を制御する配電箱1230などを含む。加えて、図12のバッテリ追跡コントローラ104の動作を制御するのを支援するための2つのローカル制御エージェント1260および1270が示されており、エージェント1 1260は、バッテリ追跡コントローラと直接的に相互作用し、エージェント2 1270は、バッテリのための電力のAC相を住宅電力システムおよび/またはグリッドのそれと同期するためのアクティビティを行って、たとえば、受け取られおよび/または提供されている電力の共鳴を提供する。バッテリ追跡コントローラ240ならびにエージェント1260および1270(ユーティリティセンサプロセッサ以外)は、この例では一緒に「制御プロセッサ」と呼ばれ、バッテリ追跡コントローラは、システムステータス更新を提供し、エージェント間の通信は、そのようなマルチエージェントアーキテクチャをサポートするように管理される。エージェント2のトモグラフィが、非破壊X線を使用してバッテリ状態の動的変化を追跡する。加えて、外部エンティティ1280(たとえば、外部電気グリッドを提供または管理するユーティリティ)が、この例では監視および同期信号をバッテリ追跡コントローラ240に提供し、たとえば、多数のそのような家庭電力システムおよび/または他のカスタマを介して使用および/または提供されている電力を調整する。
図12の例ではソーラーパネルシステムにおけるバッテリ210の使用を伴うが、バッテリは様々なタイプの環境およびシステムで充電および/または放電されることができ、対応するCDIエージェントの同様のアクティビティが、本明細書に説明されている様式でそのようなアクティビティを制御するために使用できることは理解されよう。
物理ターゲットシステムは、1つまたは複数のバッテリを有するターゲット制御システムを制御するよりむしろ、いくつかの実施形態では、上記されたように、ネットワークトラフィックが通過する1つまたは複数のコンピュータネットワークであって、ネットワークトラフィックの一部または全部を規制することができるファイアウォールデバイスおよび/または他のデバイスを含むコンピュータネットワークを含むことができ、ターゲットシステムを制御するための動化された動作は、ネットワークトラフィックの特性を使用して、ファイアウォールデバイスまたは他の規制デバイスの自動化制御を行うことを含むことができ、PVFシステムの動作は、発生することが期待される将来のネットワークトラフィックを予測すること、および、予測されたデータを使用してファイアウォールデバイスもしくは他の規制デバイスを制御すること(または、問題に対処するための他のアクションを行い、実際のネットワークトラフィックと予測されたネットワークトラフィックとの間の有意な差異を識別すること)を含む。そのような実施形態の例は、リアルタイムまたはリアルタイムに近い様式で(たとえば、分析されるネットワークトラックの到着に対して、1秒未満の範囲内、または小さな定義された秒数または分数の範囲内で)ネットワークアクティビティを予想することを含む。予想モデルは、たとえば、各分に受け取られたパケットの数、各分に送られたパケットの数、各分に受け取られたパケットの合計サイズ、各分に送られたパケットの合計サイズ、定義されたセットの1つまたは複数の宛先(たとえば、知られているブラックリストに載せられたIPアドレス、指定されたオクテット、特定のポートを介するデータ、送信/受信されたIPアドレス/ポートの組み合わせなど)に対して各分に送信/受信されたパケットの数またはサイズなどのいずれかに基づくことができる。定義された期間の時間(たとえば1分)が経過した後、観測されたデータは予想されたデータと比較され、十分に大きな(たとえば、定義された閾値より大きな)相違は、調査または他の形で処理されるべき異常を示す。たとえば、xnは、分nに受け取られたパケットの数である場合、プロセスモデル
および観測モデル
が、予測の一部として使用されることができ、たとえば、パケットの数の正規化はしないが、送られたパケットの合計サイズの対数正規化は使用する。発生することが期待される将来のネットワークトラフィックを予測すること、および/またはそのような予測されたデータを使用することは、他の実施形態において他の様式で行われ得ることは理解されよう。図13は、ネットワークトラフィックに関係付けられた自動化された予測に部分的に基づいて、コンピュータネットワークの動作の自動化制御を行うためのシステムの実施形態の例示的コンポーネントを示すシステム1300を示す。システム1300は、1つまたは複数のコンポーネント1355からの入力データ(たとえば、過去のネットワークトラフィックに関する情報)を取得し、将来のネットワークトラフィックに関する予測されたデータを生成および提供する、ネットワークトラフィック予測器コンポーネント1370を含む。CDIエージェント1350は、予測されたデータ、ならびに他のネットワークトラフィックポリシ情報および現在のネットワークトラフィックに関する情報を使用し、出力信号を生成して、1つもしくは複数のトラフィック規制デバイス1310の動作を制御し、および/または識別された異常もしくは他の問題に関する情報を1つもしくは複数の受信者1395に提供する。コンピュータネットワークは、簡潔にするためにここでは示されない様々な追加のノード、リンク、および他のコンポーネントを含むことができることは理解されよう。
図11は、たとえばリアルタイム様式でバッテリの長期動作を最適化するように、調整された様式で複数のバッテリからのDC電力の自動化制御を行うシステム1100の実施形態の例示的コンポーネントを示すブロック図である。具体的には、図11のシステム1100は、図12のそれといくつかの類似点を有するが、多数のバッテリおよび関連付けられたシステム(たとえば、この例では、たとえば1つまたは複数の地域、州、国などに対応する、百万個を超えるそのようなバッテリおよび関連付けられたシステム)の調整された制御をサポートするためのシステムの例示的アーキテクチャを示す。具体的には、示された例では、オンサイトバッテリ追跡コントローラを有する様々なバッテリおよび関連付けられたシステム1105(たとえば、ソーラーパネルを有する家庭電力システム)が、バッテリおよび関連付けられたシステム1105についての電力要求を提供する1つまたは複数のユーティリティ1185、ならびにバッテリおよび関連付けられたシステム1105についての分散制御システム1175を管理するためのシステム管理の役割をする1つまたは複数のエンティティ1190と共に示される。この例示的実施形態では別個のPVFコンポーネントは示されていないが、それらは、たとえば、クラスタ内のCDIエージェントのような1つまたは複数の他のコンポーネントの一部として動作することができる。
この例では、分散制御システム1175は、オンラインコンピューティング環境(たとえば、Microsoft Azure)を介するなどして、ネットワークアクセス可能な位置に集中化された様式で実装されるが、それは他の実施形態では他の様式で実装されることもできる。分散制御システム1175は、ユーティリティ1185とインターフェースをとって相互作用する1つまたは複数のコンポーネント、バッテリおよび関連付けられたシステム1105とインターフェースをとって相互作用する1つまたは複数のコンポーネント、ならびに、分散制御システム1175を監視および/または制御するためにシステム管理エンティティ1190が相互作用することができる1つまたは複数の監視および/または構成コンポーネントを含む。加えて、バッテリおよび関連付けられたシステム1105をサポートする様々なCDIエージェント(たとえば、バッテリパックおよび関連付けられたシステム当たり1つのCDIエージェント)が、ネットワークアクセス可能位置で実行され、一緒にクラスタ化され、様々なクラスタ間通信機構(たとえば、様々なトピックを有するパブリッシュ/サブスクライブシステム、少なくともいくつかのCDIエージェントおよび/またはクラスタの間の通信サービスバスなど)が使用される。クラスタは、様々な実施形態において様々な様式で形成され、たとえば、地理的位置(たとえば、システム電気グリッド変電所領域の一部である)および/または動作特性のような1つまたは複数の特性を共有する関連付けられたバッテリおよびシステムを有することに基づいて、CDIエージェントをグループ化することができる。加えて、クラスタは、段階的および/または階層的にCDIエージェントを調整するために使用され、たとえば、まずクラスタ内でCDIエージェントを調整し、次いで、2つ以上のクラスタ間などで、また任意選択で(たとえば、階層的に構造化された)複数の層のクラスタを用いて調整することができる。様々な追加のコンポーネントが、分散制御システム1175の一部として提供され使用され、たとえば、サイト管理システムが、CDIエージェントならびに/またはバッテリおよび関連付けられたシステムの変化を管理し(たとえば、新しいバッテリシステムのための新しいCDIエージェントを追加し、および/またはシステム1175管理から除去されている既存のバッテリシステムのための既存のCDIエージェントを除去する;新しいCDIエージェントを特定のクラスタに追加し、および/またはクラスタから既存のCDIエージェントを除去する;クラスタを作成、除去、および修正するなど)、ネットワークアクセス可能位置から利用可能な記憶サービスが、使用される状態情報および他の情報を記憶し、ネットワークアクセス可能位置から利用可能なリソース管理サービスが、ネットワークアクセス可能位置により提供されるコンピューティングリソースを管理することなどができる。
上記から、例示のために特定の実施形態が本明細書で説明されているが、本発明の趣旨および範囲から逸脱することなく様々な修正が行われてよいことは理解されよう。したがって、本発明は、添付の特許請求の範囲およびそれに記載された要素による場合を除いて限定されない。加えて、本発明の特定の態様が特定の請求形式で提案されるが、本発明者らは、任意の利用可能な請求形式で本発明の様々な態様を企図する。たとえば、本発明の一部の態様のみがコンピュータ可読媒体で実施されるものとして現在記載されているが、同様に他の態様もそのように実施されてよい。