前記設定値決定手段は、前記生成内部値が変化しなかった場合には前記第1の値を設定することを決定し、前記生成内部値が変化した場合には前記第2の値を設定することを決定する、
請求項4に記載のシステム。
前記設定値決定手段は、前記生成内部値が変化しなかった場合には前記第1の値を設定することを決定し、前記生成内部値が変化した場合には前記第2の値を設定することを決定する、
請求項7に記載の装置。
内部値を生成する内部値生成手段と、少なくとも1つの他の装置と通信を行う通信手段とを備える装置によって構成された通信によるネットワークにおいて、当該ネットワークを構成している装置の台数を探索する方法であって、
前記内部値生成手段が内部値を生成する内部値生成工程と、
前記内部値生成工程で生成した内部値を生成内部値として、前記他の装置の少なくとも1つに送信する送信工程と、
前記他の装置の少なくとも1つが送信した内部値を受信内部値として受信する受信工程と、
を各装置で行わせるものであり、
前記内部値生成工程は、
前記受信内部値から前記生成内部値をそれぞれ減算して減算結果をすべて加算する演算工程と、
前記演算工程で出力された演算結果を積分して、前記内部値を算出する積分工程と、
を備えており、
前記ネットワークを構成している装置のうちのいずれか1つの装置において前記生成内部値の初期値として第1の値を設定し、その他の装置において前記生成内部値の初期値として第2の値を設定する設定工程と、
前記設定工程の後、前記内部値生成工程、前記送信工程および前記受信工程を繰り返して、収束した生成内部値に基づいて、前記ネットワークを構成している装置の台数を算出する台数算出工程と、
を備えていることを特徴とする方法。
【発明を実施するための形態】
【0024】
以下、本発明の実施の形態を、図面を参照して具体的に説明する。
【0025】
図1は、第1実施形態に係る装置の内部構成を示す機能ブロック図である。
図2は、各装置の接続状態を示す図である。
【0026】
図1に示すように、装置Aは、内部値X
iを生成する内部値生成部1、他の装置Aとの間で通信を行う通信部2、および、内部値X
iに初期値を設定して、収束した内部値X
iからネットワークを構成している装置の台数(以下では、「構成台数」とする)を算出する台数探索部3を備えている。なお、
図1においては、構成台数を探索するために必要な構成のみを記載している。実際には、各装置Aは、その他の構成を備えている。その他の構成は、コンセンサス協調制御を行うための構成(すなわち、内部値生成部1と同様の構成で所定の内部値を生成して制御を行ったり、演算を行ったりするもの)であってもよいし、それ以外の機能を果たすための構成であってもよい。
【0027】
通信部2は、他の装置Aとの間で通信を行うものである。通信部2は、内部値生成部1が生成した内部値X
iを入力され、他の装置Aの通信部2に送信する。また、通信部2は、他の装置Aの通信部2から受信した内部値X
jを、内部値生成部1に出力する。なお、通信方法は限定されず、有線通信であってもよいし、無線通信であってもよい。内部値X
iが本発明の「生成内部値」に相当し、内部値X
jが本発明の「受信内部値」に相当する。
【0028】
図2(a)に示すように、装置Aは他の装置Aと通信を行っており、通信を行っている装置A全体でネットワークを構成している。
図2(a)においては、8つの装置A(A1〜A8)がネットワークを構成している状態を示している。この場合、ネットワークを構成している装置A1〜A8が、本発明の「システム」に相当する。なお、実際のシステムは、より多くの装置Aで構成されているが、説明の簡略化のために少ないケースを示している。
【0029】
図2(a)に示す実線矢印は、相互通信を行っていることを示している。装置A1は装置A2および装置A8とのみ相互通信を行っており、装置A2は装置A1および装置A3とのみ相互通信を行っている。また、装置A3は装置A2および装置A4とのみ相互通信を行っており、装置A4は装置A3および装置A5とのみ相互通信を行っており、装置A5は装置A4および装置A6とのみ相互通信を行っている。また、装置A6は装置A5および装置A7とのみ相互通信を行っており、装置A7は装置A6および装置A8とのみ相互通信を行っており、装置A8は装置A7および装置A1とのみ相互通信を行っている。このように、装置Aの通信部2は、ネットワークを構成している装置Aのうち、少なくとも1つの装置A(例えば、近隣に位置するものや、通信が確立されたもの)の通信部2と通信を行っており、ネットワークを構成している任意の2つの装置Aに対して通信経路が存在している状態(以下ではこの状態を「連結状態」と言う。)であればよく、ネットワークを構成しているすべての装置Aの通信部2と通信を行う必要はない。
【0030】
例えば、装置Aが装置A2の場合、通信部2は、内部値生成部1が生成した内部値X
2を装置A1およびA3の通信部2に送信し、装置A1の通信部2から内部値X
1を受信し、装置A3の通信部2から内部値X
3を受信する。
【0031】
図1に戻って、内部値生成部1は、例えばマイクロコンピュータなどによって実現されており、生成した内部値X
iと、通信部2より入力される、他の装置Aの内部値X
jとを用いて、内部値X
iを生成する。内部値X
iと内部値X
jとが異なっていても、内部値生成部1での演算処理が繰り返されることで、内部値X
iと内部値X
jとが共通の値に収束する。
図1に示すように、内部値生成部1は、演算部11、乗算器12および積分器13を備えている。
【0032】
演算部11は、下記(1)式に基づく演算を行う。すなわち、演算部11は、通信部2から入力される各内部値X
jから、内部値生成部1が生成した内部値X
iをそれぞれ減算し、減算結果をすべて加算した演算結果u
iを乗算器12に出力する。
【数1】
【0033】
例えば、装置Aが装置A2であり(
図2(a)参照)、装置A1および装置A3から同時に内部値X
jを受信した場合、演算部11は、下記(2)式の演算を行い、演算結果u
2を出力する。
【数2】
【0034】
乗算器12は、演算部11から入力される演算結果u
iに所定の係数εを乗算して積分器13に出力する。係数εは、0<ε<1/d
maxを満たす値であり、あらかじめ設定されている。d
maxは、通信部2に同時に入力される可能性のある内部値X
jの数の最大値である。なお、係数εは、積分器13への入力が大きく(小さく)なりすぎて、内部値X
iの変動が大きくなりすぎることを抑制するために、演算結果u
iに乗算されるものである。
【0035】
積分器13は、乗算器12から入力される値を積分することで内部値X
iを生成して出力する。積分器13は、前回生成した内部値X
iに乗算器12から入力される値を加算することで内部値X
iを生成する。内部値X
iは、切替部31を介して、通信部2および演算部11に出力される。
【0036】
本実施形態において、内部値生成部1は、生成した内部値X
iと、通信部2より入力される、他の装置Aの内部値X
jとを用いて、内部値X
iを生成する。内部値X
iが各内部値X
jの相加平均値より大きい場合、演算部11が出力する演算結果u
iは負の値になる。そうすると、積分器13には負の値が加算されることで、内部値X
iは小さくなる。一方、内部値X
iが各内部値X
jの相加平均値より小さい場合、演算部11が出力する演算結果u
iは正の値になる。そうすると、積分器13には正の値が加算されることで、内部値X
iは大きくなる。つまり、内部値X
iは各内部値X
jの相加平均値に近づいていく。この処理が各装置Aそれぞれで行われることにより、各装置Aの内部値X
iは同じ値に収束する。内部値X
iが同じ収束値Xαに収束することは、数学的にも証明されている(非特許文献1,2参照)。また、収束値Xαが、下記(3)式に示すように、各装置Aの内部値X
iの初期値の相加平均値になることも証明されている。nはネットワークを構成している装置Aの数(構成台数)であり、下記(3)式は、装置A1〜Anの内部値X
1〜X
nの初期値をすべて加算して構成台数nで除算した相加平均値を算出することを示している。
【数3】
【0037】
台数探索部3は、例えばマイクロコンピュータなどによって実現されており、構成台数を探索するためのものである。
図1に示すように、台数探索部3は、切替部31、タイミング生成部32、収束検出部33、および、台数算出部34を備えている。
【0038】
切替部31は、内部値X
iに初期値を設定する。切替部31は、積分器13から内部値X
iを入力され、通常時には内部値X
iをそのまま演算部11および通信部2に出力する。しかし、タイミング生成部32から初期値入力の指示が入力された場合、「0」または「1」を内部値X
iの初期値として設定し、演算部11および通信部2に出力する。初期値は、基本的には「0」が設定されているが、ネットワークを構成している装置Aのうちのいずれか1つの装置Aでは、「1」が設定される。なお、初期値として「1」が設定されるのは、いずれの装置Aであっても構わない。例えば、全ての装置Aに「0」を設定しておいて、ユーザが一番身近な装置Aのみ、「1」に変更すればよい。本実施形態においては、「1」が本発明の「第1の値」に相当し、「0」が本発明の「第2の値」に相当する。
【0039】
タイミング生成部32は、所定のタイミングで、切替部31に初期値入力の指示を出力する。所定のタイミングは、構成台数を探索したいタイミングとして、あらかじめ設定されている。例えば、メンテナンスのために構成台数を探索するのであれば、メンテナンスのタイミングに合わせて設定され、構成台数に応じた係数を制御に用いるのであれば、当該制御に必要なタイミングに合わせて設定される。各装置Aにおいて同じタイミングで初期値を設定する必要があるので、各装置Aのタイミング生成部32は、タイミングを一致させるための時刻を共有している。例えば、タイミング生成部32は、インターネットにアクセスして、定期的に正確な時刻を入手してもよいし、GPS(Global Positioning System)を備えている場合は、受信した情報から時刻情報を入手するようにしてもよい。また、タイミング生成部32は、通信部2に通信を指示するタイミング信号を出力するようにしてもよい。
【0040】
収束検出部33は、内部値X
iが収束したことを検出して、収束した内部値X
iである収束値Xαを台数算出部34に出力する。収束検出部33は、切替部31が出力した内部値X
iが変化しなくなった場合に、内部値X
iが収束したと判断する。具体的には、収束検出部33は、内部値X
iと前回の内部値X
iとの差を算出し、当該差が所定の誤差の範囲内にある場合に内部値X
iが変化していないと判断する。そして、その状態が所定の時間継続した場合に、収束したと判断する。本実施形態では、所定の時間として、演算部11での演算の回数を利用している。なお、収束検出部33の構成は限定されない。収束検出部33は、収束値Xαを出力できればよい。例えば、内部値X
iと前回の内部値X
iとの差が所定の誤差の範囲内にある場合に収束したと判断するようにしてもよい。ただし、この場合は、所定の誤差の範囲が十分狭い必要がある。また、収束に必要な時間を考慮して、その時間が十分経過したときに、内部値X
iが収束したと判断して、このときの内部値X
iを収束値Xαとして出力するようにしてもよい。ただし、構成台数および各装置Aの通信接続の具合によって収束にかかる時間は変化する。構成台数が少ない場合や、各装置Aが多数の装置Aと通信している場合などには、収束にかかる時間が短くなるが、逆のケースの場合は、収束にかかる時間が長くなる。したがって、構成台数および各装置Aの通信接続の具合があらかじめ想定でき、収束にかかる時間が想定できる場合は、それに応じた時間を設定すればよい。一方、収束にかかる時間が想定できない場合は、十分長い時間を設定する必要がある。
【0041】
台数算出部34は、収束検出部33より入力される収束値Xαに基づいて、構成台数を算出する。上述したように、収束値Xαは、各装置Aの内部値X
iの初期値の相加平均値になる(上記(3)式参照)。各装置Aの内部値X
iの初期値は、1つだけ「1」が設定され、それ以外は「0」が設定されている。したがって、初期値の合計値が「1」になるので、構成台数をnとすると、収束値Xαは1/nになる。したがって、構成台数nは、収束値Xαの逆数(n=1/Xα)になる。台数算出部34は、収束検出部33より入力される収束値Xαの逆数(1/Xα)を算出して、構成台数nとして出力する。出力された構成台数nは、制御のための係数の演算に用いられたり、図示しない表示部に表示されてメンテナンスに利用される。なお、構成台数nの使用先は、限定されない。
【0042】
図3は、装置Aが行う構成台数nを探索するための処理(以下では、「構成台数探索処理」とする)を説明するためのフローチャートである。
【0043】
まず、初期値入力の指示を示すタイミング入力が有ったか否かが判別される(S1)。具体的には、タイミング生成部32から切替部31に、初期値入力の指示が入力されたか否かが判別される。タイミング入力が無い場合(S1:NO)、ステップS1に戻って判別が繰り返される。タイミング入力が有った場合(S1:YES)、ステップS2に進む。つまり、タイミング入力を待って、タイミング入力が有った時に、具体的な処理(S2〜S7)が開始される。
【0044】
次に、内部値X
iに初期値が入力される(S2)。具体的には、切替部31が内部値X
iに初期値「0」または「1」を設定する。次に、内部値X
iが送信され(S3)、内部値X
jが受信される(S4)。具体的には、通信部2が、内部値生成部1より入力される内部値X
iを他の装置Aに送信し、また、他の装置Aから内部値X
jを受信する。そして、内部値X
iが生成される(S5)。具体的には、演算部11が内部値X
iおよび内部値X
jに基づいて演算を行い、乗算器12が演算結果u
iに所定の係数εを乗算して、積分器13が乗算結果を積分することで、内部値X
iを生成する。
【0045】
次に、内部値X
iが収束したか否かが判別される(S6)。具体的には、収束検出部33が内部値X
iが収束したか否かを判別する。収束していない場合(S6:NO)、ステップS3に戻って、ステップS3〜S6が繰り返される。収束した場合(S6:YES)、構成台数が算出され(S7)、構成台数探索処理は終了する。具体的には、収束検出部33は、内部値X
iが収束したと判断すると、収束値Xαを台数算出部34に出力し、台数算出部34は収束値Xαに基づいて構成台数を算出して出力する。なお、構成台数探索処理は、上述したものに限定されない。
【0046】
次に、
図2に示す各装置A1〜A8において、構成台数が探索できることを確認するシミュレーションについて説明する。
【0047】
図4は、当該シミュレーションの結果を示す図である。
図4(a)は、
図2(a)に示す各装置A1〜A8の内部値X
iの時間変化を示している。縦軸は各内部値X
iの値を示しており、横軸は演算部11での演算回数を示している。装置A1の初期値を「1」、装置A2〜A8の初期値を「0」として、シミュレーションを開始した。
【0048】
図4(a)に示すように、演算回数が増加するごとに各装置A1〜A8の内部値X
iは同じ値に近づいていき、演算回数が80回ぐらいでほぼ同じ値に収束している。収束値Xαは、0.125になっている。よって、構成台数n=1/Xα=1/0.125=8台と算出される。
【0049】
図4(b)は、
図2(b)に示す各装置A1〜A8の内部値X
iの時間変化を示している。
図2(b)は、
図2(a)において、装置A8がネットワークから切断された状態である。すなわち、装置A1は装置A2とのみ相互通信を行っており、装置A2は装置A1および装置A3とのみ相互通信を行っている。また、装置A3は装置A2および装置A4とのみ相互通信を行っており、装置A4は装置A3および装置A5とのみ相互通信を行っており、装置A5は装置A4および装置A6とのみ相互通信を行っている。また、装置A6は装置A5および装置A7とのみ相互通信を行っており、装置A7は装置A6とのみ相互通信を行っている。そして、装置A8はいずれの装置とも通信を行っていない。この場合でも、装置A1〜A7は、連結状態となっている。
図4(a)におけるシミュレーションと同様、装置A1の初期値を「1」、装置A2〜A8の初期値を「0」として、シミュレーションを開始した。
【0050】
図4(b)に示すように、演算回数が増加するごとに各装置A1〜A7の内部値X
iは同じ値に近づいていくが、装置A8の内部値X
iは「0」のままである。そして、各装置A1〜A7の内部値X
iは、演算回数が200回ぐらいでほぼ同じ値に収束している。収束値Xαは、0.142857になっている。よって、各装置A1〜A7では、構成台数n=1/Xα=1/0.142857=7台と算出される。一方、装置A8の内部値X
iは「0」のままで、収束値Xαは「0」になり、構成台数n=1/Xαは計算できないので、装置A8がネットワークから切り離されていることが判る。
【0051】
次に、装置Aの作用効果について説明する。
【0052】
本実施形態によると、内部値生成部1は、生成した内部値X
iと通信部2が受信した内部値X
jとに基づく演算によって、内部値X
iを生成する。ネットワークを構成している各装置Aの内部値生成部1がこれを行うことで、すべての装置Aでの内部値X
iが相加平均値に収束する。また、ネットワークを構成している装置Aのうちのいずれか1つの装置Aにおいて内部値X
iとして「1」が設定され、その他の装置Aにおいて内部値X
iとして「0」が設定されている。したがって、収束した内部値X
iである収束値Xαは、構成台数nの逆数になる。台数算出部34は、収束値Xαから構成台数nを算出する。これにより、ネットワークを構成している装置A全体を管理する管理装置が設けられていない場合でも、ネットワークを構成している装置Aの台数を探索することができる。
【0053】
また、本実施形態によると、内部値X
iの初期値として、1つの装置Aでは「1」が設定され、その他の装置Aでは「0」が設定されている。したがって、収束値Xαが構成台数nの逆数になる。よって、構成台数nを容易に算出することができる。
【0054】
なお、本実施形態においては、各装置Aが相互通信を行う場合について説明したが、これに限られず、片側通信を行うようにしてもよい。例えば、
図5に示すように、装置A1が装置A8から受信のみを行って、装置A2に送信のみを行い、装置A2が装置A1から受信のみを行って、装置A3に送信のみを行い、装置A3が装置A2から受信のみを行って、装置A4に送信のみを行い、装置A4が装置A3から受信のみを行って、装置A5に送信のみを行い、装置A5が装置A4から受信のみを行って、装置A6に送信のみを行い、装置A6が装置A5から受信のみを行って、装置A7に送信のみを行い、装置A7が装置A6から受信のみを行って、装置A8に送信のみを行い、装置A8が装置A7から受信のみを行って、装置A1に送信のみを行う場合でも、内部値X
iを相加平均値に収束させることができる。より一般的に言うと、ある装置Aから送信先をたどっていくと、任意の装置Aに到達することができる状態(グラフ理論における「全域木を含む」状態)であることが、内部値X
iを収束させるための条件であり、さらに、任意の装置Aから送信先をたどっていくと、任意の装置Aに到達することができる状態(グラフ理論における「強連結」状態)であり、かつ、すべての装置Aにおいて、送信先の装置Aの数と送信元の装置Aの数が等しい状態(グラフ理論における「平衡グラフ」状態)であることが内部値X
iを相加平均値に収束させるための条件である。
【0055】
また、本実施形態においては、内部値X
iの初期値として、1つの装置Aでは「1」が設定され、その他の装置Aでは「0」が設定される場合について説明したが、これに限られない。初期値がこれら以外であっても、収束値Xαから構成台数nを算出することができる。例えば、1つの装置Aでの初期値を「a」とし、その他の装置Aでの初期値を「b」とすると、構成台数nは、n=(a−b)/(Xα−b)で演算することができる。なお、b=0とすることで、n=a/Xαとして容易に算出することができ、さらに、a=1とすることで、nをXαの逆数として、より容易に算出することができる。つまり、1つの装置Aでは「1」を設定し、その他の装置Aでは「0」を設定することが、台数算出部34での演算を最も容易にする。なお、1つの装置Aでは想定される構成台数n’を設定し、その他の装置Aでは「0」を設定した場合、実際の構成台数nが想定される構成台数n’と等しければ、収束値Xαは「1」になる。したがって、この場合、収束値Xαが「1」であれば、収束値Xαに基づく演算をするまでもなく、実際の構成台数が想定される構成台数と等しいと判断することができる。
【0056】
また、本実施形態においては、タイミング生成部32が、インターネットなどから入手した時刻情報に基づくタイミングで、切替部31に初期値入力の指示を出力する場合について説明したが、これに限られない。タイミング生成部32の他の実施例について、以下に説明する。
【0057】
図6は、他の実施例であるタイミング生成部32’の内部構成を示す機能ブロック図である。タイミング生成部32’は、内部値生成部1と類似した構成で各装置Aの内部位相θ
iの同期を行い、当該内部位相θ
iに基づくタイミングで、切替部31に初期値入力の指示を出力する。タイミング生成部32’は、内部位相生成部8およびタイミング出力部9を備えている。また、通信部2は、内部値X
iに加えて内部位相θ
iの送受信も行う。
【0058】
内部位相生成部8は、切替部31に初期値入力の指示を出力するタイミングを決定するための内部位相θ
iを生成するものである。内部位相生成部8は、生成した内部位相θ
iを通信部2およびタイミング出力部9に出力する。内部位相生成部8は、生成した内部位相θ
iと、通信部2より入力される、他の装置Aの内部位相θ
jとを用いて、内部位相θ
iを生成する。内部位相θ
iと内部位相θ
jとが異なっていても、内部位相生成部8での演算処理が繰り返されることで、内部位相θ
iと内部位相θ
jとが共通の内部位相に収束する。
図6に示すように、内部位相生成部8は、演算部81、乗算器82、加算器83および積分器84を備えている。
【0059】
演算部81は、下記(4)式に基づく演算を行う。すなわち、演算部81は、通信部2から入力される各内部位相θ
jから、内部位相生成部8が生成した内部位相θ
iをそれぞれ減算し、減算結果をすべて加算した演算結果u’
iを乗算器82に出力する。
【数4】
【0060】
乗算器82は、演算部81から入力される演算結果u’
iに所定の係数ε’を乗算して加算器83に出力する。係数ε’は、0<ε’<1/d’
maxを満たす値であり、あらかじめ設定されている。d’
maxは、通信部2に同時に入力される可能性のある内部位相θ
jの数の最大値である。なお、係数ε’は、積分器84への入力が大きく(小さく)なりすぎて、内部位相θ
iの変動が大きくなりすぎることを抑制するために、演算結果u’
iに乗算されるものである。したがって、内部位相生成部8での処理が連続時間処理の場合は、乗算器82を設ける必要はない。
【0061】
加算器83は、乗算器82からの入力と、所定の角周波数ω
0および積分器84のサンプリング周期Tに基づく値Tω
0を加算して、積分器84に出力する。値Tω
0は、サンプリング周波数f(=1/T)のタイミングで入力され、乗算器82からは、演算部81が演算を行ったタイミング(すなわち、内部位相θ
jを受信したタイミング)で乗算結果が入力される。積分器84は、加算器83からの入力を積分することで内部位相θ
iを生成して出力する。積分器84は、前回生成した内部位相θ
iに加算器83からの入力を加算することで内部位相θ
iを生成する。また、積分器84は、内部位相θ
iが無限に発散してしまうことを防ぐために、所定の閾値S(2πの倍数)を上限値として、内部位相θ
iを(0≦θ
i<S)の範囲の値として出力する。つまり、積分器84は、内部位相θ
iが範囲の上限値である閾値Sに達した場合に、ゼロクリアすることで、内部位相θ
iを範囲の下限値である「0」にする。内部位相θ
iは、タイミング出力部9、通信部2および演算部81に出力される。なお、本実施形態においては、内部位相生成部8が出力する内部位相θ
iを、タイミング出力部9がそのまま使用できるように、積分器84のサンプリング周波数fを高くして、サンプリング周波数fに応じたTω
0を加算するようにしているが、これに限られない。例えば、サンプリング周波数fを低くしたり(例えば1Hz)、より高くしてもよい。この場合は、タイミング出力部9に出力するとき、または、タイミング出力部9内部で、分周するなどして調整すればよい。また、加算する値を角周波数ω
0と関係ない値(例えば「1」)としてもよい。
【0062】
内部位相生成部8は、生成した内部位相θ
iと、通信部2より入力される、他の装置Aの内部位相θ
jとを用いて、内部位相θ
iを生成する。内部位相θ
iが各内部位相θ
jの相加平均値より大きい場合、演算部81が出力する演算結果u’
iは負の値になる。そうすると、積分器84より出力される内部位相θ
iは減少されて、内部位相θ
jに近づく。一方、内部位相θ
iが内部位相θ
jより小さい場合、演算部81が出力する演算結果u’
iは正の値になる。そうすると、積分器84より出力される内部位相θ
iは増加されて、内部位相θ
jに近づく。この処理が各装置Aそれぞれで行われることにより、各装置Aの内部位相θ
iは同じ値に収束する。内部位相θ
iは時間とともに変化するものであり、角周波数ω
0に応じて変化する成分と、初期位相のずれを補償するように変化する成分とを合成したものと考えることができる。後者が同じ値θαに収束することで、各装置Aの内部位相θ
iも同じ値に収束する。後者が同じ値θαに収束することは、数学的にも証明されている(非特許文献1,2参照)。また、収束値θαが、下記(5)式に示すように、各装置Aの内部位相θ
iの初期値の相加平均値になることも証明されている。下記(5)式は、装置A1〜Anの内部位相θ
1〜θ
nの初期値をすべて加算してnで除算した相加平均値を算出することを示している。
【数5】
【0063】
タイミング出力部9は、内部位相生成部8より入力される内部位相θ
iに基づいて、切替部31に初期値入力の指示を出力する。例えば、タイミング出力部9は、内部位相θ
iが「0」になるタイミングで初期値入力の指示を出力する。なお、初期値入力の指示を出力するタイミングは「0」に限定されない。また、内部位相θ
iが「0」になった回数が予定の回数になったタイミングで出力するようにしてもよい。また、タイミング出力部9は、通信部2にも、処理周期に応じて分周されたタイミング信号を出力するようにしてもよい。
【0064】
本実施例に係るタイミング生成部32’において、各装置Aの内部位相θ
iは同じ値に収束することで同期する。したがって、各装置Aのタイミング生成部32’は、同じタイミングで、切替部31に初期値入力の指示を出力することができる。
【0065】
なお、内部位相θ
iの初期位相のずれを補償するように変化する成分の収束値θαは、各装置Aの内部位相θ
iの初期値の相加平均値でなくてもよく、内部位相θ
iが同じ値に収束すればよい。したがって、演算部81に設定する演算式を上記(4)式とは異なる式として、収束値θαが例えば初期値の加重平均値や、相乗平均値(幾何平均値)、調和平均値、P次平均値になるようにしてもよい。また、後述するアルゴリズムを用いて、収束値θαを初期値の最大値(または最小値)とするようにしてもよい。
【0066】
上記第1実施形態においては、いずれかの装置Aにおいて、内部値X
iの初期値に「1」を設定する必要がある。この初期値の設定を自動化した場合を、第2実施形態として、以下に説明する。
【0067】
図7は、第2実施形態に係る装置A’の内部構成を示す機能ブロック図である。同図において、第1実施形態に係る装置A(
図1参照)と同一または類似の要素には、同一の符号を付している。第2実施形態に係る装置A’は、演算部11および切替部31に代えて演算部11’および切替部31’を備えている点と、設定値決定部35を備えている点とで、第1実施形態に係る装置Aと異なる。
【0068】
演算部11’は、平均合意部11aおよび最大合意部11bを備えており、切替部31’からの指示により、両者を切り替える。平均合意部11aは、第1実施形態に係る演算部11と同じ機能を果たす。したがって、演算部11’が平均合意部11aに切り替えられている場合、内部値生成部1は、内部値X
iを、各装置A’の内部値X
iの初期値の相加平均値に収束させる。本実施形態においては、平均合意部11aが本発明の「演算手段」に相当する。
【0069】
最大合意部11bは、下記(6)式に基づく演算を行う。α
ijは、X
j>X
iの場合に「1」、X
j≦X
iの場合に「0」となる関数である。すなわち、最大合意部11bは、通信部2より入力される各内部値X
jから、内部値生成部1が生成した内部値X
iをそれぞれ減算し、減算結果が正の値であるものだけをすべて加算した演算結果u
iを乗算器12に出力する。本実施形態においては、最大合意部11bが本発明の「第2の演算手段」に相当する。
【数6】
【0070】
例えば、装置A’が
図2(a)に示す装置A2の場合、X
1>X
2>X
3であった場合、最大合意部11bは、下記(7)式の演算を行い、演算結果u
2を出力する。
【数7】
【0071】
内部値生成部1は、生成した内部値X
iと、通信部2より入力される、他の装置A’の内部値X
jとを用いて、内部値X
iを生成する。演算部11’が最大合意部11bに切り替えられている間は、内部値X
iがいずれかの内部値X
jより小さい場合、その差が加算されて、内部値X
iは大きくなる。これにより、内部値X
iは、内部値X
jの最大値に近づいていく。内部値X
iが、内部値X
jの最大値に一致した場合、演算結果u
iは「0」になって、演算結果u
iは変化しなくなる。しかし、この処理が各装置A’それぞれで行われるので、より大きな内部値があると、いずれかの内部値X
jがその内部値に一致するように変化して、内部値X
iもその内部値X
jに一致するようになる。したがって、内部値X
iは全体での最大値に収束する。つまり、内部値生成部1は、内部値X
iを各装置A’の内部値X
iの初期値の最大値に収束させる。
【0072】
切替部31’は、タイミング生成部32から初期値入力の指示が入力された場合、乱数を発生させて、当該乱数を内部値X
iの初期値として設定し、演算部11’および通信部2に出力する。このとき、演算部11’は、最大合意部11bに切り替えられている。したがって、内部値生成部1は、内部値X
iを各装置A’の内部値X
iの初期値の最大値に収束させるように機能する。そして、切替部31’は、設定値決定部35から設定値を入力された場合、演算部11’を平均合意部11aに切り替え、当該設定値を内部値X
iの初期値として設定し、演算部11’および通信部2に出力する。したがって、内部値生成部1は、内部値X
iを各装置A’の内部値X
iの初期値の相加平均値に収束させるように機能する。
【0073】
設定値決定部35は、切替部31’が出力した内部値X
iに基づいて、切替部31’に入力する設定値を決定する。設定値決定部35は、内部値X
iの初期値が、各装置A’の内部値X
iの初期値の最大値である場合には、設定値「1」を切替部31’に出力し、それ以外の場合には、設定値「0」を切替部31’に出力する。最大値は1つなので、いずれか1つの装置A’においてのみ、設定値「1」が切替部31’に出力され、その他の装置A’においては、設定値「0」が切替部31’に出力されることになる。演算部11’が最大合意部11bに切り替えられている内部値生成部1は、内部値X
iを各装置A’の内部値X
iの初期値の最大値に収束させるように機能するので、内部値X
iの初期値が各装置A’の内部値X
iの初期値の最大値でない場合、内部値X
iは、最大値に収束するように変化する。一方、内部値X
iの初期値が各装置A’の内部値X
iの初期値の最大値である場合、内部値X
iは変化しない。したがって、内部値X
iが変化するか否かで、内部値X
iの初期値が最大値であるか否かを判断することができる。設定値決定部35は、切替部31’が出力した内部値X
iの初期値と、所定時間経過後(例えば、演算部11’での演算が所定回数行われた後)に切替部31’が出力した内部値X
iとを比較して、変化がない場合には、内部値X
iが最大値であると判断して、設定値「1」を切替部31’に出力する。一方、変化があった場合には、内部値X
iが最大値ではなかったと判断して、設定値「0」を切替部31’に出力する。なお、構成台数nおよび各装置A’の通信接続の具合によって収束にかかる時間は変化する。構成台数nが少ない場合や、各装置A’が多数の装置A’と通信している場合などには、収束にかかる時間が短く、所定時間を短くしても、設定値決定部35は、最大値であるか否かの判断を適切にすることができる。逆に、収束にかかる時間が長い場合は、所定時間を長くして、設定値決定部35が適切に判断できるようにする必要がある。なお、設定値決定部35の構成は限定されない。設定値決定部35は、内部値X
iが最大値であるか否かを判断でき、その判断に応じて設定値を出力できればよい。
【0074】
図8は、装置A’が行う構成台数探索処理を説明するためのフローチャートである。
【0075】
まず、初期値入力の指示を示すタイミング入力が有ったか否かが判別される(S11)。具体的には、タイミング生成部32から切替部31に、初期値入力の指示が入力されたか否かが判別される。タイミング入力が無い場合(S11:NO)、ステップS11に戻って判別が繰り返される。タイミング入力が有った場合(S11:YES)、ステップS12に進む。つまり、タイミング入力を待って、タイミング入力が有った時に、具体的な処理(S11〜S12〜S24)が開始される。
【0076】
次に、内部値X
iに乱数が入力される(S12)。具体的には、切替部31’が乱数を発生させて、当該乱数を内部値X
iの初期値として設定する。次に、内部値X
iが送信され(S13)、内部値X
jが受信される(S14)。具体的には、通信部2が、内部値生成部1より入力される内部値X
iを他の装置A’に送信し、また、他の装置A’から内部値X
jを受信する。そして、内部値X
iが生成される(S15)。具体的には、演算部11’(最大合意部11b)が内部値X
iおよび内部値X
jに基づいて演算を行い、乗算器12が演算結果u
iに所定の係数εを乗算して、積分器13が乗算結果を積分することで、内部値X
iを生成する。
【0077】
次に、所定時間が経過したか否かが判別される(S16)。所定時間が経過していない場合(S16:NO)、ステップS13に戻って、ステップS13〜S16が繰り返される。所定時間が経過した場合(S16:YES)、内部値X
iが変化したか否かが判別される(S17)。具体的には、設定値決定部35が、内部値X
iの初期値と、切替部31’より入力された内部値X
iとを比較して判別する。内部値X
iが変化した場合(S17:YES)、内部値X
iは最大値でなかったと判断されて、内部値X
iに設定値「0」が入力される(S18)。一方、内部値X
iが変化しなかった場合(S17:NO)、内部値X
iは最大値であったと判断されて、内部値X
iに設定値「1」が入力される(S19)。具体的には、設定値決定部35が判別に応じて設定値「0」または「1」を切替部31’に出力し、切替部31’が入力された設定値を、内部値X
iに設定する。
【0078】
ステップS20〜S24については、
図3に示すフローチャートのステップS3〜S7と同様なので、説明を省略する。なお、構成台数探索処理は、上述したものに限定されない。
【0079】
次に、第2実施形態に係る構成台数探索処理を行ったシミュレーションについて説明する。
【0080】
図9は、当該シミュレーションの結果を示す図である。
図9(a)は、
図2(a)に示す各装置A1〜A8(内部構成を、第2実施形態に係る装置A’の内部構成(
図7参照)としたもの)に対してシミュレーションを行った場合の、各装置A1〜A8の内部値X
iの時間変化を示している。縦軸は各内部値X
iの値を示しており、横軸は演算部11’での演算回数を示している。各装置A1〜A8において発生させた乱数を初期値として、シミュレーションを開始した。
【0081】
図9(a)に示すように、内部値X
iの初期値が最大値の0.92である装置A1は当該初期値を継続し、その他の装置A2〜A8の内部値X
iは最大値0.92に近づいている。そして、演算回数が100回のときに、各装置A1〜A8の設定値決定部35がそれぞれ設定値を決定し、装置A1の内部値X
iには「1」が設定され、装置A2〜A8の内部値X
iには「0」が設定されている。なお、今回のシミュレーションでは装置A1で発生させた乱数が最大値になったので、装置A1の内部値X
iに「1」が設定されることになったが、いずれの装置A1〜A8で発生させた乱数が最大値になるかによって、内部値X
iに「1」が設定されるのがいずれになるか変わってくる。その後、演算回数が増加するごとに各装置A1〜A8の内部値X
iは同じ値に近づいていき、演算回数が200回ぐらいでほぼ同じ値に収束している。収束値Xαは、0.125になっている。よって、構成台数n=1/Xα=1/0.125=8台と算出される。
【0082】
図9(b)は、8台の装置A1〜A8(内部構成を、第2実施形態に係る装置A’の内部構成(
図7参照)としたもの)に対してシミュレーションを行った場合の、各装置A1〜A8の内部値X
iの時間変化を示している。各装置A1〜A8において発生させた乱数を初期値として、シミュレーションを開始した。
【0083】
図9(b)に示すように、内部値X
iの初期値が最大値の0.77である装置A6は当該初期値を継続し、装置A7,A8の内部値X
iは最大値0.77に近づいている。また、装置A1の内部値X
iは初期値0.28を継続し、装置A2〜A5の内部値X
iは0.28に近づいている。そして、演算回数が100回のときに、各装置A1〜A8の設定値決定部35がそれぞれ設定値を決定し、装置A1,A6の内部値X
iには「1」が設定され、装置A2〜A5、A7〜A8の内部値X
iには「0」が設定されている。その後、演算回数が増加するごとに各装置A1〜A5の内部値X
iは同じ値に近づいていき、演算回数が140回ぐらいでほぼ同じ値に収束している。収束値Xαは、0.2になっている。よって、構成台数n=1/Xα=1/0.2=5台と算出される。また、各装置A6〜A8の内部値X
iは同じ値に近づいていき、演算回数が160回ぐらいでほぼ同じ値に収束している。収束値Xαは、0.33になっている。よって、構成台数n=1/Xα=1/0.33≒3台と算出される。つまり、装置A1〜A5は構成台数5台のネットワークを構成し、装置A6〜A8は構成台数3台のネットワークを構成している状態であることが判る。
【0084】
次に、装置A’の作用効果について説明する。
【0085】
第2実施形態によると、切替部31’は、タイミング生成部32から初期値入力の指示が入力された場合、乱数を内部値X
iの初期値として設定する。そして、内部値生成部1は、演算部11’が最大合意部11bに切り替えられている状態で、生成した内部値X
iと通信部2が受信した内部値X
jとに基づく演算によって、内部値X
iを生成する。ネットワークを構成している各装置A’の内部値生成部1がこれを行うことで、すべての装置A’での内部値X
iが最大値に収束する。設定値決定部35は、内部値X
iの初期値が最大値である場合には設定値「1」を出力し、それ以外の場合には設定値「0」を出力する。これにより、ネットワークを構成している装置A’のうちのいずれか1つの装置A’において内部値X
iとして「1」が設定され、その他の装置A’において内部値X
iとして「0」が設定される。したがって、人の手によることなく、内部値X
iの初期値を自動的に設定することができる。また、その後の処理は第1実施形態に係る装置Aと同様なので、第2実施形態においても、第1実施形態と同様の効果を奏することができる。
【0086】
なお、第2実施形態においては、最大合意部11bが上記(6)式に基づく演算を行う場合について説明したが、これに限られない。最大値に収束させることができるのであれば、他の演算式を用いるようにしてもよい。例えば、最大合意部11bが下記(8)式に基づく演算を行うようにしてもよい。β
ijは、すべてのX
j≦X
i(すなわちX
iが最大値)の場合に「0」となり、それ以外の場合に「1」となる関数である。すなわち、演算部11’は、内部値生成部1が生成した内部値X
iが通信部2より入力されるすべての内部値X
j以上である場合に、演算結果u
iとして「0」を出力し、それ以外の場合に、各内部値X
jから、内部値X
iをそれぞれ減算して減算結果をすべて加算した演算結果u
iを出力する。この場合でも、内部値X
iを最大値に収束させることができる。
【数8】
【0087】
また、第2実施形態においては、内部値X
iの初期値が最大値であるか否かで、設定値を「1」とするか「0」とするかを決定しているが、これに限られない。例えば、内部値X
iの初期値が最小値であるか否かで、設定値を「1」とするか「0」とするかを決定するようにしてもよい。この場合、上記(6)式に基づく演算を行う最大合意部11bに代えて、下記(9)式に基づく演算を行う最小合意部(図示なし)を備えるようにすればよい。α
ij’は、X
j<X
iの場合に「1」、X
j≧X
iの場合に「0」となる関数である。すなわち、最小合意部は、通信部2より入力される各内部値X
jから、内部値生成部1が生成した内部値X
iをそれぞれ減算し、減算結果が負の値であるものだけをすべて加算した演算結果u
iを乗算器12に出力する。当該実施例においては、最小合意部が本発明の「第2の演算手段」に相当する。この場合、内部値X
iを最小値に収束させることができる。
【数9】
【0088】
なお、最小合意部は、上記(9)式に基づく演算を行う場合に限定されない。最小値に収束させることができるのであれば、他の演算式を用いるようにしてもよい。例えば、最小合意部が下記(10)式に基づく演算を行うようにしてもよい。β
ij’は、すべてのX
j≧X
i(すなわちX
iが最小値)の場合に「0」となり、それ以外の場合に「1」となる関数である。すなわち、演算部11’は、内部値生成部1が生成した内部値X
iが通信部2より入力されるすべての内部値X
j以下である場合に、演算結果u
iとして「0」を出力し、それ以外の場合に、各内部値X
jから、内部値X
iをそれぞれ減算して減算結果をすべて加算した演算結果u
iを出力する。この場合でも、内部値X
iを最小値に収束させることができる。
【数10】
【0089】
本発明は、通信機能を備えて、ネットワークを構成する他の装置との間で通信を行うあらゆる装置において、適用することができる。例えば、電力システムを構成する各インバータ装置が内部位相を同期する場合や、各種タイミングを一致させたり、一致しないようにずらしたりする場合、電力システムを構成する各インバータ装置が内部補償値を一致させることで、出力有効電力や出力無効電力の抑制量を調整する場合、各計測装置が計測値に基づく内部平均値や最大値、最小値を一致させる場合などにも適用することができる。また、コンセンサス協調制御を行う装置以外の装置にも適用することができる。
【0090】
本発明に係る通信機能を備えた装置、当該装置を備えたシステムおよび台数探索方法は、上述した実施形態に限定されるものではない。本発明に係る通信機能を備えた装置、当該装置を備えたシステムおよび台数探索方法の各部の具体的な構成は、種々に設計変更自在である。