(57)【要約】  二値二次計画問題で表される計画を最適化する最適化システムは、最適化部８８を備え、最適化部８８は、二値二次計画問題を半正定計画問題に緩和して、その半正定計画問題の解を導出する。
2017056366.tif 000002
【特許請求の範囲】
【請求項１】
二値二次計画問題で表される計画を最適化する最適化システムであって、
前記二値二次計画問題を半正定計画問題に緩和して、当該半正定計画問題の解を導出する最適化部を備えた
ことを特徴とする最適化システム。
【請求項２】
最適化部は、導出された半正定計画問題の解を二値二次計画問題の解に変換することで最適解を導出する
請求項１記載の最適化システム。
【請求項３】
最適化部は、二値変数を多次元単位球面上の変数に拡張して半正定計画問題への緩和を行う
請求項１または請求項２記載の最適化システム。
【請求項４】
最適化部は、以下の問題１で表される１−ｏｆ−Ｋ制約、線形等式制約、および、線形不等式制約つきの二値二次計画問題
【数５２】
2017056366.tif 000054
を、以下の問題２で表される半正定値問題
【数５３】
2017056366.tif 000055
に緩和し、前記半正定値問題の解を前記二値二次計画問題の解に変換することで、当該二値二次計画問題の最適解を導出する
請求項１から請求項３のうちのいずれか１項に記載の最適化システム。
【請求項５】
二値二次計画問題で表される計画を最適化する最適化方法であって、
前記二値二次計画問題を半正定計画問題に緩和して、当該半正定計画問題の解を導出する
ことを特徴とする最適化方法。
【請求項６】
導出された半正定計画問題の解を変換して二値二次計画問題の解を最適解として導出する
請求項５記載の最適化方法。
【請求項７】
二値二次計画問題で表される計画を最適化するコンピュータに適用される最適化プログラムであって、
前記コンピュータに、
前記二値二次計画問題を半正定計画問題に緩和して、当該半正定計画問題の解を導出する最適化処理
を実行させるための最適化プログラム。
【請求項８】
最適化処理で、導出された半正定計画問題の解を変換して二値二次計画問題の解を最適解として導出させる
請求項７記載の最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数理最適化を行う最適化システム、最適化方法および最適化プログラムに関する。
【背景技術】
【０００２】
近年、過去の実績データに基づいて予測モデルを生成する方法が各種提案されている。例えば、特許文献１には、混合型データを自動で分離し分析する学習方法について記載されている。【０００３】
また、定量的な問題について最適化（以下、数理最適化）を行う方法として、数理計画法（numerical optimization）が知られている。数理計画法には、例えば、線形計画法、二次計画法、半正定計画法などの連続変数に関する方法や、混合整数計画法のような離散変数に関する方法がある。特許文献２には、収集されたデータに数理計画法を適用することによって、最適充電スケジュールを決定する方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第８９０９５８２号明細書
【特許文献２】特開２０１２−２１３３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
数理最適化を行う場合、通常、数理計画法へ入力されるデータが観測されることを前提としている。例えば、工業製品の生産ラインを最適化する場合、各ラインである製品を作るために必要な材料の量、コスト、製造時間などのデータが入力される。【０００６】
一方、データが観測されない場合には、人手でデータを準備する必要があり、大規模な最適化や高頻度な最適化が難しい。例えば小売店舗において、商品の将来の需要予測線が得られれば、需要に基づいて発注と在庫を最適化することは可能である。しかし、人手で需要予測線を引く事ができる商品数には限りがあり、また数時間に１回の発注作業のたびに手作業による需要予測を繰り返すことは現実的ではない。【０００７】
また例えば、将来のある期間の売上が最大となるように、その期間の各商品価格を最適化するためには、大量の商品の価格と需要の間の複雑な相関関係を把握する必要があり、人手でこれを行う事は難しい。【０００８】
以上の知見に基づいて、本発明の発明者は、例えば特許文献２に記載された方法によって過去のデータから観測されないデータを予測するモデルを学習し、その予測モデルに基づく将来の予測結果に基づいて数理計画法の目的関数や制約条件を自動的に生成し最適化を実行する方法等に係る発明をした。この発明により、数理最適化で観測されない大量の入力データが存在する状況や複数の大量のデータ間に複雑な相関関係が存在する場合であっても、適切に最適化を行うことができる。【０００９】
一方、このような最適化を行う過程において、上記で述べた機械学習に基づく予測モデルが、非線形な基底関数に基づく場合がある。例えば、上記で述べた価格の予測問題について、機械学習に基づく予測モデルへ入力する特徴量として、価格の二乗や価格の対数変換といった非線形変換を行うとする。この場合、数理最適化の目的関数（将来のある期間の売上）は、価格を複雑に非線形変換した特徴量の関数になるため、一般的な方法を用いて、このような数理最適化を効率的に解くことは難しい。そのため、最適化に用いられる予測モデルが非線形な基底関数に基づく場合であっても、高速かつ高精度に数理最適化の解を求められることができることが好ましい。【００１０】
そこで、本発明は、最適化に用いられる予測モデルが非線形な基底関数に基づく場合であっても、高速かつ高精度に数理最適化の解を求めることができる最適化システム、最適化方法および最適化プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明による最適化システムは、二値二次計画問題で表される計画を最適化する最適化システムであって、二値二次計画問題を半正定計画問題に緩和して、その半正定計画問題の解を導出する最適化部を備えたことを特徴とする。【００１２】
本発明による最適化方法は、二値二次計画問題で表される計画を最適化する最適化方法であって、二値二次計画問題を半正定計画問題に緩和して、その半正定計画問題の解を導出することを特徴とする。【００１３】
本発明による最適化プログラムは、二値二次計画問題で表される計画を最適化するコンピュータに適用される最適化プログラムであって、コンピュータに、二値二次計画問題を半正定計画問題に緩和して、その半正定計画問題の解を導出する最適化処理を実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、上述した技術的手段により、最適化に用いられる予測モデルが非線形な基底関数に基づく場合であっても、高速かつ高精度に数理最適化の解を求めることができるという技術的効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】本発明による最適化システムの第１の実施形態の構成例を示すブロック図である。
【図２】第１の実施形態の最適化システムの動作例を示すフローチャートである。
【図３】第１の実施形態の最適化システムの変形例を示す説明図である。
【図４】本発明による最適化システムの第２の実施形態の構成例を示すブロック図である。
【図５】候補点の入力を受け付ける画面の例を示す説明図である。
【図６】第２の実施形態の最適化システムの動作例を示すフローチャートである。
【図７】ＳＤＰ緩和によりＢＱＰを解く動作例を示すフローチャートである。
【図８】ＳＤＰ緩和によりＢＱＰを解く他の動作例を示すフローチャートである。
【図９】ＳＤＰ緩和によりＢＱＰを解くさらに他の動作例を示すフローチャートである。
【図１０】本発明による最適化システムの概要を示すブロック図である。
【図１１】少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１６】
まず、本発明の概要を説明する。本発明では、数理最適化で観測されない大量の入力データが存在する状況や複数の大量のデータ間に複雑な相関関係が存在する状況において、機械学習技術によって観測されない大量のデータや複雑なデータの相関関係を学習し、それによって適切に最適化を行う。具体的には、本発明では、例えば特許文献１に記載された方法によって過去のデータから観測されないデータを予測するモデルを学習し、その予測モデルに基づく将来の予測結果に基づいて数理計画法の目的関数や制約条件を自動的に生成し最適化を実行する。
【００１７】
以下、本発明の実施形態を図面を参照して説明する。なお、以下の説明では、必要に応じて、複数の商品の売上の予測に基づいて複数の商品の売上高の総和を最大にするように複数の商品の価格を最適化する場合について例示する。ただし、最適化の対象は上記の例に限定されない。また、以下の説明では、機械学習による予測対象となる変数を「被説明変数」、予測に用いられる変数を「説明変数」、最適化の出力となる変数を「目的変数」と記す。なお、これらの変数は排他的な関係ではなく、例えば説明変数の一部が目的変数となることがある。
【００１８】
実施形態１．
まず初めに、予測モデルに基づく将来の予測結果に基づいて数理計画法の目的関数や制約条件を自動的に生成し最適化を実行する方法を説明する。図１は、本発明による最適化システムの第１の実施形態の構成例を示すブロック図である。本実施形態の最適化システムは、訓練データ記憶部１０と、学習器２０と、最適化装置３０とを備えている。図１に例示する最適化システムは、本発明における情報処理システムに対応する。
【００１９】
訓練データ記憶部１０は、学習器２０が予測モデルの学習に用いる各種訓練データを記憶する。本実施形態では、訓練データ記憶部１０は、後述する最適化装置３０が最適化結果として出力する変数（目的変数）について、過去に取得された実績データを記憶する。例えば、最適化装置３０が複数の商品の価格を最適化しようとする場合、訓練データ記憶部１０は、過去に取得された実績データとして、説明変数に対応する各商品の価格や、被説明変数に対応する商品の売上数量を記憶する。
【００２０】
また、訓練データ記憶部１０は、過去に取得された被説明変数の実績データおよび説明変数の実績データ以外にも、天気や暦情報などの外的情報を記憶していてもよい。
【００２１】
学習器２０は、訓練データ記憶部１０に記憶された各種訓練データに基づいて、機械学習により、設定された被説明変数ごとに予測モデルを学習する。本実施形態で学習される予測モデルは、後述する最適化装置３０が最適化結果として出力する変数（目的変数）の関数で表される。すなわち、目的変数（または、その関数）が、予測モデルの説明変数になっている。
【００２２】
例えば、売上高の総和を最大にするように価格の最適化を行う場合、学習器２０は、過去の売上情報（価格、売上量など）や外部情報（天候や気温など）に基づいて、各商品の価格を説明変数とする売上数量の予測モデルを、対象とする商品ごとに生成する。このような予測モデルを複数の商品の売上数量を被説明変数として生成することにより、天候などの複雑な外部関係を考慮したうえで価格と需要との関係、および、競合する商品により発生する市場の共食い現象（いわゆる、カニバリゼーション）をモデル化できる。
【００２３】
予測モデルの生成方法は任意であり、例えば、単純な回帰手法が用いられてもよく、特許文献１に記載されたような学習方法が用いられてもよい。
【００２４】
ここで、最適化対象のインデックスの集合を｛ｍ｜ｍ＝１，…，Ｍ｝と記す。上述する例では、最適化対象は各商品の価格であり、Ｍは商品数に対応する。また、各最適化対象ｍについて予測する内容をＳｍと記す。上述する例では、Ｓｍは、商品ｍの売上数量に対応する。また、各最適化対象ｍについて最適化する内容（すなわち、最適化の目的変数）をＰｍまたはＰ´ｍと記す。上述する例では、Ｐｍは、商品ｍの価格に対応する。線形回帰を使用してＳｍ（例えば、売上数量（需要））とＰｍ（例えば、価格）との依存関係をモデル化すると、Ｓｍを予測する予測モデルは、例えば、以下に例示する式１で表される。
【００２５】
【数１】
2017056366.tif 000003
【００２６】
式１において、ｆｄは特徴生成関数であり、Ｐ´ｍに対する変換を表わす。また、Ｄは特徴生成関数の数を示し、Ｐ´ｍに対して行われる変換の数を示す。ｆｄの内容は任意であり、例えば、線形変換を行う関数であってもよく、対数や多項式のような非線形変換を行う関数であってもよい。上述するように、Ｐｍが商品ｍの価格であり、Ｓｍが商品ｍの売上数量を示す場合、ｆｄは、例えば、価格に関する売上の反応を表わす。売上の反応とは、例えば、ある程度の値下げをすると売上の反応が良くなる、または、反応が悪くなる、値下げに応じて売上数量が二乗になる、などが挙げられる。
【００２７】
また、式１において、ｇｄは、外的特徴（上述する例の場合、天候など）であり、Ｄ´は、外的特徴の数である。なお、外的特徴に関しては、事前に変換をしておいてもよい。また、式１におけるα、β、γは、それぞれ学習器２０による機械学習の結果得られる回帰式の定数項および係数である。これまでの説明から明らかである通り、予測モデルは、被説明変数（Ｓｍ）および説明変数（Ｐｍや、各種外的特徴など）に基づいて学習され、被説明変数と説明変数との間の関係を示し、説明変数の関数で表されるものである。
【００２８】
なお、時間経過を考慮し、上述する式１を以下に例示する式２に変形することも可能である。
【００２９】
【数２】
2017056366.tif 000004
【００３０】
式２において上付きｔは、時間のインデックスを表わす。これは、例えば窓関数によって時間的に訓練データ集合をスライドさせ、時間ｔとともに予測式を更新している場合に相当する。このように、予測モデルは、過去に取得された最適化の目的変数の実績データに基づいて学習され、その目的変数を説明変数とする関数で表される。このように、学習器２０が、過去に取得された実績データを用いるため、人手で訓練データを生成する必要がない。また、機械学習により予測モデルを学習するため、対象とするデータが大量になっても対応可能であり、また、時間と共に変化する売上量のトレンドに対して自動的にモデルを再学習し追従することができる。学習器２０は、生成した予測モデルを最適化装置３０に入力する。
【００３１】
最適化装置３０は、目的とする内容の最適化を行う。具体的には、最適化装置３０は、目的変数等に対して定められた各種制約条件（詳細は後述）を満たしつつ、目的関数の値が最適（最大、最小など）になるように、目的変数の値を最適化する。上述する例では、最適化装置３０は、複数の商品の価格を最適化する。
【００３２】
最適化装置３０は、予測モデル入力部３１と、外的情報入力部３２と、記憶部３３と、問題記憶部３４と、制約条件入力部３５と、最適化部３７と、出力部３８と、目的関数生成部３９とを含む。
【００３３】
予測モデル入力部３１は、予測モデルを入力する装置である。具体的には、予測モデル入力部３１は、学習器２０が学習した予測モデルを入力する。また、予測モデル入力部３１は、予測モデルを入力する際、最適化処理を行うために必要なパラメータも併せて入力する。予測モデル入力部３１は、学習器２０が学習した予測モデルに対してオペレータが手動で修正した予測モデルを入力してもよい。なお、予測モデル入力部３１は、最適化装置３０で利用される予測モデルを受け付けていることから、予測モデルを受け付ける予測モデル受付部ということができる。
【００３４】
外的情報入力部３２は、予測モデル以外で、最適化に用いられる外的情報を入力する。例えば、上述する例において来週の価格を最適化しようとする場合、外的情報入力部３２は、来週の天気に関する情報を入力してもよい。また、例えば来週の来店人数を予測できるような場合、外的情報入力部３２は、来週の来店人数に関する情報を入力してもよい。この例のように、外部情報は、機械学習による予測モデルによって生成されたものでもよい。ここで入力される外的情報は、例えば、予測モデルの説明変数に適用される。
【００３５】
記憶部３３は、予測モデル入力部３１が入力した予測モデルを記憶する。また、記憶部３３は、外的情報入力部３２が入力した外的情報を記憶する。記憶部３３は、例えば、磁気ディスク装置により実現される。
【００３６】
問題記憶部３４は、最適化部３７による最適化の評価尺度を記憶する。具体的には、問題記憶部３４は、最適化により解こうとする数理計画問題を記憶する。数理計画問題は、ユーザ等により予め問題記憶部３４に記憶される。問題記憶部３４は、例えば、磁気ディスク装置により実現される。
【００３７】
なお、本実施形態では、数理計画問題の目的関数あるいは制約条件は、予測モデルがパラメータになるように定義される。すなわち、本実施形態の目的関数あるいは制約条件は、予測モデルの汎関数として定義される。例えば、上述する例の場合、問題記憶部３４は、売上高の総和を最大化するための数理計画問題を記憶する。この場合、最適化部３７は、売上高の総和を最大化するように各商品の価格を最適化する。各商品の売上高は、商品の価格と予測モデルで予測される売上数量の積で定義できるため、問題記憶部３４は、例えば、以下に例示する式３で特定される数理計画問題を記憶してもよい。
【００３８】
【数３】
2017056366.tif 000005
【００３９】
式３において、Ｔｔｅは、最適化すべき期間の時間インデックスである。例えば次の１週間の売上高の総和を最大化する場合で、時間の単位が「日」の場合、Ｔｔｅは、次の日から１週間の日付の集合である。
【００４０】
制約条件入力部３５は、最適化する際の制約条件を入力する。制約条件の内容は任意であり、例えば、ビジネス上の制約などが制約条件として入力される。例えば、ある商品の売上数量に対してノルマがある場合、“Ｓｍ（ｔ）≧ノルマ”という制約条件を課すことが考えられる。他にも、２つの商品の価格Ｐ１、価格Ｐ２の大小を規定した制約条件（例えば、Ｐ１≧Ｐ２など）が課されてもよい。
【００４１】
また、制約条件が予測モデルを引数としている場合、制約条件入力部３５は、予測モデルの入力を受け付ける予測モデル受付部として動作してもよいし、記憶部３３に記憶された予測モデルを読み取ってもよい。そして、制約条件入力部３５は、取得した予測モデルを引数とする制約条件を生成してもよい。
【００４２】
目的関数生成部３９は、数理計画問題の目的関数を生成する。具体的には、目的関数生成部３９は、予測モデルをパラメータとする数理計画問題の目的関数を生成する。目的関数生成部３９は、例えば、問題記憶部３４に記憶された数理計画問題に適用する予測モデルを記憶部３３から読み取り、目的関数を生成する。
【００４３】
また、上述する例のように、予測する内容に応じて、機械学習により複数の予測モデルが学習される。この場合、問題記憶部３４にも、複数の予測モデルが記憶されることになる。この場合、目的関数生成部３９は、問題記憶部３４に記憶された数理計画問題に適用する複数の予測モデルを記憶部３３から読み取り、目的関数を生成してもよい。
【００４４】
最適化部３７は、入力された各種情報に基づいて、目的とする内容の最適化を行う。具体的には、最適化部３７は、目的関数の値が最適になるように、目的変数の値を最適化する。上述するように、目的変数等に対して各種制約条件が定められるため、最適化部３７は、制約条件を満たしつつ、目的関数の値が最適（最大、最小など）になるように、目的変数の値を最適化する。
【００４５】
本実施形態では、最適化部３７は、上述するような予測モデルがパラメータになっている目的関数の値を最適化するように数理計画問題を解いていると言うことができる。最適化部３７は、例えば、上述する式３で特定される数理計画問題を解くことで、複数の商品の価格を最適化してもよい。また、制約条件が予測モデルを引数としている場合、最適化部３７は、この制約条件のもとで、目的関数を最適化する目的変数を算出しているとも言える。
【００４６】
出力部３８は、最適化部３７による最適化結果を出力する。
【００４７】
予測モデル入力部３１と、外的情報入力部３２と、制約条件入力部３５と、最適化部３７と、出力部３８と、目的関数生成部３９とは、プログラム（情報処理用プログラム、または、最適化プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、最適化装置３０の記憶部３３に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、予測モデル入力部３１、外的情報入力部３２、制約条件入力部３５、最適化部３７、出力部３８および目的関数生成部３９として動作してもよい。
【００４８】
また、予測モデル入力部３１と、外的情報入力部３２と、制約条件入力部３５と、最適化部３７と、出力部３８と、目的関数生成部３９とは、それぞれが専用のハードウェアで実現されていてもよい。予測モデル入力部３１と、外的情報入力部３２と、制約条件入力部３５と、最適化部３７と、出力部３８と、目的関数生成部３９とは、それぞれが電気回路構成（circuitry ）により実現されていてもよい。ここで、電気回路構成（circuitry ）とは、単一のデバイス（single device ）、複数のデバイス（multiple devices）、チップセット（chipset ）またはクラウド（cloud ）を概念的に含む文言である。また、本発明による最適化システムは、２つ以上の物理的に分離した装置が有線または無線で接続されることにより構成されていてもよい。
【００４９】
次に、本実施形態の最適化システムの動作を説明する。図２は、本実施形態の最適化システムの動作例を示すフローチャートである。まず、学習器２０は、訓練データ記憶部１０に記憶された各種訓練データに基づいて、設定された被説明変数ごとに予測モデルを学習する（ステップＳ１１）。
【００５０】
予測モデル入力部３１は、学習器２０が生成した予測モデルを入力し（ステップＳ１２）、記憶部３３に記憶する。また、外的情報入力部３２は、外的情報を入力し（ステップＳ１３）、記憶部３３に記憶する。
【００５１】
目的関数生成部３９は、予測モデル入力部３１に入力された１つ以上の予測モデル、および、問題記憶部３４に記憶された数理計画問題を読み込む。そして、目的関数生成部３９は、数理計画問題の目的関数を生成する（ステップＳ１４）。一方、制約条件入力部３５は、最適化を行う際の制約条件を入力する（ステップＳ１５）。
【００５２】
最適化部３７は、入力された制約条件のもとで、目的関数の値が最適になるように、目的変数の値を最適化する（ステップＳ１６）。
【００５３】
以上のように、本実施形態では、 予測モデル入力部３１が、被説明変数および説明変数に基づいて学習され、被説明変数と説明変数との間の関係を示し、説明変数の関数で表される予測モデルを受け付ける。そして、最適化部３７が、受け付けられた予測モデルを引数とする目的関数について、制約条件のもとで、その目的関数を最適化する目的変数を算出する。
【００５４】
具体的には、目的関数生成部３９により、数理計画問題の目的関数が予測モデルを引数として定義され、最適化部３７が、その予測モデルを引数とする制約条件のもとで、数理計画問題の目的関数の値が最大化されるように目的変数の値を最適化する。そのような構成により、数理最適化で観測されない入力データが存在する状況であっても、適切に最適化を行うことができる。
【００５５】
なお、本実施形態では、売上高の総和を最大化するように複数の商品の価格を最適化する方法を例示した。他にも、最適化部３７は、利益を最大にするように複数の商品の価格を最適化してもよい。
【００５６】
以下、第１の実施形態の理解を容易にするため、簡単な具体例を用いて、第１の実施形態の適用例を説明する。まず、第１の適用例として、複数の商品の売上の予測に基づいて、複数の商品の売上高の総和を最大にするように複数の商品の価格を最適化する場合について説明する。
【００５７】
例えば、ある小売店において、この先一ヶ月のサンドイッチ群の売上高の総和を最大にする場合を考える。サンドイッチ群は、サンドイッチＡ、Ｂ、ＣおよびＤの４種類のサンドイッチを含むとする。この場合、サンドイッチ群の売上高の総和、すなわち、サンドイッチＡ、Ｂ、ＣおよびＤの４つのサンドイッチの売上高の総和が最大化されるように、サンドイッチＡ，Ｂ、ＣおよびＤのそれぞれの販売価格を最適化するという問題を解くことになる。
【００５８】
訓練データ記憶部１０は、過去の各サンドイッチの売上高を示すデータおよび過去の各サンドイッチの販売価格を記憶する。訓練データ記憶部１０は、天気や暦情報などの外的情報を記憶していてもよい。
【００５９】
学習器２０は、訓練データ記憶部１０に記憶された各種訓練データに基づいて、機械学習により、例えば、各サンドイッチの売上数量を予測するための予測モデルを学習する。
【００６０】
ここでは、サンドイッチＡの売上数量を予測するための予測モデルについて例示する。サンドイッチＡの売上数量は、サンドイッチＡ自体の販売価格の影響を受けると考えられる。また、サンドイッチＡの売上数量は、サンドイッチＡと共に商品棚に陳列されるサンドイッチ、すなわちサンドイッチＢ、ＣおよびＤの販売価格の影響も受けると考えられる。その小売店に来店する顧客は、商品棚に同時に陳列されるサンドイッチＡ、Ｂ、ＣおよびＤのうちから、好ましいサンドイッチを選択的に購入すると考えられるからである。
【００６１】
この状況で、例えば、サンドイッチＢが大安売りされている日を想定する。普段はサンドイッチＡを好んで購入する顧客であっても、このような日にはサンドイッチＡではなくサンドイッチＢを選択して購入する可能性がある。顧客（人間）が一度に食することができるサンドイッチの量には限りがあるので、一般的な顧客がサンドイッチＡとＢの両方を購入しようと考える可能性は低いからである。
【００６２】
この場合、結果的には、サンドイッチＢが安売りされていることにより、サンドイッチＡの売上数量が減ることになる。このような関係は、カニバリゼーション（市場の共食い関係）の関係と呼ばれる。
【００６３】
すなわち、このカニバリゼーションとは、ある商品の価格を下げると、その商品の売上量は上がる一方で、他の競合商品（性質や特徴が互いに類似した複数の商品）の売上量が減少するような関係である。
【００６４】
したがって、サンドイッチＡの売上数量ＳＡ（被説明変数）を予測する予測モデルは、例えば、サンドイッチＡの価格ＰＡ、サンドイッチＢの価格ＰＢ、サンドイッチＣの価格ＰＣおよびサンドイッチＤの価格ＰＤを説明変数として含む関数として表すことができる。
【００６５】
学習器２０は、訓練データ記憶部１０に記憶された各種訓練データに基づいて、サンドイッチＡの売上数量ＳＡを予測する予測モデル、サンドイッチＢの売上数量ＳＢを予測する予測モデル、サンドイッチＣの売上数量ＳＣを予測する予測モデル、サンドイッチＤの売上数量ＳＤを予測する予測モデルをそれぞれ生成する。
【００６６】
なお、サンドイッチの売上が外部情報（天候や気温など）の影響を受けると考えて、これら外部情報をも考慮した予測モデルが生成されてもよい。また、時間経過を考慮した予測モデルが生成されてもよい。これらの予測モデルは、例えば、上述した式１や式２で表現される。
【００６７】
これまでの説明から明らかである通り、予測モデルは、被説明変数（本実施形態においてはサンドイッチの売上数量）および説明変数（本実施形態においては、そのサンドイッチの販売価格および競合するサンドイッチの販売価格等）に基づいて学習され、被説明変数と説明変数との間の関係を示し、説明変数の関数で表されるものである。
【００６８】
最適化装置３０は、目的とする内容、すなわち、サンドイッチＡ、Ｂ、ＣおよびＤのそれぞれの販売価格（すなわち、ＰＡ、ＰＢ、ＰＣおよびＰＤ）の最適化を行う。具体的には、最適化装置３０は、目的変数（すなわち、ＰＡ、ＰＢ、ＰＣおよびＰＤ）等に対して定められた各種制約条件を満たしつつ、目的関数（すなわち、サンドイッチ群の売上高の総和）の値が最大になるように、目的変数（すなわち、ＰＡ、ＰＢ、ＰＣおよびＰＤ）の値を最適化する。目的関数は、例えば、上述した式３で表現される。
【００６９】
本適用例では、目的関数が予測モデルを引数として定義される例を説明し、最適化装置３０が扱う目的関数（すなわちサンドイッチ群の売上高の総和）は上記に例示する式３で表すことができる。
【００７０】
最適化装置３０には、上述する式３で表されるような目的関数の“形”があらかじめ記憶されているとする。最適化装置３０は、学習器２０が生成した予測モデル（すなわちＳＡを予測する予測モデル、ＳＢを予測する予測モデル、ＳＣを予測する予測モデルおよびＳＤを予測する予測モデル）を上記目的関数の“形”に代入することにより、最適化問題の目的関数を生成する。
【００７１】
最適化装置３０は、予測モデルを引数とする目的関数について、制約条件のもとでその目的関数を最適化する目的変数の値（すなわちＰＡ、ＰＢ、ＰＣおよびＰＤの値）を算出する。以上、簡単な具体例を用いて、第１の実施形態の適用例を説明した。なお、上述の説明では、理解を容易にするために、高々４つの商品の売上高の総和が最大になるように、個々の商品の販売価格を最適化したが、最適化の対象は４つに限定されず、２つまたは３つであってもよく、５つ以上であってもよい。また、予測対象も商品に限定されず、例えば、サービスなどであってもよい。
【００７２】
次に、実際の小売店において、大量の商品の総売上数が最大化されるように個々の商品の販売価格を最適化したい、という問題を扱う場合を考える。このような場合、数理計画問題（最適化問題）の目的関数を人手で定義することは、煩雑に過ぎ、現実的ではない。
【００７３】
例えば小売店において、商品の将来の需要予測線が得られれば、需要に基づいて発注と在庫を最適化することは可能である。しかし、人手で需要予測線を引く事ができる商品数には限りがあり、また数時間に１回の発注作業のたびに需要予測を繰り返すことは現実的ではない。また例えば、将来のある期間の売上が最大となるように、その期間の各商品価格を最適化するためには、大量の商品の価格と需要の間の複雑な相関関係を把握する必要があり、人手でこれを行う事は難しい。
【００７４】
上記適用例にて示したとおり、まずは目的関数の“形”を定義しておき、具体的な目的関数は予測モデルを引数として定義されるよう設計することで、数理最適化で観測されない大量の入力データが存在する状況においても、数理計画問題の目的関数を効率良く生成することができる。また、本実施形態では、上記カニバリゼーションのように複数の大量のデータ間に複雑な相関関係が存在する状況においても、適切に最適化を行うことができる。
【００７５】
また、商品の売上や利益を最大化する商品の価格を決定する以外に、本実施形態の最適化システムを、例えば、商品の棚割りを最適化する事案に適用してもよい。この場合、学習器２０が、例えば、商品ｍの売上数量Ｓｍの予測モデルを、以下のように線形回帰モデルで学習する。なお、Ｐは商品の価格であり、Ｈは棚の位置であり、θｍはパラメータである。
【００７６】
Ｓｍ＝ｌｉｎｅａｒ＿ｒｅｇｒｅｓｓｉｏｎ(Ｐ，Ｈ，θｍ)
【００７７】
このとき、最適化装置３０は、ＰおよびＨについて、売上（具体的には、商品ｍの価格Ｐｍと売上数量Ｓｍとの積の総和）を最大にするように最適化すればよい。また、この場合も、任意のビジネス制約（例えば、価格の条件など）が設定されてもよい。
【００７８】
また、上述した棚割り以外にも、小売価格最適化、ホテル部屋価格最適化、航空券価格最適化、駐車場料金最適化、キャンペーン最適化など、商材（サービス、製品いずれも含む）の価格と、商材の需要（複数の商材の価格の関数）との積で表される目的関数の最適化に、本願発明の最適化方法を適用可能である。
【００７９】
以下、上述する第１の適用例に続き、簡単な具体例を用いて、これらの第１の実施形態への適用例を説明する。ここでは、第２の適用例として、ホテル価格の最適化を説明する。この適用例の場合、売上高または利益を最大化することが目的であるため、目的関数は、売上高または利益を算出する関数で表わされる。目的変数として、例えば、ホテルの各部屋を利用するプランの料金設定が挙げられる。上述する小売と比較すると、小売の例で示した「サンドイッチ」が、本適用例では、例えば、「シングルルームの朝食付きプラン」に対応する。また、外部情報として、例えば、天候や季節、ホテルの周辺で行われるイベントなどが挙げられる。
【００８０】
次に、第３の適用例として、ホテル価格と在庫の最適化を説明する。この適用例の場合も、売上高または利益を最大化することが目的であるため、目的関数は、売上高または利益を算出する関数で表わされる。目的変数には、価格および在庫を考慮した内容が選択される。例えば、第１の目的変数として、各プランで利用される部屋をどの時期にどのくらいの料金で販売するかを表わす変数、第２の目的変数として、各プランで利用される部屋をどの時期に何部屋販売するかを表わす変数、などが挙げられる。また、第２の適用例と同様、外部情報として、例えば、天候や季節、ホテルの周辺で行われるイベントなどが挙げられる。
【００８１】
次に、第４の適用例として、航空券の価格と在庫の最適化を説明する。この適用例の場合も、売上高または利益を最大化することが目的であるため、目的関数は、売上高または利益を算出する関数で表わされる。目的変数も、第３の適用例と同様、価格および在庫を考慮した内容が選択される。各航空券が、目的地までのルートや座席の種類（クラス）表すとすると、例えば、第１の目的変数として、各航空券をどの時期にどのくらいの料金で販売するかを表わす変数、第２の目的変数として、各航空券をどの時期に何枚販売するかを表わす変数、などが挙げられる。また、外部情報として、例えば、季節や開催されるイベントなどが挙げられる。
【００８２】
次に、第５の適用例として、各駐車場の駐車料金の最適化を説明する。この適用例の場合も、売上高または利益を最大化することが目的であるため、目的関数は、売上高または利益を算出する関数で表わされる。目的変数は、例えば、時間帯および場所別の駐車料金が挙げられる。また、外部情報として、例えば、周囲の駐車場の駐車料金、ロケーション情報（住宅地、オフィス街、駅からの距離など）が挙げられる。
【００８３】
次に、予測モデルおよび予測に必要なデータ（予測用データ）の流れを中心に、図１に例示する構成と比較しながら、第１の実施形態の最適化システムの変形例を説明する。図３は、本変形例による最適化システムの構成例を示す説明図である。
【００８４】
図３に例示する最適化システムは、データ前処理部１５０と、データ前処理部１６０と、学習エンジン１７０と、最適化装置１８０とを備えている。データ前処理部１５０と、データ前処理部１６０とは、各データに対して、欠損値を埋めるなど、一般的な処理を行う機能を有する。また、学習エンジン１７０は、第１の実施形態の学習器２０に対応し、最適化装置１８０は、第１の実施形態の最適化装置３０に対応する。
【００８５】
まず、分析・予測対象データ１００ｄから、分析用データ１１０ｄおよび予測用データ１２０ｄが生成される。分析・予測対象データ１００ｄは、例えば、気象やカレンダデータなどの外部情報１０１ｄ、売上・価格情報１０２ｄ、商品情報１０３ｄなどを含む。
【００８６】
分析用データ１１０ｄは、学習エンジン１７０が学習に用いるデータであり、第１の実施形態の訓練データ記憶部１０が記憶するデータに対応する。また、予測用データ１２０ｄは、外部データおよびその他予測に必要なデータであり、具体的には、予測モデルにおける説明変数の値である。予測用データ１２０ｄは、第１の実施形態の記憶部３３が記憶するデータの一部または全部に対応する。
【００８７】
図３に示す例では、データ前処理部１５０が分析・予測対象データ１００ｄから分析用データ１１０ｄを生成し、データ前処理部１６０が分析・予測対象データ１００ｄから予測用データ１２０ｄを生成する。
【００８８】
学習エンジン１７０は、分析用データ１１０ｄを用いて学習し、予測モデル１３０ｄを出力する。最適化装置１８０は、予測モデル１３０ｄと、予測用データ１２０ｄを入力として最適化処理を行う。
【００８９】
なお、図３において例示する各データ（分析・予測対象データ１１０ｄ（具体的には、外部情報１０１ｄ、売上・価格情報１０２ｄ、および、商品情報１０３ｄ）、分析用データ１１０ｄ、および、予測用データ１２０ｄ）は、例えば、最適化システムにおける記憶部（図示せず）のデータベースに保持される。
【００９０】
第１の実施形態で説明するように、最適化する目的関数が予測モデルを引数として定義される。また、図３に示すように、予測用データが最適化の入力にもなっている。すなわち、本発明では、図３に例示するように、予測モデルと予測用データとが最適化の入力になっていることも特徴である。
【００９１】
実施形態２．
次に、本発明による最適化システムの第２の実施形態を説明する。第１の実施形態では、過去のデータから観測されないデータを予測するモデルを機械学習し、その予測モデルに基づく将来の予測結果に基づいて数理計画法の目的関数や制約条件を自動的に生成し最適化を実行する方法について説明した。
【００９２】
一方、前述するように、このような最適化を行う過程において、上記で述べた機械学習に基づく予測モデルが、非線形な基底関数に基づく場合がある。例えば、上記で述べた価格の予測問題について、機械学習に基づく予測モデルへ入力する特徴量として、価格の二乗や価格の対数変換といった非線形変換を行うとする。この場合、数理最適化の目的関数（将来のある期間の売上）は、価格を複雑に非線形変換した特徴量の関数になるため、一般的な方法を用いて、このような数理最適化を効率的に解くことは難しい。
【００９３】
そこで、第２の実施形態では、最適化に用いられる予測モデルが非線形な基底関数に基づく場合であっても、高速かつ高精度に数理最適化の解を求めることができる方法を説明する。
【００９４】
図４は、本発明による最適化システムの第２の実施形態の構成例を示すブロック図である。本実施形態の最適化システムは、訓練データ記憶部１０と、学習器２０と、最適化装置４０とを備えている。図４に例示する最適化システムは、本発明における情報処理システムに対応する。また、訓練データ記憶部１０および学習器２０の内容は、第１の実施形態と同様である。
【００９５】
最適化装置４０は、予測モデル入力部３１と、外的情報入力部３２と、記憶部３３と、問題記憶部３４と、制約条件入力部３５と、候補点入力部３６と、最適化部３７と、出力部３８と、目的関数生成部３９とを含む。
【００９６】
最適化装置４０は、第１の実施形態と同様、目的とする内容の最適化を行う装置である。ただし、最適化装置４０は、候補点入力部３６をさらに備えている点において、第１の実施形態の最適化装置３０と異なる。そして、本実施形態の最適化部３７は、候補点入力部３６の入力も考慮して最適化を行う。それ以外の構成の内容は、第１の実施形態と同様である。
【００９７】
候補点入力部３６は、最適化の候補点を入力する。候補点とは、目的変数の候補となる離散的な値である。例えば、上述する例の場合、候補点として価格の候補（例えば、割引なし、５％割引、７％割引、など）が挙げられる。このような候補点を入力することで、最適化のコストを低減できる。
【００９８】
図５は、候補点入力部３６がユーザから候補点の入力を受け付ける画面の例を示す説明図である。図５に示す例では、候補点入力部３６は、線形回帰モデルで使われている商品の価格の一覧を左側に表示し、その各商品の価格に設定する価格候補の一覧を右側に表示していることを示す。すなわち、候補点入力部３６は、最適化する目的変数の一覧およびその目的変数が取り得る値の候補を表示し、選択された目的変数の候補を受け付けて入力する。
【００９９】
図５に示す例では、オペレータがサンドイッチＡ（２００円）の価格の候補として、割引なし、１％割引、２％割引および５％割引という４つの候補を設定したことを示す。なお、図５に示す例では、目的変数の候補として割引を示す情報を表示しているが、候補点入力部３６は、具体的な価格の候補値（例えば、１９０円、２００円、２１０円および２２０円という候補値）を表示してもよい。
【０１００】
以下、候補点が入力される場合の数理計画問題について具体例を挙げて説明する。ここで、最適化する内容のインデックスの集合を｛ｋ｜ｋ＝１，…，Ｋ｝と記す。上述する例では、Ｋは価格の候補の数に対応する。例えば、商品「サンドイッチＡ」の価格の候補が、“割引なし、１％割引、２％割引および５％割引”の４つである場合、Ｋ＝４である。また、商品ｍの最適化する内容の候補の集合を、以下に示すように、上付きバーを付したＰｍｋと記す。上述する例では、上付きバーを付したＰｍｋは、商品ｍについての価格の候補を示す。
【０１０１】
【数４】
2017056366.tif 000006
【０１０２】
また、ｍのｋ番目のインジケータをＺｍｋと記す。ここで、Ｚｍｋは、以下の条件を満たす。
【０１０３】
【数５】
2017056366.tif 000007
【０１０４】
このように定義した場合、商品ｍの価格Ｐｍは、以下に例示する式４で定義される。すなわち、この定義により、目的変数である価格Ｐｍが離散化されたと言うことができる。
【０１０５】
【数６】
2017056366.tif 000008
【０１０６】
このとき、上述する式１は、以下のように変形可能である。
【０１０７】
【数７】
2017056366.tif 000009
【０１０８】
また、上述する式３は、以下に例示する式５のように変形可能である。なお、式５において、Ｚ＝（Ｚ１１，…，Ｚ１Ｋ，…，ＺＭＫ）である。
【０１０９】
【数８】
2017056366.tif 000010
【０１１０】
例えば、候補点が入力されない場合、最適化部３７は、上述する式３で特定される数理計画問題を解くことで、複数の商品の価格を最適化してもよい。また、候補点が入力された場合、最適化部３７は、上述する式５の数理計画問題を解くことで、複数の商品の価格を最適化してもよい。
【０１１１】
このとき、制約条件入力部３５も候補点を考慮した入力を受け付けてもよい。ここで、上述する商品の最適化で設定される制約条件の具体的一例を説明する。一般に、ボールペン１本単体の価格と、同じブランドのボールペン６本セットの価格とを比較した場合、ボールペン６本セットのボールペン１本当たりの価格は、ボールペン１本単体の価格よりも安いことが期待される。この種の制約条件は、以下に例示する式６で定義される。
【０１１２】
【数９】
2017056366.tif 000011
【０１１３】
式６において、ＰＣは、制約条件が適用されるインデックス対の集合を示し、ｗｍ，ｎは、重みを示す。なお、ＰＣおよびｗｍ，ｎは、予め与えられる。
【０１１４】
以下、最適化部３７が最適化処理を行う具体例を、上述する式５を用いて説明する。上述する式５の場合、目的関数は、以下のように変形可能である。
【０１１５】
【数１０】
2017056366.tif 000012
【０１１６】
ここで、[Ｑ]ｉ，ｊは行列Ｑの（ｉ，ｊ）番目の要素であり、［ｒ］ｉはベクトルｒのｉ番目の要素である。したがって、上述するＱは、対称行列ではなく、半正定値ではない。この問題は、非凸基数（０−１整数）二次計画問題と呼ばれる、混合整数二次計画問題の一種である。この問題は、混合整数計画問題に変形することで効率的に解くことが可能である。
【０１１７】
ここでは、混合整数計画緩和を用いて、上述する式５で特定される数理計画問題を解く方法を説明する。上付きバーを付した新たな変数Ｚｉ，ｊを用いて、以下の式７で例示する変形処理が行われる。
【０１１８】
【数１１】
2017056366.tif 000013
【０１１９】
ここで、最適解において、上付きバーを付した変数Ｚｉ，ｊがＺｉＺｊをとる、以下の式８で示す制約が定義される。
【０１２０】
【数１２】
2017056366.tif 000014
【０１２１】
上述する式８に示す等式を追加することにより、上述する式７を以下に例示する式９のように新たに定式化できる。
【０１２２】
【数１３】
2017056366.tif 000015
【０１２３】
なお、制約条件数を減らして計算を効率化するために、上述する式９の条件から以下の不等式が削除されてもよい。
【０１２４】
【数１４】
2017056366.tif 000016
【０１２５】
最適化部３７は、このようにして変形された定式を最大化するように、複数の商品の価格を最適化すればよい。なお、候補点入力部３６に候補点が入力されない場合、最適化部３７は、上述する式３の数理計画問題を解いてもよい。また、なお、ＭＩＬＰ（mixed integer linear programming）緩和において、上述する式６の制約条件を適用することも可能である。
【０１２６】
予測モデル入力部３１と、外的情報入力部３２と、制約条件入力部３５と、候補点入力部３６と、最適化部３７と、出力部３８と、目的関数生成部３９とは、プログラム（情報処理用プログラム、または、最適化プログラム）に従って動作するコンピュータのＣＰＵによって実現される。
【０１２７】
また、予測モデル入力部３１と、外的情報入力部３２と、制約条件入力部３５と、候補点入力部３６と、最適化部３７と、出力部３８と、目的関数生成部３９とは、それぞれが専用のハードウェアで実現されていてもよい。また、予測モデル入力部３１と、外的情報入力部３２と、制約条件入力部３５と、候補点入力部３６と、最適化部３７と、出力部３８と、目的関数生成部３９とは、それぞれが電気回路構成（circuitry ）により実現されていてもよい。
【０１２８】
次に、本実施形態の最適化システムの動作を説明する。図６は、本実施形態の最適化システムの動作例を示すフローチャートである。なお、学習されたモデル及び外的情報を入力して目的変数を生成し、制約条件を入力するまでのステップＳ１１からステップＳ１５までの処理は、図２に示す内容と同様である。
【０１２９】
候補点入力部３６は、目的変数の取り得る値の候補である候補点を入力する（ステップＳ１８）。ここで入力される候補点の数は、１つであってもよく、複数であってもよい。そして、最適化部３７は、入力された候補点および入力された制約条件のもとで、目的関数の値が最適になるように、目的変数の値を最適化する（ステップＳ１９）。
【０１３０】
以上のように、本実施形態では、数理計画問題の目的関数の値が最適になるように目的変数の値を最適化する最適化システムについて説明した。具体的には、予測モデル入力部３１が、数理計画問題の目的変数を説明変数とする関数で表される線形回帰モデルを入力する。また、候補点入力部３６が、線形回帰モデルに含まれる目的変数について、その目的変数が取り得る値の離散的な候補（候補点）を入力する。そして、最適化部３７が、線形回帰モデルを引数とする数理計画問題の目的関数を最適化する目的変数を算出する。その際、最適化部３７は、目的変数を最適化する候補点を選択して目的変数を算出する。
【０１３１】
そのような構成により、最適化に用いられる予測モデルが非線形な基底関数に基づく場合であっても、高速かつ高精度に数理最適化の解を求めることができる。
【０１３２】
具体的には、最適化部３７は、上述する式１に例示する線形回帰式で表される予測モデルをパラメータとする目的関数を最適化する。ここで、式１の線形回帰式は、説明変数の少なくとも一部が非線形関数ｆｄで表されるとする。
【０１３３】
例えば、価格のようにあらゆる候補を想定可能な目的変数であっても、現実的には、一定の価格候補を予め定めて最適化を実施することが多い。上述する式１の形式で表される予測モデルＳｍは、最適化の対象である目的変数Ｐｍにｆｄという関数を適用したものである。説明変数が非線形関数ｆｄで表される場合、線形回帰式の形式で表されている関数であっても、価格に関して言えば非線形関数であるため、最適化をするのは難しい。
【０１３４】
しかし、本実施形態では、目的変数を離散化して候補点を与えることにより、最適化の目的関数に関する非線形な式を、ｆｄに関わらず、Ｚｄという離散変数に関する線形式に変形できる。すなわち、線形回帰として表現されてはいるが、非線形変換をしているような線形回帰式に対し、最適化の目的変数を予め設定する（例えば、人間が与える）ことによって、最適化処理を高速に行うことが可能になる。
【０１３５】
また、本実施形態による方法を用いることで、後述する第３の実施形態に示す方法を適用することが可能になり、最適化処理を高速に行うことが可能になる。
【０１３６】
なお、本実施形態では、売上高の総和を最大化するように複数の商品の価格を最適化する方法を例示した。他にも、最適化部３７は、利益を最大にするように複数の商品の価格を最適化してもよい。この場合、目的関数生成部３９は、例えば、以下に例示する目的関数を生成してもよい。なお、ｃは、Ｚに依存しない項である。
【０１３７】
【数１５】
2017056366.tif 000017
【０１３８】
上述する目的関数も、非凸基数（０−１整数）二次計画問題であり、ｃがＺに依存しないため、上述する式Ａと数理的に等価な問題として、上述した解法を適用可能である。
【０１３９】
また、本実施形態では、第１の実施形態と同様、売上数量を回帰することで売上高（価格×売上数量）を最適化する場合について説明した。一方、回帰する対象を売上数量でなく、売上高としてもよい。売上高を直接回帰する場合、学習器２０が、目的変数の二次関数の非線形変換を規定とする回帰式で売上高を学習する。この場合の回帰式は、例えば、以下に示す式Ｂ１で表わされる。
【０１４０】
【数１６】
2017056366.tif 000018
【０１４１】
式Ｂ１において、φｄ、およびψｄは、それぞれ任意の基底関数である。また、ｘが価格に対応する。この関数を最適化の目的関数とする。上述する式４で示す場合と同様、以下の式Ｂ２に示すようにｘを離散化する。
【０１４２】
【数１７】
2017056366.tif 000019
【０１４３】
このようにｘを離散化した後、以下に示す変形を経ることで、以下の式Ｂ３に示すようなＢＱＰ問題に帰着させることが可能である。したがって、売上高を回帰する場合にも、本実施形態で示した方法を用いて最適化できる。
【０１４４】
【数１８】
2017056366.tif 000020
【０１４５】
【数１９】
2017056366.tif 000021
【０１４６】
【数２０】
2017056366.tif 000022
【０１４７】
実施形態３．
次に、本発明による最適化システムの第３の実施形態を説明する。最適化の手法として、ＢＱＰ（Binary Quadratic Programming Problem：二値二次計画問題）が知られている。第２の実施形態で示すように、線形予測に離散化を適用することで、上述する式Ａを生成できるため、第２の実施形態の問題は、ＢＱＰに変換可能である。ＢＱＰは、ＮＰ困難な問題であり、厳密解が求まらないため、一般に整数計画法という枠組みを用いて解くことが知られている。
【０１４８】
第２の実施形態では、混合整数計画緩和により、ＢＱＰを解く方法を説明した。本実施形態では、上述する式Ａに例示されるＢＱＰをより高速に解くための方法を説明する。なお、本実施形態の最適化システムの構成は、第２の実施形態の最適化システムの構成と同様である。ただし、最適化部３７が最適化処理を行う方法が、第２の実施形態と異なる。
【０１４９】
具体的には、本実施形態の最適化部３７は、ＢＱＰをＳＤＰ（Semidefinite Programming：半正定計画問題）と呼ばれる解きやすい問題に緩和し、ＳＤＰの解を基にＢＱＰを最適化する。
【０１５０】
一例として、まずＢＱＰを以下に例示する式１０のように定式化する。式１０において、ＭおよびＫは自然数である。また、式１０において、Ｑは、ＫＭ×ＫＭの正方行列であり、ｒはＫＭ次ベクトルである。
【０１５１】
【数２１】
2017056366.tif 000023
【０１５２】
ここで、サイズｎの全ての対称行列の集合をＳｙｍｎと記す。具体的には、Ｓｙｍｎは、以下のように記される。
【０１５３】
【数２２】
2017056366.tif 000024
【０１５４】
また、全てが１のベクトルを、太字の１で記すことがある。なお、太字の１＝（１，１，…，１）Ｔである。また、Ｓｙｍｎ上の内積が、黒丸記号を用いて、以下のように定義される。
【０１５５】
【数２３】
2017056366.tif 000025
【０１５６】
また、全てのベクトルｘについて以下に例示する式１１が成り立つ。そのため、上述する式１０のＱは、以下に例示する式１２に置き換えることが可能である。したがって、一般性を失うことなく、Ｑは対称行列と想定される。
【０１５７】
【数２４】
2017056366.tif 000026
【０１５８】
次に、ＳＤＰ緩和の方法を説明する。まず、最適化部３７は、式１０に例示するＢＱＰを｛１，−１｝値を取る変数に変換する。ｔ＝−１＋２Ｚとすると、上述する式１０は、以下に例示する式１３に変形される。
【０１５９】
【数２５】
2017056366.tif 000027
【０１６０】
したがって、上述する式１０は、以下に例示する式１４と等価になる。
【数２６】
2017056366.tif 000028
【０１６１】
次に、最適化部３７は、Ｓ０＝｛１，−１｝値を取る各変数ｔｉを、ＳＫＭ値を取る変数ｘｉに緩和する。Ｓｎは、以下の式１５に例示するように、ｎ次元単位球面を表わす。
【０１６２】
【数２７】
2017056366.tif 000029
【０１６３】
この場合、上述する式１４は、以下に例示する式１６の問題に緩和される。
【０１６４】
【数２８】
2017056366.tif 000030
【０１６５】
ここで、上述する式１４の目的関数の“１”も同様に、単位ベクトルｘ０に置き換えられる。上述する式１４の許容解ｔについて、以下に示す式１７により、式１６の許容解が定義され、目的関数の値は矛盾しない。したがって、上述する式１６の問題は、上述する式１４を緩和したものになる。
【０１６６】
【数２９】
2017056366.tif 000031
【０１６７】
最適化部３７は、上述する式１６の問題をＳＤＰ問題に変換する。式１６に示される目的関数は、以下に示す式１８に変換される。
【０１６８】
【数３０】
2017056366.tif 000032
【０１６９】
この定義により、Ｙは、半正定値であり、以下に示す式１９を満たす。
【０１７０】
【数３１】
2017056366.tif 000033
【０１７１】
Ｙが半正定値であるならば、（ＫＭ＋１）次元ベクトルｘ０，ｘ１，…，ｘＫＭは、上述する式１８に示す条件および式１９を満たす。
【０１７２】
行列Ｙを用いてｙｉｉ＝１とすることにより、制約条件||ｘｉ||２＝１を表現することが可能である。ｘ０は、単位ベクトルであるため、以下に示す式２０を満たす場合にのみ、式２１が成り立つ。
【０１７３】
【数３２】
2017056366.tif 000034
【０１７４】
行列Ｙを用いると、これらの条件は、以下に示す式２２のように表現される。
【０１７５】
【数３３】
2017056366.tif 000035
【０１７６】
以上のことから、最適化部３７は、以下の式２３で示すＳＤＰ問題を生成できる。この問題は、上述する式１６に示す問題と等価であり、上述する式１０の緩和である。したがって、式２３の最適値は、上述する式１０の最適値の上界になる。
【０１７７】
【数３４】
2017056366.tif 000036
【０１７８】
次に、式２３に示す問題の最適解が与えられたときに、その最適解を式１０に示す問題のＺに変換する方法を説明する。以下ではこの変換操作を丸めと呼ぶ。ここで、ＳＤＰ緩和により導出された最適解をチルダＹとする。
【０１７９】
上述する式１６の導出において、“１”がベクトルｘ０に置き換えられ、ｔｉ（ｉ＝１，…，ＫＭ）がベクトルｘｉに置き換えられた。したがって、ＺとＹとの間には、以下の式２４で示す関係が存在する。
【０１８０】
【数３５】
2017056366.tif 000037
【０１８１】
そのため、チルダｙ０ｉが他のチルダｙ０ｊを超えるようなｉについてＺｉを１に固定するのは適当であると言える。以上のことを前提に、最適化部３７がＳＤＰ緩和により上述する式１０で示されるＢＱＰを解く動作を説明する。
【０１８２】
図７は、最適化部３７がＳＤＰ緩和によりＢＱＰを解く動作例を示すフローチャートである。図７に例示する動作例（アルゴリズム）は、丸めを１度行うものである。
【０１８３】
最適化部３７は、上述する式１０で示されるＢＱＰをＳＤＰ緩和した式２３に示す問題に変換し（ステップＳ２１）、最適解をチルダＹとする。最適化部３７は、以下に示す式２５を満たす値（以下、チルダｋと記す。）を探索する（ステップＳ２２）。ただし、チルダｋは、｛１，…，Ｋ｝の要素である。
【０１８４】
【数３６】
2017056366.tif 000038
【０１８５】
最適化部３７は、ＺＫｍ＋チルダｋが１になるように（それ以外は０になるように）設定する（ステップＳ２３）。
【０１８６】
図８は、最適化部３７がＳＤＰ緩和によりＢＱＰを解く他の動作例を示すフローチャートである。図８に例示する動作例（アルゴリズム）は、丸めを反復して行うものである。
【０１８７】
最適化部３７は、まず、インデックスの集合Ｕ＝｛１，…，Ｍ｝を初期化する（ステップＳ３１）。最適化部３７は、Ｕに含まれる各インデックスについて、以下の処理を繰り返す（ステップＳ３２〜ステップＳ３６）。
【０１８８】
まず、最適化部３７は、Ｚを部分的に固定して、上述する式１０に示す問題を式２３に示す問題（すなわち、ＳＤＰ）に構築する（ステップＳ３２）。最適化部３７は、式２３に示す問題を解き、最適解をチルダＹとする（ステップＳ３３）。最適化部３７は、以下に示す式２６を満たすチルダｍおよびチルダｋを探索する（ステップＳ３４）。そして、最適化部３７は、以下の式２７に基づいてＺを部分的に固定する（ステップＳ３５）。
【０１８９】
【数３７】
2017056366.tif 000039
【０１９０】
最適化部３７は、以下に示すようにＵを更新する（ステップＳ３６）。
【０１９１】
【数３８】
2017056366.tif 000040
【０１９２】
最適化部３７は、図７または図８に例示するアルゴリズムを上述する式１０で示す問題に適用することで、以下の３つを取得する。１つ目は、計算された（ほぼ正確な）式１０で示す問題の解である。２つ目は、計算された（ほぼ正確な）式１０で示す問題の最適値である。３つ目は、式２３で示す問題の最適値である。このことから、以下の式２８に示す不等式が得られる。
【０１９３】
０  ＜  計算された式１０の最適値  ≦  式１０の最適値  ≦  式２３の最適値
・・・（式２８）
【０１９４】
したがって、計算された解は、以下の式２９を満たすことが保証される。
【０１９５】
計算された解の近似率＝計算された式１０の最適値／式１０の最適値
≧計算された式１０の最適値／式２３の最適値・・・（式２９）
【０１９６】
この不等式によって、計算された解の質を評価でき、また、分枝限定法などの、より高度なアルゴリズムを導出できる。
【０１９７】
なお、最適化部３７は、ユーザによって定義されたパラメータに基づいて網羅的に解の探索を行ってもよい。図９は、最適化部３７がＳＤＰ緩和によりＢＱＰを解くさらに他の動作例を示すフローチャートである。
【０１９８】
図９に例示する動作例（アルゴリズム）では、最適解に近い少なくともＴの解を列挙する。なお、Ｔは、ユーザによって定義されるパラメータである。
【０１９９】
最適化部３７は、上述する式１０で示されるＢＱＰをＳＤＰ緩和した式２３に示す問題に変換し（ステップＳ４１）、最適解をチルダＹとする。最適化部３７は、以下に示す式３０を満たす値（チルダｋ）を探索する（ステップＳ４２）。また、最適化部３７は、インデックスの集合Ｃｍを以下に示す式３１のように初期化する（ステップＳ４３）。
【０２００】
【数３９】
2017056366.tif 000041
【０２０１】
最適化部３７は、以下に示す式３２を満たす間、以下の処理を繰り返す（ステップＳ４４〜ステップＳ４５）。
【０２０２】
【数４０】
2017056366.tif 000042
【０２０３】
最適化部３７は、以下に示す式３３を満たす２つの値（チルダｍ、チルダｋ）を探索する（ステップＳ４４）。ただし、チルダｍは、｛１，…，Ｍ｝の要素であり、チルダｋは、｛１，…，Ｋ｝の要素である。
【０２０４】
【数４１】
2017056366.tif 000043
【０２０５】
さらに、最適化部３７は、チルダｋを集合Ｃチルダｍに追加する（ステップＳ４５）。具体的には、以下の式３４で表される。
【０２０６】
【数４２】
2017056366.tif 000044
【０２０７】
最適化部３７は、ＤをＺの集合とする（ステップＳ４６）。ここで、Ｚは、以下の形式で示される。この場合、Ｄは、以下に示す式３５を満たす。
【０２０８】
【数４３】
2017056366.tif 000045
【０２０９】
最適化部３７は、全てのＺについて目的関数の値を算出し（ステップＳ４７）、算出した値でＤの要素を並べ替える（ステップＳ４８）。
【０２１０】
図９に例示するアルゴリズムは、ＳＤＰ緩和と網羅的探索とを組み合わせたものである。最適化部３７が図９に例示するアルゴリズムを用いて最適化を行うことにより、ＳＤＰの解を使って網羅的探索の範囲を制限することが可能になる。
【０２１１】
以上のように、本実施形態では、ＢＱＰ問題で表される計画を最適化する最適化システムについて説明した。具体的には、最適化部３７が、ＢＱＰ問題をＳＤＰ問題に緩和して、そのＳＤＰ問題の解を導出する。したがって、一般に知られたＢＱＰの解法と比較して、非常に高速に最適解を導出することができる。
【０２１２】
具体的には、コンピュータを使用して本実施形態の方法を用いた実験の結果、一般的な方法ではＢＰＱの最適解を求めるのに数時間要していた処理が、１秒程度にまで速度を上げることができた。
【０２１３】
また、本実施形態では、上述する式１０にように定式化されたＢＱＰを例示して最適化部３７の動作を説明した。ただし、ＢＱＰは、以下に例示する式３６のようにも定式化できる。
【０２１４】
【数４４】
2017056366.tif 000046
【０２１５】
上述する式１３の式によりＡを定義する。この場合、式３６で示す問題は、以下に例示する式３７の問題と等価になる。また、式３７に示す問題を緩和したものを以下の式３８に示す。
【０２１６】
【数４５】
2017056366.tif 000047
【０２１７】
式３８で示す問題は、以下に例示する式３９のように等式および不等式を含む標準的な形式に書き換えることが可能である。なお、Ｂ４ｕ、Ｂ５ｕおよびＢ６ｕは、以下に示す式４０で定義される。また、Ｓｙｍｎ＋１の要素であるＢ１ｉ、Ｂ２ｓおよびＢ３ｓは、以下に示す式４１で定義される。
【０２１８】
【数４６】
2017056366.tif 000048
【０２１９】
一方、上述する式３９で示す問題は、以下に例示する式４２のように等式で表される標準的な形式に書き換えることが可能である。なお、Ａ´、Ｂ´１ｉ、Ｂ´２ｓ、Ｂ´３ｓ、Ｂ´４ｕ、Ｂ´５ｕ、Ｂ´６ｖは、以下に示す式４３で定義される。また、ＳｙｍＶの要素であるＫｖは、以下に示す式４４で与えられる。
【０２２０】
【数４７】
2017056366.tif 000049
【０２２１】
次に、上述する式３６で示す問題の双対問題を説明する。式３６で示す問題の双対問題は、以下の式４５で示される。
【０２２２】
【数４８】
2017056366.tif 000050
【０２２３】
式４５において、ｆｊは、上述する式４２の制約の右辺で与えられる。また、ｘｊは変数である。
【０２２４】
一方、式３６において許容解Ｚが与えられると、式４２における許容解を、以下に例示する式４６で表すことができる。
【０２２５】
【数４９】
2017056366.tif 000051
【０２２６】
また、式４５で示す双対問題の許容解は、以下に例示する式４７で与えられる。
【０２２７】
【数５０】
2017056366.tif 000052
【０２２８】
したがって、最適化部３７は、上述する式４６および式４７を、上述する式４２で示す問題の初期解として利用することが可能になる。
【０２２９】
以上に示す内容を纏めると、最適化部３７は、以下の式４８に示すＢＱＰ問題を以下の式４９に示すＳＤＰ問題に緩和する。すなわち、最適化部３７は、式４８に示すように、１−ｏｆ−Ｋ制約（ｏｎｅ−ｈｏｔ制約）、線形等式制約、および、線形不等式制約つきのＢＱＰ問題をＳＤＰ問題に緩和する。そして、最適化部３７は、式４９に示す問題から導出される解を、式４８に示す問題の解に変換することで、式４８に示す問題の最適解を導出する。
【０２３０】
【数５１】
2017056366.tif 000053
【０２３１】
式４８において、Ｓは、１−ｏｆ−Ｋ制約（ｏｎｅ−ｈｏｔ制約）の個数、Ｕは、線形等式制約の個数、Ｖは、線形不等式制約の個数を表わす。また、式４８における入力のうち、ａおよびｃがそれぞれｎ次元ベクトルを表わし、ｂおよびｄがスカラ値を表わす。また、式４９において、ベクトルａｕ＝（ａｕ，１，ａｕ，２，．．．，ａｕ，ｎ）Ｔであり、ベクトルｃｕ＝（ｃｕ，１，ｃｕ，２，．．．，ｃｕ，ｎ）Ｔである。なお、上付きＴは転置を示す。
【０２３２】
次に、本発明の概要を説明する。図１０は、本発明による最適化システムの概要を示すブロック図である。本発明による最適化システムは、二値二次計画問題で表される計画を最適化する最適化システムであって、二値二次計画問題を半正定計画問題に緩和して、その半正定計画問題の解を導出する最適化部８８（例えば、最適化部３７）を備えている。
【０２３３】
そのような構成により、最適化に用いられる予測モデルが非線形な基底関数に基づく場合であっても、高速かつ高精度に数理最適化の解を求めることができる。
【０２３４】
具体的には、最適化部８８は、導出された半正定計画問題の解を二値二次計画問題の解に変換することで最適解を導出する。その際、最適化部８８は、二値変数を多次元単位球面上の変数に拡張して半正定計画問題への緩和を行う。
【０２３５】
その際、最適化部８８は、上記の式４８で表される１−ｏｆ−Ｋ制約、線形等式制約、および、線形不等式制約つきの二値二次計画問題を、上記の式４９で表される半正定値問題に緩和し、前記半正定値問題の解を前記二値二次計画問題の解に変換することで、当該二値二次計画問題の最適解を導出してもよい。
【０２３６】
また、本発明は、数理計画問題を解くという処理と予測モデルを生成するという処理を、大量のデータ高速に短時間で処理するプロセッサ（コンピュータ）の能力により実現している。したがって、本発明は、単純な数学的処理にとどまらず、数理計画問題を応用して、大量のデータから予測結果および最適化結果を高速に得るために、コンピュータを駆使したものである。
【０２３７】
図１１は、少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。コンピュータ１０００は、ＣＰＵ１００１、主記憶装置１００２、補助記憶装置１００３、インタフェース１００４を備える。
【０２３８】
上述の学習器２０や最適化装置３０は、それぞれコンピュータ１０００に実装される。なお、学習器２０が実装されたコンピュータ１０００と最適化装置３０が実装されたコンピュータ１０００は異なるものであって良い。そして、上述した各処理部の動作は、プログラム（情報処理用プログラム、または、最適化プログラム）の形式で補助記憶装置１００３に記憶されている。ＣＰＵ１００１は、プログラムを補助記憶装置１００３から読み出して主記憶装置１００２に展開し、当該プログラムに従って上記処理を実行する。また、上述の学習器２０や最適化装置３０は、それぞれが電気回路構成（circuitry ）により実現されていてもよい。ここで、電気回路構成（circuitry ）とは、単一のデバイス（single device ）、複数のデバイス（multiple devices）、チップセット（chipset ）またはクラウド（cloud ）を概念的に含む文言である。
【０２３９】
なお、少なくとも１つの実施形態において、補助記憶装置１００３は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インタフェース１００４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ１０００に配信される場合、配信を受けたコンピュータ１０００が当該プログラムを主記憶装置１００２に展開し、上記処理を実行しても良い。
【０２４０】
また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置１００３に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０２４１】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２４２】
この出願は、２０１５年９月３０日に出願された米国仮出願第６２／２３５，０５１号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０２４３】
１０  訓練データ記憶部
２０  学習器
３０  最適化装置
３１  予測モデル入力部
３２  外的情報入力部
３３  記憶部
３４  問題記憶部
３５  制約条件入力部
３６  候補点入力部
３７  最適化部
３８  出力部
３９  目的関数生成部
【図１】
2017056366.tif 000056
【図２】
2017056366.tif 000057
【図３】
2017056366.tif 000058
【図４】
2017056366.tif 000059
【図５】
2017056366.tif 000060
【図６】
2017056366.tif 000061
【図７】
2017056366.tif 000062
【図８】
2017056366.tif 000063
【図９】
2017056366.tif 000064
【図１０】
2017056366.tif 000065
【図１１】
2017056366.tif 000066
【国際調査報告】
2017056366.tif 000067
2017056366.tif 000068