説明

最適解探索装置

【目的】 線形計画問題解決の処理効率を向上させた最適解探索装置を提供する。
【構成】 区間束縛条件保持手段1、共通束縛条件保持手段2内の区間束縛条件、共通束縛条件を束縛条件とし、目的関数計算手段5で計算された目的関数とともに線形計画問題を線形計画問題解決エンジン部6に渡す。線形計画問題解決エンジン部6では、線形計画問題ステータス保持手段11内のステータスに基づき、実行可能性判定を省略し、または線形計画問題基底解保持手段8に保持されている基底解を用いて計算する。基底解を計算により求めたときは、隣接問題基底解計算手段7により隣接問題の基底解を計算し、線形計画問題基底解保持手段8に登録する。実行可能性の判定、基底解の計算を行なったときには、線形計画問題ステータス計算手段9は、変更起点リスト10を用い、他の線形計画問題のステータスを計算し、変更する。

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、線形計画問題、すなわち、パラメータに関する一次式で示された束縛条件のもとで、同じくパラメータによって定まる目的関数の値を最適にするパラメータの値を計算する最適解探索装置に関するものである。
【0002】
【従来の技術】一般に、線形計画問題は、種々の条件のもとで最適な状態を得るために用いられる。例えば、損益分岐点の計算や、列車、航空機等の最適運行、生産工程の管理など、幅広い分野で応用されている。
【0003】従来の線形計画問題を解決する装置の1つとして、複数の部分問題ごとに線形計画問題を解決し、各線形計画問題から得られた局所解を走査して最適解を求める方式が用いられている。以下に、この方式について述べる。
【0004】区間ごとの束縛条件を与える一次不等式の斉次部を、T1 ,・・・,Tk と表わす。各Ti は、パラメータx1 ,・・・,xm に関する一次式pi,1 1 +・・・pi,m mである。
【0005】各斉次一次関数Tiには、単調増加数列si,1 ,・・・,si,k(i)が固有に与えられている。これを区間特性列と呼ぶ。ここで、k(i)は、ki を表わす。添字の添字が表現できないため、以下、このような表記を用いる。
【0006】この区間特性列を用い、1≦ji ≦ki −1を満たす任意のji に対して、一次不等式si,j(i)≦pi,1 1 +・・・pi,m m ≦si,j(i)+1が、区間束縛条件の1つとなる。
【0007】ここで、各斉次一次関数Ti に対してji ∈{1,・・・,ki −1}を一つずつ定めて、連立一次不等式p1,1 1 +・・・+p1,m m ≧s1,j(1)1,1 1 +・・・+p1,m m ≦s1,j(1)+1・・・pk,1 1 +・・・+pk,m m ≧sk,j(k)k,1 1 +・・・+pk,m m ≦sk,j(k)+1が区間束縛条件の組である。この連立一次不等式は、すべての(j1 ,・・・,jk )∈[1,・・・,k1 −1]×・・・×[1,・・・,kk −1]に対して作成される。
【0008】この連立一次不等式を1組ずつ取り出してきて、それをもとに1つずつ線形計画問題を定義する。この線形計画問題をj1 ,・・・,jk が定める線形計画問題(単純に(j1 ,・・・,jk )−問題)と呼ぶ。(j1 ,・・・,jk )−問題の束縛条件および目的関数について述べる。ユーザは、j1 ,・・・,jk によらないパラメータに関する一次方程式または一次不等式の組(以下、共通束縛条件と呼ぶ)を指定することができる。これらの共通束縛条件は、必要ならばスラック変数を用いて一次方程式の形式で表現することができる。すなわち、共通束縛条件をp'1,11 +・・・+p'1,mm =s'1・・・p'k',11 +・・・+p'k',mm =s'k'であるものとする。
【0009】スラック変数は、例えば、p'i,11 +・・・+p'i,mm ≦s'iのときは、スラック変数ui (≧0)を用いて、p'i,11 +・・・+p'i,mm +ui =s'iとすることができる。一方、p'i,11 +・・・+p'i,mm ≧s'iのときは、スラック変数ui (≧0)を用いて、p'i,11 +・・・+p'i,mm −ui =s'iとすることができる。
【0010】区間束縛条件である連立一次不等式の組と、共通束縛条件である連立一次方程式とを連立させたものが、(j1 ,・・・,jk )−問題の束縛条件となる。すなわち、
【数1】


と同値である。この線形方程式を、(j1 ,・・・,jk )−問題の束縛条件と呼ぶ。一般性を失うことなく全てのパラメータは非負の値を取るものと仮定できるので、以下の説明においてはxi ≧0,yi ≧0,zi ≧0であるものとする。
【0011】さて、最適解を評価するための物理量は目的関数で与えられる。物理量は必ずしもパラメータの一次関数で与えられるとは限らないが、束縛斉次一次関数とその区間特性列を適切に与えることにより、パラメータが1つの区間束縛条件の組を満たしている場合に、目的関数が一次関数になるような例が知られている。例えば、表の割付を行なう際に、各欄に割り付けられるテキストの行折りが一定になるように定め、目的関数を表の割付面積とすると、その行折りの一定の区間においては目的関数はパラメータの一次関数となる。このように、区分的に線形関数となる物理量を、目的関数として求める。ここでは、(j1 ,・・・,jk )−問題の目的関数は、j1 ,・・・,jk に依存して定まる線形関数v1 1 +・・・+vm mであるものとする。
【0012】以上のようにして取得した連立一次不等式をもとに、(j1 ,・・・,jk )−問題を完成させる。完成された(j1 ,・・・,jk )−問題は、(1)線形計画問題が実行不可能である、すなわち、線形計画問題の束縛条件を満たすようなパラメータの値が存在しないことを確かめるか、(2)線形計画問題の束縛条件を満たすパラメータの値で、目的関数を最小(最大)にするものを求めることによって解決される。そのための処理として、以下のような処理を行なう。
【0013】まず、(j1 ,・・・,jk )−問題の実行可能性を、線形計画法を用いて判定する。(j1 ,・・・,jk )−問題が実行不可能である場合は、その旨を出力して処理を終了する。
【0014】実行可能である場合は、(j1 ,・・・,jk )−問題に関する最初の実行可能基底を掃き出し法などを用いて計算し、計算した実行可能基底に属するパラメータの値を最初の基底解とする。現在の基底解が目的関数の最小値(最大値)を与えているときには、計算された目的関数の最小値(最大値)と、属する基底解(最適パラメータ)の情報を併せて出力し、処理を終了する。
【0015】基底解が目的関数の最小値(最大値)を与えないときには、ピボット変換を用いて新たな実行可能基底と、新たな基底解を計算し、最小値(最大値)が与えられるまで、基底解の評価と新たな実行可能基底、基底解の計算を繰り返す。上述の(j1 ,・・・,jk )−問題を解決する処理を、全ての(j1 ,・・・,jk )∈[1,・・・,k1 −1]×・・・×[1,・・・,kk −1]に対して行なう。全ての線形計画問題を解決し終わると、各(j1 ,・・・,jk)−問題を解決して得られた局所最適解を走査して、目的関数の値が最良値(最小値または最大値)となるものを探索し、対応するパラメータの値の組を最適解とする。
【0016】上述の方式では、各(j1 ,・・・,jk )−問題について、それぞれ、線形計画問題を解決する処理を行なっている。1つの線形計画問題を解決するだけでも、多くの時間を要するため、全体として最適解を得るために、非常に時間がかかってしまい、効率の点で難点があった。
【0017】
【発明が解決しようとする課題】本発明は、上述した事情に鑑みてなされたもので、処理効率を向上させた最適解探索装置を提供することを目的とするものである。
【0018】
【課題を解決するための手段】本発明は、請求項1に記載の発明においては、複数の線形計画問題から構成される複合線形計画問題の最適解を計算する最適解探索装置において、複数のパラメータに関する有限個の斉次一次関数を保持するとともに各斉次一次関数に付随する2個以上の実数からなる単調増加数列であって斉次一次関数の上限と下限を隣接する実数として有する区間特性列を保持する区間束縛条件保持手段と、常にパラメータ間に成立すべき一次方程式または一次不等式を共通束縛条件として保持する共通束縛条件保持手段と、前記区間束縛条件保持手段に保持されている各斉次一次関数の区間特性列から隣接する2個の実数を選択して得られる束縛条件の組ごとにパラメータに関する一次式として目的関数を計算する目的関数計算手段と、該目的関数計算手段で計算された目的関数と該目的関数に対応する束縛条件の組および前記共通束縛条件保持手段に保持されている共通束縛条件等からなる線形計画問題を実行可能基底および基底解を計算しながら解決する線形計画問題解決エンジン部と、線形計画問題解決エンジン部が実行可能基底と基底解を計算するたびに計算された実行可能基底を挟んで隣接する線形計画問題の実行可能基底と基底解を計算する隣接問題基底解計算手段と、計算済みの実行可能基底および基底解を線形計画問題と対応づけて保持する線形計画問題基底解保持手段と、前記区間束縛条件保持手段と前記共通束縛条件保持手段と前記目的関数計算手段と前記線形計画問題解決エンジン部を制御し前記線形計画問題解決エンジン部から前記束縛条件の組ごとに得られた結果をもとに最適値を探索する線形計画問題管理手段を有し、前記線形計画問題解決エンジン部が新たに線形計画問題を解きはじめる際に、前記線形計画問題基底解保持手段に解くべき線形計画問題に対応する実行可能基底と基底解が存在すれば、その実行可能基底と基底解を用いて計算を開始することを特徴とするものである。
【0019】また、請求項2に記載の発明においては、複合線形計画問題の最適解を計算する最適解探索装置において、複数のパラメータに関する有限個の斉次一次関数を保持するとともに各斉次一次関数に付随する2個以上の実数からなる単調増加数列であって斉次一次関数の上限と下限を隣接する実数として有する区間特性列を保持する区間束縛条件保持手段と、常にパラメータ間に成立すべき一次方程式または一次不等式を共通束縛条件として保持する共通束縛条件保持手段と、前記区間束縛条件保持手段に保持されている各斉次一次関数の区間特性列から隣接する2個の実数を選択して得られる束縛条件の組ごとにパラメータに関する一次式として目的関数を計算する目的関数計算手段と、前記束縛条件の組ごとに導出される線形計画問題それぞれに対して、少なくとも「実行可能である」、「実行不可能である」、「実行可能性が未知である」を指示するステータスを保持する線形計画問題ステータス保持手段と、前記目的関数計算手段で計算された目的関数と該目的関数に対応する束縛条件の組および前記共通束縛条件保持手段に保持されている共通束縛条件等からなる線形計画問題について実行可能性を判断して前記線形計画問題ステータス保持手段に保持されている該線形計画問題のステータスを変更した上で該線形計画問題を解決する線形計画問題解決エンジン部と、該線形計画問題解決エンジン部が各線形計画問題についてその実行可能性を判定するたびに該線形計画問題のステータスの変化がもたらす他の線形計画問題のステータスの変化を再計算し前記線形計画問題ステータス保持手段に保持されているステータスを変更する線形計画問題ステータス計算手段と、前記区間束縛条件保持手段と前記共通束縛条件保持手段と前記目的関数計算手段と前記線形計画問題解決エンジン部を制御し前記線形計画問題解決エンジン部から前記束縛条件の組ごとに得られた結果をもとに最適値を探索する線形計画問題管理手段を有し、前記線形計画問題解決エンジン部が線形計画問題を解く際に、前記線形計画問題ステータス保持手段に保持されているステータスを参照し、少なくとも「実行可能性が未知である」ステータス以外の場合には、該線形計画問題の実行可能性の判定処理を行なわないことを特徴とするものである。
【0020】さらに、請求項3に記載の発明においては、複合線形計画問題の最適解を計算する最適解探索装置において、複数のパラメータに関する有限個の斉次一次関数を保持するとともに各斉次一次関数に付随する2個以上の実数からなる単調増加数列であって斉次一次関数の上限と下限を隣接する実数として有する区間特性列を保持する区間束縛条件保持手段と、常にパラメータ間に成立すべき一次方程式または一次不等式を共通束縛条件として保持する共通束縛条件保持手段と、前記区間束縛条件保持手段に保持されている各斉次一次関数の区間特性列から隣接する2個の実数を選択して得られる束縛条件の組ごとにパラメータに関する一次式として目的関数を計算する目的関数計算手段と、前記束縛条件の組ごとに導出される線形計画問題それぞれに対して、少なくとも「解決済みである」、「基底解保持済みである」、「実行可能である」、「実行不可能である」、「実行可能性が未知である」を指示するステータスを保持する線形計画問題ステータス保持手段と、前記目的関数計算手段で計算された目的関数と該目的関数に対応する束縛条件の組および前記共通束縛条件保持手段に保持されている共通束縛条件等からなる線形計画問題の実行可能性の判定および実行可能基底と基底解の計算を行ない各処理において前記線形計画問題ステータス保持手段に保持されているステータスを変更しながら線形計画問題を解決する線形計画問題解決エンジン部と、該線形計画問題解決エンジン部が実行可能基底と基底解を計算するたびに計算された実行可能基底を挟んで隣接する線形計画問題の実行可能基底と基底解を計算するとともに前記線形計画問題ステータス保持手段に保持されている該隣接問題のステータスを変更する隣接問題基底解計算手段と、計算済みの実行可能基底および基底解を保持する線形計画問題基底解保持手段と、前記線形計画問題解決エンジン部および前記隣接問題基底解計算手段の処理に従い線形計画問題のステータスの変化がもたらす他の線形計画問題のステータスの変化を再計算し前記線形計画問題ステータス保持手段に保持されているステータスを変更する線形計画問題ステータス計算手段と、前記区間束縛条件保持手段と前記共通束縛条件保持手段と前記目的関数計算手段と前記線形計画問題解決エンジン部を制御し前記線形計画問題解決エンジン部から前記束縛条件の組ごとに得られた結果をもとに最適値を探索する線形計画問題管理手段を有し、前記線形計画問題解決エンジン部が線形計画問題を解く際に、前記線形計画問題ステータス保持手段に保持されているステータスを参照し、少なくとも「実行可能性が未知である」ステータス以外の場合には該線形計画問題の実行可能性の判定処理を行なわず、ステータスが「基底解保持済みである」ことを示している場合には前記線形計画問題基底解保持手段から実行可能基底と基底解を得て計算を開始することを特徴とするものである。
【0021】前記請求項2または3に記載の最適解探索装置において、前記線形計画問題ステータス保持手段に保持されたステータスは優先順位を持っており、前記線形計画問題管理手段は、該ステータスの優先順位に基づいて線形計画問題を解く順序を決定するように構成することができる。
【0022】
【作用】区間束縛条件保持手段に区間束縛条件が保持され、共通束縛条件保持手段に共通束縛条件が保持される。また、目的関数計算手段により目的関数が計算される。ここで、(j1 ,・・・,jk )−問題を特定し、線形計画問題解決エンジン部に渡される。(j1 ,・・・,jk )−問題を解くに当たって、実行可能基底(J)と基底解(ξX )(ここでX∈Ω)が得られたとする。ここで、Ω={x1 ,・・・,xm ,y1 ,z1 ,・・・,yk ,zk }、J⊂Ωである。
【0023】行列
【数2】


中の変数X∈Ωに対応する列ベクトルをvX と表わす。すなわち、vx(i)は第i列、vy(i)は第m+2i−1列、vz(i)は第m+2i列を表わす。
【0024】(J)が実行可能基底であるとは、{vX }(X∈J)が、{vX }(X∈Ω)が張る線形空間の基底であり、対応する基底解
【数3】


が存在して、束縛条件
【数4】


を満たすことである。ここで、実行可能基底に対して、対応する基底解は一意である。
【0025】このとき、以下の性質が成り立つ。
(1)ξy(i)=0が成り立つとき、(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題は実行可能であり、以下が成り立つ。
・J∋yi なら、(J)は実行可能基底である。
・Ω\J∋yi ならば、(J∪{yi }\{zi })は実行可能基底である。
・(ξ'X)(X∈Ω)は基底解である。
【数5】


このとき、(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題を、実行可能基底(J)を挟んで(j1 ,・・・,ji-1 ,ji ,ji+1 ,・・・,jk )−問題と隣接しているという。
(2)ξz(i)=0が成り立つとき、(j1 ,・・・,ji-1 ,ji −1,ji+1 ,・・・,jk )−問題は実行可能であり、以下が成り立つ。
・J∋zi なら、(J)は実行可能基底である。
・Ω\J∋yi ならば、(J∪{zi }\{yi })は実行可能基底である。
・(ξ'X)(X∈Ω)は基底解である。
【数6】


このとき、(j1 ,・・・,ji-1 ,ji −1,ji+1 ,・・・,jk )−問題を、実行可能基底(J)を挟んで(j1 ,・・・,ji-1 ,ji ,ji+1 ,・・・,jk )−問題と隣接しているという。
【0026】請求項1に記載の発明では、隣接問題基底計算手段は、線形計画問題解決エンジン部が線形計画問題の実行可能基底と基底解を計算する度に、その実行可能基底を挟んで隣接する線形計画問題がすでに線形計画問題基底解保持手段に保持されているかを調べ、保持されていない場合には、該隣接線形計画問題の実行可能基底と基底解を上述の性質にしたがって計算して、線形計画問題基底解保持手段に登録する。
【0027】線形計画問題解決エンジン部が新たに線形計画問題を解くときには、まず、線形計画問題基底解保持手段に該線形計画問題が登録されているかを調べ、もし登録されているならば、登録されている実行可能基底と基底解を用いて計算を開始する。これにより、線形計画問題解決エンジン部で行なわれる実行可能性判定と初期実行可能基底探索のステップを省略することができる。
【0028】また、各(j1 ,・・・,jk )−問題には、次のような性質がある。特定の一つの斉次一次関数Ti に関する区間束縛条件が異なる2つの線形計画問題、(j1 ,・・・,ji-1 ,ji ,ji+1 ,・・・,jk )−問題と、(j1 ,・・・,ji-1 ,j'i,ji+1 ,・・・,jk )−問題について、以下の性質が成り立つ。ただし、ji <j'iが成り立つものとする。
性質1)(j1 ,・・・,ji-1 ,ji ,ji+1 ,・・・,jk )−問題と(j1 ,・・・,ji-1 ,j'i,ji+1 ,・・・,jk )−問題の双方が実行可能であるとき、任意のji ≦j≦j'iに対して、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題は実行可能である。
性質2)(j1 ,・・・,ji-1 ,ji ,ji+1 ,・・・,jk )−問題が実行可能であり、(j1 ,・・・,ji-1 ,j'i,ji+1 ,・・・,jk )−問題が実行不可能であるとき、任意のj≧j'iに対して、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題は実行不可能である。
性質3)(j1 ,・・・,ji-1 ,ji ,ji+1 ,・・・,jk )−問題が実行不可能であり、(j1 ,・・・,ji-1 ,j'i,ji+1 ,・・・,jk )−問題が実行可能であるとき、任意のj≦ji に対して、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題は実行不可能である。
【0029】線形計画問題解決エンジン部は、線形計画問題の実行可能性を判定する度に、判定結果に応じて、「実行可能である」、「実行不可能である」のいずれかを指示するステータスを線形計画問題ステータス保持手段22中に、線形計画問題に対応付けて登録する。
【0030】線形計画問題ステータス計算手段は、ある線形計画問題のステータスの登録によって、上述の性質1)ないし性質3)からその実行可能性が判定できるすべての線形計画問題について、そのステータスを計算し、登録する。
【0031】線形計画問題ステータス計算手段によって実行可能性が判定され、「実行可能である」、「実行不可能である」のいずれかのステータスが新たに付与される線形計画問題が存在すれば、その線形計画問題のステータスの登録によって、さらに実行可能性が判定できる線形計画問題が存在するかもしれない。線形計画問題ステータス計算手段は、このような線形計画問題が存在しなくなるまで、上記の手続きを繰り返す。
【0032】請求項2に記載の発明では、この線形計画問題ステータス保持手段と、線形計画問題ステータス計算手段により、一部の線形計画問題の実行可能性を、線形計画法のプログラムを用いることなく知ることができ、「実行可能性が未知である」線形計画問題についてのみ、線形計画法を用いて実行可能性を検証すればよい。特に、線形計画問題管理手段は、線形計画問題ステータス計算手段によって「実行不可能である」ことを指示するステータスを付与された線形計画問題を除外して処理を進めることにより、処理の効率を向上させることができる。
【0033】線形計画問題のステータスをさらに詳細に設定することができる。例えば、請求項3に記載の発明のように、請求項1に記載の隣接問題基底解計算手段および線形計画問題基底解保持手段を用い、線形計画問題のステータスとして、「実行可能である」、「実行不可能である」、「実行可能性が未知である」に加えて、「解決済みである」並びに「基底解が与えられている」ことを指示するステータスを設定することができる。
【0034】「実行可能である」ことを示すステータスが設定された線形計画問題は、その実行可能性が線形計画法の処理により判定されたものではなく、線形計画問題ステータス計算手段によって、他の線形計画問題のステータスから計算されている線形計画問題である。「基底解が与えられている」ことを示すステータスが設定された線形計画問題は、隣接問題基底解計算手段によって、隣接する線形計画問題の実行可能基底と基底解から、その線形計画問題の実行可能基底と基底解が計算されている線形計画問題である。「実行不可能である」ことを示すステータスが設定された線形計画問題は、その実行不可能性が、線形計画法を用いて判定されたか、または、前記の線形計画問題ステータス計算手段によって他の線形計画問題のステータスから計算された線形計画問題である。実行可能な線形計画問題を線形計画問題解決エンジン部が解決すると、該線形計画問題のステータスは「解決済みである」に設定される。
【0035】このような構成により、線形計画問題解決エンジン部は、解決する線形計画問題に対応したステータスを参照することにより、実行可能性の検証、あるいは、実行可能性の検証と実行可能基底および基底解の計算を省略することができ、効率の向上を図ることができる。
【0036】請求項4に記載の発明において、ステータスに優先順位を付けることにより、線形計画問題管理手段における線形計画問題の選択を効率よく行なうことが可能となる。例えば、請求項3に記載の発明のように、5種類のステータスを有する場合、以下のように線形計画問題を選択することによって、処理の効率化を図ることができる。
(1)「基底解が与えられている」ことを示すステータスが設定された線形計画問題が存在すれば、それを取得する。
(2)「基底解が与えられている」ことを示すステータスが設定されている線形計画問題が存在しない場合、「実行可能である」ことを示すステータスが設定された線形計画問題が存在すれば、それを取得する。
(3)「基底解が与えられている」および「実行可能である」ことを示すステータスが設定された線形計画問題が存在しない場合、「実行可能性が未知である」線形計画問題を取得する。
【0037】「基底解が与えられている」ことを示すステータスが設定された線形計画問題は、線形計画法のプログラム中の実行可能性の判定処理を省略することができるので、効率良く解を得ることができる。また、計算の途中で中間的に得られる基底解から、隣接する線形計画問題の基底解が得られるので、「基底解が与えられている」ことを示すステータスが設定された線形計画問題を優先的に解くことにより、他の線形計画問題の解決の効率を向上させる。この効果は、連鎖的である。すなわち、「基底解が与えられている」ことを示すステータスが設定された線形計画問題を解決することにより、「基底解が与えられている」ことを示すステータスが設定された線形計画問題が増殖していくという効果が得られる。
【0038】「実行可能である」ことを示すステータスが設定された線形計画問題は、実行可能性の判定処理を省略することができる。ただし、「基底解が与えられている」ことを示すステータスが設定された線形計画問題とは異なり、問題自身を解決するためには線形計画法のプログラムのすべてのステップを実行しなければならないが、隣接する線形計画問題の基底解を与えるという点では、「基底解が与えられている」ことを示すステータスが設定された線形計画問題を解く場合と同様である。したがって、「実行可能である」ことを示すステータスが設定された線形計画問題を優先的に解くことにより、やはり、「基底解が与えられている」ことを示すステータスが設定された線形計画問題が連鎖的に増殖していくという効果が得られる。
【0039】このように、線形計画問題管理手段が線形計画問題ステータス保持手段に保持されているステータスに応じて、線形計画問題解決エンジン部に引き渡す線形計画問題を計画的に選択することによって、処理の効率を向上させることができる。
【0040】
【実施例】図1は、本発明の最適解探索装置の一実施例を示す構成図である。図中、1は区間束縛条件保持手段、2は共通束縛条件保持手段、3は線形計画問題管理手段、4は局所最適解リスト、5は目的関数計算手段、6は線形計画問題解決エンジン部、7は隣接問題基底解計算手段、8は線形計画問題基底解保持手段、9は線形計画問題ステータス計算手段、10は変更起点リスト、11は線形計画問題ステータス保持手段である。
【0041】区間束縛条件保持手段1には、インデックスi∈{1,・・・,k}に対応付けて、束縛条件の係数ベクトル(pi,1 ,・・・,pi,m )と、境界特性列si,1 <si,2 <・・・<si,k(i)が保持されている。
【0042】共通束縛条件保持手段2には、区間束縛条件に関わらずパラメータを用いた一次方程式の共通束縛条件がリストとして保持されている。共通束縛条件が一次不等式である場合には、スラック変数を用いて一次方程式に変形することができるので、以下の説明では共通束縛条件保持手段2に保持される共通束縛条件は、あらかじめ一次方程式の形に変形されているものとする。共通束縛条件保持手段に保持される束縛条件を、p'i,11 +・・・+p'i,mm =s'iと表わす。ただし、1≦i≦k’とする。
【0043】線形計画問題管理手段3は、(j1 ,・・・,jk )−問題を特定し、各インデックスiに対応するji 、あるいは、必要ならば、区間束縛条件保持手段1に保持されている境界特性列中の隣接する境界値の組(sj(1),sj(1)+1),(sj(2),sj(2)+1),・・・,(sj(k),sj(k)+1)を目的関数計算手段5に渡し、目的関数v1 1 +・・・+vm mを得る。この(j1 ,・・・,jk )−問題の特定には、線形計画問題ステータス保持手段11に保持されているステータスを参照し、「基底解が与えられている」線形計画問題を選択し、なければ、「実行可能である」線形計画問題を選択し、なければ、「実行可能性が未知である」線形計画問題を選択する。
【0044】目的関数計算手段5から得られる目的関数と、区間束縛条件保持手段1に保持されている区間束縛条件、共通束縛条件保持手段2に保持されている共通束縛条件を線形計画問題解決エンジン部6に渡し、線形計画問題を解く。解くべき線形計画問題は、各インデックスiに対してji ∈{1,・・・,ki −1}を1つずつ定めることにより特定される(j1 ,・・・,jk )−問題である。この線形計画問題は、すべての(j1 ,・・・,jk )∈[1,・・・,k1 −1]×・・・×[1,・・・,kk −1]について存在する。線形計画問題解決エンジン部6からは、渡した線形計画問題の最小値(最大値)と、その最小値(最大値)を与える最適パラメータの値との組、あるいは、線形計画問題が実行不可能である旨の情報が返される。各(j1 ,・・・,jk )−問題を線形計画問題解決エンジン部6で解いて得られた局所解は、局所最適解リスト4に記録する。すべての(j1 ,・・・,jk )−問題が解決すると、局所最適解リスト4を走査し、全体の最適解を得る。
【0045】局所最適解リスト4には、線形計画問題解決エンジン部6から返される線形計画問題の最小値(最大値)と、その最小値(最大値)を与える最適パラメータの値との組を順次保持する。
【0046】目的関数計算手段5は、線形計画問題管理手段3が特定した(j1 ,・・・,jk )−問題の目的関数として、区間束縛条件保持手段1に保持されている区間束縛条件に基づき、j1 ,・・・,jk に依存して定まる線形関数v1 1 +・・・+vm mを求める。
【0047】線形計画問題解決エンジン部6は、線形計画問題管理手段3から目的関数、区間束縛条件、共通束縛条件を受け取り、線形計画問題である(j1 ,・・・,jk )−問題を解決して、その線形計画問題の最小値(最大値)と、その最小値(最大値)を与える最適パラメータの値との組、あるいは、線形計画問題が実行不可能である旨の情報を返す。線形計画問題の解決は、まず、実行可能性を検証する。そして、実行可能である線形計画問題について、実行可能基底、基底解を求め、例えば、終了条件として単体法の単体基準Iおよび単体基準IIを満たしたならば最適解として抽出し、終了条件を満たさないときは、ある特定の方法(例えば、単体基準III)にしたがって新たな単体表を計算し(ピボッド変換)、さらに、終了条件を調べる。
【0048】隣接問題基底解計算手段7は、線形計画問題解決エンジン部6が線形計画問題の実行可能基底と基底解を計算する度に、その実行可能基底を挟んで隣接する線形計画問題がすでに線形計画問題基底解保持手段8に保持されているかを調べ、保持されていない場合には、該隣接線形計画問題の実行可能基底と基底解を計算して、線形計画問題基底解保持手段8に登録する。
【0049】線形計画問題基底解保持手段8は、(j1 ,・・・,jk )−問題に対して、その実行可能基底、基底解、実行可能基底に属する単体表主要部を対応付けて保持する。線形計画問題基底解保持手段8に保持される線形計画問題のステータスは、READYまたはSOLVEDのいずれかである。ただし、READYおよびSOLVEDは、上述の「基底解保持済みである」、「解決済みである」の各ステータスに相当する。
【0050】実行可能基底に属する単体表主要部とは、(j1 ,・・・,jk )−問題の束縛条件行列
【数7】


を基底{vX }(x∈J)に関して基底変換して得られるr行2k+m列の行列[qi,j ]である。J={X1 ,・・・,Xr }とすると、qi,j はもとの束縛条件行列中のj番目の列ベクトルvj の列ベクトルvX(i)に対する相対成分である。すなわち、一意な一次結合vj =qi,j X(1)+・・・+qr,j X(r)が成り立つ。ここで、rは束縛条件行列のランクである。ここで、束縛条件の右辺(単体表の非斉次部分)である列ベクトルを、基底(vX )(X∈J)の一次結合
【数8】


と表わすとき、連立一次方程式
【数9】


は、もとの束縛条件と同値な束縛条件を与える。
【0051】線形計画問題ステータス計算手段9は、変更起点リスト10に登録されている線形計画問題を先頭から順次取り出し、取り出した線形計画問題を起点として、上述の作用の項で説明した性質1)ないし性質3)から、その実行可能性が判定できるすべての線形計画問題について、そのステータスを計算し、線形計画問題ステータス保持手段11内のステータスを変更する。それとともに、ステータスを変更した線形計画問題を変更起点リスト10の最後尾に追加登録する。
【0052】変更起点リスト10には、隣接問題基底解計算手段7および線形計画問題ステータス計算手段9で線形計画問題ステータス保持手段11内のステータスを変更するごとに、ステータスが変更された(j1 ,・・・,jk )−問題が登録される。
【0053】線形計画問題ステータス保持手段11は、各(j1 ,・・・,jk )−問題に対して、UNKNOWN,FEASIBLE,INFEASIBLE,READY,SOLVEDのいずれかのステータスを対応付けて保持する。これらのステータスは、上述の「実行可能性が未知である」、「実行可能である」、「実行不可能である」、「基底解が与えられている」、「解決済みである」の各ステータスに相当する。初期状態においては、全ての問題のステータスはUNKNOWNである。
【0054】図2は、本発明の最適解探索装置の一実施例における処理の一例を示すフローチャートである。初期情報として、区間束縛条件保持手段1および共通束縛条件保持手段2には、それぞれ、区間束縛条件、共通束縛条件が格納されているものとする。
【0055】S101において、線形計画問題管理手段3は、線形計画問題解決エンジン部6に引き渡すべき線形計画問題、すなわち、(j1 ,・・・,jk )−問題を特定する。S102において、線形計画問題管理手段3は、選択された(j1 ,・・・,jk )−問題を線形計画問題として完成させる。S103において、線形計画問題解決エンジン部6は、与えられた線形計画問題を解く。S104において、線形計画問題管理手段3は、線形計画問題解決エンジン部6からの返り値が最適パラメータと目的関数の最小値(最大値)である場合には、線形計画問題と対応付けて局所最適解リスト4に付け加えた後、S101へ戻り、手続きを繰り返す。線形計画問題解決エンジン部6からの返り値が、線形計画問題が実行不可能であることを報告するものである場合には、何もせず、S101へ戻り、手続きを繰り返す。
【0056】この処理をすべての(j1 ,・・・,jk )−問題について繰り返し行なうことにより、局所最適解リスト4には、解決した(j1 ,・・・,jk )−問題の最適解およびそのときのパラメータが蓄積されている。線形計画問題管理手段3は、この局所最適解リスト4を走査し、最小の解を求める。これにより、区間束縛条件、共通束縛条件を満たす最適解が得られたことになる。
【0057】以下、S101ないしS103の各ステップの詳細な処理について説明する。図3は、線形計画問題の特定処理の一例を示すフローチャートである。線形計画問題管理手段3は、以下の手続きを経て、線形計画問題解決エンジン部6に引き渡すべき線形計画問題を特定する。
【0058】S111において、READY状態の線形計画問題が線形計画問題ステータス保持手段11に登録されていれば、S112においてそれを取得する。
【0059】S113において、READY状態の線形計画問題が線形計画問題ステータス保持部22に登録されていない場合、FEASIBLE状態の線形計画問題が線形計画問題ステータス保持手段11に登録されていれば、S114においてそれを取得する。
【0060】S115において、READY状態の線形計画問題、FEASIBLE状態の線形計画問題のいずれも線形計画問題ステータス保持手段11に登録されていない場合、UNKNOWN状態の線形計画問題が線形計画問題ステータス保持手段11に登録されていれば、S116においてそれを取得する。
【0061】S117において、線形計画問題ステータス保持手段11に登録されている全ての線形計画問題のステータスがINFEASIBLE,SOLVEDのいずれかであるか調べ、そうであるときにはS118の処理を行ない、少なくとも1つの線形計画問題のステータスがREADY,FEASIBLE,UNKNOWNのいずれかであるときには、S112またはS114またはS116で線形計画問題が選択されているので、線形計画問題管理手段3による線形計画問題を特定する処理を終了し、次の線形計画問題を完成させる処理に移る。
【0062】S117において、線形計画問題ステータス保持手段11に登録されている全ての線形計画問題のステータスがINFEASIBLE,SOLVEDとなると、S118において、線形計画問題管理手段3は、局所最適解リスト4を走査して、登録された目的関数の最小値あるいは最大値の中から、大域的な最小値あるいは最大値を探す。次いで、探した最小値あるいは最大値を与える線形計画問題と最適パラメータを取得する。この最適パラメータが、得ようとする線形計画問題全体の最適解である。このS118の処理の後、本発明の最適解探索装置の処理を終了する。
【0063】図4は、線形計画問題を完成させる処理の一例を示すフローチャートである。線形計画問題管理手段3は、図3で説明した線形計画問題の選択処理によって選択された線形計画問題、すなわち、(j1 ,・・・,jk )−問題を以下の手続きによって線形計画問題として完成する。
【0064】S121において、特定された(j1 ,・・・,jk )−問題のステータスが、FEASIBLE,UNKNOWNのいずれかである場合は、S122において、区分束縛条件保持手段および共通束縛条件保持手段から、(j1 ,・・・,jk )−問題に属する線形計画問題の束縛条件
【数10】


を計算する。
【0065】S123において、特定された(j1 ,・・・,jk )−問題のステータスがREADYである場合は、S124において、線形計画問題基底解保持手段8中で、(j1 ,・・・,jk )−問題に対応付けられている単体表主要部[qi,j]と基底解(ξX )(X∈Ω)を取得し、(j1 ,・・・,jk )−問題に属する線形計画問題の束縛条件
【数11】


を計算する。
【0066】S125において、目的関数計算手段5から与えられた(j1 ,・・・,jk)−問題に対する線形計画問題の目的関数を得る。そして、S126において、S122またはS124で計算した束縛条件と目的関数からなる線形計画問題を定義し、線形計画問題解決エンジン部6に引き渡す。
【0067】図5は、線形計画問題の解決処理の一例を示すフローチャートである。線形計画問題解決エンジン部6は、以下の手続きで、線形計画問題管理手段3から与えられた線形計画問題を解く。
【0068】S131において、与えられた(j1 ,・・・,jk )−問題のステータスがUNKNOWNであるときには、S132において、線形計画問題解決エンジン部6は、与えられた線形計画問題の実行可能性を線形計画法を用いて判定する。与えられた線形計画問題が実行不可能と判定された場合、S133において、線形計画問題ステータス保持手段11中の(j1 ,・・・,jk )−問題に対応するステータスをINFEASIBLEに変更する。さらに、(j1 ,・・・,jk )−問題を変更起点リスト10に登録した上で、線形計画問題ステータス計算手段9を呼び出す。線形計画問題ステータス計算手段9は、(j1 ,・・・,jk )−問題のステータスの変化がもたらす他の線形計画問題のステータスの変化を計算する。また、線形計画問題解決エンジン部6は処理を終え、線形計画問題管理手段3に制御を返す。
【0069】S132において、該線形計画問題が実行可能と判断された場合、S134において、掃き出し法等を用いて実行可能基底(J)、基底解(ξX )(X∈Ω)、実行可能基底に属する単体表(主要部と非斉次部)[qi,j i=1,・・・,r,j=1,・・・,2k+m,(bi i=1,・・・,r を計算して、現在の実行可能基底、基底解、単体表とする。そして、S136へ進む。
【0070】S131において、与えられた(j1 ,・・・,jk )−問題のステータスがFEASIBLEであるときには、図4のS122で求めた束縛条件をもとに、S134において、掃き出し法等を用いて実行可能基底(J)、基底解(ξX )(X∈Ω)、実行可能基底に属する単体表(主要部と非斉次部)[qi,j i=1,・・・,r,j=1,・・・,2k+m,(bi i=1,・・・,r を計算して、現在の実行可能基底、基底解、単体表とする。そして、S136へ進む。
【0071】一方、S131において、与えられた(j1 ,・・・,jk )−問題のステータスがREADYである時には、S135において、線形計画問題基底解保持手段8から(j1 ,・・・,jk )−問題に対応付けられた実行可能基底(J)を取得して、図4のS124で計算した[qi,j i=1,・・・,r,j=1,・・・,2k+mと併せて、現在の実行可能基底、基底解、単体表とする。
【0072】S136において、現在の実行可能基底を挟んで隣接する線形計画問題の実行可能基底(J’)、基底解(ξ'X)(X∈Ω)、(J’)に属する単体表主要部[q'i,ji=1,・・・,r,j=1,・・・,2k+mを求め、線形計画問題基底解保持手段8に登録する。この処理は、図6を用いて後述する。
【0073】S137において、現在の基底解が(j1 ,・・・,jk )−問題の目的関数の最小値(最大値)を与えているか否かを判定し、与えていないときは、S138において、現在の単体表にピボット変換を施して、新たな実行可能基底、基底解、単体表を計算し、現在の実行可能基底、基底解、単体表とした上で、S136の処理を繰り返す。
【0074】ここで、最小(最大)性の判定、実行可能基底、基底解、単体表の計算方法は単体(シンプレックス)法の単体基準Iないし単体基準IIIとして知られている方法による。
【0075】S137において、現在の基底解が(j1 ,・・・,jk )−問題の目的関数の最小値(最大値)を与えているならば、S139において(j1 ,・・・,jk )−問題のステータスに応じて、以下の処理を行なう。(j1 ,・・・,jk)−問題のステータスがFEASIBLEあるいはREADYであるときには、S140において、単に線形計画問題ステータス保持手段11中の(j1 ,・・・,jk )−問題に対応するステータスをSETTLEDに変更する。
【0076】S139において、(j1 ,・・・,jk )−問題のステータスがUNKNOWNである時には、S141において、線形計画問題ステータス保持手段11中の(j1 ,・・・,jk )−問題に対応するステータスをSETTLEDに変更したうえで、(j1 ,・・・,jk )−問題を変更起点リスト10に登録し、線形計画問題ステータス計算手段9を呼び出して、他の線形計画問題のステータスの変化を計算させる。
【0077】S142において、現在の基底解(最適パラメータ)と目的関数の最小値(最大値)を線形計画問題管理手段3に報告するとともに、制御を返す。
【0078】図6は、現在の実行可能基底を挟んで隣接する線形計画問題の実行可能基底、基底解、単体表主要部を求める処理の一例を示すフローチャートである。図5R>5のS136で行なわれる処理は以下の手続きで実行される。
【0079】S151において、判定1を行なう。判定1は、ξy(i)=0かつ(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNまたはFEASIBLEであるようなインデックスiが存在するか否かを判定するものである。
【0080】S151で判定1の条件に合致するインデックスiが存在するときは、S152において、(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題の実行可能基底(J’)、基底解(ξ'X)(X∈Ω)、単体表主要部[q'i,ji=1,・・・,r,j=1,・・・,2k+mを以下のように定める。
【数12】


ただし、T-1[qi,j ]Tは、[qi,j ]の(zi ,yi )を軸にしたピボット変換、すなわち、新しい実行可能基底(J’)に関する基底変換の結果であり、J={X1 ,・・・,Xr },zi =Xl であるとき、変換行列
【数13】


によって計算される。ここで、En はn次単位行列を表す。
【0081】S153において、S152で求められた実行可能基底、基底解、単体表主要部を、(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題と対応付けて、線形計画問題基底解保持手段8に登録する。
【0082】S154において、線形計画問題ステータス保持手段11中の(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題のステータスをREADYに変更し、さらに、(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk)−問題の変更前のステータスがUNKNOWNであった場合には、(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題を変更起点リスト10の最後尾に追加する。そして、S151へ戻る。
【0083】S151における判定1において、ξy(i)=0かつ(j1 ,・・・,ji-1 ,ji +1,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNまたはFEASIBLEであるようなインデックスiが存在しない場合には、S155において、判定2を行なう。判定2は、ξz(i)=0かつ(j1 ,・・・,ji-1,ji −1,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNまたはFEASIBLEであるようなインデックスiが存在するか否かを判定するものである。この条件を満たすインデックスiが存在しない場合には、現在の実行可能基底を挟んで隣接する線形計画問題についての処理が終了したものとして、図5のS136の処理を終了する。
【0084】S155における判定2において、条件に合致するインデックスiが存在するときは、S156において、(j1 ,・・・,ji-1 ,ji −1,ji+1 ,・・・,jk )−問題の実行可能基底(J’)、基底解(ξ'X)(X∈Ω)、単体表主要部[q'i,ji=1,・・・,r,j=1,・・・,2k+mを以下のように定める。
【数14】


ただし、T-1[qi,j ]Tは、[qi,j ]の(yi ,zi )を軸にしたピボット変換、すなわち、新しい実行可能基底(J’)に関する基底変換の結果であり、J={X1 ,・・・,Xr },yi =Xl であるとき、変換行列
【数15】


によって計算される。
【0085】S157において、求められた実行可能基底、基底解、単体表主要部は、(j1 ,・・・,ji-1 ,ji −1,ji+1 ,・・・,jk )−問題と対応付けて、線形計画問題基底解保持手段8に登録する。
【0086】S158において、線形計画問題ステータス保持手段11中の(j1 ,・・・,ji-1 ,ji −1,ji+1 ,・・・,jk )−問題のステータスをREADYに変更し、さらに、(j1 ,・・・,ji-1 ,ji −1,ji+1 ,・・・,jk)−問題の変更前のステータスがUNKNOWNであった場合には、(j1 ,・・・,ji-1 ,ji −1,ji+1 ,・・・,jk )−問題を変更起点リスト10の最後尾に追加する。
【0087】上述のような処理により、ステータスがINFEASIBLEの場合には線形計画問題の解決の処理を行なわず、また、ステータスがFEASIBLEの場合には、実行可能性を判断する処理を省略することができる。さらに、ステータスがREADYの場合には、線形計画問題基底解保持手段8に登録されている実行可能基底、基底解、単体表主要部を用いることにより、これらの計算を省略することが可能となる。このように、線形計画法の処理の一部を省略することにより、処理速度を向上させることができる。
【0088】図7は、線形計画問題ステータス計算手段9の動作の一例を示すフローチャートである。線形計画問題ステータス計算手段9が線形計画問題解決エンジン部6により起動されると、以下の手順で処理を行なう。
【0089】S161において、変更起点リスト10が空であれば処理を終了し、制御を線形計画問題解決エンジン部6に返す。変更起点リスト10が空でないときは、S162において、変更起点リスト10の先頭の線形計画問題を取り去り、取り去った線形計画問題を起点として、以下のステータスの変更を実行する。
【0090】S163において、起点線形計画問題(例えば、(j1 ,・・・,jk )−問題とする)のステータスが、SOLVED,READY,FEASIBLEのいずれかであるか否かを判定し、そのいずれかであるときはS164の処理を行ない、INFEASIBLEであるときはS165の処理を行なった後、S161へ戻る。
【0091】図8は、起点線形計画問題のステータスがSOLVED,READY,FEASIBLEのいずれかである場合の線形計画問題ステータス計算手段の動作の一例を示すフローチャートである。この処理は、起点線形計画問題が少なくとも実行可能である場合に、そのステータスを隣接する線形計画問題に伝播させるための処理である。初期設定として、S171において、インデックスiを1に設定する。
【0092】S172において、ji >1のとき、次の条件のいずれかを満たす最大のa<ji を探索する。
(1)(j1 ,・・・,ji-1 ,a,ji+1 ,・・・,jk )−問題のステータスは、SOLVED,READY,FEASIBLEのいずれかである。
(2)(j1 ,・・・,ji-1 ,a,ji+1 ,・・・,jk )−問題のステータスはINFEASIBLEである。
(3)a=1である。
【0093】S173において、S172で探索されたaが、上述の条件「(1)(j1 ,・・・,ji-1 ,a,ji+1 ,・・・,jk )−問題のステータスは、SOLVED,READY,FEASIBLEのいずれかである。」を満たすときは、S174において、a<j<ji を満たすjについて、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNであれば、ステータスをFEASIBLEに変更する操作を施す。
【0094】S175において、S172で探索されたaが、上述の条件「(2)(j1 ,・・・,ji-1 ,a,ji+1 ,・・・,jk )−問題のステータスはINFEASIBLEである。」を満たすとき、S176において、j<aを満たすすべてのjについて、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNであれば、ステータスをINFEASIBLEに変更する操作を施す。
【0095】S177において、ji <ki −1のとき、次の条件のいずれかを満たす最小のb>ji を探索する。
(1)(j1 ,・・・,ji-1 ,b,ji+1 ,・・・,jk )−問題のステータスはSOLVED,READY,FEASIBLEのいずれかである。
(2)(j1 ,・・・,ji-1 ,b,ji+1 ,・・・,jk )−問題のステータスはINFEASIBLEである。
(3)b=ki −1である。
【0096】S178において、S177で探索されたbが、上述の条件「(1)(j1 ,・・・,ji-1 ,b,ji+1 ,・・・,jk )−問題のステータスはSOLVED,READY,FEASIBLEのいずれかである。」を満たすときは、S179において、b>j>ji を満たす全てのjについて、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNであれば、ステータスをFEASIBLEに変更する操作を施す。
【0097】S180において、S177で探索されたbが、上述の条件「(2)(j1 ,・・・,ji-1 ,b,ji+1 ,・・・,jk )−問題のステータスはINFEASIBLEである。」を満たすときは、S181において、j<bを満たすすべてのjについて、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNであればステータスをINFEASIBLEに変更する操作を施す。
【0098】S182において、S171ないしS181の処理でステータスが変更された全ての線形計画問題を変更起点リスト10の最後尾に追加する。
【0099】S183において、インデックスiが最後であるか、すなわち、i=kであるかをチェックし、そうであれば図7のS164の処理を終了する。もし、i<kであれば、S184において、インデックスiを1増やして、S172以降の処理を繰り返す。
【0100】図9は、起点線形計画問題のステータスがINFEASIBLEである場合の線形計画問題ステータス計算手段の動作の一例を示すフローチャートである。この処理は、起点線形計画問題が実行不可能の場合に、そのステータスを隣接する線形計画問題に伝播させるための処理である。初期設定として、S191において、インデックスiを1に設定する。
【0101】S192において、ji >1のとき、次の条件のいずれかを満たす最大のa<ji を探索する。
(1)(j1 ,・・・,ji-1 ,a,ji+1 ,・・・,jk )−問題のステータスは、SOLVED,READY,FEASIBLEのいずれかである。
(2)a=1である。
【0102】S193において、S192で探索されたaが、上述の条件「(1)(j1 ,・・・,ji-1 ,a,ji+1 ,・・・,jk )−問題のステータスは、SOLVED,READY,FEASIBLEのいずれかである。」を満たすときは、j>ji を満たす全てのjについて、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNであれば、ステータスをINFEASIBLEに変更する操作を施す。
【0103】S194において、ji <ki −1のとき、次の条件のいずれかを満たす最小のb>ji を探索する。
(1)(j1 ,・・・,ji-1 ,b,ji+1 ,・・・,jk )−問題のステータスは、SOLVED,READY,FEASIBLEのいずれかである。
(2)b=ki −1である。
【0104】S195において、S194で探索されたbが、上述の条件「(1)(j1 ,・・・,ji-1 ,b,ji+1 ,・・・,jk )−問題のステータスは、SOLVED,READY,FEASIBLEのいずれかである。」を満たすときは、j<ji を満たす全てのjについて、(j1 ,・・・,ji-1 ,j,ji+1 ,・・・,jk )−問題のステータスがUNKNOWNであれば、INFEASIBLEに変更する操作を施す。
【0105】S196において、S191ないしS195でステータスが変更された全ての線形計画問題を、変更起点リスト10の最後尾に追加する。
【0106】S197において、インデックスiが最後であるか、すなわち、i=kであるかをチェックし、そうであれば図7のS165の処理を終了する。もし、i<kであれば、S198において、インデックスiを1増やしてS192に戻り、次のiについて処理を繰り返す。
【0107】図7ないし図9で示した処理により、起点線形計画問題から実行可能あるいは実行不可能が判別される線形計画問題について、ステータスを変更することができ、変更された線形計画問題については線形計画法に基づく実行可能性の判断処理を行なう必要がなくなるため、処理の高速化を図ることができる。
【0108】本発明の最適解探索装置は、例えば、表のレイアウト生成処理に用いることができる。表はその各項目欄にテキストが配置される。表の各欄の幅を決めると、テキストの行折りの数が決定され、それに伴って表の行の高さが決定される。逆に、高さが決まれば、テキストの行折り数が決定され、各列の幅も決まる。いま、テキストの行折りの数が不変となる範囲内で各欄の幅を可変とすることを考える。すると、各欄の幅は、階段関数として表現できる。その境界値を区間特性列とし、区間束縛条件を設定することができる。この区間特性列は、表の各列ごとに設定される。共通束縛条件としては、例えば、表の全体の幅などの条件が設定される。
【0109】各区間束縛条件の間では、テキストの行折りの数が不変であるから、行の高さは一意に決まる。表のレイアウトの最適性は、例えば、表の面積や周囲長、各欄に発生する空隙の和等で測ることができる。これらの値は、行の高さが一意に決まることから、各欄の幅を設定するためのパラメータを用いた一次式で表現することができる。これを目的関数とする。
【0110】このように設定された区間束縛条件、共通束縛条件、および、目的関数により生成される線形計画問題を解決する。このとき生成される線形計画問題の数は、各列ごとの区間特性列から1つずつ値を取り出すときの組み合わせの数だけ存在する。例えば、2つの欄に2文字ずつ配置する表を考えると、各欄に配置されるテキストが1行の場合と、行折りが発生して2行となる場合の2通りあり、それがそれぞれの列で発生するので、その組み合わせは4通りであり、解決する線形計画問題は4つとなる。同様に、3文字ずつ配置する場合には9つというように、解決すべき線形計画問題はテキスト量や列数等によって飛躍的に増大する。
【0111】本発明の最適解探索装置を用いることによって、線形計画問題を解決するために必要な計算量を激減させることができ、高速に最適な表のレイアウトを得ることができる。
【0112】本発明は、表のレイアウト以外にも、通常、線形計画問題が利用されている広範な分野において用いることができる。
【0113】
【発明の効果】以上の説明から明らかなように、本発明によれば、1つの線形計画問題を解く過程で計算される基底解から、隣接する他の線形計画問題の基底解を計算することによって、計算を複数の線形計画問題で共有し、処理の効率を向上させることができる。
【0114】また、線形計画問題の実行可能性の判定結果をステータスとして保持し、実行可能性が未知である他の線形計画問題の実行可能性を判定してステータスを変更しておき、線形計画問題を解決する際にこのステータスを参照することによってすでに実行可能性が判定されているものについては実行可能性の判定処理を省略することができ、処理の効率を向上させることができる。
【0115】さらに実行可能を示すステータスとして、例えば、実行可能性が判定された段階、基底解が計算された段階、すでに解決済みの段階というように細分することにより、基底解が計算されているものについては、実行可能性の判定と基底解の計算処理が、また、実行可能を示すものについては、実行可能性の判定処理が、それぞれ省略でき、処理効率の向上を図ることができる。
【0116】これらのステータスに優先順位を持たせ、線形計画問題を選択する際に、より計算量が少なくなるように選択してゆくことによって、さらに処理の効率を向上させることができるという効果がある。
【図面の簡単な説明】
【図1】 本発明の最適解探索装置の一実施例を示す構成図である。
【図2】 本発明の最適解探索装置の一実施例における処理の一例を示すフローチャートである。
【図3】 線形計画問題の特定処理の一例を示すフローチャートである。
【図4】 線形計画問題を完成させる処理の一例を示すフローチャートである。
【図5】 線形計画問題の解決処理の一例を示すフローチャートである。
【図6】 現在の実行可能基底を挟んで隣接する線形計画問題の実行可能基底、基底解、単体表主要部を求める処理の一例を示すフローチャートである。
【図7】 線形計画問題ステータス計算手段9の動作の一例を示すフローチャートである。
【図8】 起点線形計画問題のステータスがSOLVED,READY,FEASIBLEのいずれかである場合の線形計画問題ステータス計算手段の動作の一例を示すフローチャートである。
【図9】 起点線形計画問題のステータスがINFEASIBLEである場合の線形計画問題ステータス計算手段の動作の一例を示すフローチャートである。この処理は、起点線形計画問題が実行不可能の場合に、そのステータスを隣接する線形計画問題に伝播させるための処理である。
【符号の説明】
1…区間束縛条件保持手段、2…共通束縛条件保持手段、3…線形計画問題間利手段、4…局所最適解リスト、5…目的関数計算手段、6…線形計画問題解決エンジン部、7…隣接問題基底解計算手段、8…線形計画問題基底解保持手段、9…線形計画問題ステータス計算手段、10…変更起点リスト、11…線形計画問題ステータス保持手段。

【特許請求の範囲】
【請求項1】 複数の線形計画問題から構成される複合線形計画問題の最適解を計算する最適解探索装置において、複数のパラメータに関する有限個の斉次一次関数を保持するとともに各斉次一次関数に付随する2個以上の実数からなる単調増加数列であって斉次一次関数の上限と下限を隣接する実数として有する区間特性列を保持する区間束縛条件保持手段と、常にパラメータ間に成立すべき一次方程式または一次不等式を共通束縛条件として保持する共通束縛条件保持手段と、前記区間束縛条件保持手段に保持されている各斉次一次関数の区間特性列から隣接する2個の実数を選択して得られる束縛条件の組ごとにパラメータに関する一次式として目的関数を計算する目的関数計算手段と、該目的関数計算手段で計算された目的関数と該目的関数に対応する束縛条件の組および前記共通束縛条件保持手段に保持されている共通束縛条件等からなる線形計画問題を実行可能基底および基底解を計算しながら解決する線形計画問題解決エンジン部と、線形計画問題解決エンジン部が実行可能基底と基底解を計算するたびに計算された実行可能基底を挟んで隣接する線形計画問題の実行可能基底と基底解を計算する隣接問題基底解計算手段と、計算済みの実行可能基底および基底解を線形計画問題と対応づけて保持する線形計画問題基底解保持手段と、前記区間束縛条件保持手段と前記共通束縛条件保持手段と前記目的関数計算手段と前記線形計画問題解決エンジン部を制御し前記線形計画問題解決エンジン部から前記束縛条件の組ごとに得られた結果をもとに最適値を探索する線形計画問題管理手段を有し、前記線形計画問題解決エンジン部が新たに線形計画問題を解きはじめる際に、前記線形計画問題基底解保持手段に解くべき線形計画問題に対応する実行可能基底と基底解が存在すれば、その実行可能基底と基底解を用いて計算を開始することを特徴とする最適解探索装置。
【請求項2】 複合線形計画問題の最適解を計算する最適解探索装置において、複数のパラメータに関する有限個の斉次一次関数を保持するとともに各斉次一次関数に付随する2個以上の実数からなる単調増加数列であって斉次一次関数の上限と下限を隣接する実数として有する区間特性列を保持する区間束縛条件保持手段と、常にパラメータ間に成立すべき一次方程式または一次不等式を共通束縛条件として保持する共通束縛条件保持手段と、前記区間束縛条件保持手段に保持されている各斉次一次関数の区間特性列から隣接する2個の実数を選択して得られる束縛条件の組ごとにパラメータに関する一次式として目的関数を計算する目的関数計算手段と、前記束縛条件の組ごとに導出される線形計画問題それぞれに対して、少なくとも「実行可能である」、「実行不可能である」、「実行可能性が未知である」を指示するステータスを保持する線形計画問題ステータス保持手段と、前記目的関数計算手段で計算された目的関数と該目的関数に対応する束縛条件の組および前記共通束縛条件保持手段に保持されている共通束縛条件等からなる線形計画問題について実行可能性を判断して前記線形計画問題ステータス保持手段に保持されている該線形計画問題のステータスを変更した上で該線形計画問題を解決する線形計画問題解決エンジン部と、該線形計画問題解決エンジン部が各線形計画問題についてその実行可能性を判定するたびに該線形計画問題のステータスの変化がもたらす他の線形計画問題のステータスの変化を再計算し前記線形計画問題ステータス保持手段に保持されているステータスを変更する線形計画問題ステータス計算手段と、前記区間束縛条件保持手段と前記共通束縛条件保持手段と前記目的関数計算手段と前記線形計画問題解決エンジン部を制御し前記線形計画問題解決エンジン部から前記束縛条件の組ごとに得られた結果をもとに最適値を探索する線形計画問題管理手段を有し、前記線形計画問題解決エンジン部が線形計画問題を解く際に、前記線形計画問題ステータス保持手段に保持されているステータスを参照し、少なくとも「実行可能性が未知である」ステータス以外の場合には、該線形計画問題の実行可能性の判定処理を行なわないことを特徴とする最適解探索装置。
【請求項3】 複合線形計画問題の最適解を計算する最適解探索装置において、複数のパラメータに関する有限個の斉次一次関数を保持するとともに各斉次一次関数に付随する2個以上の実数からなる単調増加数列であって斉次一次関数の上限と下限を隣接する実数として有する区間特性列を保持する区間束縛条件保持手段と、常にパラメータ間に成立すべき一次方程式または一次不等式を共通束縛条件として保持する共通束縛条件保持手段と、前記区間束縛条件保持手段に保持されている各斉次一次関数の区間特性列から隣接する2個の実数を選択して得られる束縛条件の組ごとにパラメータに関する一次式として目的関数を計算する目的関数計算手段と、前記束縛条件の組ごとに導出される線形計画問題それぞれに対して、少なくとも「解決済みである」、「基底解保持済みである」、「実行可能である」、「実行不可能である」、「実行可能性が未知である」を指示するステータスを保持する線形計画問題ステータス保持手段と、前記目的関数計算手段で計算された目的関数と該目的関数に対応する束縛条件の組および前記共通束縛条件保持手段に保持されている共通束縛条件等からなる線形計画問題の実行可能性の判定および実行可能基底と基底解の計算を行ない、各処理において前記線形計画問題ステータス保持手段に保持されているステータスを変更しながら線形計画問題を解決する線形計画問題解決エンジン部と、該線形計画問題解決エンジン部が実行可能基底と基底解を計算するたびに計算された実行可能基底を挟んで隣接する線形計画問題の実行可能基底と基底解を計算するとともに前記線形計画問題ステータス保持手段に保持されている該隣接問題のステータスを変更する隣接問題基底解計算手段と、計算済みの実行可能基底および基底解を保持する線形計画問題基底解保持手段と、前記線形計画問題解決エンジン部および前記隣接問題基底解計算手段の処理に従い線形計画問題のステータスの変化がもたらす他の線形計画問題のステータスの変化を再計算し前記線形計画問題ステータス保持手段に保持されているステータスを変更する線形計画問題ステータス計算手段と、前記区間束縛条件保持手段と前記共通束縛条件保持手段と前記目的関数計算手段と前記線形計画問題解決エンジン部を制御し前記線形計画問題解決エンジン部から前記束縛条件の組ごとに得られた結果をもとに最適値を探索する線形計画問題管理手段を有し、前記線形計画問題解決エンジン部が線形計画問題を解く際に、前記線形計画問題ステータス保持手段に保持されているステータスを参照し、少なくとも「実行可能性が未知である」ステータス以外の場合には該線形計画問題の実行可能性の判定処理を行なわず、ステータスが「基底解保持済みである」ことを示している場合には前記線形計画問題基底解保持手段から実行可能基底と基底解を得て計算を開始することを特徴とする最適解探索装置。
【請求項4】 前記線形計画問題ステータス保持手段に保持されたステータスは優先順位を持っており、前記線形計画問題管理手段は、該ステータスの優先順位に基づいて線形計画問題を解く順序を決定することを特徴とする請求項2または3に記載の最適解探索装置。

【図1】
image rotate


【図2】
image rotate


【図3】
image rotate


【図4】
image rotate


【図5】
image rotate


【図6】
image rotate


【図7】
image rotate


【図8】
image rotate


【図9】
image rotate