(57)【特許請求の範囲】
【請求項１】
電力系統の回路方程式の作成をスパースタブロー法により作成する定式化過程と、前記回路方程式の求解を行なう求解過程と、前記電力系統の回路部品が持つ内部状態を更新する内部状態更新過程を有するとともに、所定時間の経過ごとに、前記求解過程および前記内部状態更新過程の処理を繰り返すスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、
前記内部状態更新過程は、
所定の数の部品の内部状態処理を時系列に逐次行う逐次処理モードおよび所定の数の部品の内部状態処理を複数のスレッドに分けて並列処理する並列処理モードのいずれかを選択するモード選択手段を有し、
前記並列処理モードにおいて各スレッドに処理を仕分けるに際しては各スレッドにおける処理容量が平準化されるように最適化するとともに、最適化後の各スレッドの処理時間中の最大処理時間に並列化に伴うオーバーヘッドを加味した最大並列処理時間と、前記逐次処理に要する逐次処理時間とを比較し、最大並列処理時間が短いときのみ並列処理モードで所定の内部状態更新を行うようにしたことを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システム。
【請求項２】
請求項１に記載するスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、
前記最大並列処理時間と、前記逐次処理時間との比較の際には、前記逐次処理時間に所定の重みαを付けた下式（１）に基づく比較を行うようにしたことを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システム。
【数１】
0006300022.tif 000014
ただし、０＜α≦１、Ｔtotal＝前記所定の数の部品のそれぞれの更新処理実行時間の合計、Ｔoverhead＝オーバーヘッド時間、Ｎthread＝作成可能なスレッドの数、（Ｔthread、i）＝前記所定の数の部品をＮthread個のグループに分配したときのｉ番目（ｉ＝ １、２、３、・・・Ｎthread）のグループの更新処理実行時間の合計、ｍａｘ（Ｔthread、i）＝Ｎthread個のグループ更新処理実行時間の合計の中で最も大きいもの。
【請求項３】
請求項１または請求項２に記載するスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、
前記並列処理モードにおける前記仕分はＢＦＤ（Ｂｅｓｔ  Ｆｉｔ  Ｄｅｃｒｅａｓｉｎｇ）法によることを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システム。
【請求項４】
請求項１〜請求項３のいずれか一つに記載するスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、
前記並列処理モードにおける並列化処理は、ＯｐｅｎＭＰによることを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はスパースタブロー法を利用した電力系統の瞬時値解析システムに関し、特に内部状態更新過程の演算の高速化に適用して有用なものである。
【背景技術】
【０００２】
電力系統の瞬時値解析は、雷サージや開閉サージなどの過電圧や、突入電流などの過電流の解析に用いられてきたほか、パワーエレクトロニクス機器（以下、ＰＥ機器という）を含む電力系統の解析にも頻繁に用いられるようになってきた。最近では、直流送電設備とその両側の交流系統を含めた解析に瞬時値解析プログラムが用いられるなど、大規模系統の解析を行うケースが増えてきており、計算に要する時間が増大することから、その短縮に対するニーズは高い。
【０００３】
瞬時値解析の計算過程には、回路方程式の作成を行う定式化過程、回路方程式のＬＵ分解、前進・後退代入を行う求解過程、そして、回路部品が持つ内部状態（電圧源や電流源の値など）を更新する内部状態更新過程が存在する。解析回路の多くは、求解過程の計算時間が他の過程と比べて大きな割合を占めるが、一部の線路モデルなど、その内部状態の更新に多くの演算を必要とする部品が解析回路の中に多数存在する場合もある。かかる場合には、全計算過程に占める内部状態更新過程の割合が大きくなる。この場合、内部状態更新過程の高速化が解析時間の短縮に有効である。このように、解析時間の短縮には、求解過程と内部状態更新過程のそれぞれの高速化が必要である。
【０００４】
内部状態更新過程は、回路部品が持つ内部状態を計算時間ステップ毎に更新する過程であり、回路部品毎に処理が独立している。そのため、高速化の一つの方法として、処理の並列化が考えられる。特に、定式化手法の一種であるスパースタブロー法は、回路方程式中に存在する回路部品の内部状態の格納要素が、部品毎に独立して存在しているため、内部状態の計算から回路方程式への反映までの全てを独立に処理することができ、並列化向きの手法であると言える。
【０００５】
瞬時値解析の並列化に関する従来技術としては、非特許文献１や非特許文献２に開示されるものが存在する。しかしながら、これらは何れも専用の並列計算機やＰＣクラスタを用いる並列化手法であり、瞬時値解析プログラムのような、現場の実務担当者が日常の業務で利用するプログラム、言い換えれば、担当者が普段利用する汎用計算機（パーソナルコンピュータ、以下、ＰＣという）での動作が求められるプログラム用に開発された手法ではない。また、スパースタブロー法を用いた瞬時値解析プログラムの内部状態更新過程の並列化について取り組まれた例はない。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】田辺▲隆▼也、小島雪夫、上窪康博、大井誠、「並列処理計算機を用いた電力系統リアルタイムシミュレーション技術の開発」、日本シミュレーション学会第16回シミュレーション・テクノロジーコンファレンス、SESS6-10、pp. 255-258、1997.
【非特許文献２】田岡久雄、藤田雄一、「マルチコアクラスタにおける電力系統シミュレーションの階層的並列化」、電気学会論文誌B、Vol. 130、No. 12、pp. 1076-1082、2010.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記従来技術に鑑み、回路部品の内部状態更新過程の処理の高速化により瞬時値解析の高速化を図り得るスパースタブロー法を利用した電力系統の瞬時値解析システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成する本発明の第１の態様は、電力系統の回路方程式の作成をスパースタブロー法により作成する定式化過程と、前記回路方程式の求解を行なう求解過程と、前記電力系統の回路部品が持つ内部状態を更新する内部状態更新過程を有するとともに、所定時間の経過ごとに、前記求解過程および前記内部状態更新過程の処理を繰り返すスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、前記内部状態更新過程は、所定の数の部品の内部状態処理を時系列に逐次行う逐次処理モードおよび所定の数の部品の内部状態処理を複数のスレッドに分けて並列処理する並列処理モードのいずれかを選択するモード選択手段を有し、前記並列処理モードにおいて各スレッドに処理を仕分けるに際しては各スレッドにおける処理容量が平準化されるように最適化するとともに、最適化後の各スレッドの処理時間中の最大処理時間に並列化に伴うオーバーヘッドを加味した最大並列処理時間と、前記逐次処理に要する逐次処理時間とを比較し、最大並列処理時間が短いときのみ並列処理モードで所定の内部状態更新を行うようにしたことを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システムにある。
【０００９】
本態様によれば、最大並列処理時間が逐次処理時間よりも短いときのみ並列処理モードで所定の内部状態更新を行うようにしたので、内部状態更新過程における所定の処理を最短時間で実施することができる。この際、本態様は、スパースタブロー法を利用した瞬時値解析であるので、並列化処理との親和性が良く、この点でも所定の並列化処理を的確に実現することができる。すなわち、スパースタブロー法では、回路方程式中に存在する回路部品の内部状態の格納要素が、部品毎に独立して存在しているため、内部状態の計算から回路方程式への反映までの全てを独立に処理することができ、容易に並列化を行うことができる。
【００１０】
本発明の第２の態様は、第１の態様に記載するスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、前記最大並列処理時間と、前記逐次処理時間との比較の際には、前記逐次処理時間に所定の重みαを付けた下式（１）に基づく比較を行うようにしたことを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システム。
【００１１】
【数１】
0006300022.tif 000002
ただし、０＜α≦１、Ｔtotal＝前記所定の数の部品のそれぞれの更新処理実行時間の合計、Ｔoverhead＝オーバーヘッド時間、Ｎthread＝作成可能なスレッドの数、（Ｔthread、i）＝前記所定の数の部品をＮthread個のグループに分配したときのｉ番目（ｉ＝ １、２、３、・・・Ｎthread）のグループの更新処理実行時間の合計、ｍａｘ（Ｔthread、i）＝Ｎthread個のグループ更新処理実行時間の合計の中で最も大きいもの。
【００１２】
本態様によれば、並列化による各内部状態更新処理の計算の際、他の優先的な処理の割り込みがあった場合等、前記計算の速度を阻害する要因が発生した場合でも、重みα（０＜α≦１）により吸収して、最大並列処理時間と、逐次処理時間との比較結果をより正確かつ適正なものとすることができる。すなわち、並列化した場合の処理時間が、常に逐次処理の処理時間よりも遅くならないようにすることができる。
【００１３】
本発明の第３の態様は、第１または第２の態様に記載するスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、前記並列処理モードにおける前記仕分はＢＦＤ（Ｂｅｓｔ  Ｆｉｔ  Ｄｅｃｒｅａｓｉｎｇ）法によることを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システムにある。
【００１４】
本態様によれば、各並列処理の時間を良好に平準化することができる。
【００１５】
本発明の第４の態様は、第１〜第３の態様のいずれか一つに記載するスパースタブロー法を利用した電力系統の瞬時値解析システムにおいて、前記並列処理モードにおける並列化処理は、ＯｐｅｎＭＰによることを特徴とするスパースタブロー法を利用した電力系統の瞬時値解析システムにある。
【００１６】
本態様によれば、ＯｐｅｎＭＰによるプログラムソースコードの長期的な保守性が担保されているので、長期間に亘る安定した所定の処理動作を期待することができる。
【発明の効果】
【００１７】
本発明によれば、最大並列処理時間が短いときのみ並列処理モードで所定の内部状態更新を行うようにしたので、内部状態更新過程における所定の処理を最短時間で実施することができる。この際、本発明は、スパースタブロー法を利用した瞬時値解析であるので、並列化処理との親和性が良好であり、この点でも所定の並列化処理を的確に実現することができる。すなわち、スパースタブロー法では、回路方程式中に存在する回路部品の内部状態の格納要素が、部品毎に独立して存在しているため、内部状態の計算から回路方程式への反映までの全てを独立に処理することができ、容易に並列化を行うことができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態に係るスパースタブロー法を利用した電力系統の瞬時値解析システムを示すブロック図である。
【図２】内部状態の更新過程における回路部品の並列接続モデルを示す回路図である。
【図３】回路部品の内部状態更新処理時間を示す説明図である。
【図４】ＢＦＤ法を用いたタスクの分配の例を示す説明図である。
【図５】並列計算におけるＢＦＤ法を用いたタスクの分配の例を、逐次計算の場合との比較において示す説明図である。
【図６】本発明の実施の形態に係る瞬時値解析システムの全体の処理アルゴリズムを示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を図面に基づき詳細に説明する。
【００２０】
図１は本発明の実施の形態に係るスパースタブロー法を利用した電力系統の瞬時値解析システムを示すブロック図である。同図に示すように、本形態に係る瞬時値解析システムは、定式化過程Ｉ、求解過程IIおよび内部状態更新過程IIIの各処理過程を有する。定式化過程Ｉでは、定式化手法の一種であるスパースタブロー法により対象となる電力系統の回路方程式を作成する。求解過程IIでは、連立一次方程式となる回路方程式を解き、回路中の電圧、電流を求める。内部状態更新過程IIIでは、解析対象となっている電力系統の回路部品が持つ内部状態を更新する。さらに詳言すると、内部状態更新過程IIIでは所定の数の部品の内部状態処理を時系列に逐次行う逐次処理モード２および所定の数の部品の内部状態処理を複数のスレッド３Ａ〜３Ｄに分けて並列処理する並列処理モード３のいずれかをモード選択手段１で選択している。ここで、並列処理モード３において各スレッド３Ａ〜３Ｄに処理を仕分けるに際しては各スレッド３Ａ〜３Ｄにおける処理容量が平準化されるように最適化するとともに、最適化後の各スレッド３Ａ〜３Ｄの処理時間中の最大処理時間を求める。そして、並列化に伴うオーバーヘッドを加味した最大並列処理時間と、前記逐次処理に要する逐次処理時間とを比較し、最大並列処理時間が短いときのみ並列処理モード３で所定の内部状態更新を行うようモード選択手段１で逐次処理モード２または並列処理モード３のいずれかを選択している。
【００２１】
かくして判定手段IVに予め設定されている所定時間Δｔの経過ごとに、求解過程IIおよび内部状態更新過程IIIの処理を繰り返す。
【００２２】
上記各過程の処理に関しさらに詳細に説明する。
【００２３】
＜定式化過程＞
本形態におけるスパースタブロー法を用いた回路方程式は、回路にＮｎ個の独立ノード、Ｎｂ個の回路部品（ブランチ）が存在すると仮定した場合、回路中のＮｎ個のノードの電圧からなるベクトルｕ、Ｎｂ個の回路部品を流れる電流からなるベクトルｉ、Ｎｂ個の回路部品の両端電圧からなるベクトルｖを未知変数として取り扱う。その回路方程式は次式で与えられる。
【００２４】
【数２】
0006300022.tif 000003
Ｆ、ｘ、ｙの内部はそれぞれ、
【００２５】
【数３】
0006300022.tif 000004
である。ここで、ｓは回路中の電圧源、電流源の値により定まるベクトル、Ａは回路中のＮｎ個の独立ノードとＮｂ個のブランチの接続状態を関連付けるＮｂ×Ｎｎのブランチ対ノード接続行列、ＩはＮｂ×Ｎｂの単位行列、Ｂ＝[Ｂ１−Ｂ２]は各ブランチのブランチ電圧ｖとブランチ電流ｉを関連付けるＮｎ×２Ｎｂのブランチ特性行列である。ｘ、ｙは要素数が（Ｎｎ×２Ｎｂ）個のベクトルとなり、Ｆは（Ｎｎ×２Ｎｂ）×（Ｎｎ×２Ｎｂ）の行列となる。ここで、（３）式を利用して（２）式を展開すると、次の３つの式に分解できる。
【００２６】
【数４】
0006300022.tif 000005
【００２７】
【数５】
0006300022.tif 000006
【００２８】
【数６】
0006300022.tif 000007
【００２９】
これらは順に、キルヒホッフの電流則に基づくＮｎ個の方程式、キルヒホッフの電圧則に基づくＮｂ個の方程式、ブランチの特性方程式に基づくＮｂ個の方程式である。
【００３０】
＜求解過程＞
求解過程は、定式化過程で組立てた連立一次方程式である（２）式を解き、ｘを求める過程である。その手法には、通常、ＬＵ分解、前進・後退代入と呼ばれる効率的な行列演算手法が用いられ、特に （２）式中のＦは、その要素の多くが零である疎行列となることから、非零要素のみを取り扱うことで高速に演算を行う疎行列演算手法が用いられる。
【００３１】
最後に、回路部品の内部状態の更新過程であるが、これは、（２）式中の列ベクトルｓを更新する処理のことである。ｓは、Ｎｂ個の回路部品から得られるブランチ特性方程式の内部に存在し、電流源や電圧源などの値となる。具体的には、電圧源を除く回路部品の場合、数値積分手法を用いて図２に示すようなコンダクタンスＧと電流源Ｊの並列接続モデルに置き換えられるので、この部品がｂ番目のブランチであった場合、そのブランチ特性方程式は、
【００３２】
【数７】
0006300022.tif 000008
となる。これより、Ｂとｓのｂ行目は、
【００３３】
【数８】
0006300022.tif 000009
となる。ただし、上式の・・・は零要素である。また、回路部品が電圧源の場合、ＧとＪへの置き換えは行わず、電圧源のまま取り扱い、ブランチ特性方程式は次式となる。
【００３４】
【数９】
0006300022.tif 000010
ただし、Ｅは電圧源が発生する電圧値である。これより、Ｂとｓのｂ行目は、
【００３５】
【数１０】
0006300022.tif 000011
となる。ただし、上式の・・・は零要素である。
【００３６】
＜内部状態更新過程＞
上記（８）式および（１０）式に示すように、ｓの内部は、回路部品毎のＪやＥで構成されており、これが回路部品の内部状態となる。ここで、回路部品がインダクタンスやキャパシタンスなどの動的素子や、時刻によって値が変化する電圧源、電流源である場合、Ｅ、Ｊは時刻によって変化する。このため、更新が必要となる。この処理をすべての回路部品に対して行う過程が内部状態の更新過程となる。
【００３７】
ここで、スパースタブロー法における内部状態更新過程の特徴について述べておく。節点解析法では、回路方程式中の電流ベクトルの要素はノードの数だけしか存在せず、同一ノードに複数の回路部品が接続されている場合は、その内部状態（電流源の値）の和が、そのノードに対応した電流源ベクトルの要素として取り扱われる。したがって、全ての部品の内部状態の計算を行った後に、その和を計算する処理が必要であり、この過程の全てを並列に処理することは難しい。一方、スパースタブロー法では、ブランチ特性行列がそのまま回路方程式の一部として含まれているため、回路部品の数だけ内部状態の要素が独立して存在しており、和を求める処理はない。すなわち、回路部品の内部状態の計算から回路方程式への反映までの全てを回路部品毎に並列で処理できる。
【００３８】
内部状態更新処理は、回路部品によって実行時間が異なる。例えば、線形インダクタの場合、図２に示すように、コンダクタンスＧと電流源Ｊの並列接続モデルに置き換えられ、そのＪの値が、一つ前の時刻の同電流源の値となる。したがって、一つ前の時刻における電流値を記録しておき、その値を更新の際に代入すればよく、その実行時間は無視できるほど小さい。また、別の回路部品の例として、正弦波電流源の場合について見ると、振幅をＡ、周波数をｆとし、内部状態更新時の時刻をｔとすれば、
【００３９】
【数１１】
0006300022.tif 000012
となる。プログラムのコーディングにおいては１行で記述できるが、数学関数ｓｉｎをコールしているため、インダクタの場合と比べて、計算コストは大きい。
【００４０】
図３に、瞬時値解析プログラムで利用可能な線形回路部品の代表的なものについて、その内部状態の更新処理時間を実際に計測した結果を示す。この値は、１０００回の計測結果の平均値である。同図に示すように、実行時間は10-8 〜10-4秒オーダであり、実行時間が小さい部品と大きい部品とで、大きな差があることがわかる。特に、周波数依存分布定数線路モデル（以降、ＦＤモデル（Ｆｒｅｑｕｅｎｃｙ  Ｄｅｐｅｎｄｅｎｔ  Ｍｏｄｅｌ）と称す）の実行時間が大きい。
【００４１】
このように、回路部品によって内部状態更新処理の実行時間は異なり、その幅も広い。同処理の並列化においては、このような特徴を持った複数の回路部品の更新処理を、どのように並列して処理するかが課題となる。そこで、本形態における具体的な並列化アルゴリズムは次のようなものとした。
【００４２】
並列化処理の具体的な実装手段として本形態では共有メモリ型並列プログラミングの規格であるＯｐｅｎＭＰを採用した。ＯｐｅｎＭＰは、共有メモリ型並列プログラミングのためのＡＰＩ(Application Programming Interface) であり、コンパイラへの指示文や実行時ルーチン、プログラムの動作条件を設定する環境変数に関する仕様を定めたものである。ＯｐｅｎＭＰは、プログラムが並列実行可能部分に入ると、スレッドを指定された数だけ作成(fork)し、各スレッドが並行して処理を行う。並列実行可能部分の終了時には、全てのスレッドの処理完了を同期(join)させた後でスレッドを破棄し、逐次処理を再開する。かかるスレッドの作成、破棄、同期に一定の実行時間が必要であり、これがオーバーヘッドとなる。
【００４３】
並列化を行う際には、必ず上記オーバーヘッドが生じ、高速化を阻害する要因となるため、並列処理による処理時間の短縮を検討する場合においては、オーバーヘッドを考慮しておく必要がある。すなわち、並列処理のために複数に分割した処理の処理時間のうち、最長の処理時間にオーバーヘッドを考慮した時間を加算した時間が、逐次処理の処理時間よりも短い場合にのみ、並列化処理による内部状態更新過程における処理時間の短縮化を図り得る点に留意しなければならない。
【００４４】
本形態は、上述のＯｐｅｎＭＰを適用するとともに、後述するＢＦＤ（Ｂｅｓｔ  Ｆｉｔ  Ｄｅｃｒｅａｓｉｎｇ）法を適用し、さらにこれまで取り組まれた例がない、スパースタブロー法を用いた瞬時値解析プログラムの内部状態更新処理に対する並列化を行うものであり、その具体的な並列化アルゴリズムは次の通りである。
【００４５】
前述の如く回路部品の内部状態更新処理の実行時間は、回路部品によって大きさが異なる。ここで、各回路部品の内部状態更新処理を「タスク」と定義すれば、大きさが異なる複数のタスクを、任意の数のスレッドに最適に割り当てることが、内部状態更新過程の並列化に際し肝要である。そこで、本形態では、並列化に際しＢＦＤ法を適用した。これは、シンプルなヒューリスティックアルゴリズムとして古くから知られているもので、その手法は次の通りである（ここでは、荷物をタスク、箱をスレッドとして記述する）。
１）  まず、Ｎ個のタスクを実行時間が大きい順にソートする。
２）  各スレッドにタスクを先頭から順に1つずつ割り当てる。
３）  スレッド毎に、自身に割り当てられたタスクの処理時間の合計を計算し、それが最も低いスレッドに、次のタスクを割り当てる。
４）  ３）の処理をタスクが無くなるまで繰り返す。
【００４６】
図４に、内部状態更新時間が２．５μｓ〜０．１μｓである１２個の回路部品を、４スレッドに割り当てる例を示す。この手法は、割り当てを決定するために必要な計算負荷が低く、準最適な結果を与えることが特徴であり、本形態の問題に対しても、このＢＦＤ法を適用した。かかるＢＦＤに基づく並列化アルゴリズムの具体的な手順は次の通りである。
【００４７】
＜手順１：オーバーヘッドの見積り＞
並列化処理のオーバーヘッドを計測する。ここで、計測したオーバーヘッドをＴoverheadとする。
【００４８】
＜手順２：内部変数更新処理時間の見積り＞
全Ｎｂ個の回路部品一つずつに対して、内部状態更新処理の実行時間を計測する。ここで、全回路部品の更新処理実行時間の合計をＴtotalとする。
【００４９】
＜手順３：各スレッドへの回路部品の割り当て＞
作成可能なスレッドの数をＮthreadとしたとき、手順２で求めた実行時間を利用し、Ｎｂ個の部品を、ＢＦＤ法を用いてＮthread個のグループに分配する。分配の結果、ｉ番目（ｉ＝ １、２、３、・・・Ｎthread）のグループの実行時間の合計をＴthread、iとし、その中で最も大きいものをｍａｘ（Ｔthread、i）とする。
【００５０】
＜手順４：並列化の判定＞
次の計算を行い、結果が真の場合は、各スレッドに手順３で分配した各グループの処理を割り当て、並列化処理を行う。偽の場合は並列化を行わず、従来通りの逐次計算を行う。
【００５１】
【数１２】
0006300022.tif 000013
ここで、αは０より大きく１以下の正の実数である。
【００５２】
手順１では、オーバーヘッドの計測を行う。ここで計測したオーバーヘッドは、並列化の実行可否の判断（手順４）で利用される。実際のプログラムの動作環境を考えると、オペレーティングシステム ＯＳ) 等、バックグラウンドで動作しているプログラムからの割り込みなどにより、特定のスレッドの完了タイミングに遅れが生じる場合があり、計測結果にばらつきが生じる。そのため、計測は複数回行い、その平均を取ることが望ましい。この計測は１回だけ実施すれば良く、１回のスレッド作成・破棄に必要な実行時間（オーバーヘッド）はマイクロ秒オーダであり、仮に１０００回計測した場合でも、その所要時間はミリ秒オーダとなるため、プログラムの実行速度に与える影響はほとんどない。
【００５３】
手順２では、内部変数更新処理時間の見積りを行う。手順１同様、計測は複数回行い、その平均を取ることが望ましい。
【００５４】
手順３では、手順２で計測した結果に基づき、ＢＦＤ法を用いてタスク（各回路部品の内部状態更新処理をいう。以下、同じ）の分配を行う。ここでは、まだ並列化処理を行う前の段階であるため、スレッドへの割り当ては行わない。
【００５５】
手順４では、並列化の判定を行う。（１２）式は、左辺が逐次計算の場合の処理時間に一定の値（重みα）を乗じたもの、右辺が並列計算の場合の処理時間を示している。よって、理論的には、αを１とすれば、いかなる場合でも計算時間が逐次計算の場合を上回ることはない。しかしながら、前述した通り、実際のプログラムではバックグラウンドで動作するプログラムからの割り込みやリソースの競合などにより、スレッド間の同期に時間がかかる場合がある。このように、並列処理実行中は、逐次処理の場合と比べて実行環境の影響を受けて処理時間が変動しやすい。そこで、αを１よりも小さくし、ある程度以上高速化できる見込みがある場合のみ並列化を行う方法が、実用的である。
【００５６】
図５に、Ｎthreadが２、Ｔoverheadが２．０μｓ（図ではスレッドの作成、破棄にそれぞれ１．０μｓと表記し、合計２．０μｓとなる）、回路部品の数が７個でそれぞれの内部状態更新時間が１．５、１．２、０．８、０．４、０．４、０、２、０．２μｓであった場合の例を示す。この場合、Ｔtotalは全回路部品の内部状態更新処理の合計であるから４．７μｓとなる。ＢＦＤ法によるタスク分配の結果、Ｔthread、1、Ｔthread、2はそれぞれ２．３μｓ、２．４μｓとなり、ｍａｘ（Ｔthread、1）は２．４μｓとなる。ここで、重みαを１．０とした場合、（１１）式は （１．０×４．７）≧（２．４×２．０）で結果は真となり、並列化を行う。重みαを０．８とした場合は、左辺が右辺より小さくなり、偽となるため、並列化は行わない。
【００５７】
以上の説明で詳述した定式化過程Ｉ、求解過程II、内部状態更新過程IIIを含む本形態に係る瞬時値解析システムの全体の処理アルゴリズムは図６のフローチャートに示すようになる。
【産業上の利用可能性】
【００５８】
本発明は電力系統における異常現象や電力品質の解析を行う産業分野において有効に利用することができる。
【符号の説明】
【００５９】
Ｉ              定式化過程
II              求解過程
III              内部状態更新過程
１              モード選択手段
２              逐次処理モード
３              並列処理モード
３Ａ〜３Ｄ      スレッド
【図１】
0006300022.tif 000015
【図２】
0006300022.tif 000016
【図３】
0006300022.tif 000017
【図４】
0006300022.tif 000018
【図５】
0006300022.tif 000019
【図６】
0006300022.tif 000020