(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024080173
(43)【公開日】2024-06-13
(54)【発明の名称】情報処理装置、情報処理方法、およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240606BHJP
G06Q 10/04 20230101ALI20240606BHJP
G06F 17/10 20060101ALI20240606BHJP
【FI】
G06N99/00 180
G06Q10/04
G06F17/10 Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022193133
(22)【出願日】2022-12-01
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】110000338
【氏名又は名称】弁理士法人 HARAKENZO WORLD PATENT & TRADEMARK
(72)【発明者】
【氏名】窪田 大
(72)【発明者】
【氏名】井手口 裕太
(72)【発明者】
【氏名】鷹野 芙美代
(72)【発明者】
【氏名】土井 龍太郎
(72)【発明者】
【氏名】井上 浩明
(72)【発明者】
【氏名】西村 考弘
【テーマコード(参考)】
5B056
5L010
5L049
【Fターム(参考)】
5B056AA04
5B056BB91
5L010AA04
5L049AA04
(57)【要約】
【課題】最適化問題を表す数理モデルの構築を高速化する技術を提供する。
【解決手段】情報処理装置1は、入力された制約条件を複数のグループに分割する分割部(11)と、制約条件を所定のフォーマットに変換する変換処理を実行する変換部(12)と、所定のフォーマットで表現された制約条件を統合する統合部(13)と、を備え、変換部(12)は、1つのグループに属する制約条件に対する変換処理を1つのプロセスとし、複数のグループの各々に対応するプロセスを並列的に実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
入力された複数の制約条件を複数のグループに分割する分割手段と、
前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換手段と、
前記所定のフォーマットで表現された前記複数の制約条件を統合する統合手段と、を備え、
前記変換手段は、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する、
情報処理装置。
【請求項2】
前記変換手段が前記複数の制約条件の各々に対する前記変換処理を実行するのに要する処理時間を予測する予測手段、
をさらに備える請求項1に記載の情報処理装置。
【請求項3】
前記分割手段は、前記予測手段によって予測された処理時間を参照し、前記変換手段が前記複数の制約条件の全てに対する前記変換処理を実行するに要する処理時間を最小化するように、前記複数の制約条件を前記複数のグループに分割する、
請求項2に記載の情報処理装置。
【請求項4】
前記予測手段は、前記複数の制約条件を機械学習により生成された予測モデルを用いて、前記変換手段が各制約条件に対する前記変換処理を実行するのに要する処理時間を予測する、
請求項3に記載の情報処理装置。
【請求項5】
前記予測手段は、ルールベースのアルゴリズムを用いて、前記変換手段が各制約条件に対する前記変換処理を実行するのに要する処理時間を予測する、
請求項3に記載の情報処理装置。
【請求項6】
前記分割手段は、並列的に実行される複数のプロセスの各々における変換処理の回数の差が最小となるように、前記複数の制約条件を前記複数のグループに分割する、
請求項1に記載の情報処理装置。
【請求項7】
前記複数の制約条件は、線形計画問題、整数線形計画問題、又は混合整数線形化問題に対する制約条件であり、
前記所定のフォーマットは、LP(Linear Plan)フォーマット又はMPS(Mathematical Programming System)フォーマットである、
請求項1に記載の情報処理装置。
【請求項8】
前記複数の制約条件は、2次バイナリ最適化問題に対する制約条件であり、
前記所定のフォーマットは、各制約条件を、その制約条件を表すペナルティ項に含まれる係数により表現するフォーマットである、
請求項1に記載の情報処理装置。
【請求項9】
情報処理装置が
入力された複数の制約条件を複数のグループに分割することと、
前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行することと、
前記所定のフォーマットで表現された前記複数の制約条件を統合することと、を含み、
前記実行することにおいて、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する、
情報処理方法。
【請求項10】
コンピュータを情報処理装置として機能させるプログラムであって、
前記コンピュータを、
入力された複数の制約条件を複数のグループに分割する分割手段と、
前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換手段と、
前記所定のフォーマットで表現された前記複数の制約条件を統合する統合手段と、として機能させ、
前記変換手段は、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化問題に課される制約条件を所定のフォーマットに変換する処理を行う情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【0002】
最適解の探索範囲を定義する制約条件の下において、最適化の対象となる目的関数を最小化または最大化する最適化問題を表す数理モデルに関して、高速に処理する技術が求められている。
【0003】
特許文献1には、最適化問題の解の候補である個体を、複数のプロセッサ間において個体交換が可能かどうかを判断し、個体交換が可能と判断されたとき、プロセッサ間で個体交換を行う遺伝的アルゴリズム並列処理装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
最適化問題を表す数理モデルを構築する場合、ユーザにより入力された複数の制約条件が用いられる。最適化問題を表す数理モデルを構築する場合、これらの制約条件を数理モデルへの組み込みに適したフォーマットに変換する必要があるため、数理モデルの構築に時間が掛かってしまうという問題がある。そのため、数理モデルの構築の高速化も求められている。しかしながら、上述の特許文献1には、数理モデルの構築を高速化する技術については言及されていない。
【0006】
本発明の一態様は、上記の問題に鑑みてなされたものであり、その目的の一例は、最適化問題を表す数理モデルの構築を高速化する技術を提供することである。
【課題を解決するための手段】
【0007】
本発明の一態様に係る情報処理装置は、複数の制約条件を複数のグループに分割する分割手段と、前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換手段と、前記所定のフォーマットで表現された前記複数の制約条件を統合する統合手段と、を備え、前記変換手段は、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する。
【0008】
本発明の一態様に係る情報処理方法は、情報処理装置が、入力された複数の制約条件を複数のグループに分割することと、前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行することと、前記所定のフォーマットで表現された前記複数の制約条件を統合することと、を含み、前記実行することにおいて、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する。
【0009】
本発明の一態様に係るプログラムは、コンピュータを情報処理装置として機能させるプログラムであって、前記コンピュータを、入力された複数の制約条件を複数のグループに分割する分割手段と、前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換手段と、前記所定のフォーマットで表現された前記複数の制約条件を統合する統合手段と、として機能させ、前記変換手段は、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する。
【発明の効果】
【0010】
本発明の一態様によれば、最適化問題を表す数理モデルの構築を高速化することができる。
【図面の簡単な説明】
【0011】
【
図1】本発明の例示的実施形態1に係る情報処理装置の構成を示すブロック図である。
【
図2】本発明の例示的実施形態1に係る情報処理方法の流れを示すフロー図である。
【
図3】本発明の例示的実施形態2に係る情報処理装置の構成を示すブロック図である。
【
図4】本発明の例示的実施形態2に係る情報処理方法の流れを示すフロー図である。
【
図5】本発明の例示的実施形態2におけるステップS22~ステップS26の処理の一例を示すフロー図である。
【
図6】本発明の例示的実施形態2に係る分割部が入力された複数の制約条件を複数のグループに分割する処理の一例を示す図である。
【
図7】本発明の例示的実施形態2に係る分割部が入力された複数の制約条件を複数のグループに分割する処理の他の例を示す図である。
【
図8】本発明の例示的実施形態2に係る変換部および集約部による処理の一例を示す図である。
【
図9】本発明の例示的実施形態2に係る変換部および集約部による処理の他の例を示す図である。
【
図10】本発明の各例示的実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【0012】
〔例示的実施形態1〕
本発明の第1の例示的実施形態について、図面を参照して詳細に説明する。本例示的実施形態は、後述する例示的実施形態の基本となる形態である。
【0013】
(情報処理装置1の構成)
本例示的実施形態に係る情報処理装置1は、複数の制約条件の各々を所定のフォーマットに変換する。そして、情報処理装置1は、所定のフォーマットで表現された複数の制約条件を統合する装置である。所定のフォーマットとは、最適化問題を表す数理モデルへの組み込みに適したフォーマットである。
【0014】
なお、以下本実施形態では、ユーザが複数の制約条件を入力する場合を説明する。しかし制約条件を入力する方法はこれに限定されない。例えば、情報処理装置1は、API(Application Programming Interface)を通じて、異なるシステムから複数の制約条件の入力を受け付けてもよい。
【0015】
本例示的実施形態に係る情報処理装置1の構成について、
図1を参照して説明する。
図1は、本例示的実施形態に係る情報処理装置1の構成を示すブロック図である。
【0016】
情報処理装置1は、
図1に示すように、分割部11、変換部12、および統合部13を備えている。分割部11、変換部12、および統合部13は、本例示的実施形態において、それぞれ分割手段、変換手段、および集約手段を実現する構成である。
【0017】
分割部11は、ユーザにより入力された複数の制約条件を複数のグループに分割する。グループには、1または複数の制約条件が含まれる。分割部11は、分割した複数のグループを、変換部12に供給する。
【0018】
変換部12は、複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する。また、変換部12は、1つのグループに属する各制約条件に対する変換処理を1つのプロセスとし、複数のグループの各々に対応するプロセスを並列的に実行する。変換部12は、所定のフォーマットに表現された複数の制約条件を統合部13に供給する。
【0019】
統合部13は、所定のフォーマットで表現された複数の制約条件を統合する。
【0020】
以上のように、本例示的実施形態に係る情報処理装置1においては、ユーザにより入力された複数の制約条件を複数のグループに分割する分割部11と、複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換部12と、所定のフォーマットで表現された前記複数の制約条件を統合する統合部13とを備える構成が採用されている。そして、本例示的実施形態に係る情報処理装置1における変換部12は、1つのグループに属する各制約条件に対する変換処理を1つのプロセスとし、複数のグループの各々に対応するプロセスを並列的に実行する。
【0021】
このように、本例示的実施形態に係る情報処理装置1によれば、ユーザにより入力された複数の制約条件を複数のグループに分割し、1つのグループに属する各制約条件に対して、所定のフォーマットに変換する変換処理を1つのプロセスとし、複数のグループの各々に対応するプロセスを並列的に実行する。そのため、複数の制約条件を所定のフォーマットに変換する変換処理を直列的に実行する場合に比べて、変換処理を高速化することができる。そして、所定のフォーマットで表現された複数の制約条件を統合し、統合された複数の制約条件は、数理モデルの構築に用いることができる。したがって、本例示的実施形態に係る情報処理装置1によれば、最適化問題を表す数理モデルの構築を高速化することができるという効果が得られる。
【0022】
(情報処理方法S1の流れ)
本例示的実施形態に係る情報処理方法S1の流れについて、
図2を参照して説明する。
図2は、本例示的実施形態に係る情報処理方法S1の流れを示すフロー図である。
【0023】
(ステップS11)
ステップS11において、分割部11は、ユーザにより入力された複数の制約条件を複数のグループに分割する。分割部11は、分割した複数のグループを、変換部12に供給する。
【0024】
(ステップS12)
ステップS12において、変換部12は、複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する。また、ステップS12において、変換部12は、1つのグループに属する各制約条件に対する変換処理を1つのプロセスとし、複数のグループの各々に対応するプロセスを並列的に実行する。変換部12は、所定のフォーマットに表現された複数の制約条件を統合部13に供給する。
【0025】
(ステップS13)
ステップS13において、統合部13は、所定のフォーマットで表現された前記複数の制約条件を統合する。
【0026】
以上のように、本例示的実施形態に係る情報処理方法S1においては、分割部11が、ユーザにより入力された複数の制約条件を複数のグループに分割するステップS11と、変換部12が、複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行するステップS12と、統合部13が、所定のフォーマットで表現された複数の制約条件を統合するステップS13とを含む構成が採用されている。また、ステップS12において、変換部12は、1つのグループに属する各制約条件に対する変換処理を1つのプロセスとし、複数のグループの各々に対応するプロセスを並列的に実行する。このため、本例示的実施形態に係る情報処理方法S1によれば、上述した情報処理装置1と同等の効果が得られる。
【0027】
〔例示的実施形態2〕
本発明の第2の例示的実施形態について、図面を参照して詳細に説明する。なお、例示的実施形態1にて説明した構成要素と同じ機能を有する構成要素については、同じ符号を付し、その説明を適宜省略する。
【0028】
(情報処理装置2の概要)
本例示的実施形態に係る情報処理装置1は、入力された複数の制約条件の各々を所定のフォーマットに変換する。そして、情報処理装置1は、所定のフォーマットで表現された複数の制約条件を統合する装置である。
【0029】
なお、以下本実施形態においても、ユーザが複数の制約条件を入力する場合を説明する。しかし制約条件を入力する方法はこれに限定されない。例えば、情報処理装置2は、APIを通じて、異なるシステムから複数の制約条件の入力を受け付けてもよい。
【0030】
最適化問題について、本例示的実施形態における複数の制約条件の例として、線形計画問題、整数線形計画問題、混合整数線形計画問題、および2次バイナリ最適化問題(QUBO: Quadratic Unconstrained Binary Optimization)が挙げられる。
【0031】
線形計画問題とは、与えられた関数f(x1, x2,・・・, xn)を最大化する連続整数x1, x2,・・・, xnを特定する問題である。
【0032】
整数線形計画問題とは、与えられた関数f(x1, x2,・・・, xn)を最大化する整数変数(離散変数)x1, x2,・・・, xnを特定する問題である。
【0033】
混合整数線形計画問題とは、与えられた関数f(x1, x2,・・・, xn)を最大化する連続変数および整数変数が混在するx1, x2,・・・, xnを特定する問題である。
【0034】
QUBOとは、以下の式(1)におけるJを最小化するx1, x2,・・・, xnを特定する問題である。
【0035】
【0036】
また、制約条件付きの線形計画問題、整数線形計画問題、および混合整数線形計画問題を表す数理モデルへの組み込みに適したフォーマットとして、LP(Linear Plan)フォーマットおよびMPS(Mathematical Programming System)フォーマットが挙げられる。
【0037】
また、QUBOを表す数理モデルへの組み込みに適したフォーマットとして、各制約条件を、その制約条件を表すペナルティ項に含まれる係数により表現するフォーマットが挙げられる。
【0038】
(情報処理装置2の構成)
本例示的実施形態に係る情報処理装置2の構成について、
図3を参照して説明する。
図3は、本例示的実施形態に係る情報処理装置2の構成を示すブロック図である。情報処理装置2は、
図3に示すように、制御部21、通信部22、および記憶部23を備えている。
【0039】
通信部22は、データを送受信するインターフェースである。通信部22が受信するデータの一例として、第1のフォーマットで表現された制約条件、および当該制約条件を含んで記述された最適化のプログラムが挙げられる。通信部22が送信するデータの一例として、変換処理後の統合された制約条件が挙げられる。また、通信部22がデータを送信する装置として、最適化問題ソルバーが挙げられ、情報処理装置2は通信部22を介して、所定のフォーマットで表現された複数の制約条件を最適化問題ソルバーに送信する。
【0040】
また、情報処理装置2は、通信部22に替えて、または通信部22に加えて、データの入力を受け付けるインターフェースであるデータ入力部、およびデータを出力するインターフェースであるデータ出力部を備える構成であってもよい。
【0041】
記憶部23には、制御部21が参照するデータが格納される。記憶部23に格納されるデータの一例として、ユーザにより入力された複数の制約条件、1または複数の制約条件を含むグループ、所定のフォーマットで表現された複数の制約条件、制約条件に関連付けられた予測処理時間(予測処理時間の詳細は後述する)、および統合された制約条件が挙げられる。
【0042】
(制御部21の機能)
制御部21は、情報処理装置2が備える各構成要素を制御する。
【0043】
また、制御部21は、
図3に示すように、分割部11、変換部12、統合部13、取得部14、予測部15、および出力部16を備えている。分割部11、変換部12、統合部13、および予測部15は、本例示的実施形態において、それぞれ分割手段、変換手段、統合手段、および予測手段を実現する構成である。
【0044】
また、制御部21は、
図3には図示しない、最適化問題ソルバーを備えていてもよい。この場合、制御部21では、所定のフォーマットで表現された複数の制約条件を制御部21が備える最適化問題ソルバーに供給する。
【0045】
分割部11は、ユーザにより入力された複数の制約条件を複数のグループに分割する。一例として、分割部11は、記憶部23に格納されている、ユーザにより入力された複数の制約条件を取得し、取得した複数の制約条件を複数のグループに分割する。グループには、1または複数の制約条件が含まれる。分割部11は、分割した複数のグループを、記憶部23に格納する。分割部11が複数の制約条件を複数のグループに分割する処理の例については、後述する。
【0046】
変換部12は、複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する。また、変換部12は、1つのグループに属する各制約条件に対する変換処理を1つのプロセスとし、複数のグループの各々に対応するプロセスを並列的に実行する。変換部12は、変換処理後の、所定のフォーマットで表現された複数の制約条件を記憶部23に格納する。
【0047】
統合部13は、所定のフォーマットで表現された複数の制約条件を統合する。一例として、統合部13は、記憶部23に格納されている、所定のフォーマットで表現された複数の制約条件を統合する。統合部13は、統合した制約条件を記憶部23に格納する。統合部13が所定のフォーマットで表現された複数の制約条件を統合する処理の例については、後述する。
【0048】
取得部14は、ユーザにより入力された複数の制約条件を取得する。取得部14が複数の制約条件を取得する構成の一例として、通信部22を介してユーザにより入力された複数の制約条件を取得する構成が挙げられる。取得部14が複数の制約条件を取得する構成の他の例として、通信部22を介して複数の制約条件を含んで記述された最適化のプログラムを取得し、当該プログラムから複数の制約条件を抽出することによって、ユーザにより入力された複数の制約条件を取得する構成が挙げられる。取得部14は、取得した複数の制約条件を記憶部23に格納する。
【0049】
予測部15は、変換部12が複数の制約条件の各々に対する変換処理を実行するのに要する処理時間を予測する。予測部15は、予測した予測処理時間を、制約条件に関連付けて記憶部23に格納する。
【0050】
予測部15が処理時間を予測する方法の一例として、複数の制約条件を機械学習により生成された予測モデルを用いて、変換部12が各制約条件に対する変換処理を実行するのに要する処理時間を予測する方法が挙げられる。
【0051】
予測モデルとは、説明変数と目的変数の関係を表す情報である。予測モデルは例えば、説明変数に基づいて目的とする変数を算出することにより推定対象の結果を推定するためのコンポーネントである。予測モデルは、「学習モデル」、「分析モデル」、「AIモデル」、「学習済みモデル」、「推論モデル」、または「予測式」などと記載されることもある。
【0052】
また、予測モデルを生成するための学習アルゴリズムは特に限定されず、既存の学習アルゴリズムでよい。例えば、学習アルゴリズムは、ランダムフォレスト、サポートベクターマシン、ナイーブベイズ、ニューラルネットワークであってよい。
【0053】
予測部15が処理時間を予測する方法の他の例として、ルールベースのアルゴリズムを用いて、変換部12が各制約条件に対する変換処理を実行するのに要する処理時間を予測する方法が挙げられる。当該構成の一例について説明する。
【0054】
例えば、LPフォーマットにおける制約条件(文字列)は、制約条件式においてノンゼロ(0ではない)の係数を持つ項の数だけ記述される。例えば、変数x1~変数x10がある状況において制約条件が「x1+x2=1」の場合、変数x1および変数x2の係数だけがノンゼロの値1を持っており、それ以外の変数x3~変数x10の係数は0(ノンゼロの係数をもつものではない)である。このことから、入力された制約条件の変換処理の処理時間は、制約条件におけるノンゼロの係数の数に比例すると言える。
【0055】
そこで、予測部15はまず、1つの係数を持つ制約条件を、所定のフォーマットに変換する変換処理の処理時間Tを予め計測する。そして、予測部15は、計測した処理時間Tと、制約条件とをルールベースのアルゴリズムに入力する。ルールベースのアルゴリズムでは、制約条件におけるノンゼロの係数の数が計測され、「(制約条件におけるノンゼロ係数の数)×T」が算出される。予測部15は、ルールベースのアルゴリズムによって算出された「(制約条件におけるノンゼロ係数の数)×T」を、予測処理時間とする。
【0056】
出力部16は、情報を出力する。一例として、出力部16は、記憶部23に格納されている統合された制約条件を、通信部22を介して他の装置に出力する。
【0057】
(情報処理方法S2の流れ)
本例示的実施形態に係る情報処理方法S2の流れについて、
図4を参照して説明する。
図4は、本例示的実施形態に係る情報処理方法S2の流れを示すフロー図である。
【0058】
(ステップS21)
ステップS21において、取得部14は、ユーザにより入力された複数の制約条件を取得する。取得部14は、取得した複数の制約条件を記憶部23に格納する。
【0059】
(ステップS22)
ステップS22において、予測部15は、記憶部23に格納されている複数の制約条件の各々に対する変換処理を実行するのに要する処理時間を予測する。予測部15は、予測した予測処理時間を、制約条件に関連付けて記憶部23に格納する。
【0060】
(ステップS23)
ステップS23において、分割部11は、記憶部23に格納されている、ユーザにより入力された複数の制約条件を取得する。そして、分割部11は、取得した複数の制約条件を複数のグループに分割する。分割部11は、分割した複数のグループを、記憶部23に格納する。
【0061】
(ステップS24)
ステップS24において、変換部12は、記憶部23に格納された複数のグループの各々に対応するプロセスを並列的に実行する。変換部12は、所定のフォーマットで表現された複数の制約条件を記憶部23に格納する。
【0062】
(ステップS25)
ステップS25において、統合部13は、記憶部23に格納されている、所定のフォーマットで表現された複数の制約条件を統合する。統合部13は、統合された制約条件を記憶部23に格納する。
【0063】
(ステップS26)
ステップS26において、記憶部23に格納された、統合された制約条件を、通信部22を介して他の装置に出力する。
【0064】
(ステップS22~ステップS26の処理の一例)
ステップS22~ステップS26の処理の一例について、
図5を参照して説明する。
図5は、本例示的実施形態におけるステップS22~ステップS26の処理の一例(情報処理方法S3)を示すフロー図である。
図5では、所定のフォーマットがLPフォーマットである場合を例に挙げて説明する。
【0065】
(ステップS32)
ステップS32(ステップS22に対応)において、予測部15は、記憶部23に格納されている複数の制約条件1~制約条件Nそれぞれに対する変換処理を実行するのに要する予測処理時間t1~tNを予測する。予測部15は、予測した予測処理時間t1~tNを、制約条件1~制約条件Nそれぞれに関連付けて記憶部23に格納する。
【0066】
(ステップS33)
ステップS33(ステップS23に対応)において、分割部11は、記憶部23に格納されている複数の制約条件1~制約条件Nを取得する。そして、分割部11は、各プロセスへ割り当てる制約条件を示すインデックス集合Am(m=1,・・・M)を生成する。例えば、分割部11は、プロセス1へ制約条件1および制約条件2を含むグループGP1を割り当てる場合、グループGP1に制約条件1および制約条件2が含まれることを示すインデックスA1を生成する。分割部11は、生成したインデックス集合Amを記憶部23に格納する。
【0067】
(ステップS34)
ステップS34(ステップS24に対応)において、変換部12は、記憶部23に格納された複数のグループの各々に対応するプロセス1(ステップS341_1およびステップS342_1)~プロセスM(ステップS341_MおよびステップS342_M)を並列的に実行する。
【0068】
(ステップS341_1)
例えば、ステップS341_1では、変換部12は、記憶部23に格納されているインデックス集合Amから、インデックスA1を取得する。インデックスA1は、プロセス1では制約条件1および制約条件2を含むグループGP1が割り当てられたことを示すので、変換部12は、制約条件1および制約条件2のLPフォーマットにおける各変数の係数を算出する。変換部12が制約条件のLPフォーマットにおける各変数の係数を算出する構成については、後述する。
【0069】
(ステップS342_1)
ステップS342_1では、変換部12は、インデックスA1が示す制約条件1および制約条件2をそれぞれLPフォーマットで表現した制約条件パラメータ情報c1を生成する。
【0070】
同様に、変換部12はプロセス2~プロセスMを並列的に実行し、制約条件パラメータ情報c2~cMを生成する。そして、変換部12は、生成した制約条件パラメータ情報c1~cMを記憶部23に格納する。
【0071】
(ステップS35)
ステップS35(ステップS25に対応)において、統合部13は、記憶部23に格納された、LPフォーマットで表現された制約条件パラメータ情報c1~cMを取得する。そして、統合部13は、制約条件パラメータ情報c1~cMを含むLPフォーマットのファイルを生成する。
【0072】
(分割部11による処理例1)
分割部11がN個の制約条件をM個のグループに分割した場合(換言すると、N個の制約条件をM個のプロセスにおいて変換処理をした場合)の処理時間は理論上、以下の式(2)で表される。
【0073】
【0074】
Tn:n番目の制約条件の処理時間
Nm:m番目の並列処理に割り当てられた制約条件の数
【0075】
【0076】
Tcom:変換処理後の制約条件を集約するための通信にかかる時間
分割部11は、式(2)の値が最小となるように、複数の制約条件を複数のグループに分割する。
【0077】
一例として、分割部11は、並列的に実行される複数のプロセスの各々における変換処理の回数の差が最小となるように、複数の制約条件を前記複数のグループに分割する。当該構成の例について、
図6を参照して説明する。
図6は、本例示的実施形態に係る分割部11がユーザにより入力された複数の制約条件(制約条件RC1~制約条件RC5)を複数のグループに分割する処理の一例を示す図である。
【0078】
最適化問題の問題クラスが線形計画問題、整数計画問題、または混合整数計画問題の場合、モデル構築API(Application Programming Interface)では、
図6に示すように、1つの制約条件の宣言文はAdd()という関数によって記述される。そのため、分割部11はまず、制約条件が宣言されているAdd()の数(換言すると、ユーザにより入力された制約条件の数)をカウントする。
【0079】
次に、分割部11は、変換部12において並列的に実行される複数のプロセスの各々における変換処理の回数の差が最小となるように、複数の制約条件を複数のグループに分割する。
図6では、プロセスは2つ(プロセス1およびプロセス2)なので、2つのプロセスの各々における変換処理の回数の差が最小となるように、分割部11は、制約条件RC1および制約条件RC2を含むグループGP1と、制約条件RC3、制約条件RC4、および制約条件RC5を含むグループGP2とに分割する。
図6に示すように、制約条件の数がプロセス数で割り切れない場合は、いくつかのプロセスにおいて他のプロセスより制約条件の数が1つ多くなるように、分割部11は制約条件をグループに分割する。
【0080】
このように、分割部11は、並列的に実行される複数のプロセスの各々における変換処理の回数の差が最小となるように、複数の制約条件を前記複数のグループに分割する。そのため、分割部11は、変換部12が複数の制約条件の全てに対する変換処理を実行するに要する処理時間を最小化するように複数の制約条件を複数のグループに分割するので、最適化問題を表す数理モデルの構築を高速化することができる。
【0081】
(分割部11による処理例2)
他の例として、分割部11は、予測部15によって予測された処理時間を参照して、上述した式(2)の値が最小となるように(換言すると、変換部12が複数の制約条件の全てに対する変換処理を実行するに要する処理時間を最小化するように)、複数の制約条件を複数のグループに分割する。当該構成の例について、
図7を参照して説明する。
図7は、本例示的実施形態に係る分割部11がユーザにより入力された複数の制約条件を複数のグループに分割する処理の他の例を示す図である。
図7では、分割部11が、4つの制約条件(制約条件1~制約条件4)を2つのグループに分割する場合について説明する。
【0082】
まず、分割部11は、予測部15によって予測された、制約条件1~制約条件4のそれぞれの変換処理の予測処理時間を取得する。分割部11が取得した制約条件1~制約条件4のそれぞれの予測処理時間が、
図7の上側に示す予測処理時間であった場合について説明する。この場合、分割部11は、式(2)の値が最小なるように、
図7の真ん中に示すように、制約条件1および制約条件3を含むグループGP3と、制約条件2および制約条件4を含むグループGP4とに分割する。そして、グループGP3がプロセス1に割り当てられ、グループGP4がプロセス2に割り当てられ、変換部12によって並列的に実行される。
【0083】
一方で、分割部11が、
図7の下側に示すように、制約条件3および制約条件4を含むグループGP5と、制約条件1および制約条件2を含むグループGP6とに分割した場合についても説明する。この場合、グループGP5が処理されるプロセス1において制約条件3に対する変換処理が終わる前に、グループGP6が処理されるプロセス2の変換処理が終わる。そのため、プロセス1における変換処理が終わるまで、変換部12における変換処理は終わらないため、変換部12による変換処理の時間が、
図7の真ん中に示す場合に比べて長くなる。
【0084】
分割部11が予測処理時間を参照して複数の制約条件を複数のグループに分割する方法の一例として、複数の制約条件および予測処理時間を機械学習により生成された推定アルゴリズムに入力することにより、変換部12が複数の制約条件の全てに対する変換処理を実行するのに要する処理時間を最小化するように、分割部11が複数の制約条件を複数のグループに分割する方法が挙げられる。
【0085】
分割部11が予測処理時間を参照して複数の制約条件を複数のグループに分割する方法の他の例として、複数の制約条件および予測処理時間をルールベースのアルゴリズムに入力することにより、変換部12が複数の制約条件の全てに対する変換処理を実行するのに要する処理時間を最小化するように、分割部11が複数の制約条件を複数のグループに分割する方法が挙げられる。
【0086】
分割部11が予測処理時間を参照して複数の制約条件を複数のグループに分割する方法のさらに他の例として、変換部12が複数の制約条件の全てに対する変換処理を実行するのに要する処理時間を最小化するような最適化問題を作成し、当該最適化問題を解く方法が挙げられる。
【0087】
このように、予測部15は、変換部12が複数の制約条件の各々に対する変換処理を実行するのに要する処理時間を予測する。そして、分割部11は、予測部15によって予測された処理時間を参照し、変換部12が複数の制約条件の全てに対する変換処理を実行するに要する処理時間を最小化するように、複数の制約条件を前記複数のグループに分割する。そのため、制約条件毎に変換処理にかかる時間が大きく異なる場合であっても、分割部11は複数の制約条件の全てに対する変換処理を実行するに要する処理時間を最小化するように複数の制約条件を複数のグループに分割するので、最適化問題を表す数理モデルの構築を高速化することができる。
【0088】
(変換部12および統合部13による処理例1)
変換部12および統合部13による処理の一例について、
図8を参照して説明する。
図8は、本例示的実施形態に係る変換部12および統合部13による処理の一例を示す図である。
図8に示す例は、線形計画問題、整数線形計画問題、または混合整数線形計画問題に課される制約条件に対する、変換部12および統合部13による処理の一例である。また、
図8に示す例では、5つの制約条件を分割部11が5つのグループに分割し、5つのグループのそれぞれを変換部12がプロセス1~プロセス5においてLPフォーマットまたはMPSフォーマットに変換する変換処理を並行して行う。
【0089】
ユーザにより入力された制約条件が、線形計画問題、整数計画問題、または混合整数計画問題に対する制約条件の場合、所定のフォーマットは、LPフォーマットまたはMPSフォーマットである。この場合、変換部12は、各プロセスにおいて制約条件のLPフォーマットにおける各変数の係数を算出し、算出した係数に基づいて生成した文字列の制約条件を示す制約条件パラメータ情報を生成する。具体的には、変換部12はまず、変数を含む項を左辺に移行し、右辺を定数とする。次に、変換部12は、右辺が1になるように、左辺および右辺を変形する。なお、右辺が0の場合は、変換部12は、右辺が1になるように変形する処理を実行しない。
【0090】
例えば、変換部12は、
図8に示すように、プロセス1において、入力された制約条件「Add(x
1+x
2≧1)」から、LPフォーマットにおける各変数x
1およびx
2の係数1を算出する。そして、変換部12は、文字列「x
1+x
2≧1」に変換した制約条件パラメータ情報を生成する。変換部12は、プロセス2~プロセス5においても同様に、
図8に示すように、制約条件パラメータ情報を生成する。変換部12は、各プロセスにおいて生成した制約条件パラメータ情報を、統合部13に供給する。
【0091】
他の例として、変換部12は、入力された制約条件「Add(x1≧2-2x2)」の場合、LPフォーマットにおける各変数x1の係数0.5およびx2の係数1を算出する。そして、変換部12は、文字列「0.5x1+x2≧1」に変換した制約条件パラメータ情報を生成する。
【0092】
さらに他の例として、変換部12は、入力された制約条件「Add(0≦x1≦5)」の場合、LPフォーマットにおける変数x1の係数1および係数0.2を算出する。そして、変換部12は、文字列「x1≧0」および文字列「0.2x1≦1」に変換した制約条件パラメータ情報を生成する。
【0093】
統合部13は、LPフォーマットで表現された制約条件パラメータ情報を参照し、各制約条件の文字列を各行に含むファイルを生成する。さらに、統合部13は、フォーマットにおいて必要な項目の文字列を生成し、数理モデルへの組み込みに適したLPフォーマットの制約条件を生成する。例えば、統合部13は、LPフォーマットの情報を生成する場合、必要な項目として、"Maximize"、"Bounds"、および"General"といった文字列を生成する。
【0094】
(変換部12および統合部13による処理例2)
変換部12および統合部13による処理の他の例について、
図9を参照して説明する。
図9は、本例示的実施形態に係る変換部12および統合部13による処理の他の例を示す図である。
図9に示す例は、QUBOに課される制約条件に対する、変換部12および統合部13による処理の一例である。
【0095】
ユーザにより入力された制約条件が、2次のバイナリ最適化問題(QUBO)に対する制約条件の場合について説明する。QUBOの場合、QUBOではバイナリ変数しか扱えないため、バイナリ変数のみで整数変数を扱う必要がある。一例として、バイナリ変数bnを用いて、以下の式(3)を用いたOne-hotエンコーディング表現が挙げられる。
【0096】
【0097】
他の例として、以下の式(4)および式(5)を用いたLogエンコーディング表現が挙げられる。
【0098】
【0099】
【0100】
制約条件が、例えば、「x1+x2=1」といった1次の等式である場合、制約条件はQUBOにおける目的関数Jに対して「J=J+K(x1+x2-1)2」となる。すなわち、制約条件「x1+x2=1」の等式の右辺が0となる形式に変更した場合の左辺「x1+x2-1」の2乗に適切な定数Kを乗じた項(ペナルティ項)を目的関数Jに加算することにより、制約条件を取り扱うことができる。ただし、x1などが整数変数である場合は、前述の方法によってバイナリ変数による表現で置き換える。定数Kの大きさはユーザが予め大きさを決めておくことができる。
【0101】
一方、制約条件が、例えば「x1+x2≧1」といった1次の不等式である場合、スラック変数と呼ばれる正の整数変数sを導入することにより、制約条件「x1+x2≧1」を「x1+x2+s=1」に変換することができる。変換後は、上述した制約条件が等式の場合と同様の手順によって、不等式制約条件を取り扱うことができる。
【0102】
すなわち、ユーザにより入力された複数の制約条件が、2次バイナリ最適化問題に対する制約条件の場合、所定のフォーマットは、各制約条件を、その制約条件を表すペナルティ項に含まれる係数により表現するフォーマットである。
【0103】
次に、QUBOにおいて制約条件を追加する方法について説明する。最適化問題の問題クラスがQUBOの場合、目的関数Jは上述した以下の式(1)によって表される。
【0104】
【0105】
QUBOでは、LPフォーマットではなく、式(1)によって表される目的関数Jにおける係数(行列Q(2次配列データ))によって、モデルデータがlow-levelで記述される、またはデータ格納される。
【0106】
制約条件をQUBOに追加する場合、関数呼び出し(例えば、Add(x1+x2≧1)など)の形式が用いられ得る。この場合、n番目の制約条件がAdd(x1+x2≧1)だとすると、n番目の制約条件をQUBOに追加するために、上述したペナルティ項「K(x1+x2-1)2」を展開する。ペナルティ項を展開すると、係数である行列Qへ追加されるQnが算出される。そして、Q=Q+Qnの様に、算出されたQnを行列Qへ加算する。
【0107】
つまり、制約条件をQUBOへ追加する場合、個別に算出したQnをそれぞれ行列Qに加算すればよい。このように、QUBOモデルへの制約条件の追加は単なる加算であるため、制約条件を追加する順序によって計算結果は変わらない。そのため、制約条件をQUBOモデルへ追加する場合であっても、並列プロセスとして計算することができる。
【0108】
例えば、
図9に示すように、2つの制約条件を分割部11が2つのグループに分割した場合、変換部12は、プロセス1およびプロセス2において、フォーマットに変換する変換処理を並行して行う。
【0109】
この場合、変換部12はまず、
図9に示すように、プロセス1において、制約条件「x
1+x
2≧1」から、「x
1+x
2+s=1」に変換し、ペナルティ項を生成する。さらに、変換部12は、x
1およびx
2がバイナリ変数ではない場合、バイナリ変数b
nによるOne-hotエンコーディングまたはLogエンコーディングによりx
1およびx
2をバイナリ変数に変換する。このように、変換部12は、制約条件を、その制約条件を表すペナルティ項に含まれる係数により表現する。変換部12は、プロセス2においても同様に、ペナルティ項を生成し、x
3およびx
4をバイナリ変数に変換する。
【0110】
統合部13は、各制約条件を表すペナルティ項に含まれる係数を項別に加算することによって、目的関数に含まれる各係数に加算する値を生成する。
【0111】
(情報処理装置2の効果)
このように、本例示的実施形態に係る情報処理装置2は、所定のフォーマットがLPフォーマットまたはMPSフォーマットであっても、各制約条件をその制約条件を表すペナルティ項に含まれる係数により表現するフォーマットであっても、複数のグループの各々に対応するプロセスを並列的に実行し、所定のフォーマットに変換する。このため、本例示的実施形態に係る情報処理装置2によれば、所定のフォーマットがLPフォーマットまたはMPSフォーマットであっても、各制約条件をその制約条件を表すペナルティ項に含まれる係数により表現するフォーマットであっても、最適化問題を表す数理モデルの構築を高速化することができるという効果が得られる。
【0112】
〔ソフトウェアによる実現例〕
情報処理装置1、2の一部又は全部の機能は、集積回路(ICチップ)等のハードウェアによって実現してもよいし、ソフトウェアによって実現してもよい。
【0113】
後者の場合、情報処理装置1、2は、例えば、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータによって実現される。このようなコンピュータの一例(以下、コンピュータCと記載する)を
図10に示す。コンピュータCは、少なくとも1つのプロセッサC1と、少なくとも1つのメモリC2と、を備えている。メモリC2には、コンピュータCを情報処理装置1、2として動作させるためのプログラムPが記録されている。コンピュータCにおいて、プロセッサC1は、プログラムPをメモリC2から読み取って実行することにより、情報処理装置1、2の各機能が実現される。
【0114】
プロセッサC1としては、例えば、CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、DSP(Digital Signal Processor)、MPU(Micro Processing Unit)、FPU(Floating point number Processing Unit)、PPU(Physics Processing Unit)、量子プロセッサ、マイクロコントローラ、又は、これらの組み合わせなどを用いることができる。メモリC2としては、例えば、フラッシュメモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又は、これらの組み合わせなどを用いることができる。
【0115】
なお、コンピュータCは、プログラムPを実行時に展開したり、各種データを一時的に記憶したりするためのRAM(Random Access Memory)を更に備えていてもよい。また、コンピュータCは、他の装置との間でデータを送受信するための通信インターフェースを更に備えていてもよい。また、コンピュータCは、キーボードやマウス、ディスプレイやプリンタなどの入出力機器を接続するための入出力インターフェースを更に備えていてもよい。
【0116】
また、プログラムPは、コンピュータCが読み取り可能な、一時的でない有形の記録媒体Mに記録することができる。このような記録媒体Mとしては、例えば、テープ、ディスク、カード、半導体メモリ、又はプログラマブルな論理回路などを用いることができる。コンピュータCは、このような記録媒体Mを介してプログラムPを取得することができる。また、プログラムPは、伝送媒体を介して伝送することができる。このような伝送媒体としては、例えば、通信ネットワーク、又は放送波などを用いることができる。コンピュータCは、このような伝送媒体を介してプログラムPを取得することもできる。
【0117】
〔付記事項1〕
本発明は、上述した実施形態に限定されるものでなく、請求項に示した範囲で種々の変更が可能である。例えば、上述した実施形態に開示された技術的手段を適宜組み合わせて得られる実施形態についても、本発明の技術的範囲に含まれる。
【0118】
〔付記事項2〕
上述した実施形態の一部又は全部は、以下のようにも記載され得る。ただし、本発明は、以下の記載する態様に限定されるものではない。
【0119】
(付記1)
入力された複数の制約条件を複数のグループに分割する分割手段と、前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換手段と、前記所定のフォーマットで表現された前記複数の制約条件を統合する統合手段と、を備え、前記変換手段は、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する、情報処理装置。
【0120】
(付記2)
前記変換手段が前記複数の制約条件の各々に対する前記変換処理を実行するのに要する処理時間を予測する予測手段、をさらに備える付記1に記載の情報処理装置。
【0121】
(付記3)
前記分割手段は、前記予測手段によって予測された処理時間を参照し、前記変換手段が前記複数の制約条件の全てに対する前記変換処理を実行するに要する処理時間を最小化するように、前記複数の制約条件を前記複数のグループに分割する、付記2に記載の情報処理装置。
【0122】
(付記4)
前記予測手段は、前記複数の制約条件を機械学習により生成された予測モデルを用いて、前記変換手段が各制約条件に対する前記変換処理を実行するのに要する処理時間を予測する、付記3に記載の情報処理装置。
【0123】
(付記5)
前記予測手段は、ルールベースのアルゴリズムを用いて、前記変換手段が各制約条件に対する前記変換処理を実行するのに要する処理時間を予測する、付記3に記載の情報処理装置。
【0124】
(付記6)
前記分割手段は、並列的に実行される複数のプロセスの各々における変換処理の回数の差が最小となるように、前記複数の制約条件を前記複数のグループに分割する、付記1に記載の情報処理装置。
【0125】
(付記7)
前記複数の制約条件は、線形計画問題、整数線形計画問題、又は混合整数線形化問題に対する制約条件であり、前記所定のフォーマットは、LP(Linear Plan)フォーマット又はMPS(Mathematical Programming System)フォーマットである、付記1~7の何れかに記載の情報処理装置。
【0126】
(付記8)
前記複数の制約条件は、2次バイナリ最適化問題に対する制約条件であり、前記所定のフォーマットは、各制約条件を、その制約条件を表すペナルティ項に含まれる係数により表現するフォーマットである、付記1~7の何れかに記載の情報処理装置。
【0127】
(付記9)
情報処理装置が、入力された複数の制約条件を複数のグループに分割することと、前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行することと、前記所定のフォーマットで表現された前記複数の制約条件を統合することと、を含み、前記実行することにおいて、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する、情報処理方法。
【0128】
(付記9a)
前記実行することにおいて、前記複数の制約条件の各々に対する前記変換処理を実行するのに要する処理時間を予測すること、をさらに含む付記9に記載の情報処理情報。
【0129】
(付記9b)
前記複数の制約条件は、線形計画問題、整数線形計画問題、又は混合整数線形化問題に対する制約条件であり、前記所定のフォーマットは、LP(Linear Plan)フォーマット又はMPS(Mathematical Programming System)フォーマットである、付記9または9aに記載の情報処理方法。
【0130】
(付記9c)
前記複数の制約条件は、2次バイナリ最適化問題に対する制約条件であり、前記所定のフォーマットは、各制約条件を、その制約条件を表すペナルティ項に含まれる係数により表現するフォーマットである、付記9または9aに記載の情報処理方法。
【0131】
(付記10)
コンピュータを情報処理装置として機能させるプログラムであって、前記コンピュータを、入力された複数の制約条件を複数のグループに分割する分割手段と、前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換手段と、前記所定のフォーマットで表現された前記複数の制約条件を統合する統合手段と、として機能させ、前記変換手段は、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する、プログラム。
【0132】
(付記10a)
前記変換手段が前記複数の制約条件の各々に対する前記変換処理を実行するのに要する処理時間を予測する予測手段、としてさらに機能する付記10に記載のプログラム。
【0133】
(付記10b)
前記複数の制約条件は、線形計画問題、整数線形計画問題、又は混合整数線形化問題に対する制約条件であり、前記所定のフォーマットは、LP(Linear Plan)フォーマット又はMPS(Mathematical Programming System)フォーマットである、付記10または10aに記載のプログラム。
【0134】
(付記10c)
前記複数の制約条件は、2次バイナリ最適化問題に対する制約条件であり、前記所定のフォーマットは、各制約条件を、その制約条件を表すペナルティ項に含まれる係数により表現するフォーマットである、付記10または10aに記載のプログラム。
【0135】
(付記11)
少なくとも1つのプロセッサを備える情報処理装置であって、前記プロセッサは、入力された複数の制約条件を複数のグループに分割する分割処理と、前記複数の制約条件の各々を所定のフォーマットに変換する変換処理を実行する変換処理と、前記所定のフォーマットで表現された前記複数の制約条件を統合する統合処理とを実行し、前記変換処理において、1つのグループに属する各制約条件に対する前記変換処理を1つのプロセスとし、前記複数のグループの各々に対応するプロセスを並列的に実行する。
【0136】
なお、この情報処理装置は、更にメモリを備えていてもよく、このメモリには、前記分割処理と、前記変換処理と、前記統合処理とを前記プロセッサに実行させるためのプログラムが記憶されていてもよい。また、このプログラムは、コンピュータ読み取り可能な一時的でない有形の記録媒体に記録されていてもよい。
【符号の説明】
【0137】
1、2 情報処理装置
11 分割部
12 変換部
13 統合部
14 取得部
15 予測部
16 出力部