(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-13
(45)【発行日】2024-02-21
(54)【発明の名称】時系列最適化プログラムおよび時系列最適化システム
(51)【国際特許分類】
G06Q 10/04 20230101AFI20240214BHJP
G06Q 50/06 20240101ALI20240214BHJP
【FI】
G06Q10/04
G06Q50/06
(21)【出願番号】P 2020093257
(22)【出願日】2020-05-28
【審査請求日】2023-02-02
(73)【特許権者】
【識別番号】000233044
【氏名又は名称】株式会社日立パワーソリューションズ
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】山口 悟史
(72)【発明者】
【氏名】楠田 尚史
【審査官】関 博文
(56)【参考文献】
【文献】特開平06-332503(JP,A)
【文献】特開2011-170808(JP,A)
【文献】中国特許出願公開第108537449(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
時刻と共に遷移する対象の状態の時系列を最適化する最適化処理をコンピュータに実行させる時系列最適化プログラムであって、
前記コンピュータに、
連続値を第1の単位で離散化した離散値で各時刻における前記状態を表した場合に各時刻間の状態遷移を評価する評価値が最良となる前記状態の時系列を入力時系列として受け付ける第1の処理と、
前記連続値を前記第1の単位よりも小さい第2の単位で離散化した離散値で各時刻における前記状態を表した場合に、前記入力時系列の所定近傍内で前記評価値が最良となる前記状態の時系列を算出する第2の処理と
を実行させることを特徴とする時系列最適化プログラム。
【請求項2】
請求項1に記載の時系列最適化プログラムであって、
前記コンピュータに、
前回実行の前記第2の処理で算出した前記状態の時系列を今回実行の前記第1の処理の前記入力時系列とする前記第1の処理および前記第2の処理の繰り返し処理を、所定条件が充足されるまで実行させる
ことを特徴とする時系列最適化プログラム。
【請求項3】
請求項2に記載の時系列最適化プログラムであって、
前記コンピュータに、
前記繰り返し処理の初回の前記第1の処理で受け付ける前記入力時系列を動的計画法を用いて算出する処理
を実行させることを特徴とする時系列最適化プログラム。
【請求項4】
請求項1に記載の時系列最適化プログラムであって、
前記コンピュータに、
前記第2の処理において、前記入力時系列の所定近傍内で前記評価値が最良となる前記状態の時系列を離散微分動的計画法を用いて算出させる
ことを特徴とする時系列最適化プログラム。
【請求項5】
請求項1に記載の時系列最適化プログラムであって、
前記第1の単位は、前記第2の単位の2倍の大きさである
ことを特徴とする時系列最適化プログラム。
【請求項6】
請求項2に記載の時系列最適化プログラムであって、
前記所定条件の充足は、前記第2の単位に基づく前記対象に関する流量解像度が所望の解像度となることである
ことを特徴とする時系列最適化プログラム。
【請求項7】
請求項
6に記載の時系列最適化プログラムであって、
前記コンピュータに、
前記繰り返し処理毎に、前記第2の処理で算出した前記状態の時系列、前記流量解像度、および、前記流量解像度が所望の解像度となるまで実行する前記繰り返し処理の進捗を示す情報を表示部に表示させる処理
を実行させることを特徴とする時系列最適化プログラム。
【請求項8】
請求項1に記載の時系列最適化プログラムであって、
前記対象は、ダムであり、
前記状態は、降雨予測データに基づく前記ダムの流入量、前記ダムの貯水位、および前記ダムの放流量である
ことを特徴とする時系列最適化プログラム。
【請求項9】
請求項1に記載の時系列最適化プログラムであって、
前記対象は、ゲートを有するゲート前スペースであり、
前記状態は、前記ゲート前スペースへの物体または人の流入量、前記ゲート前スペースにおける物体または人の収容率、および、前記ゲート前スペースから前記ゲートを通過させる物体または人の量である
ことを特徴とする時系列最適化プログラム。
【請求項10】
時刻と共に遷移する対象の状態の時系列を最適化する最適化処理を実行する時系列最適化システムであって、
前記時系列最適化システムは、メモリと協働して処理を実行するプロセッサを有し、
前記プロセッサは、
連続値を第1の単位で離散化した離散値で各時刻における前記状態を表した場合に各時刻間の状態遷移を評価する評価値が最良となる前記状態の時系列を入力時系列として受け付ける第1の処理と、
前記連続値を前記第1の単位よりも小さい第2の単位で離散化した離散値で各時刻における前記状態を表した場合に、前記入力時系列の所定近傍内で前記評価値が最良となる前記状態の時系列を算出する第2の処理と
を実行することを特徴とする時系列最適化システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、時系列最適化プログラムおよび時系列最適化システムに関する。
【背景技術】
【0002】
時系列最適化対象として例えばダムがある。ダムは、洪水調整や発電などの目的のために設置される。それらの目的を最大限に実現するために、ダムの貯水位および放流量が最適化されるべきである。このことは、単一のダムはもちろんであるが、複数のダムが直列・並列に接続された水系(連接水系)に対しても同様である。
【0003】
一方で、連接水系のダム群を連携させる操作(ダム群連携操作)は、上流ダムの放流量による下流のダムの貯水量への影響を考察するなど、複雑な考察が必要である。そのため、ダム群連携操作を人間の勘や経験に基づいて実現することが難しい。このダム群連携操作のように、複数の送水系統の操作に関する人間の意思決定を支援するコンピュータシステムが提案されてきた。
【0004】
特許文献1には、「送水運用制御装置」が開示されている。この発明は、河川や湖などの取水場から取水して浄水場まで送水する取水ポンプや、その浄水場から配水池まで送水する送水ポンプなど、送水系統を構成しているポンプの運転スケジュールを策定する送水運用制御装置に関するものである。上水道施設においては、毎日の水需要量に応じて、上水道の送水系統を構成している送水ポンプの送水運転計画を立案しているが、その送水ポンプの運転の平滑化を図るとともに、その送水ポンプの動力コストを削減することができる送水運転計画を立案するため、数理的手法を実施して送水運転計画を策定し、その送水運転計画を運用者に提示する送水運用制御装置が利用されている。
【0005】
特許文献1に開示された発明は、水需要量予測手段により予測された水需要量を条件とする線形計画法を実施して、上水道の送水系統を構成しているポンプの運転スケジュールを暫定する運転スケジュール暫定手段と、予め設定されているポンプの送水量可能範囲を、その運転スケジュール暫定手段により暫定された運転スケジュールにしたがってポンプを運転したときに、そのポンプにより送水される送水量を含む所定の送水量範囲に限定する可能範囲限定手段とを設け、その可能範囲限定手段により限定された送水量可能範囲を条件とする動的計画法を実施して、そのポンプの運転スケジュールを策定するようにしたものである。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記従来手法は、可能範囲限定手段により限定された探索範囲を設定して動的計画法を実行するため、解精度の劣化を招くことなく、短時間で最適な制御変数を決定することができる、としている。具体的には、
最適な運転スケジュールの探索範囲=線形計画法による解±所定量
とし、この範囲に限定して動的計画法により解を探索する。
【0008】
動的計画法の場合、探索範囲の大きさは、その範囲を何段階に分割するかによって決まる。すなわち、探索範囲の大きさは、探索範囲を解像度(1段階あたりの値)で除した値である。細かい解像度で解を得ようとすると、段階数を大きくする必要があり、探索範囲が大きくなる。この場合、長い計算時間を要し、実用的な装置を作ることができない。計算を短時間で完了させるためには、探索範囲を小さくする必要があり、そのために段階数を小さく(解像度を粗く)する必要が生じる。しかし粗い解像度の解では、実用性が満たされない場合がある。
【0009】
本発明は上述したこの課題に鑑みてなされたものである。本発明が解決しようとする課題は、最適化問題を細かい解像度で解くためのシステムを提供することである。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本発明においては、時刻と共に遷移する対象の状態の時系列を最適化する最適化処理をコンピュータに実行させる時系列最適化プログラムは、前記コンピュータに、連続値を第1の単位で離散化した離散値で各時刻における前記状態を表した場合に各時刻間の状態遷移を評価する評価値が最良となる前記状態の時系列を入力時系列として受け付ける第1の処理と、前記連続値を前記第1の単位よりも小さい第2の単位で離散化した離散値で各時刻における前記状態を表した場合に、前記入力時系列の所定近傍内で前記評価値が最良となる前記状態の時系列を算出する第2の処理とを実行させることを特徴とする。
【発明の効果】
【0011】
本発明によれば、最適化問題を細かい解像度で解くことができる。
【図面の簡単な説明】
【0012】
【
図1】ダム群連携操作の定式化を説明するための図である。
【
図2】動的計画法(DP)の概要を説明するための図である。
【
図3】離散微分動的計画法(DDDP)の概要を説明するための図である。
【
図4】プログレッシブ動的計画法(PDP)の概要を説明するための図である。
【
図5】プログレッシブ動的計画法(PDP)の概要を説明するためのフローチャートである。
【
図6】実施形態を実現するためのコンピュータシステムの構成を示す概略ブロック図である。
【
図7】ダム群連携操作プログラムのソフトウェア構成図である。
【
図9】実施形態を実現するためのコンピュータシステムによって実行される処理を示すシーケンス図である。
【
図10】
図9のステップS907の詳細を示すシーケンス図である。
【
図11】DP/DDDPによる最適化処理の詳細を示すフローチャートである。
【
図12】DP/DDDPによる最適化処理の詳細を示すフローチャートである。
【
図13】本則操作に基づくダム貯水率およびダム放流量の時系列グラフの例である。
【
図14】ダム群連携操作プログラムの出力する最適化されたダム群連携操作に基づくダム貯水率およびダム放流量の時系列グラフの例である。
【
図15】下流に急激な水位の変動を生じない放流量の多項式近似の例である。
【
図16】ダムモデルに関するプロジェクトデータのデータ構造を示す図である。
【
図17】河川モデルに関するプロジェクトデータのデータ構造を示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施形態を説明する。実施形態は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
【0014】
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
【0015】
各種情報の例として、「テーブル」、「リスト」、「キュー」等の表現にて説明することがあるが、各種情報はこれら以外のデータ構造で表現されてもよい。例えば、「XXテーブル」、「XXリスト」、「XXキュー」等の各種情報は、「XX情報」としてもよい。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについては互いに置換が可能である。
【0016】
同一あるいは同様の機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0017】
実施形態において、プログラムを実行して行う処理について説明する場合がある。ここで、計算機は、プロセッサ(例えばCPU、GPU)によりプログラム(モジュール)を実行し、記憶資源(例えばメモリ)やインターフェースデバイス(例えば通信ポート)等を用いながら、プログラムで定められた処理を行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路を含んでいてもよい。ここで、専用回路とは、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)、CPLD(Complex Programmable Logic Device)等である。
【0018】
プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0019】
先ず、
図1~
図5を参照して、本実施形態の概要を説明する。
【0020】
<ダム群連携操作の定式化>
図1は、ダム群連携操作の定式化を説明するための図である。ダム群操作最適化をコンピュータによって実現するために、ダム群操作を次の通り定式化する。
【0021】
図1にダム群の例を示す。本明細書では、
図1に示すダム群を連携操作対象の例として説明する。
図1に示すように、ダムD0(101)、ダムD1(102)、ダムD2(103)がある。水位計G0(111)の上流には、ダムD0(101)およびダムD1(102)がある。水位計G1(112)の上流には、ダムD2(103)がある。水位計G2(113)の上流には水位計G0(111)および水位計G1(112)がある。
【0022】
河川R0(121)は、ダムD0(101)から出て、水位計G0(111)、および水位計G2(113)を通る。河川R1(122)は、ダムD1(102)から出て、水位計G0(111)の上流で河川R0に合流する。河川R2(123)は、ダムD2(103)から出て、水位計G1(112)を通って、水位計G2(113)の上流で河川R0に合流する。
【0023】
ダム群は、離散化された時刻t=0,1,...,T-1において、状態変数STATE[t]により表現されるとする。ただし状態変数STATE[t]はN次元のベクトルである。
STATE[t]=(state[t,0],state[t,1],...,state[t,N-1])
ここでstate[t,i]は、ダムiの貯水量の指標であり、K段階に分割した有効貯水容量の何段階目まで貯水されているかを表す。したがって、state[i,t]は、0,1,...,K-1のいずれかの値をとる。
【0024】
ダムの状態は(数式1)で表される連続式を満たす。
STATE[t]=VTOS(STOV(STATE[t-1])+(INFLOW[t]-OUTFLOW[t])*ΔT)
・・・(数式1)
ただし、INFLOW[t]およびOUTFLOW[t]は、時刻t-1からtまでの時間ΔTにおけるダムへの平均流入量、およびダムからの平均放流量である。STOV(STATE)は、STATEをダム貯水量VOLUMEに変換する関数、VTOS(VOLUME)は、ダム貯水量VOLUMEを貯水量の指標STATEに変換する関数である。
【0025】
また、水位計j=0,1,...,J-1における流量RIVERFLOW[t]は、洪水流のシミュレーションを行う関数SIMを用いて(数式2)のように表現される。
RIVERFLOW[t]=(riverflow[0,t],riverflow[1,t],riverflow[J-1,t])
=SIM(RIVERFLOW[t-1],OUTFLOW[t],LATERALFLOW[t])・・・(数式2)
関数SIMは、1次不定流として実装してもよいし、上流端における流量がある時間後に下流端に到達するとするモデル(遅れ時間モデル)として実装してもよい。ここでLATERALFLOW[t]は、水位計j=0,1,...,J-1地点においてダム以外から河川に流入する量(本川側方流入量および支川流量)である。
【0026】
ダム群操作最適化とは、初期値STATE[0]と制約条件のもとで、次の目的関数の値を最小化する状態遷移(STATE[0],STATE[1],...,STATE[T-1])を求めることである。
目的関数:OBJECTIVE(STATE[0],STATE[1],...,STATE[T-1])
【0027】
このように定式化された問題は、多段階決定過程と呼ばれる。多段階決定過程を効率的に解く手法として、動的計画法(Dynamic Programming;DP)が知られている。
【0028】
DPでは「最適性の原理」を用いることで効率化を実現する。すなわち、「最適政策は最適部分政策だけから成る」と仮定し、(数式3)で表される漸化式の値を最小化するSTATE[t]を求める問題とする。
OBJECTIVE(STATE[0],STATE[1],...,STATE[t])
=COST(STATE[t-1],STATE[t])+OBJECTIVE(STATE[0],STATE[1],
...,STATE[t-1]))・・・(数式3)
ここでCOSTは、状態遷移(STATE[t-1],STATE[t])のよさを評価する関数(コスト関数)である。COSTは常に0以上の値を返し、評価が良いほど小さい値を返す。
【0029】
<動的計画法(DP)の概要>
図2は、動的計画法(DP)の概要を説明するための図である。DPは、不連続、微分不可能、非凸な目的関数を持つ多段階決定過程に対して効率的に大域解を求めることができる。一方、DPには状態変数の次元に対し計算量がべき乗で増える、「次元の呪い」(curse of dimensionality)と呼ばれる短所がある。
【0030】
ダム群最適制御については、ダム数をN、貯水量をK段階に分割し、対象期間をT段階に分割すると、pow(TK,2N)通りの状態遷移を求める必要がある。ただし、pow(x,y)はxのy乗を返す関数である。たとえば、ダム数3、貯水量を50段階に分割し、1時間ごと24時間の最適貯水量を求める場合、3750億通りの状態遷移を計算する必要がある。これを計算機で扱うことは、処理速度の点から非実用的である。
【0031】
DPはまず、時間方向に前に進みながら最適解を求め、その最適な状態遷移を記憶する。各時刻における処理は次の通りである。
図2に示す各ノード(○印、たとえば211)は、系がとりうる状態を示している。ノードは、ダム数をN、貯水量をK段階に分割した場合、各時刻においてpow(K,N)個ある。時刻tにおいてノード212(STATE[t]=k1)に至るすべての状態遷移をリンク(たとえば213)で示した。これらのリンクのコストをコスト関数COSTにより求める。得られた値から、次の目的関数の値が最も小さい状態遷移(最小コストリンク)を求める。
目的関数:OBJECTIVE(STATE[0],STATE[1],...,STATE[t]=k1)
【0032】
最小コストリンクがリンク215だとすると、このリンク215(ノード214(STATE[t-1]=k0)からノード212に至るリンク215)を記憶しておく。同様の処理を、時刻tにおけるすべてのノードに対して実行する。これらの処理を時刻t=1からt=T-1まで実行する。この処理の実装については
図11にて説明する。
【0033】
続いて、時刻t=T-1におけるすべてのノードのうち、目的関数値が最も小さいノードを見つける。このノードに至る状態遷移は、今までの計算過程によりすでに記憶されているので、時刻t=0のノードまでを時間方向に後ろ向きにたどることで、目的関数値の値を最小化する状態遷移(STATE[0],STATE[1],...,STATE[T-1])を求めることができる。この処理の実装については
図12にて説明する。
【0034】
<離散微分動的計画法(DDDP)の概要>
図3は、離散微分動的計画法(DDDP)の概要を説明するための図である。動的計画法の「次元の呪い」と呼ばれる欠点を克服するため、近似解法が提案されている。そのうちの一つである離散微分動的計画法(Discrete Differential Dynamic Programming,DDDP)は、状態変数(本実施形態では貯水量)の段階数Kを小さな値dKに制約して準最適解を求める処理を繰り返すものである。
【0035】
DDDPでは、適当な貯水量時系列を初期トラジェクトリ301として与え、この貯水量を数段階だけ増減する範囲(たとえば-1,0,+1の3段階、この場合dK=3)のみで最適解を探索し、次回の最適解探索処理の初期値とする。この探索範囲にあるノード(
図3中の破線で結ばれたノード、例えばノード303)をコリドー302という。このように、コリドーの中で最適解を探索する処理を繰り返すことによって、最終的に最適系列を求めるものである。仮に10回の探索繰り返しで最適解に到達するならば、前述の3750億通りの状態遷移計算と同じ結果が、約200万分の1(約17万通り)の計算量で得られることになる。
【0036】
DDDPは、目的関数が初期トラジェクトリから最適解に至るまで凸である必要がある。これはたとえば、目的関数を水位計における河川流量の2乗にすればよい。たとえば、目的関数は、(数式4)のように表される。
COST(STATE[t-1],STATE[t])=
SIGMA(j=0,J-1,pow(riverflow[j,t]/designFlow[j], 2))・・・(数式4)
とすればよい。ただし、SIGMA(i=0,I-1,Expression)は、変数iを0からI-1まで1ずつ増やしながら式Expressionの値を総和する関数、designFlow[j]は水位計jにおける計画高水流量である。
【0037】
しかし、洪水調整では、流量の急激な変動についても考慮するなど複数目的を同時に実現する必要がある。複数目的の場合、目的関数は多峰となるため凸な関数とはならない。たとえば、ダムの操作規則においては、下流に急激な水位の変動を生じない放流量を超えないこと(いわゆる「放流の原則」を守ること)が求められる。下流に急激な水位の変動を生じない放流量の多項式近似の例は、
図15にて説明する。
【0038】
水位計における河川流量を小さくし、かつ「放流の原則」を守るような目的関数は、たとえば(数式5)で表現できる。
COST(STATE[t-1],STATE[t])=
SIGMA(j=0,J-1,pow(riverflow[j,t]/designFlow[j],2))
+SIGMA(i=0,I-1,pow((outflow[i,t]-outflow[i,t-1])/outflowLimit[i],2))
・・・(数式5)
ただし、outflowLimit[i]は、ダムiにおける下流に急激な水位の変動を生じない放流量であり、その値はoutflow[i,t]によって決定される。
【0039】
DDDPはまた、状態変数の段階数Kが大きな値であったならば、コリドーの幅を広げる必要があり、最適解に到達するまでに多数回の探索繰り返しをすることになる。現実的な時間で解が求まるためには、状態変数の段階数Kを10から100程度にする必要がある。しかし、ダムの操作のためにはダム放流量時系列を1m3/s程度で決める必要がある。たとえばダムの有効貯水容量が10MCM、1時間単位の操作をする場合、最適化を1m3/s以下の単位にするには段階数Kを5120にする必要がある。これだけの段階数がある状態変数をDDDPで解くことは現実的でない。
【0040】
すなわち、DDDPは、現実の問題に適用する上で、2つの課題があるといえる。1つ目の課題は、多峰の目的関数にも適用可能にすることである。2つ目の課題は、状態変数の段階数Kが大きな値でも適用可能にすることである。
【0041】
<プログレッシブ動的計画法(PDP)の概要>
図4は、プログレッシブ動的計画法(PDP)の概要を説明するための図である。
図5は、プログレッシブ動的計画法(PDP)の概要を説明するためのフローチャートである。上記のように目的関数が多峰であり、状態変数の段階数Kが大きな値である場合に適用するため、本実施形態では、プログレッシブ動的計画法(Progressive Dynamic Programing)を提案する。
図5の処理主体は、後述するダム群連携操作プログラム621である。
【0042】
図5にて説明するステップS501の結果、または繰り返し処理するステップS502の前回処理の結果を、
図4に示すようなトラジェクトリ401とする。このトラジェクトリ401の近傍にコリドー402(
図4において破線で結ばれたノード)を設置する。ただし、トラジェクトリ401を得たステップでの段階数よりも、状態変数の段階数を2倍にする。これにより新たなノード403などが用意される。このコリドー402において、DDDPによって最適解を得る。
【0043】
本実施形態で開示する最適化手法であるプログレッシブ動的計画法(Progressive Dynamic Programming,PDP)では、先ずDPを用いて初期値を得る(ステップS501)。この際の状態変数の段階数をKInitとする。続いて初期値の近傍で状態変数の段階数Kを2倍にしてDDDPを行い、新たな初期値を得る(ステップS502)。このステップS502をM回繰り返す(ステップS503)。すなわち、状態変数の段階数Kは、K=pow(2,M)*KInitとなる。
【0044】
ステップS502をM回繰り返す中での前回r=iの段階数Kは、連続値を第1の単位で離散化した離散値で各時刻における状態を表す際の“第1の単位”である。また、今回r=i+1の段階数Kは、連続値を第1の単位よりも小さい第2の単位で離散化した離散値で各時刻における状態を表す際の“第2の単位”である。Mは、第2の単位に基づく後述のダムの流量解像度がユーザ所望の解像度となる段階数Kを与える。
【0045】
前述の1つ目の課題である多峰の目的関数にも適用可能にすることに対し、PDPは初期トラジェクトリを動的計画法で求めることで解決を図る。また、新しい段階数に対しDDDPのコリドーの幅を十分に持たせることで、多峰の目的関数に対応できるようにする。たとえば、段階数2倍に対し幅5にすればよい。
【0046】
2つ目の課題である状態変数の段階数Kが大きな値でも適用可能とすることに対し、PDPは漸進的に段階数を増加させることで解決を図る。ステップS501の動的計画法で全体最適解を求めているため、その後に行われるDDDPでは、動的計画法に比べ少ない計算量で全体最適解近傍の局所解に達する。これにより全体の計算量を削減する。たとえばダムの有効貯水容量が10MCM、1時間単位の操作をする場合、段階数KInitを10とし、ステップS502を9回繰り返すことで、段階数5,120(流量解像度0.54m3/s)を実現できることになる。このように、非凸の目的関数の最適化問題を細かい解像度で解き時系列を最適化することができる。
【0047】
以下、実施形態の詳細を説明する。
【0048】
<実施形態を実現するためのコンピュータシステムの構成>
図6は、実施形態を実現するためのコンピュータシステムの構成を示す概略ブロック図である。本実施形態のコンピュータシステムは、ネットワーク660に接続されたPC(Personal Computer)などのコンピュータ610、降雨予測サーバ680を含んで構成される。
【0049】
コンピュータ610は、メモリ620、CPU(Central Processing Unit)などのプロセッサ630、HDD(Hard Disk Drive)などの二次記憶装置であるストレージ640、および入出力部650を備える。メモリ620には、時系列最適化プログラムの一例であるダム群連携操作プログラム621が展開される。このダム群連携操作プログラム621はプロセッサ630への命令によって構成される。プロセッサ630は、ダム群連携操作プログラム621の命令に従い計算、ストレージ640へのアクセス、クライアント端末670からのリクエストへの応答などを行う。
【0050】
以下の説明においてダム群連携操作プログラム621が実行する処理は、実際には、ダム群連携操作プログラム621に記述された命令に従うプロセッサ630によって実行される。ダム群連携操作プログラム621の処理結果はストレージ640にダム群連携操作データ642として格納される。
【0051】
降雨予測サーバ680からは、降雨予測データ641が送信される。このデータをダム群連携操作プログラム621が受信し、ストレージ640に格納する。降雨予測データ641は、降雨強度分布の予測に関する時系列データである。このデータは時系列メッシュデータとして格納される。すなわち、時空間を初期時刻、予測時間、緯度、経度の4軸で定義し、それぞれの軸ごとに開始点、終了点、解像度が定義され、それに基づき時空間がセルに分割され、セルに値が格納される。ダム群連携操作プログラム621は、初期時刻、予測時間、緯度、経度を指定することにより、それに相当する値を取得することができる。このデータの格納には、NetCDFフォーマットなどを使用すればよい。
【0052】
ストレージ640にはまた、ダム群連携操作データ642が格納される。このデータは、ダムの貯水量、ダムへの流入量、ダムからの放流量、本川側方流入量および支川流量、および河川水位計における流量の、それぞれの時系列からなる。これらの時系列データの格納には、独自のバイナリフォーマットなどを使用すればよい。
【0053】
ストレージ640にはまた、地図データ643が格納される。地図データ643は、たとえば地図画像である。これらの地図画像は、Web Map Tile Service(WMTS)に準拠して格納すればよい。
【0054】
ストレージ640にはまた、プロジェクトデータ644が格納される。プロジェクトデータ644は、対象とするダム群をシミュレーションするために必要なデータである。これらのデータは、たとえばXMLに準拠して格納すればよい。データの構造の詳細は
図16および
図17にて詳述する。
【0055】
入出力部650は、キーボード651およびマウス652などからなる入力部と、ディスプレイ653などからなる出力部によって構成される。ユーザは、入力部のキーボード651およびマウス652から命令を入力し、出力部のディスプレイ653から結果を視覚的に確認することができる。
【0056】
<ダム群連携操作プログラム621のソフトウェア構成図>
図7は、ダム群連携操作プログラム621のソフトウェア構成図である。ダム群連携操作プログラム621は、シミュレータモジュール710、最適化モジュール720、本則操作モジュール730、およびGUIモジュール740の4つのモジュールから構成される。
【0057】
シミュレータモジュール710では、モデルコントローラ711が基本モデル712およびその派生クラスを制御する。ダムモデル713、河川モデル714および流出モデル715は、基本モデル712の派生クラスである。
【0058】
ダムモデル713は、
図1と共に説明した(数式1)に従う状態遷移を行う。河川モデル714は、
図1と共に説明した(数式2)に従う状態遷移を行う。流出モデル715は、分布型流出モデル、あるいは貯留関数法などとして実装すればよい。流出モデル715は、入力データとして降雨予測データ641を用い、予測降雨の時系列が変換されたダム流入量の時系列にて、山地からダムへ流出する降雨を表すモデルである。
【0059】
ダムモデル713、河川モデル714および流出モデル715のいずれのモデルも、離散化された時刻tにおける状態STATE[t]から、次の時刻t+1の状態STATE[t+1]に状態遷移する機能を有する。さらに、いずれのモデルも、状態をメモリ620に保存し、かつ保存された状態をメモリ620から読み込むことができる。初期時刻t=0における状態(初期状態)STATE[0]はユーザにより与えられる。
【0060】
モデルコントローラ711は、最適化モジュール720から、初期状態STATE[0]の読み込み、時刻tの状態STATE[t]の保存および読み込み、状態STATE[t]からSTATE[t+1]への状態遷移、その状態遷移におけるコスト関数値の算出を行う。そしてモデルコントローラ711は、その状態遷移により得られたダム群連携操作データ642をストレージ640に保存する命令を受け付ける。
【0061】
最適化モジュール720は、ダム群操作の最適化処理を模擬するようシミュレータモジュール710に命令を出す。最適化モジュール720は、PDPコントローラ721、およびDP/DDDPコントローラ722の2つのモジュールから構成される。PDPコントローラ721はDP/DDDPコントローラ722への命令を発行する。最適化モジュール720はGUIモジュール740からの命令を受け付ける。
【0062】
本則操作モジュール730は、本則操作に基づくダム群操作を模擬するようシミュレータモジュール710に命令を出す。本則操作モジュール730はGUIモジュール740からの命令を受け付ける。シミュレータモジュール710のモデルコントローラ711は、本則操作に基づくダム群操作による状態遷移により得られたダム群連携操作データ642をストレージ640に保存する命令を受け付ける。
【0063】
GUIモジュール740は、ダム群連携操作プログラム621のGUI(Graphical User Interface)を提供する。このGUIについては
図8にて説明する。
【0064】
<GUIモジュール740が表示するGUI>
図8は、GUIモジュール740が表示するGUIである。このGUIはディスプレイ653に表示され、キーボード651およびマウス652を通じユーザからの指示を受け付ける。このGUIはウィンドウ800からなる。
【0065】
メッセージ部801にはメッセージが表示される。たとえば現在時刻においてユーザが洪水警戒態勢をとっている場合にはメッセージ部801に「洪水警戒態勢」と表示される。
【0066】
河川流量時系列グラフ部810には河川流量の時系列グラフが表示される。表示されるグラフの横軸は時間、縦軸は河川流量である。河川流量時系列グラフ部810の3つの時系列グラフは、それぞれ水位計111、112、113(
図1)に対応する。
【0067】
ダム状態時系列グラフ部820にはダム状態の時系列グラフが表示される。ダム状態とはたとえばダム流入量(点線表示)、ダム放流量(実線表示)、およびダム貯水率(破線表示)である。表示されるグラフの横軸は時間、第1の縦軸は流量、第2の縦軸は貯水率である。ダム状態時系列グラフ部820の3つの時系列グラフは、それぞれダム101、102、103(
図1)に対応する。
【0068】
地図部830には連携操作対象のダム群および水位計を示す地図が表示される。地図にはダムアイコン831、河川水位計アイコン832、および河川833が示される。このダム、河川水位計および河川の接続関係は、
図1に示したダム群の接続関係と同じである。
【0069】
地図部830にある3つのダムアイコン831のそれぞれに対し、ダム状態時系列グラフ部820の3つのグラフが対応し表示されている。同様に、地図部830にある3つの河川水位計アイコン832のそれぞれに対し、河川流量時系列グラフ部810の3つのグラフが対応し表示されている。ユーザがいずれかのアイコンを選択すると、対応するグラフが強調表示される。
図8は、1つのダムアイコン831が選択され、そのアイコンに対応するグラフが強調表示されている。
【0070】
ステータスバー840には、GUIの現在のステータスが表示される。
【0071】
ユーザがメニューから最適操作メニュー802を選択すると、最適化モジュール720が出力したダム群連携操作データ642に基づき、ウィンドウ800の河川流量時系列グラフ部810およびダム状態時系列グラフ部820にはグラフが表示される。このグラフは、
図9で述べる最適化処理(ステップS907)の進捗に従い、逐次内容が更新される。最適化処理が進捗すると段階数が増加するため、ユーザは画面を通じて徐々に流量解像度が増加する様子を直感的に把握することができる。
【0072】
また、ステータスバー840にメッセージ841およびプログレスバー842を表示することで、ユーザは現在の最適化処理の進捗を画面で確認することができる。最適化処理の進捗を、トラジェクトリに対するコリドー内の最小コストの状態の時系列を段階数を増加させながら算出する繰り返し処理の全繰り返し回数に対する現在までの実行回数の比率で表してもよい。もし、ユーザが途中結果を見て、ユーザが期待する結果が得られないと判断した場合、ユーザはキャンセルボタン843により処理を中断することができる。
【0073】
ユーザは設定ボタン805により設定画面を出現させ、目的関数を設定または変更して最適化処理を行うことができる。
【0074】
ユーザがメニューから本則操作メニュー803を選択すると、本則操作モジュール730の命令に応じてシミュレータモジュール710が出力したダム群連携操作データ642に基づき、ウィンドウ800の河川流量時系列グラフ部810およびダム状態時系列グラフ部820にはグラフが表示される。
【0075】
ユーザがメニューから降雨予測メニュー804を選択すると、降雨予測データ641に基づき、ウィンドウの800地図部830に降雨強度分布が表示される。
【0076】
<実施形態を実現するメイン処理>
図9は、実施形態を実現するためのコンピュータシステムによって実行される処理を示すシーケンス図である。ダム群連携操作プログラム621は、以下のステップS901~S906、および、ステップS907~S910の一連の処理をM回繰り返すループ処理を実行する。
【0077】
ステップS901にて、入出力部650のディスプレイ653にウィンドウ800を表示する。ステップS902にて、降雨予測データ641を読み込む。ステップS903にて、本則操作モジュール730によりダム群操作を模擬するようシミュレータモジュール710に命令を出す。ステップS904にて、ステップS903の結果をダム群連携操作データ642としてストレージ640に保存する。ステップS905にて、ステップS904で保存したダム群連携操作データ642をストレージ640から読み込む。ステップS906にて、河川流量時系列グラフ部810およびダム状態時系列グラフ部820にグラフを表示する。ただし、このステップS903~S906の処理はユーザがメニューから本則操作メニュー803を選択している場合のみ実行する。
【0078】
続いて、ステップS907からステップS910を変数r=0,1,...,M-1について繰り返し実行する。
【0079】
ステップS907にて、最適化モジュール720により最適化を行う。その処理の詳細は
図10で説明する。ステップS908にて、ステップS907の結果をダム群連携操作データ642としてストレージ640に保存する。ステップS909にて、ステップS908で保存したダム群連携操作データ642をストレージ640から読み込む。ステップS910にて、S909で読み込んだ河川流量時系列グラフ部810およびダム状態時系列グラフ部820にグラフを表示する。ただし、このステップS907~S910のループ処理はユーザがメニューから最適操作メニュー802を選択している場合のみ実行する。
【0080】
<
図9のステップS907の詳細>
図10は、
図9のステップS907の詳細を示すシーケンス図である。ダム群連携操作プログラム621は、GUIモジュール740から最適化モジュール720に対し最適化処理を行うよう命令する。命令を受け付けた最適化モジュール720は、PDPコントローラ721に対し変数rが0の場合はステップS1001を、そうでない場合はステップS1004を実行するよう命令する。ただし変数rは
図9にて述べた変数である。
【0081】
ステップS1001にて、PDPコントローラ721は段階数K=KinitにてDPを実行するようDP/DDDPコントローラ722に命令する。ステップS1002にて、DP/DDDPコントローラ722はシミュレータモジュール710に対しDPにて最適解を得る最適化処理を実行するよう命令を出す。ステップS1002では、シミュレータモジュール710は、最適化処理を実行する。最適化処理の詳細は
図11および
図12で説明する。ステップS1003にて、PDPコントローラ721は得られた解を初期トラジェクトリとする。
【0082】
ステップS1004にて、PDPコントローラ721は与えられたトラジェクトリのコリドーの中でDDDPを実行する。与えられたトラジェクトリとは、ステップS1003の実行の結果得られた初期トラジェクトリ、または、前回のステップS1006の実行の結果得られたトラジェクトリである。ただし、段階数Kは、前回の段階数の2倍に設定する。コリドーの幅は5とする。段階数の倍数は2以上の整数、コリドーの幅はこの新しい段階数に対し十分に適切な幅であればよい。
【0083】
ステップS1005にて、DP/DDDPコントローラ722はシミュレータモジュール710に対しDDDPにて最適解を得るよう命令を出す。ステップS1005では、シミュレータモジュール710は、ステップS1002と同様の最適化処理を実行する。その処理の詳細は
図11および
図12で説明する。ステップS1006にて、PDPコントローラ721は得られた解を次のステップS1004のトラジェクトリとする。
【0084】
<DP/DDDPによる最適化処理の詳細>
図11および
図12は、DP/DDDPにより最適化処理の詳細を示すフローチャートである。
図11および
図12は、
図10のステップS1002、S1005でシミュレータモジュール710が実行する処理の詳細を示す。
【0085】
ステップS1101にて、初期化を行う。初期化により、シミュレータモジュール710の時刻は初期時刻t=0、状態はユーザの与えた初期状態STATE[0]となる。ステップS1102にて、時刻tを1に設定する。ステップS1103にて、時刻tがT未満ならばステップS1104に、そうでないならば
図12のステップS1201に進む。
【0086】
ステップS1104にて、変数curStateに時刻t、コリドー内の最初のノードを代入する。なお、DPを実行する場合コリドー内にはすべてのノードがあるとする。DDDPを実行する場合はコリドーの幅が与えられる。
【0087】
ステップS1105にて、変数prevStateに時刻t-1、コリドー内の最初のノードを代入する。ステップS1106にて、ノードprevStateに至る状態遷移をメモリから読み込む。ここで読み込む情報は、ステップS1112でメモリに保存している。もしここで読み込む情報がない場合はこのステップS1106を飛ばす。
【0088】
ステップS1107にて、prevStateからcurStateに至る状態遷移コストを算出し、その値を変数costに代入する。コストの算出には(数式5)を用いればよい。ステップS1108にて、目的関数値obsを求める。これは(数式3)で示したように、prevStateの目的関数値に変数costを加えた値である。得られた値を変数obsに代入する。
【0089】
ステップS1109にて、時刻t-1、コリドー内に次のノードがある場合は、ステップS1110に、そうでない場合はステップS1111に進む。
【0090】
ステップS1110にて、変数prevStateに時刻t-1、コリドー内に次のノードを代入する。ステップS1110が終了すると、ステップS1106に戻る。
【0091】
ステップS1111にて、変数bestPrevStateに、時刻t-1におけるobsの値が最小のノードを代入する。ステップS1112にて、bestPrevStateからcurStateに至る状態遷移をメモリに保存する。ステップS1113にて、時刻t、コリドー内に次のノードがある場合は、ステップS1114に、そうでない場合はステップS1115に進む。
【0092】
ステップS1114にて、変数curStateに時刻t、コリドー内に次のノードを代入する。ステップS1114が終了すると、ステップS1105に戻る。
【0093】
ステップS1115にて、時刻tに1を加え、次の時刻に設定し、ステップS1103に戻る。
【0094】
図12のステップS1201にて、変数bestStateに、時刻T-1における最小のobs値を持つノードを代入する。ステップS1202にて、変数bestStateを配列bestStatesに追加する。ステップS1203にて、変数stateFromに、変数bestStateの1つ前のノードを代入する。
【0095】
ステップS1204にて、変数stateFromに有効なノードが格納されているならば、ステップS1205に、そうでなければ処理を終了する。ステップS1205にて、変数stateFromを配列bestStatesに追加する。ステップS1206にて、変数stateFromに、変数bestStateの1つ前のノードを代入する。ステップS1206が終了すると、ステップS1204に戻る。
【0096】
図11および
図12の最適化処理が終了した時点で、配列bestStatesには、時刻t=0から時刻t=T-1までの最適な状態遷移が格納されている。
【0097】
<本則操作に基づくダム貯水率およびダム放流量の時系列グラフ>
図13は、本則操作に基づくダム貯水率およびダム放流量の時系列グラフの例である。グラフ1310はダムD0のダム状態時系列グラフである。同様に、グラフ1320はダムD1の、グラフ1330はダムD2のダム状態時系列グラフである。注記1311、1321、および1331は、この時刻において緊急放流がなされたことを示す。緊急放流とはただし書き操作、あるいは異常洪水時防災操作とも呼ばれるダム操作であり、ダムが満杯となったためダム決壊を防ぐため、ダム流入量と同じだけ、ダム放流を行う操作である。これによりダム放流量は短時間で急激に増加することになる。
【0098】
<最適化されたダム群連携操作に基づくダム貯水率およびダム放流量の時系列グラフ>
図14は、ダム群連携操作プログラム621の出力する最適化されたダム群連携操作に基づくダム貯水率およびダム放流量の時系列グラフの例である。
図14におけるダム流入量は
図13に示したものと同一であり、本則操作を行うのみでは緊急放流に至る規模の流入がある場合を示している。グラフ1410はダムD0のダム状態時系列グラフである。同様に、グラフ1420はダムD1の、グラフ1430はダムD2のダム状態時系列グラフである。注記1411、1421、および1431は、この期間において事前放流がなされたことを示す。事前放流は、例えば降雨予測データ641が示す予測降雨によるダムの貯水増加に基づいて行われる。事前放流の期間はダム流入量よりもダム放流量が上回っている。最適化されたダム群連携操作により、予測される急激な降雨に対して事前放流を行い、緊急放流を防ぎ、下流側河川での洪水発生を防止できる。ダム下流の下線をただし放流量の増加の割合は
図15に示す「放流の原則」を遵守している。
【0099】
<下流に急激な水位の変動を生じない放流量>
図15は、下流に急激な水位の変動を生じない放流量の多項式近似の例である。ダムの操作規則においては、下流に急激な水位の変動を生じない放流量を超えないこと(いわゆる「放流の原則」を守ること)が求められる。グラフ1500は、その「放流の原則」を多項式で近似した例である。横軸は直前におけるダムiから下流への放流量であり、(数式5)におけるoutflow[i,t]に相当する量である。また縦軸はダムiにおける下流に急激な水位の変動を生じない放流量であり、(数式5)におけるoutflowLimit[i]に相当する量である。グラフ1500を用いることで、横軸の値outflow[i,t]によって縦軸の値outflowLimit[i]を決定できる。
【0100】
<ダムモデル713(プロジェクトデータ644)>
図16は、ダムモデル713に関するプロジェクトデータ644(
図6)のデータ構造を示す図である。この図においては
図1で示したダム群についてのデータ構造を表1600で示す。ダムのそれぞれに、有効貯水容量、洪水調整容量、初期状態、および下流モデルが定義される。表1600の内容はXML形式のプロジェクトデータ644として保存される。
【0101】
<河川モデル714(プロジェクトデータ644)>
図17は、河川モデル714に関するプロジェクトデータ644(
図6)のデータ構造を示す図である。
図16と同様に、この図においては
図1で示したダム群についてのデータ構造を表1700で示す。河川水位計のそれぞれに、上流側のモデル、そのモデルからの遅れ時間、および下流モデルが定義される。表1700の内容はXML形式のプロジェクトデータ644として保存される。
【0102】
[他の実施形態]
なお、本発明の適用可能な分野は、多目的ダムの貯水位時系列および放流量時系列の最適化に限らない。非凸の目的関数の最適化問題を、細かい解像度で解く要求のある分野に適用可能である。より具体的には、ある物体や人がある量でゲート前スペースに入ってきて、ゲートを通って出先へ出ていく状況で、物流や人流を制御するためにゲートの最適操作を支援する問題に適用できる。
【0103】
例として、イベント会場などにおける入場管理が挙げられる。イベント会場に複数の入場ゲートがあり、観客をそれぞれのゲート前スペースに入れ会場内の通路を通り自席に着席させる状況で、ゲート前スペースを溢れさせることなく、観客の平均待ち時間と待ち時間の標準偏差の最小化を試みる場合を考える。従来の方法では、観客一人一人を最適化の単位にするのではなく、複数人(例えば256人)を単位に最適化することで、計算負荷を減らす必要がある。本発明の適用により、観客一人を単位とした最適化が可能になる。
【0104】
なお、他の実施形態における“ゲートを有するゲート前スペース”が上述した実施形態における「ダム」に該当し、“ゲートからの出先”が「河川」に該当する。また、“ゲート前スペースへの物体または人の流入量”が「ダム流入量」に該当し、“ゲート前スペースにおける物体または人の収容率”が「貯水位(貯水率)」に該当し、“ゲート前スペースからゲートを通過させる物体または人の量”が「放流量」に該当する。
【0105】
本発明は上述の実施形態に限定されるものではなく、様々な変形例を含む。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、矛盾しない限りにおいて、ある実施形態の構成の一部を他の実施形態の構成で置き換え、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、構成の追加、削除、置換、統合、または分散をすることが可能である。また実施形態で示した構成および処理は、処理効率または実装効率に基づいて適宜分散、統合、または入れ替えることが可能である。
【符号の説明】
【0106】
610:コンピュータ、620:メモリ、621:ダム群連携操作プログラム、630:プロセッサ、640:ストレージ、650:入出力部