(57)【要約】  【課題】複数の目的を最適化する解を探索する装置において、制約条件を変化させた場合でも最適解を再現する。  【解決手段】計画最適化装置１は、複数の目的関数および制約条件を受け付けるユーザ設定受付部１０と、前記複数の目的関数それぞれから、同じ係数を有する変数の集合を抽出する処理と、前記集合ごとに、前記変数ごとに異なる重み付けを所定の順序で行って合計する関数を解再現目的関数として生成する処理と、を行う解再現目的生成部１３と、前記複数の目的関数、前記複数の解再現目的関数、および、前記制約条件を用いて、前記制約条件を満たし、かつ、前記複数の目的関数を最適化する解のうち、前記解再現目的関数を最適化する解を算出する、最適化問題計算部１５と、前記解を出力する解出力部１７と、を有する。【選択図】図１
2010061179.tif 000002
【特許請求の範囲】
【請求項１】
制約条件に従って複数の目的関数を最適化する解を算出する計画最適化装置であって、
前記複数の目的関数および前記制約条件を、入力部を介して受け付けるユーザ設定受付部と、
前記複数の目的関数を記憶する目的記憶部と、
前記制約条件を記憶する制約条件記憶部と、
前記複数の目的関数それぞれから、同じ係数を有する変数の集合を抽出する処理と、前記集合ごとに、前記変数ごとに異なる重み付けを所定の順序で行って合計する関数を解再現目的関数として生成する処理と、を行う解再現目的生成部と、
前記複数の目的関数、前記複数の解再現目的関数、および、前記制約条件を用いて、前記制約条件を満たし、かつ、前記複数の目的関数を最適化する解のうち、前記解再現目的関数を最適化する解を算出する、最適化問題計算部と、
前記最適化問題計算部により算出された解を記憶する解記憶部と、
前記解記憶部に記憶された解を出力する解出力部と、を有すること、
を特徴とする計画最適化装置。
【請求項２】
請求項１に記載の計画最適化装置であって、
前記解再現目的を生成する方法の指定を、前記入力部を介して受け付ける解再現設定受付部を有し、
前記解再現設定受付部は、
前記解再現目的を手動で生成する方法が指定された場合、前記解再現目的生成部により抽出された前記変数の優先順序の指定を、前記入力部を介して受け付け、
前記解再現目的生成部は、
前記解再現設定受付部が受け付けた前記優先順序に従って前記変数の重み付けを行うこと、
を特徴とする計画最適化装置。
【請求項３】
請求項１に記載の計画最適化装置であって、
前記解再現目的を生成する方法の指定を、前記入力部を介して受け付ける解再現設定受付部と、
前記解再現目的関数を記憶する解再現目的記憶部と、を有し、
前記解再現目的生成部は、
前記生成した解再現目的関数を前記解再現目的記憶部に記憶し、
前記最適化問題計算部は、
前記解再現目的を再利用する方法が指定された場合、前記解再現目的記憶部に記憶された前記解再現目的関数を用いて前記解を算出すること、
を特徴とする計画最適化装置。
【請求項４】
請求項１〜３いずれか一項に記載の計画最適化装置であって、
前記最適化問題計算部は、
線形計画法、混合整数計画法、遺伝的アルゴリズムのいずれかを用いて、前記解を算出すること、
を特徴とする計画最適化装置。
【請求項５】
コンピュータを、制約条件に従って複数の目的関数を最適化する解を算出する計画最適化装置として機能させるための計画最適化プログラムであって、
前記コンピュータを、
前記複数の目的関数および前記制約条件を、入力部を介して受け付けるユーザ設定受付部と、
前記複数の目的関数を記憶する目的記憶部と、
前記制約条件を記憶する制約条件記憶部と、
前記複数の目的関数それぞれから、同じ係数を有する変数の集合を抽出する処理と、前記集合ごとに、前記変数ごとに異なる重み付けを所定の順序で行って合計する関数を解再現目的関数として生成する処理と、を行う解再現目的生成部と、
前記複数の目的関数、前記複数の解再現目的関数、および、前記制約条件を用いて、前記制約条件を満たし、かつ、前記複数の目的関数を最適化する解のうち、前記解再現目的関数を最適化する解を算出する、最適化問題計算部と、
前記最適化問題計算部により算出された解を記憶する解記憶部と、
前記解記憶部に記憶された解を出力する解出力部として機能させること、
を特徴とする計画最適化プログラム。
【請求項６】
制約条件に従って複数の目的関数を最適化する解を算出する計画最適化装置における計画最適化方法であって、
前記計画最適化装置は、
前記複数の目的関数および前記制約条件を、入力部を介して受け付けるユーザ設定受付ステップと、
前記複数の目的関数を記憶する目的記憶ステップと、
前記制約条件を記憶する制約条件記憶ステップと、
前記複数の目的関数それぞれから、同じ係数を有する変数の集合を抽出し、前記集合ごとに、前記変数ごとに異なる重み付けを所定の順序で行って合計する関数を解再現目的関数として生成する、解再現目的生成ステップと、
前記複数の目的関数、前記複数の解再現目的関数、および、前記制約条件を用いて、前記制約条件を満たし、かつ、前記複数の目的関数を最適化する解のうち、前記解再現目的関数を最適化する解を算出する、最適化問題計算ステップと、
前記最適化問題計算ステップにおいて算出された解を記憶する解記憶ステップと、
前記解記憶ステップにおいて記憶された解を出力する解出力ステップと、を実行すること、
を特徴とする計画最適化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、与えられた制約条件のもとで、与えられた複数の目的を最適化する解を探索する計画最適化装置、計画最適化方法、および、計画最適化プログラムに関する。本発明は、特に、繰り返し変更される各々の制約条件のもとで、与えられた複数の目的の最適解が探索される必要がある計画業務を対象とする。
【背景技術】
【０００２】
近年、コンピュータ技術の高度化により、例えば、生産計画の立案などを行うため、与えられた制約条件のもとで、与えられた複数の目的の最適解を探索する装置が開発されている。
【０００３】
例えば、特許文献１には、コンピュータシステムを用いて、与えられた複数の目的関数の重要度が明らかでない場合に、複数の目的関数それぞれの重みを自動的に繰り返し変更することにより、複数の最適解を得る最適化方式が記載されている。
【０００４】
【特許文献１】特開平６−３３２８８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、例えば、生産計画の立案など、繰り返し変更される各々の制約条件のもとで、与えられた複数の目的の最適解が探索される必要がある計画業務では、必ずしも最適解に変化を与える制約条件が変更されるわけではない。また、必ずしも最適解に大きな変化を与える制約条件が変更されるされるわけではない。すなわち、既に算出された最適解の再現に大きく影響しない制約条件が変更される場合がある。
【０００６】
上記のような場合、ユーザは、そもそも、制約条件の変更後に算出される最適解が、制約条件の変更前の最適解と異なる、もしくは、大きく異なることを想定していない。すなわち、ユーザは、最適解の再現に影響しない制約条件の変更の前後において、同一もしくは近似の最適解が算出されることを要望している。
【０００７】
しかしながら、複数の目的の最適解を探索する装置は、最適解が複数存在する場合、ユーザから指示がなければ、いずれの解がユーザにとって最適であるか否かを自動的に判断できないことがある。このような場合、いずれの解が選択されるか否かは、実行されるプログラムなどのロジックに依存する。そのため、既に算出された最適解の再現に大きく影響しない制約条件が変更された場合に、制約条件の変更前と異なる、もしくは、大きく異なる解が出力されることがある。
【０００８】
特許文献１の技術では、解が複数算出される場合に特定の最適解を再現させたいというユーザの要望に応えることはできない。
【０００９】
本発明は、上記の要望に応えるため、制約条件を変化させた場合でも、最適解を再現することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するための装置に係る発明は、制約条件に従って複数の目的関数を最適化する解を算出する計画最適化装置であって、前記複数の目的関数および前記制約条件を、入力部を介して受け付けるユーザ設定受付部と、前記複数の目的関数それぞれから、同じ係数を有する変数の集合を抽出する処理と、前記集合ごとに、前記変数ごとに異なる重み付けを所定の順序で行って合計する関数を解再現目的関数として生成する処理と、を行う解再現目的生成部と、前記複数の目的関数、前記複数の解再現目的関数、および、前記制約条件を用いて、前記制約条件を満たし、かつ、前記複数の目的関数を最適化する解のうち、前記解再現目的関数を最適化する解を算出する、最適化問題計算部と、前記解を出力する解出力部と、を有する。
【００１１】
また、上記の課題を解決するためのプログラムに係る発明は、コンピュータを上記の計画最適化装置として機能させるプログラムである。
【００１２】
また、上記の課題を解決するための方法に係る発明は、制約条件に従って複数の目的関数を最適化する解を算出する計画最適化装置における計画最適化方法であって、前記複数の目的関数および前記制約条件を、入力部を介して受け付けるユーザ設定受付ステップと、前記複数の目的関数それぞれから、同じ係数を有する変数の集合を抽出し、前記集合ごとに、前記変数ごとに異なる重み付けを所定の順序で行って合計する関数を解再現目的関数として生成する、解再現目的生成ステップと、前記複数の目的関数、前記複数の解再現目的関数、および、前記制約条件を用いて、前記制約条件を満たし、かつ、前記複数の目的関数を最適化する解のうち、前記解再現目的関数を最適化する解を算出する、最適化問題計算ステップと、前記解を出力する解出力ステップと、を有する。
【発明の効果】
【００１３】
本発明によれば、制約条件を変化させた場合でも、最適解を再現することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態について、図面を参照して説明する。なお、「目的」には、目的関数と、当該目的関数の値についての目的（例えば、最大化、最小化など）と、が含まれる。
【００１５】
図１は、本発明の一実施形態に係る計画最適化装置１の機能構成を示すブロック図である。
【００１６】
本図に示すように、計画最適化装置１は、ユーザ設定受付部１０、目的記憶部１１、制約条件記憶部１２、解再現目的生成部１３、解再現設定受付部１４、最適化問題計算部１５、解記憶部１６、解出力部１７、解再現目的記憶部１８、入力部２０、表示部２１を有する。
【００１７】
ユーザ設定受付部１０は、ユーザが指定する制約条件、ユーザが指定する目的（以下、「ユーザ目的」と呼ぶ。）を受け付ける処理を行う。
【００１８】
具体的には、ユーザ設定受付部１０は、制約条件およびユーザ目的の入力を受け付けるための操作画面を表示部２１に表示させる。また、少なくとも１以上の制約条件と、少なくとも１以上のユーザ目的との入力を、入力部２０を介して受け付ける。ユーザ設定受付部１０は、受け付けた制約条件を、制約条件記憶部１２に格納する。また、受け付けたユーザ目的を、目的記憶部１１に格納する。
【００１９】
目的記憶部１１には、ユーザ設定受付部１０により受け付けられたユーザ目的と、解再現目的生成部１３により生成された目的（以下、「解再現目的」と呼ぶ。）とが格納される。
【００２０】
制約条件記憶部１２には、ユーザ設定受付部１０により受け付けられた制約条件が格納される。
【００２１】
解再現目的生成部１３は、ユーザ目的ごとに、ユーザ目的に基づいて解再現目的を生成する処理を行う。ここで、解再現目的とは、ユーザ目的の最適解の再現を行うための目的である。
【００２２】
具体的には、解再現目的生成部１３は、まず、ユーザ目的から、解の再現を妨げる可能性のある要素を抽出する。本実施形態では、ユーザ目的ごとに、同じ係数を有する変数の組み合わせ（集合）を抽出する。
【００２３】
続いて、解再現目的生成部１３は、所定のルールにより、もしくは、解再現設定受付部１４を介して受け付けたユーザの指示により、抽出した要素の優先順序を特定する。本実施形態では、抽出した変数の組み合わせごとに、各変数をアルファベット順（昇順）に並べ替える。もしくは、各変数をユーザの指定した順序に並べ替える。
【００２４】
もちろん、所定のルールは、制約条件を繰り返し変更して最適解を算出する中で、一貫して同じであればよく、アルファベット順に限られない。
【００２５】
その後、解再現目的生成部１３は、特定した優先順序に従って、所定のルールにより、各要素に異なる重み付けを行い、解再現目的を生成する。本実施形態では、抽出した変数の組み合わせごとに、特定された優先順に、各変数に１から順に１間隔で係数を関連付ける。すなわち、各変数に対して重み付けを行う。
【００２６】
もちろん、重み付けのルールは、上記に限られず、各変数の間で重みが異なればよい。また、制約条件を繰り返し変更して最適解を算出する中で、一貫して同じであればよい。
【００２７】
また、解再現目的生成部１３は、抽出した変数の組み合わせごとに、重み付けした各変数の合計値を求める関数を生成する。そして、生成した関数の値を最大化もしくは最小化する目的を、解再現目的として生成する。最大化するか最小化するか否かは、例えば、ユーザ目的と合わせるようにすればよい。最大化もしくは最小化のいずれか一方に固定的に設定するようにしてもよい。なお、制約条件を繰り返し変更して最適解を算出する中で、一貫して同じであればよい。
【００２８】
また、解再現目的生成部１３は、生成した解再現目的を、目的記憶部１１および解再現目的記憶部１８に格納する。
【００２９】
なお、解再現目的記憶部１８に既に記憶されている解再現目的を使用すべき指示が、解再現設定受付部１４を介して指示された場合、解再現目的生成部１３は、解再現目的の生成を行わずに、解再現目的記憶部１８に既に記憶されている解再現目的を、目的記憶部１１に格納する。
【００３０】
解再現設定受付部１４は、解の再現に関する各種設定を受け付ける処理を行う。各種設定は、解再現目的生成部１３において使用される。
【００３１】
具体的には、解再現設定受付部１４は、解再現目的を生成する方法を選択するための操作画面を表示部２１に表示させる。解再現目的を生成する方法には、ユーザの入力を必要とする方法（以下、「手動生成」と呼ぶ。）、ユーザの入力を必要としない方法（以下、「自動生成」と呼ぶ。）、既に生成された解再現目的を再利用する方法（以下、「再利用」と呼ぶ。）がある。また、解再現設定受付部１４は、「手動生成」、「自動生成」、「再利用」のいずれかの選択を、入力部２０を介して受け付ける。
【００３２】
また、解再現設定受付部１４は、上記「手動生成」が選択されている場合、解の再現を妨げる可能性のある要素の優先順序を指定するための操作画面を表示部２１に表示させる。また、解再現設定受付部１４は、各要素の優先順序の指定を、入力部２０を介して受け付ける。
【００３３】
最適化問題計算部１５は、与えられた制約条件の下、ユーザ目的を最適化し、かつ、解再現目的を最適化する解を算出する。
【００３４】
具体的には、最適化問題計算部１５は、制約条件記憶部１２に格納された制約条件を取得する。また、目的記憶部１１に格納されたユーザ目的および解再現目的を、所定の順序で順次取得する。そして、取得した制約条件の下、取得した目的ごとに最適解を順次算出する。ここで、最適化問題計算部１５は、先に取得した目的の最適解の中から、次に取得した目的の最適解を選択することにより、最適解を順次絞り込む。
【００３５】
本実施形態では、最適化問題計算部１５は、ユーザ目的を解再現目的より先に目的記憶部１１から取得する。また、ユーザ目的が複数ある場合、所定の順序（例えば、ユーザ目的が入力された順序、ユーザに予め指定された優先順序など）でユーザ目的を取得する。また、解再現目的が複数ある場合、所定の順序（例えば、解再現目的生成部１３により生成された順序）で解再現目的を取得する。
【００３６】
もちろん、ユーザ目的の取得順序および解再現目的の取得順序は、計画最適化装置１において一定であれば、すなわち、計算が行われる度に変更されなければ、上記に限られない。
【００３７】
なお、最適化問題計算部１５は、例えば、線形計画法、混合整数計画法、遺伝アルゴリズムなどを用いて、複数の目的の最適解を算出する。
【００３８】
解記憶部１６には、最適化問題計算部１５により最終的に算出された一つの最適解が格納される。
【００３９】
解出力部１７は、解記憶部１６から最適解を取得し、表示部２１に表示させる。
【００４０】
解再現目的記憶部１８には、解再現目的生成部１３より生成された解再現目的が格納される。
【００４１】
入力部２０は、ユーザからの入力操作を受け付けるためのユーザインタフェースである。
【００４２】
表示部２１は、他の機能部の指示に従って、各種操作画面や画像などを表示するためのユーザインタフェースである。
【００４３】
もちろん、計画最適化装置１の機能構成は上記に限られない。例えば、ネットワークを介してデータの送受信を行う通信部（図示しない）を介して、ユーザ設定受付部１０および解再現設定受付部１４は、各種設定を受け付けるようにしてもよい。また、解出力部１７は、通信部を介して外部のコンピュータ等に最適解を出力するようにしてもよい。
【００４４】
上記の各種機能を有する計画最適化装置１は、例えば、図２に示すようなコンピュータにより実現される。
【００４５】
図２は、計画最適化装置１のハードウェア構成例を示すブロック図である。
【００４６】
本図に示すように、計画最適化装置１は、ＣＰＵ１００、ＲＡＭ１１０、ＲＯＭ１２０、補助記憶装置１３０、表示装置１４０、入力装置１５０、メディア読取装置１６０、通信装置１７０を有する。計画最適化装置１は、例えば、一般的なＰＣである。
【００４７】
ＣＰＵ１００は、各種演算を実行するユニットである。ＣＰＵ１００は、補助記憶装置１３０からＲＡＭ１１０にロードした所定の計画最適化プログラム（図示せず）を実行することにより、各種処理を実行する。
【００４８】
計画最適化プログラムは、例えば、ＯＳ（Operating System）プログラム上で実行可能なアプリケーションプログラムである。
【００４９】
なお、計画最適化プログラムは、例えば、メディア読取装置１６０を介して可搬型記憶媒体から、補助記憶装置１３０にインストールされてもよい。また、通信装置１７０を介してネットワークから、補助記憶装置１３０にダウンロードされてもよい。また、通信装置１７０を介してネットワークから、ＲＡＭ１１０に直接ロードされ、ＣＰＵ１００により実行されるようにしてもよい。
【００５０】
ＲＡＭ１１０は、ＣＰＵ１００により実行されるプログラムや、プログラムの実行に必要なデータなどを格納するメモリである。ＲＯＭ１２０は、計画最適化装置１の起動に必要なプログラムなどを格納するメモリである。
【００５１】
補助記憶装置１３０は、例えば、ＨＤＤ（Hard Disk Drive）などの装置である。フラッシュメモリなどを用いたＳＳＤ（Solid State Drive）であってもよい。
【００５２】
表示装置１４０は、例えば、ＣＲＴディスプレイ、ＬＣＤ（Liquid Crystal Display）、有機ＥＬ（Electro-Luminescence）ディスプレイなどの装置である。入力装置１５０は、例えば、キーボード、マウス、マイクなどの装置である。
【００５３】
メディア読取装置１６０は、ＣＤ−ＲＯＭ等の可搬性を有する可搬型記憶媒体の情報を読み出す装置である。通信装置１７０は、ネットワークに接続して外部装置と通信を行う装置である。通信装置１７０は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）のネットワークカードである。
【００５４】
上述したユーザ設定受付部１０、目的記憶部１１、制約条件記憶部１２、解再現目的生成部１３、解再現設定受付部１４、最適化問題計算部１５、解記憶部１６、解出力部１７、解再現目的記憶部１８は、例えば、ＣＰＵ１００がＲＡＭ１１０にロードした計画最適化プログラムを実行することにより実現される。目的記憶部１１、制約条件記憶部１２、解記憶部１６、解再現目的記憶部１８のデータは、例えば、ＲＡＭ１１０または補助記憶装置１３０に格納される。
【００５５】
また、入力部２０は、例えば、ＣＰＵ１００が所定のプログラムの実行して、入力装置１５０を制御することにより実現される。表示部２１は、例えば、ＣＰＵ１００が所定のプログラムを実行して、表示装置１４０を制御することにより実現される。通信部は、例えば、ＣＰＵ１００が所定のプログラムを実行して通信装置１７０を制御することにより実現される。
【００５６】
もちろん、計画最適化装置１の構成は、上記に限られない。例えば、補助記憶装置１３０は、通信装置１７０を介して接続される外部のストレージであってもよい。
【００５７】
次に、上記の計画最適化装置１により実現される計画最適化処理について説明する。
【００５８】
以下では、説明をわかり易くするため、計画最適化の対象のモデルを例に挙げて説明を行う。まず、図５を参照して、対象のモデルについて説明する。
【００５９】
本図に示すように、工場Ｘで生産される製品Ａ、Ｂ、Ｃの数は、それぞれａ個、ｂ個、ｃ個である。また、工場Ｙで生産される製品Ａ、Ｂ、Ｃの数は、それぞれｄ個、ｅ個、ｆ個である。工場Ｘおよび工場Ｙの各々の生産能力は、それぞれ製品５０個分である。また、製品Ａ、Ｂ、Ｃの各々の需要は、１００個である。また、製品Ａ、Ｂ、Ｃの単価は、それぞれ、１０円、１０円、５円である。なお、本モデルは、１日の生産を単位としている。
【００６０】
また、上記の条件の下、売り上げを最大化し、かつ、工場Ｘの稼動（生産量）を最小化することをユーザ目的とする。この場合の制約条件は以下のように定義される。
【００６１】
（制約条件１）ａ＋ｄ  ≦  １００
（制約条件２）ｂ＋ｅ  ≦  １００
（制約条件３）ｃ＋ｆ  ≦  １００
（制約条件４）ａ＋ｂ＋ｃ  ≦  ５０
（制約条件５）ｄ＋ｅ＋ｆ  ≦  ５０
（制約条件６）ａ  ≧  ０
（制約条件７）ｂ  ≧  ０
（制約条件８）ｃ  ≧  ０
（制約条件９）ｄ  ≧  ０
（制約条件１０）ｅ  ≧  ０
（制約条件１１）ｆ  ≧  ０
【００６２】
また、ユーザ目的は以下のように定義される。ここで、売り上げを「Ｓ１」、工場Ｘの生産量を「Ｓ２」とする。
【００６３】
（ユーザ目的１）
最大化：Ｓ１＝１０×ａ＋１０×ｂ＋５×ｃ＋１０×ｄ＋１０×ｅ＋５×ｆ
（ユーザ目的２）
最小化：Ｓ２＝ａ＋ｂ＋ｃ
【００６４】
ここで、製品ＡおよびＢの単価、制約条件は同じであるため、いずれの製品をより多く生産しても、最大の売り上げには影響しない。また、需要を満たすため、工場Ｘの生産量は合計で５０個である必要がある。そのため、ユーザ目的１および２を最適化する解は、複数存在し、一つに定まらない。
【００６５】
しかしながら、現実的には、例えば、各種製品の生産を行う工場や生産個数が日によって大幅に変化すると、生産ラインなどに支障を来す。そのため、ユーザ目的が達成されるのであれば、最適解は一つに定まった方がよい。
【００６６】
このような場合に、本実施形態に係る計画最適化装置を用いれば、解に直接影響しない制約条件の変更、例えば、製品Ｃの需要を１００個から２００個へ増加させる変更があっても、制約条件の変更前と同じ解が算出される。
【００６７】
次に、上記のモデルを用いながら、計画最適化処理の流れを説明する。
【００６８】
図３は、計画最適化処理の流れを示すフロー図である。本フローは、例えば、ユーザの操作により所定の計画最適化処理プログラムが実行されることで開始される。
【００６９】
本フローが開始されると、まず、解再現設定受付部１４は、解再現目的の生成方法の選択を受け付ける（Ｓ１１）。
【００７０】
具体的には、解再現設定受付部１４は、図７に示すような、設定ウィンドウ７００を表示部２１に表示させる。
【００７１】
設定ウィンドウ７００は、例えば、複数のラジオボタン７１０と、選択終了ボタン７２０を有する。ラジオボタン７１０は、解再現目的の生成方法（手動生成、自動生成、再利用）を選択するためのボタンである。ラジオボタン７１０は、解再現目的の生成方法ごとに設けられている。選択終了ボタン７２０は、解再現目的の生成方法の選択を確定するためのボタンである。
【００７２】
解再現設定受付部１４は、上記のような設定ウィンドウ７００上で選択終了ボタン７２０を選択する操作を入力部２０を介して受け付けると、選択されたラジオボタン７１０に対応する解再現目的の生成方法を特定する。
【００７３】
解再現目的の生成方法が選択されると（Ｓ１１）、ユーザ設定受付部１０は、ユーザ目的および制約条件を受け付ける（Ｓ１２）。
【００７４】
具体的には、ユーザ設定受付部１０は、ユーザ目的、制約条件、変数の定義を受け付けるための設定ウィンドウ（図示しない）を表示部２１に表示させる。また、ユーザ設定受付部１０は、設定ウィンドウ上の操作を入力部２０を介して受け付け、ユーザ目的、制約条件、変数の定義を取得する。
【００７５】
例えば、ユーザ設定受付部１０は、ユーザ目的、制約条件、変数の定義の記載を含むテキストファイルを受け付ける。各テキストファイルの内容は、例えば、図６（Ａ）〜（Ｃ）に示すように記載される。図６（Ａ）は、変数を定義するテキストファイルの内容を示している。図６（Ｂ）は、制約条件を定義するテキストファイルの内容を示している。図６（Ｃ）は、ユーザ目的を定義するテキストファイルの内容を示している。もちろん、ユーザ目的、制約条件、変数の定義を受け付ける方法は上記に限られない。
【００７６】
それから、ユーザ設定受付部１０は、受け付けたユーザ目的および制約条件（Ｓ１２）を記憶する（Ｓ１３）。
【００７７】
具体的には、ユーザ設定受付部１０は、例えば、受け付けたテキストファイル（図６（Ｃ））からユーザ目的を順次抽出し、目的記憶部１１に格納する。また、受け付けたテキストファイル（図６（Ｂ））から制約条件を順次抽出し、制約条件記憶部１２に格納する。なお、受け付けた変数の定義（図６（Ａ））も、所定の記憶部（図示しない）に格納する。
【００７８】
図５のモデルの場合、上述したユーザ目的１および２が、目的記憶部１１に順次格納される。また、制約条件１〜１１が、制約条件記憶部１２に順次格納される。
【００７９】
その後、解再現目的生成部１３は、解再現目的の生成を行う（Ｓ１４）。以下、図４を参照して、解再現目的の生成処理について説明する。図４は、解再現目的の生成処理の流れを示すフロー図である
【００８０】
本フローが開始されると、解再現目的生成部１３は、解再現目的の生成方法の判定を行う（Ｓ１４０１）。
【００８１】
具体的には、解再現目的生成部１３は、Ｓ１１（図３）で選択された解再現目的の生成方法が、「手動生成」、「自動生成」、「再利用」のいずれであるかを判定する。解再現目的の生成方法が「手動生成」である場合（Ｓ１４０１：手動生成）、処理をＳ１４１１に進める。解再現目的の生成方法が「自動生成」である場合（Ｓ１４０１：自動生成）、処理をＳ１４２１に進める。解再現目的の生成方法が「再利用」である場合（Ｓ１４０１：再利用）、処理をＳ１４３５に進める。
【００８２】
解再現目的の生成方法が「手動生成」である場合（Ｓ１４０１：手動生成）、解再現目的生成部１３は、ユーザ目的を取得する（Ｓ１４１１）。
【００８３】
具体的には、解再現目的生成部１３は、目的記憶部１１からユーザ目的を取得する。図５のモデルの場合、ユーザ目的１および２が取得される。
【００８４】
続いて、解再現目的生成部１３は、取得したユーザ目的ごとに、同じ係数を有する変数の組み合わせを抽出する（Ｓ１４１２）。
【００８５】
図５のモデルの場合、ユーザ目的１から、同じ係数１０を有する変数（ａ、ｂ、ｄ、ｅ）と、同じ係数５を有する変数（ｃ、ｆ）との組み合わせが抽出される。また、ユーザ目的２から、同じ係数１を有する変数（ａ、ｂ、ｃ）の組み合わせが抽出される。
【００８６】
それから、解再現設定受付部１４は、解再現目的生成部１３により抽出された変数を表示する（Ｓ１４１３）。
【００８７】
具体的には、解再現設定受付部１４は、図１０に示すような、設定ウィンドウ８００を表示部２１に表示させる。ここでは、設定ウィンドウ８００は、ユーザ目的ごとに表示されている。
【００８８】
設定ウィンドウ８００は、変数表示フィールド８１０、入力終了ボタン８３０を有する。変数表示フィールド８１０は、同じ係数を有する変数の組み合わせごとに、設けられている。変数表示フィールド８１０には、同じ係数を有する変数が表示される。また、各変数の優先順位を入力するための優先順位設定フィールド８２０が、変数ごとに表示される。入力終了ボタン８３０は、各変数の優先順位を確定するためのボタンである。
【００８９】
図１０は、図５のモデルの場合に表示される設定ウィンドウ８００を示している。ユーザ目的１の設定ウィンドウ８００には、変数（ａ、ｂ、ｄ、ｅ）の組み合わせと、変数（ｃ、ｆ）の組み合わせとのそれぞれについて、変数表示フィールド８１０が表示されている。また、ユーザ目的２の設定ウィンドウ８００には、変数（ａ、ｂ、ｃ）の組み合わせについて、変数表示フィールド８１０が表示されている。
【００９０】
上記のようにして抽出された変数を表示し、解再現設定受付部１４は、優先順位を受け付ける（Ｓ１４１４）。すなわち、解再現設定受付部１４は、設定ウィンドウ８００の優先順位設定フィールド８２０への優先順位の入力を、入力部２０を介して受け付ける。また、入力終了ボタン８３０の操作を入力部２０を介して受け付けて、優先順位設定フィールド８２０に設定された各変数の優先順位を取得する。そして、処理をＳ１４１５に進める。
【００９１】
もちろん、各変数の優先順位の受け付け方法は上記に限られない。例えば、図１１に示すように、設定ウィンドウ８００の変数表示フィールド８１０に、マウスなどの操作（例えば、ドラッグ・アンド・ドロップ）により移動可能な変数オブジェクト８２５を、変数ごとに表示するようにしてもよい。このようにすれば、ユーザは、各変数の優先順位を簡単に設定できる。
【００９２】
優先順位が入力されると（Ｓ１４１４）、解再現目的生成部１３は、入力された変数の優先順位に従って、解再現目的を生成する（Ｓ１４１５）。
【００９３】
具体的には、解再現目的生成部１３は、まず、同じ係数を有する変数の組み合わせごとに、各変数を、指定された優先順位により並べ替える。また、解再現目的生成部１３は、同じ係数を有する変数の組み合わせごとに、指定された優先順に、各変数に１から順に１間隔で係数を関連付ける。すなわち、各変数に重み付けを行う。そして、重み付けを行った各変数の合計値を求める関数を解再現目的として生成する。
【００９４】
図５のモデルの場合、ユーザ目的１の変数（ａ、ｂ、ｄ、ｅ）の組み合わせ、ユーザ目的１の変数（ｃ、ｆ）の組み合わせ、ユーザ目的２の変数（ａ、ｂ、ｃ）の組み合わせ、それぞれから、以下の解再現目的１〜３が生成される。なお、各変数の優先順位は、アルファベット順で指定されたものとする。
【００９５】
（解再現目的１）
最大化：Ｓ３＝ａ＋２×ｂ＋３×ｄ＋４×ｅ
（解再現目的２）
最大化：Ｓ４＝ｃ＋２×ｆ
（解再現目的３）
最小化：Ｓ５＝ａ＋２×ｂ＋３×ｃ
【００９６】
解再現目的を生成すると（Ｓ１４１５）、解再現目的生成部１３は、生成した解再現目的を記憶する（Ｓ１４１６）。
【００９７】
具体的には、解再現目的生成部１３は、生成した解再現目的を、目的記憶部１１および解再現目的記憶部１８に順次格納する。その結果、目的記憶部１１には、ユーザ目的および解再現目的が格納される。
【００９８】
図５のモデルの場合、解再現目的記憶部１８には、図８に示すように、上述した解再現目的１〜３が順次格納される。目的記憶部１１には、図９に示すように、上述したユーザ目的１および２に加え、解再現目的１〜３が順次格納される。
【００９９】
一方、解再現目的の生成方法が「自動生成」である場合（Ｓ１４０１：自動生成）、解再現目的生成部１３は、ユーザ目的を取得する（Ｓ１４２１）。処理の内容は、Ｓ１４１１と同様である。
【０１００】
続いて、解再現目的生成部１３は、ユーザ目的ごとに、同じ係数を有する変数の組み合わせを抽出する（Ｓ１４２２）。処理の内容は、Ｓ１４１２と同様である。
【０１０１】
その後、解再現目的生成部１３は、所定の優先順位に従って、解再現目的を生成する（Ｓ１４１５）。
【０１０２】
具体的には、解再現目的生成部１３は、まず、同じ係数を有する変数の組み合わせごとに、各変数を、アルファベット順（昇順）に並べ替える。また、解再現目的生成部１３は、同じ係数を有する変数の組み合わせごとに、アルファベット順に、各変数に１から順に１間隔で係数を関連付ける。すなわち、各変数に重み付けを行う。そして、重み付けを行った各変数の合計値を求める関数を解再現目的として生成する。
【０１０３】
解再現目的を生成すると（Ｓ１４２５）、解再現目的生成部１３は、生成した解再現目的を記憶する（Ｓ１４２６）。処理の内容は、Ｓ１４１６と同様である。
【０１０４】
図５のモデルの場合、解再現目的記憶部１８には、図８に示すように、上述した解再現目的１〜３が順次格納される。目的記憶部１１には、図９に示すように、上述したユーザ目的１および２に加え、解再現目的１〜３が順次格納される。
【０１０５】
一方、解再現目的の生成方法が「再利用」である場合（Ｓ１４０１：再利用）、解再現目的生成部１３は、解再現目的記憶部１８から解再現目的を取得する（Ｓ１４３５）。なお、取得される解再現目的は、「手動生成」もしくは「自動生成」により、同じユーザ目的に基づいて既に生成された解再現目的である。
【０１０６】
解再現目的を取得すると（Ｓ１４３５）、解再現目的生成部１３は、取得した解再現目的を記憶する（Ｓ１４３６）。
【０１０７】
具体的には、解再現目的生成部１３は、取得した解再現目的を、目的記憶部１１に順次格納する。その結果、目的記憶部１１には、ユーザ目的および解再現目的が格納される。
【０１０８】
図５のモデルの場合、目的記憶部１１には、図９に示すように、上述したユーザ目的１および２に加え、解再現目的１〜３が順次格納される。
【０１０９】
上記のようにして解再現目的を記憶し（Ｓ１４１６、１４２６、Ｓ１４３６）、解再現目的生成部１３は、本フローを終了する。
【０１１０】
図３に戻って説明を続ける。解再現目的が生成されると（Ｓ１４）、最適化問題計算部１５は、最適解を算出する（Ｓ１５）。
【０１１１】
具体的には、最適化問題計算部１５は、制約条件記憶部１２から制約条件を取得する。また、目的記憶部１１からユーザ目的および解再現目的を、所定の順序で取得する。そして、取得した制約条件の下、取得した目的ごとに最適解を順次算出し、最適解を１つに絞り込む。すなわち、ユーザ目的を最適化する解のうち、解再現目的を最適化する解を特定する。
【０１１２】
図５のモデルの場合、最適化問題計算部１５は、目的記憶部１１に記憶された順序（図９）で、すなわち、ユーザ目的１、ユーザ目的２、解再現目的１、解再現目的２、解再現目的３の順序で、最適解を算出する。
【０１１３】
まず、最適化問題計算部１５は、ユーザ目的１を最適化する解を算出する。その結果、以下の複数の解が算出される。
（解１）ａ＝５０、ｂ＝０、ｃ＝０、ｄ＝５０、ｅ＝０、ｆ＝０
（解２）ａ＝５０、ｂ＝０、ｃ＝０、ｄ＝０、ｅ＝５０、ｆ＝０
（解３）ａ＝０、ｂ＝５０、ｃ＝０、ｄ＝５０、ｅ＝０、ｆ＝０
（解４）ａ＝０、ｂ＝５０、ｃ＝０、ｄ＝０、ｅ＝５０、ｆ＝０
（解５）ａ＝２５、ｂ＝２５、ｃ＝０、ｄ＝２５、ｅ＝２５、ｆ＝０
【０１１４】
続いて、最適化問題計算部１５は、ユーザ目的１の最適解の中から、ユーザ目的２を最適化する解を特定する。その結果、以下の複数の解が特定される。
（解１）ａ＝５０、ｂ＝０、ｃ＝０、（ｄ＝５０、ｅ＝０、ｆ＝０）
（解２）ａ＝５０、ｂ＝０、ｃ＝０、（ｄ＝０、ｅ＝５０、ｆ＝０）
（解３）ａ＝０、ｂ＝５０、ｃ＝０、（ｄ＝５０、ｅ＝０、ｆ＝０）
（解４）ａ＝０、ｂ＝５０、ｃ＝０、（ｄ＝０、ｅ＝５０、ｆ＝０）
（解５）ａ＝２５、ｂ＝２５、ｃ＝０、（ｄ＝２５、ｅ＝２５、ｆ＝０）
【０１１５】
続いて、最適化問題計算部１５は、ユーザ目的１および２を最適化する解の中から、解再現目的１を最適化する解を特定する。その結果、以下の一つの解が特定される。
（解４）ａ＝０、ｂ＝５０、ｃ＝０、ｄ＝０、ｅ＝５０、ｆ＝０
【０１１６】
以上のようにして、ユーザ目的を最適化する解が一つ算出される。
【０１１７】
最適解を算出すると（Ｓ１５）、最適化問題計算部１５は、算出した最適解を解記憶部１６に記憶する（Ｓ１６）。そして、処理をＳ１７に進める。
【０１１８】
解出力部１７は、解を表示する（Ｓ１８）。具体的には、解出力部１７は、解記憶部１６から解を取得し、表示部２１に表示させる。そして、本フローを終了する。もちろん、通信部（図示しない）を介して、外部のコンピュータに送信するようにしてもよい。
【０１１９】
以上のようにして、計画最適化処理が実行される。
【０１２０】
本処理によれば、同じユーザ目的について、制約条件を繰り返し変更させて最適解を算出させた場合であっても、同じ最適解もしくは近似する最適解が算出される。なお、上述した変数の優先順位が最適解の計算の度に変化すると、同じ最適解もしくは近似する最適解が算出されないことがある。
【０１２１】
そのため、「手動生成」の場合（Ｓ１４１１〜１４１６）、ユーザは、同じユーザ目的について、毎回同じ優先順位を指定する必要がある。「自動生成」の場合（Ｓ１４２１〜Ｓ１４２６）、所定のルールにより毎回同じ優先順位が自動的に設定されるので、上記のような問題は起こらない。「再利用」の場合（Ｓ１４３５、１４３６）、一度設定された優先順位従って生成された解再現目的が繰り返し使用されるので、上記のような問題は起こらない。
【０１２２】
以上、本発明の一実施形態について説明した。本実施形態によれば、制約条件等を変化させた場合でも、最適解を再現することができる。
【０１２３】
すなわち、本実施形態によれば、ユーザ目的から、解の再現を妨げる可能性のある要素が抽出され、各要素の重み付けにより解の再現させるための解再現目的が生成される。また、ユーザ目的および解再現目的に対する最適解の計算が行われる。
【０１２４】
このような構成により、同じユーザ目的に対する最適解を算出する場合に、本来、解の内容が変化しない、もしくは、解の内容が大きくは変化しないと思われる制約条件の変更があっても、同一もしくは近似の最適解が算出される。
【０１２５】
また、最適解の再現に影響しない制約条件の変更の前後において、同一もしくは近似の最適解を得たいというユーザの要望に応えることができる。そして、出力された解の検証、調整などのユーザの作業負担を軽減することができる。
【０１２６】
以上、本発明について、例示的な実施形態と関連させて記載した。多くの代替物、修正および変形例が当業者にとって明らかであることは明白である。したがって、上に記載の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。
【０１２７】
例えば、本発明は、生産計画立案業務に限られず、繰り返し制約条件を変えて目的に対する最適解を探索する計画業務に適用可能である。
【図面の簡単な説明】
【０１２８】
【図１】本発明の一実施形態に係る計画最適化装置１の機能構成を示すブロック図。
【図２】計画最適化装置１のハードウェア構成例を示すブロック図。
【図３】計画最適化処理の流れを示すフロー図。
【図４】解再現目的の生成処理の流れを示すフロー図。
【図５】計画最適化の対象のモデルを説明するための図。
【図６】ユーザ目的、制約条件、変数の定義の例を示す図。
【図７】解再現目的を生成する方法を選択するための操作画面の例を示す図。
【図８】解再現目的記憶部に格納された解再現目的の例を示す図。
【図９】目的記憶部に格納されたユーザ目的および解再現目的の例を示す図。
【図１０】解の再現に影響を与える変数の優先順位を指定するための画面例を示す図。
【図１１】解の再現に影響を与える変数の優先順位を指定するための画面例を示す図。
【符号の説明】
【０１２９】
１：計画最適化装置、１０：ユーザ設定受付部、１１：目的記憶部、１２：制約条件記憶部、１３：解再現目的生成部、１４：解再現設定受付部、１５：最適化問題計算部、１６：解記憶部、１７：解出力部、１８：解再現目的記憶部、２０：入力部、２１：表示部、
１００：ＣＰＵ、１１０：ＲＡＭ、１２０：ＲＯＭ、１３０：補助記憶装置、１４０：表示装置、１５０：入力装置、１６０：メディア読取装置、１７０：通信装置、
７００：設定ウィンドウ、７１０：ラジオボタン、７２０：選択終了ボタン、８００：設定ウィンドウ、８１０：変数表示フィールド、８２０：優先順位設定フィールド、８２５：変数オブジェクト、８３０：入力終了ボタン
【図１】
2010061179.tif 000003
【図２】
2010061179.tif 000004
【図３】
2010061179.tif 000005
【図４】
2010061179.tif 000006
【図５】
2010061179.tif 000007
【図６】
2010061179.tif 000008
【図７】
2010061179.tif 000009
【図８】
2010061179.tif 000010
【図９】
2010061179.tif 000011
【図１０】
2010061179.tif 000012
【図１１】
2010061179.tif 000013