IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧 ▶ 国立大学法人大阪大学の特許一覧

特開2025-54857情報処理プログラム、情報処理方法、および情報処理装置
<>
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図1
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図2
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図3
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図4
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図5
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図6
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図7
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図8
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図9
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図10
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図11
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図12
  • 特開-情報処理プログラム、情報処理方法、および情報処理装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025054857
(43)【公開日】2025-04-08
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
   G06N 99/00 20190101AFI20250331BHJP
   G06F 17/12 20060101ALI20250331BHJP
【FI】
G06N99/00 180
G06F17/12
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023164045
(22)【出願日】2023-09-26
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】木村 圭児
(72)【発明者】
【氏名】梅谷 俊治
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB91
(57)【要約】
【課題】0-1整数計画問題を解き易くすること。
【解決手段】情報処理装置100は、0-1整数計画問題110を形成する複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する所定の数の制約条件とのペア120を特定する。情報処理装置100は、特定したペア120ごとに、ペア120の変数と、ペア120の所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部150に登録する。情報処理装置100は、複数の変数における変数間の関係度に基づいて、複数の変数の少なくともいずれかの変数と、当該いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、記憶部150に登録する。情報処理装置100は、記憶部150を参照して、0-1整数計画問題110の解を探索することにより、0-1整数計画問題110の解を算出する。
【選択図】図1
【特許請求の範囲】
【請求項1】
それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ前記複数の変数の少なくともいずれかを含む複数の制約条件を取得し、
前記複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する前記所定の数の制約条件とのペアを特定し、
特定した前記ペアごとに、前記ペアの変数と、前記ペアの前記所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録し、
前記複数の変数における変数間の関係度に基づいて、前記複数の変数の少なくともいずれかの変数と、前記いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、前記記憶部に登録し、
前記記憶部を参照して、前記第1対応情報と前記第2対応情報とに基づいて、前記複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、前記0-1整数計画問題の解を探索する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記所定の数は、1である、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記0-1整数計画問題の解は、前記複数の変数のそれぞれの値の組み合わせであって、
前記探索する処理は、
前記複数の変数のうち、対応付けられたいずれかの2以上の変数をそれぞれ含む1以上のグループを決定し、決定した前記1以上のグループのそれぞれに関して、前記0-1整数計画問題の暫定解から、当該グループの値を反転した、前記0-1整数計画問題の解候補を特定し、前記0-1整数計画問題を形成する目的関数に基づいて、特定した前記解候補のうち、前記暫定解よりも、前記目的関数の値を適切な方向に近付けるいずれかの解候補が存在する場合に、前記暫定解を、前記いずれかの解候補で更新する、という一連の処理を、終了条件を満たすまで繰り返し実施することにより、前記0-1整数計画問題の解を探索する、ことを特徴とする請求項2に記載の情報処理プログラム。
【請求項4】
前記一連の処理は、
前記複数の変数のそれぞれに関して、前記0-1整数計画問題の暫定解から、当該変数の値を反転した、前記0-1整数計画問題の第1解候補を特定し、前記目的関数に基づいて、特定した前記第1解候補のうち、前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第1解候補が存在する場合に、前記暫定解を、前記いずれかの第1解候補で更新する、第1処理を含む、ことを特徴とする請求項3に記載の情報処理プログラム。
【請求項5】
前記一連の処理は、
前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第1解候補が存在しない場合に、前記複数の変数のうち、対応付けられたいずれかの2つの変数をそれぞれ含む1以上のグループを決定し、決定した前記1以上のグループのそれぞれに関して、前記暫定解から、当該グループの値を反転した、前記0-1整数計画問題の第2解候補を特定し、前記目的関数に基づいて、特定した前記第2解候補のうち、前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第2解候補が存在する場合に、前記暫定解を、前記いずれかの第2解候補で更新する、第2処理を含む、ことを特徴とする請求項4に記載の情報処理プログラム。
【請求項6】
前記一連の処理は、
前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第2解候補が存在しない場合に、前記複数の変数のうち、対応付けられたいずれかの3つまたは4つの変数をそれぞれ含む1以上のグループを決定し、決定した前記1以上のグループのそれぞれに関して、前記暫定解から、当該グループの値を反転した、前記0-1整数計画問題の第3解候補を特定し、前記目的関数に基づいて、特定した前記第3解候補のうち、前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第3解候補が存在する場合に、前記暫定解を、前記いずれかの第3解候補で更新する、第3処理を含む、ことを特徴とする請求項5に記載の情報処理プログラム。
【請求項7】
前記目的関数は、前記複数の制約条件のそれぞれの違反量の低減化を目的とするよう、前記複数の制約条件のそれぞれの違反量に、係数となるパラメータを乗算した積を含み、
前記探索する処理は、
前記係数となるパラメータを前回更新した後から、前記一連の処理を今回実施する前までの間に、前記暫定解を更新し、前記一連の処理を今回実施した際に、前記暫定解を更新しない場合、前記複数の制約条件の少なくともいずれかに乗算する前記係数となるパラメータを、現在の値よりも大きい値に更新してから、前記一連の処理を再び実施する、ことを特徴とする請求項5または6に記載の情報処理プログラム。
【請求項8】
前記探索する処理は、
前記係数となるパラメータを前回更新した後から、前記一連の処理を今回実施する前までの間に、前記暫定解を更新せず、前記一連の処理を今回実施した際にも、前記暫定解を更新しない場合、前記複数の制約条件の少なくともいずれかに乗算する前記係数となるパラメータを、現在の値よりも小さい値に更新してから、前記一連の処理を再び実施する、ことを特徴とする請求項7に記載の情報処理プログラム。
【請求項9】
それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ前記複数の変数の少なくともいずれかを含む複数の制約条件を取得し、
前記複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する前記所定の数の制約条件とのペアを特定し、
特定した前記ペアごとに、前記ペアの変数と、前記ペアの前記所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録し、
前記複数の変数における変数間の関係度に基づいて、前記複数の変数の少なくともいずれかの変数と、前記いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、前記記憶部に登録し、
前記記憶部を参照して、前記第1対応情報と前記第2対応情報とに基づいて、前記複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、前記0-1整数計画問題の解を探索する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項10】
それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ前記複数の変数の少なくともいずれかを含む複数の制約条件を取得し、
前記複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する前記所定の数の制約条件とのペアを特定し、
特定した前記ペアごとに、前記ペアの変数と、前記ペアの前記所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録し、
前記複数の変数における変数間の関係度に基づいて、前記複数の変数の少なくともいずれかの変数と、前記いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、前記記憶部に登録し、
前記記憶部を参照して、前記第1対応情報と前記第2対応情報とに基づいて、前記複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、前記0-1整数計画問題の解を探索する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を解くメタヒューリスティクスとして、重み付き局所探索法がある。例えば、重み付き局所探索法では、変数間の関係度に基づいて、0-1整数計画問題の解を探索する空間を絞り込みながら、0-1整数計画問題を解くことがある。
【0003】
先行技術としては、例えば、変数間の関係度に基づいて、0-1整数計画問題の解を探索する空間を絞り込みながら、0-1整数計画問題を解くものがある。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Umetani, Shunji. “Exploiting variable associations to configure efficient local search algorithms in large-scale binary integer programs.” European Journal of Operational Research 263.1 (2017): 72-81.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1に記載の従来技術では、0-1整数計画問題を解くことが難しい場合がある。例えば、0-1整数計画問題が、1つの制約条件にのみ出現する変数を含む場合には、変数間の関係度に基づいて、0-1整数計画問題の解を探索する空間を適切に絞り込むことができず、0-1整数計画問題を解くことができないことがある。
【0006】
1つの側面では、本発明は、0-1整数計画問題を解き易くすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ前記複数の変数の少なくともいずれかを含む複数の制約条件を取得し、前記複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する前記所定の数の制約条件とのペアを特定し、特定した前記ペアごとに、前記ペアの変数と、前記ペアの前記所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録し、前記複数の変数における変数間の関係度に基づいて、前記複数の変数の少なくともいずれかの変数と、前記いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、前記記憶部に登録し、前記記憶部を参照して、前記第1対応情報と前記第2対応情報とに基づいて、前記複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、前記0-1整数計画問題の解を探索する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【0008】
一態様によれば、0-1整数計画問題を解き易くすることが可能になる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
図2図2は、情報処理システム200の一例を示す説明図である。
図3図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図4図4は、情報処理装置100の機能的構成例を示すブロック図である。
図5図5は、情報処理装置100の動作の一例を示す説明図である。
図6図6は、情報処理装置100の動作の具体例を示す説明図である。
図7図7は、情報処理装置100の適用例を示す説明図である。
図8図8は、全体処理手順の一例を示すフローチャートである。
図9図9は、初期化処理手順の一例を示すフローチャートである。
図10図10は、1-flip近傍探索処理手順の一例を示すフローチャートである。
図11図11は、2-flip近傍探索処理手順の一例を示すフローチャートである。
図12図12は、(3,4)-flip近傍探索処理手順の一例を示すフローチャートである。
図13図13は、更新処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、0-1整数計画問題の解を算出するためのコンピュータである。情報処理装置100は、例えば、サーバまたはPC(Personal Computer)などである。
【0012】
0-1整数計画問題は、それぞれ0または1の値を取る複数の変数を含む。0-1整数計画問題の解は、複数の変数のそれぞれの値の組み合わせである。0-1整数計画問題は、例えば、最適化する対象として、複数の変数を利用した目的関数を含む。最適化は、例えば、最小化または最大化である。目的関数は、具体的には、下記式(1)によって定義される。Nは、変数のインデックス集合である。xjは、j番目の変数である。cjは、j番目の変数にかかる係数である。
【0013】
【数1】
【0014】
0-1整数計画問題は、例えば、複数の制約条件を含む。制約条件は、例えば、複数の変数のうち、少なくともいずれか1以上の変数を含む。制約条件は、具体的には、下記式(2)~下記式(4)によって定義される。MLは、制約条件となる不等式制約のインデックス集合である。MEは、制約条件となる等式制約のインデックス集合である。aijは、j番目の変数にかかる係数である。biは、定数である。
【0015】
【数2】
【0016】
【数3】
【0017】
【数4】
【0018】
従来、0-1整数計画問題を解くメタヒューリスティクスとして、重み付き局所探索法がある。重み付き局所探索法については、具体的には、上記非特許文献1を参照することができる。例えば、重み付き局所探索法では、変数間の関係度に基づいて、0-1整数計画問題の解を探索する空間を絞り込みながら、0-1整数計画問題を解くことがある。例えば、複数の制約条件のうち、2つの変数の両方を含む制約条件の数が大きいほど、当該2つの変数の関係度の値は大きくなる。
【0019】
具体的には、重み付き局所探索法では、目的関数に、複数の制約条件のそれぞれの違反量に関する項を追加することにより、目的関数に、複数の制約条件のそれぞれを適用する。項は、例えば、制約条件の違反量に係数を乗算した積である。具体的には、重み付き局所探索法では、目的関数に基づいて、終了条件を満たすまで、一連の処理を繰り返し実施することにより、0-1整数計画問題の解を探索する。
【0020】
一連の処理は、具体的には、暫定解から、いずれかの変数の値を反転した解候補が、暫定解よりも、目的関数の値を適切な方向に近付けるか否かを評価する、1-flip近傍探索処理を含む。1-flip近傍探索処理では、具体的には、暫定解から、いずれかの変数の値を反転した解候補が、暫定解よりも、目的関数の値を適切な方向に近付ける場合には、暫定解を、当該解候補で更新する。
【0021】
一連の処理は、具体的には、1-flip近傍探索処理で、暫定解を更新しない場合に実施する、2-flip近傍探索処理を含む。2-flip近傍探索処理では、具体的には、変数間の関係度に基づいて、暫定解から、関係度が大きいいずれかの2つの変数のそれぞれの値を反転した解候補が、暫定解よりも、目的関数の値を適切な方向に近付けるか否かを評価する。2-flip近傍探索処理では、具体的には、暫定解から、関係度が大きいいずれかの2つの変数のそれぞれの値を反転した解候補が、暫定解よりも、目的関数の値を適切な方向に近付ける場合には、暫定解を、当該解候補で更新する。
【0022】
一連の処理は、具体的には、2-flip近傍探索処理で、暫定解を更新しない場合に実施する、(3,4)-flip近傍探索処理を含む。(3,4)-flip近傍探索処理では、具体的には、変数間の関係度に基づいて、暫定解から、関係度が大きいいずれかの3つまたは4つの変数のそれぞれの値を反転した解候補が、暫定解よりも、目的関数の値を適切な方向に近付けるか否かを評価する。(3,4)-flip近傍探索処理では、具体的には、暫定解から、関係度が大きいいずれかの3つまたは4つの変数のそれぞれの値を反転した解候補が、暫定解よりも、目的関数の値を適切な方向に近付ける場合には、暫定解を、当該解候補で更新する。
【0023】
具体的には、重み付き局所探索法では、一連の処理を今回実施した際に、暫定解を更新しない場合には、一連の処理を次回実施する前に、少なくともいずれかの制約条件の違反量に乗算する係数を更新することがある。
【0024】
具体的には、重み付き局所探索法では、少なくともいずれかの制約条件の違反量に乗算する係数を前回更新した後に、暫定解を1回以上更新していれば、少なくともいずれかの制約条件の違反量に乗算する係数を、現在の値よりも大きい値に更新することがある。具体的には、重み付き局所探索法では、少なくともいずれかの制約条件の違反量に乗算する係数を前回更新した後に、暫定解を更新していなければ、少なくともいずれかの制約条件の違反量に乗算する係数を、現在の値よりも小さい値に更新することがある。
【0025】
しかしながら、従来では、0-1整数計画問題の解を算出することが難しい場合がある。例えば、1つの制約条件にのみ出現する変数が存在する場合、当該変数と他の変数との関係度は、相対的に小さくなる。このため、2-flip近傍探索処理、および、(3,4)-flip近傍探索処理では、1つの制約条件にのみ出現する変数と、他の変数とのグループは、値を反転する対象として選択されない。結果として、0-1整数計画問題の解を探索する空間を適切に絞り込むことができない場合がある。
【0026】
これにより、従来技術では、例えば、0-1整数計画問題の解を適切に探索することができず、0-1整数計画問題の解を精度よく算出することができない場合がある。
【0027】
これに対し、関係度に依らず、それぞれいずれかの2以上の変数を含む、組み合わせ可能なすべてのグループに対して、値を反転した解候補を算出して評価する一連の処理を繰り返し実施するよう、重み付き局所探索法を変形する手法が考えられる。この手法では、一連の処理を実施する際にかかる処理負担および処理時間の膨大化を招き、0-1整数計画問題の解を効率的に算出することができないという問題がある。
【0028】
そこで、本実施の形態では、0-1整数計画問題を解き易くすることができる情報処理方法について説明する。本実施の形態によれば、例えば、暫定解が、0-1整数計画問題の適切な解を発見するまでにかかる処理負担および処理時間の低減化を図りつつ、0-1整数計画問題の適切な解を精度よく算出することができる。
【0029】
図1において、(1-1)情報処理装置100は、0-1整数計画問題110を取得する。0-1整数計画問題110は、それぞれ0または1の値を取る複数の変数を含む。0-1整数計画問題110は、0-1整数計画問題である。情報処理装置100は、例えば、0-1整数計画問題110を形成する目的関数を取得する。情報処理装置100は、例えば、0-1整数計画問題110を形成する複数の制約条件を取得する。制約条件は、複数の変数の少なくともいずれかを含む。制約条件は、数式である。図1の例では、変数は、具体的には、xiおよびyjである。iは、正の整数である。jは、正の整数である。ここでは、説明の都合上、1つの制約条件にのみ出現する変数を、yjと表記し、2以上の制約条件に共通で出現する変数を、xiと表記する。
【0030】
(1-2)情報処理装置100は、複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する所定の数の制約条件とのペア120を特定する。所定の数は、例えば、1である。図1の例では、情報処理装置100は、具体的には、1つの制約条件にのみ出現する変数y1と、1つの制約条件にのみ出現する変数y2とを特定する。情報処理装置100は、具体的には、特定した変数y1が出現する1つの制約条件とのペア121を特定する。情報処理装置100は、具体的には、特定した変数y2が出現する1つの制約条件とのペア122を特定する。
【0031】
(1-3)情報処理装置100は、特定したペア120ごとに、ペア120の変数と、ペア120の所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部150に登録する。図1の例では、情報処理装置100は、具体的には、表130に示す通り、特定したペア121の変数y1と、当該ペア121の制約条件に出現する他の変数x2,x3,x5とを対応付ける第1対応情報を、記憶部150に登録する。情報処理装置100は、具体的には、表130に示す通り、特定したペア122の変数y2と、当該ペア122の制約条件に出現する他の変数x1,x3,x6とを対応付ける第1対応情報を、記憶部150に登録する。
【0032】
(1-4)情報処理装置100は、複数の変数における変数間の関係度に基づいて、複数の変数の少なくともいずれかの変数と、当該いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、記憶部150に登録する。関係度は、例えば、2つの変数が共通して出現する制約条件の数に比例する指標値である。2つの変数の関係度は、具体的には、当該2つの変数が共通して出現する制約条件の数が大きいほど、値が大きくなる指標値である。情報処理装置100は、例えば、複数の変数の少なくともいずれかの変数と、当該いずれかの変数との関係度が一定以上であって最も大きい他の変数とを対応付ける第2対応情報を、記憶部150に登録する。
【0033】
図1の例では、情報処理装置100は、具体的には、表140に示す通り、変数x1と、変数x1との関係度が一定以上であって最も大きい変数x2とを対応付ける第2対応情報を、記憶部150に登録する。情報処理装置100は、具体的には、表140に示す通り、変数x2と、変数x2との関係度が一定以上であって最も大きい変数x1とを対応付ける第2対応情報を、記憶部150に登録する。情報処理装置100は、具体的には、表140に示す通り、変数x3と、変数x3との関係度が一定以上であって最も大きい変数x1,x2とを対応付ける第2対応情報を、記憶部150に登録する。情報処理装置100は、具体的には、表140に示す通り、変数x5と、変数x5との関係度が一定以上であって最も大きい変数x1とを対応付ける第2対応情報を、記憶部150に登録する。情報処理装置100は、具体的には、表140に示す通り、変数x6と、変数x6との関係度が一定以上であって最も大きい変数x1とを対応付ける第2対応情報を、記憶部150に登録する。
【0034】
(1-5)情報処理装置100は、記憶部150を参照して、0-1整数計画問題110の解を探索することにより、0-1整数計画問題110の解を算出する。情報処理装置100は、例えば、第1対応情報と第2対応情報とに基づいて、複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、0-1整数計画問題110の解を探索する。情報処理装置100は、具体的には、第1対応情報と第2対応情報とに基づいて、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定するよう拡張した、重み付き局所探索法を実施する。
【0035】
これにより、情報処理装置100は、0-1整数計画問題110を解き易くすることができる。情報処理装置100は、例えば、0-1整数計画問題110の解を精度よく算出可能にすることができ、0-1整数計画問題110の解を効率的に算出可能にすることができ、0-1整数計画問題110の解を算出する際にかかる所要時間の低減化を図ることができる。情報処理装置100は、具体的には、関係度のみを参照した場合には値を反転する対象とならない、1つの制約条件にのみ出現する変数を含むグループも、値を反転する対象に決定することができ、0-1整数計画問題110を解き易くすることができる。
【0036】
ここでは、所定の数が、1である場合について説明したが、これに限らない。例えば、所定の数が、制約条件の総数未満の2以上の数である場合があってもよい。具体的には、所定の数が、制約条件の総数の規定の数分の1である場合があってもよい。
【0037】
ここでは、情報処理装置100が、重み付き局所探索法の既存のアルゴリズムを基礎として、拡張した重み付き局所探索法を実施する場合について説明したが、これに限らない。例えば、情報処理装置100が、重み付き局所探索法の既存のアルゴリズムとは異なる新規のアルゴリズムで、第1対応情報と第2対応情報とに基づいて、0-1整数計画問題110の解を探索する場合があってもよい。
【0038】
ここでは、情報処理装置100としての機能が、単独のコンピュータで実現される場合について説明したが、これに限らない。例えば、情報処理装置100としての機能が、複数のコンピュータの協働で実現される場合があってもよい。例えば、情報処理装置100としての機能が、クラウド上に実現される場合があってもよい。
【0039】
(情報処理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0040】
図2は、情報処理システム200の一例を示す説明図である。図2において、情報処理システム200は、情報処理装置100と、1以上のクライアント装置201とを含む。
【0041】
情報処理システム200において、情報処理装置100とクライアント装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0042】
情報処理装置100は、0-1整数計画問題の解を算出するためのコンピュータである。情報処理装置100は、0-1整数計画問題の解を算出することを要求する処理依頼を、クライアント装置201から受信する。処理依頼は、例えば、0-1整数計画問題を含む。処理依頼は、例えば、0-1整数計画問題を形成する目的関数を含む。処理依頼は、例えば、0-1整数計画問題を形成する複数の制約条件を含む。情報処理装置100は、受信した処理依頼に基づいて、0-1整数計画問題を形成する目的関数と、0-1整数計画問題を形成する複数の制約条件とを取得する。
【0043】
情報処理装置100は、複数の制約条件に基づいて、複数の変数における変数間の関係度を算出する。関係度は、例えば、2つの変数が共通して出現する制約条件の数に比例する指標値である。2つの変数の関係度は、具体的には、当該2つの変数が共通して出現する制約条件の数が大きいほど、値が大きくなる指標値である。
【0044】
情報処理装置100は、複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する所定の数の制約条件とのペアを特定する。所定の数は、例えば、1である。情報処理装置100は、特定したペアごとに、ペアの変数と、ペアの所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録する。
【0045】
情報処理装置100は、複数の変数における変数間の関係度に基づいて、複数の変数の少なくともいずれかの変数と、当該いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、記憶部に登録する。情報処理装置100は、例えば、複数の変数の少なくともいずれかの変数と、当該いずれかの変数との関係度が一定以上であって、当該いずれかの変数との関係度が大きい方から順に規定の数までの他の変数とを対応付ける第2対応情報を、記憶部に登録する。
【0046】
情報処理装置100は、記憶部を参照して、0-1整数計画問題の解を探索することにより、0-1整数計画問題の解を算出する。情報処理装置100は、例えば、第1対応情報と第2対応情報とに基づいて、複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、0-1整数計画問題の解を探索する。
【0047】
情報処理装置100は、具体的には、第1対応情報と第2対応情報とに基づいて、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定するよう拡張した、重み付き局所探索法を実施する。情報処理装置100は、算出した0-1整数計画問題の解を、クライアント装置201に送信する。情報処理装置100は、例えば、サーバまたはPCなどである。
【0048】
クライアント装置201は、0-1整数計画問題を設定するためのコンピュータである。クライアント装置201は、利用者の操作入力に基づき、0-1整数計画問題を設定する。クライアント装置201は、例えば、利用者の操作入力に基づき、0-1整数計画問題を形成する目的関数と、0-1整数計画問題を形成する複数の制約条件とを設定する。
【0049】
クライアント装置201は、設定した0-1整数計画問題を形成する目的関数と、設定した0-1整数計画問題を形成する複数の制約条件とを含み、0-1整数計画問題の解を算出することを要求する処理依頼を生成する。クライアント装置201は、生成した処理依頼を、情報処理装置100に送信する。クライアント装置201は、0-1整数計画問題の解を、情報処理装置100から受信する。クライアント装置201は、0-1整数計画問題の解を、利用者が参照可能に出力する。クライアント装置201は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0050】
ここでは、情報処理装置100が、クライアント装置201とは異なるコンピュータである場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置201としての機能を有し、クライアント装置201としても動作する場合があってもよい。
【0051】
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0052】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0053】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
【0054】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0055】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0056】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0057】
(クライアント装置201のハードウェア構成例)
クライアント装置201のハードウェア構成例は、具体的には、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0058】
(情報処理装置100の機能的構成例)
次に、図4を用いて、情報処理装置100の機能的構成例について説明する。
【0059】
図4は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部400と、取得部401と、第1登録部402と、第2登録部403と、探索部404と、出力部405とを含む。
【0060】
記憶部400は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、情報処理装置100とは異なる装置に含まれ、記憶部400の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0061】
取得部401~出力部405は、制御部の一例として機能する。取得部401~出力部405は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0062】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、例えば、0-1整数計画問題を記憶する。0-1整数計画問題は、それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題である。記憶部400は、具体的には、0-1整数計画問題を形成する複数の制約条件を記憶する。制約条件は、例えば、複数の変数のうち、少なくともいずれか1以上の変数を含む数式である。複数の制約条件は、例えば、取得部401によって取得される。
【0063】
記憶部400は、具体的には、0-1整数計画問題を形成する目的関数を記憶する。目的関数は、最適化する対象となる評価値を表す数式である。評価値は、例えば、コストまたは利益などを表す。最適化は、例えば、最小化または最大化である。具体的には、コストを表す評価値は、最小化する対象となる。具体的には、利益を表す評価値は、最大化する対象となる。目的関数は、さらに、複数の制約条件のそれぞれの違反量の低減化を目的とするよう、複数の制約条件のそれぞれの違反量に、係数となるパラメータを乗算した積を含む。目的関数は、例えば、取得部401によって取得される。
【0064】
記憶部400は、例えば、複数の変数における変数間の関係度を記憶する。関係度は、例えば、複数の制約条件のうち、2つの変数が共通して出現する制約条件の数に比例する指標値である。2つの変数の関係度は、具体的には、当該2つの変数が共通して出現する制約条件の数が大きいほど、値が大きくなる指標値である。記憶部400は、例えば、複数の変数のうち、2以上の変数を対応付けた対応情報を記憶する。対応情報は、例えば、第1登録部402または第2登録部403によって生成される。
【0065】
記憶部400は、例えば、0-1整数計画問題の暫定解を記憶する。0-1整数計画問題の暫定解は、複数の変数のそれぞれの値の組み合わせである。0-1整数計画問題の暫定解は、例えば、探索部404によって算出される。記憶部400は、例えば、0-1整数計画問題の解候補を記憶する。0-1整数計画問題の解候補は、複数の変数のそれぞれの値の組み合わせである。0-1整数計画問題の解候補は、例えば、探索部404によって算出される。
【0066】
取得部401は、各機能部の処理に用いられる各種情報を取得する。取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。取得部401は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部401は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0067】
取得部401は、例えば、0-1整数計画問題の解を算出することを要求する処理依頼を取得する。0-1整数計画問題の解は、例えば、探索部404によって算出される。処理依頼は、例えば、0-1整数計画問題を形成する複数の制約条件を含んでいてもよい。処理依頼は、例えば、0-1整数計画問題を形成する目的関数を含んでいてもよい。取得部401は、具体的には、利用者の操作入力に基づき、処理依頼の入力を受け付けることにより、処理依頼を取得する。取得部401は、具体的には、処理依頼を、他のコンピュータから受信することにより取得する。
【0068】
取得部401は、例えば、0-1整数計画問題を形成する複数の制約条件を取得する。取得部401は、具体的には、複数の制約条件を、取得した処理依頼の中から抽出することにより取得する。取得部401は、具体的には、利用者の操作入力に基づき、複数の制約条件の入力を受け付けることにより、複数の制約条件を取得してもよい。取得部401は、具体的には、複数の制約条件を、他のコンピュータから受信することにより取得してもよい。
【0069】
取得部401は、例えば、0-1整数計画問題を形成する目的関数を取得する。取得部401は、具体的には、目的関数を、取得した処理依頼の中から抽出することにより取得する。取得部401は、具体的には、利用者の操作入力に基づき、目的関数の入力を受け付けることにより、目的関数を取得してもよい。取得部401は、具体的には、目的関数を、他のコンピュータから受信することにより取得してもよい。
【0070】
取得部401は、具体的には、取得した目的関数が、複数の制約条件のそれぞれの違反量に、係数となるパラメータを乗算した積を含んでいない場合、当該積を含むよう、目的関数を拡張してもよい。取得部401は、より具体的には、複数の制約条件のそれぞれの違反量の低減化を目的とするよう、複数の制約条件のそれぞれの違反量に、係数となるパラメータを乗算した積を、取得した目的関数に追加することにより、目的関数を拡張する。
【0071】
取得部401は、例えば、0-1整数計画問題の解を出力することを要求する終了指示を取得してもよい。取得部401は、具体的には、利用者の操作入力に基づき、終了指示の入力を受け付けることにより、終了指示を取得する。取得部401は、具体的には、終了指示を、他のコンピュータから受信することにより取得する。
【0072】
取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。
【0073】
取得部401は、例えば、処理依頼を取得したことを、第1登録部402と、第2登録部403と、探索部404との処理を開始する開始トリガーとして受け付ける。
【0074】
第1登録部402は、複数の変数のうち、2以上の変数を対応付ける第1対応情報を生成し、記憶部400に登録する。第1登録部402は、例えば、複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する所定の数の制約条件とのペアを特定する。第1登録部402は、例えば、特定したペアごとに、当該ペアの変数と、当該ペアの所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を生成し、記憶部400に登録する。これにより、第1登録部402は、変数間の関係度に依らず、値を反転することを試行することが好ましい2以上の変数のグループを特定可能にすることができる。
【0075】
第1登録部402は、例えば、複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する所定の数の制約条件とのペアのすべてを、一度に特定しなくてもよい。これにより、第1登録部402は、処理量の低減化を図ることができる。
【0076】
第2登録部403は、複数の変数のうち、2以上の変数を対応付ける第2対応情報を生成し、記憶部400に登録する。第2登録部403は、例えば、変数間の関係度に基づいて、複数の変数の少なくともいずれかの変数と、当該いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を生成し、記憶部400に登録する。これにより、第2登録部403は、変数間の関係度に応じて、値を反転することを試行することが好ましい2以上の変数のグループを特定可能にすることができる。
【0077】
第2登録部403は、例えば、複数の変数のそれぞれと、当該変数との関係度が一定以上である他の変数とを対応付ける第2対応情報のすべてを、一度に生成しなくてもよい。これにより、第2登録部403は、処理量の低減化を図ることができる。
【0078】
探索部404は、記憶部400を参照して、第1対応情報と第2対応情報とに基づいて、複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、0-1整数計画問題の解を探索する。所定の数は、例えば、1である。所定の数は、例えば、制約条件の総数未満の2以上の数であってもよい。所定の数は、例えば、制約条件の総の規定の数分の1であってもよい。
【0079】
探索部404は、例えば、記憶部400を参照して、第1対応情報と第2対応情報とに基づいて、0-1整数計画問題の暫定解を更新するための一連の処理を、終了条件を満たすまで繰り返し実施することにより、0-1整数計画問題の解を探索する。終了条件は、例えば、一連の処理を最初に実施してからの経過時間が、所定の長さを超えたことである。
【0080】
終了条件は、例えば、一連の処理を所定の回数実施したことであってもよい。終了条件は、例えば、取得部401で終了指示を取得したことであってもよい。終了条件は、例えば、0-1整数計画問題の暫定解を連続して更新しない回数が、所定の閾値を超えたことであってもよい。終了条件は、例えば、暫定解に対する目的関数の値が、所定の値になったことであってもよい。
【0081】
一連の処理は、例えば、対応付けられたいずれかの2以上の変数をそれぞれ含む1以上のグループを決定する。一連の処理は、例えば、決定した1以上のグループのそれぞれに関して、0-1整数計画問題の暫定解から、当該グループの値を反転した、0-1整数計画問題の解候補を特定する。一連の処理は、例えば、目的関数に基づいて、特定した解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの解候補が存在するか否かを判定する。一連の処理は、例えば、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの解候補が存在する場合に、暫定解を、当該いずれかの解候補で更新する。
【0082】
一連の処理は、具体的には、第1処理を含む。第1処理は、例えば、複数の変数のそれぞれに関して、0-1整数計画問題の暫定解から、当該変数の値を反転した、0-1整数計画問題の第1解候補を特定する。第1処理は、例えば、目的関数に基づいて、特定した第1解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第1解候補が存在するか否かを判定する。第1処理は、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第1解候補が存在する場合に、暫定解を、当該いずれかの第1解候補で更新する。これにより、探索部404は、暫定解を、適切に更新することができる。
【0083】
一連の処理は、具体的には、第2処理を含む。第2処理は、例えば、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第1解候補が存在しない場合に、複数の変数のうち、対応付けられたいずれかの2つの変数をそれぞれ含む1以上のグループを決定する。第2処理は、例えば、決定した1以上のグループのそれぞれに関して、暫定解から、当該グループの値を反転した、0-1整数計画問題の第2解候補を特定する。第2処理は、例えば、目的関数に基づいて、特定した第2解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第2解候補が存在するか否かを判定する。第2処理は、例えば、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第2解候補が存在する場合に、暫定解を、当該いずれかの第2解候補で更新する。これにより、探索部404は、暫定解を、適切に更新することができる。
【0084】
一連の処理は、具体的には、第3処理を含む。第3処理は、例えば、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第2解候補が存在しない場合に、複数の変数のうち、対応付けられたいずれかの3つまたは4つの変数をそれぞれ含む1以上のグループを決定する。第3処理は、例えば、決定した1以上のグループのそれぞれに関して、暫定解から、当該グループの値を反転した、0-1整数計画問題の第3解候補を特定する。第3処理は、例えば、目的関数に基づいて、特定した第3解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第3解候補が存在するか否かを判定する。暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第3解候補が存在する場合に、暫定解を、当該いずれかの第3解候補で更新する。これにより、探索部404は、暫定解を、適切に更新することができる。
【0085】
探索部404は、例えば、一連の処理を今回実施した後に、複数の制約条件の少なくともいずれかに乗算する係数となるパラメータを更新してもよい。探索部404は、具体的には、一連の処理を今回実施した際に、暫定解を更新したか否かを判定する。探索部404は、具体的には、一連の処理を今回実施した際に、暫定解を更新した場合、複数の制約条件のいずれに乗算する係数となるパラメータも更新せずに、一連の処理を再び実施する。これにより、探索部404は、0-1整数計画問題の暫定解を、最適な解に近付けることができる。
【0086】
探索部404は、具体的には、係数となるパラメータを前回更新した後から、一連の処理を今回実施する前までの間に、暫定解を更新したか否かを判定する。具体的には、係数となるパラメータを前回更新した後から、一連の処理を今回実施する前までの間に、暫定解を更新し、一連の処理を今回実施した際に、暫定解を更新しない場合が考えられる。この場合、探索部404は、具体的には、複数の制約条件の少なくともいずれかに乗算する係数となるパラメータを、現在の値よりも大きい値に更新してから、一連の処理を再び実施する。探索部404は、より具体的には、複数の制約条件のうち、違反量が比較的大きいいずれかの制約条件に乗算する係数となるパラメータを、現在の値よりも大きい値に更新してから、一連の処理を再び実施する。これにより、探索部404は、制約条件を違反しないよう、0-1整数計画問題の暫定解を、最適な解に近付けることができる。
【0087】
具体的には、係数となるパラメータを前回更新した後から、一連の処理を今回実施する前までの間に、暫定解を更新せず、一連の処理を今回実施した際にも、暫定解を更新しない場合が考えられる。この場合、探索部404は、具体的には、複数の制約条件の少なくともいずれかに乗算する係数となるパラメータを、現在の値よりも小さい値に更新してから、一連の処理を再び実施する。探索部404は、より具体的には、複数の制約条件のそれぞれに乗算する係数となるパラメータを、現在の値よりも小さい値に更新してから、一連の処理を再び実施する。これにより、探索部404は、制約条件の違反を一時許容し、0-1整数計画問題の暫定解を、最適な解に近付け易くすることができる。
【0088】
第1登録部402は、例えば、探索部404で一連の処理を実施したことに応じて、再び、複数の変数のうち、2以上の変数を対応付ける新たな第1対応情報を生成し、記憶部400に登録してもよい。第1登録部402は、具体的には、複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する所定の数の制約条件とのペアを特定する。第1登録部402は、具体的には、特定したペアごとに、当該ペアの変数と、当該ペアの所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける、新たな第1対応情報を生成し、記憶部400に登録する。これにより、第1登録部402は、変数間の関係度に依らず、値を反転することを試行することが好ましい2以上の変数のグループを特定可能にすることができる。
【0089】
第2登録部403は、例えば、探索部404で一連の処理を実施したことに応じて、再び、複数の変数のうち、2以上の変数を対応付ける新たな第2対応情報を生成し、記憶部400に登録してもよい。第2登録部403は、具体的には、変数間の関係度に基づいて、複数の変数の少なくともいずれかの変数と、当該いずれかの変数との関係度が一定以上である他の変数とを対応付ける、新たな第2対応情報を生成し、記憶部400に登録する。これにより、第2登録部403は、変数間の関係度に応じて、値を反転することを試行することが好ましい2以上の変数のグループを特定可能にすることができる。
【0090】
出力部405は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部405は、少なくともいずれかの機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0091】
出力部405は、例えば、終了条件を満たした際に、探索部404で更新した0-1整数計画問題の暫定解を、0-1整数計画問題の解として出力する。出力部405は、具体的には、0-1整数計画問題の解を、利用者が参照可能に出力する。出力部405は、具体的には、0-1整数計画問題の解を、他のコンピュータに送信してもよい。これにより、出力部405は、0-1整数計画問題の解を、外部で利用可能にすることができる。
【0092】
(情報処理装置100の動作の流れ)
次に、情報処理装置100の動作の流れについて説明する。情報処理装置100は、0-1整数計画問題を形成する目的関数と複数の制約条件とを取得する。目的関数は、例えば、上記式(1)によって定義される。制約条件は、例えば、上記式(2)~上記式(4)によって定義される。0-1整数計画問題は、制約条件を満たす範囲で、目的関数の値を最小化する解を算出することを目的とする。解は、複数の変数のそれぞれの値の組み合わせを表すベクトルである。以下の説明では、Nは、変数のインデックス集合である。
【0093】
(step1)情報処理装置100は、前処理として、0-1整数計画問題の暫定解に、複数の変数のそれぞれの値が0であることを表す0ベクトルを設定する。情報処理装置100は、前処理として、目的関数に、複数の制約条件のそれぞれの違反量に関する項を追加することにより、目的関数を拡張する。具体的には、下記式(5)~下記式(8)が定義される。
【0094】
【数5】
【0095】
【数6】
【0096】
【数7】
【0097】
【数8】
【0098】
i -(x)は、解xに対するいずれかの制約条件の違反量を表す。pi +(x)は、解xに対するいずれかの制約条件の違反量を表す。pi -(x)およびpi +(x)を利用して、目的関数は、具体的には、下記式(9)および下記式(10)によって定義されるよう拡張される。wi -(i∈ME)は、非負のパラメータである。wi +(i∈M)は、非負のパラメータである。以下の説明では、wi -(i∈ME)およびwi +(i∈M)を、「ペナルティ係数」と表記する場合がある。
【0099】
【数9】
【0100】
【数10】
【0101】
情報処理装置100は、複数の変数のうち少なくともいずれかの変数に対する近傍リストを初期化する。いずれかの変数に対する近傍リストは、0-1整数計画問題の解を探索するにあたって、当該いずれかの変数と同時に値を反転する対象となり得る他の変数を記録するリストである。情報処理装置100は、具体的には、1つの制約条件にのみ出現する変数と、当該制約条件とのペアを抽出する。情報処理装置100は、抽出したペアのそれぞれに基づいて、当該ペアの制約条件に出現する変数のそれぞれに対する近傍リストに設定する、当該ペアの制約条件にのみ出現する変数を記録した初期リストを生成する。
【0102】
情報処理装置100は、下記に示す通り、終了条件を満たすまで、一連の処理を繰り返し実施し、0-1整数計画問題の暫定解を更新していくことにより、0-1整数計画問題の解を探索し、0-1整数計画問題の適切な解を算出する。一連の処理は、下記(step2)と、下記(step3)と、下記(step4)と、下記(step5)と、下記(step6)とを含む。
【0103】
(step2)情報処理装置100は、終了条件を満たすか否かを判定する。終了条件は、例えば、一連の処理を最初に実施してから所定の時間経過したことである。終了条件は、例えば、一連の処理を所定の回数以上実施したことであってもよい。終了条件は、例えば、利用者の操作入力に基づき、情報処理装置100で終了指示を受け付けたことであってもよい。情報処理装置100は、終了条件を満たす場合、0-1整数計画問題の暫定解を、0-1整数計画問題の解として出力する。情報処理装置100は、終了条件を満たさない場合、(step3)に移行する。
【0104】
(step3)情報処理装置100は、1-flip近傍探索処理を実施する。情報処理装置100は、例えば、複数の変数のそれぞれに対して、0-1整数計画問題の暫定解から、当該変数の値のみを反転した解候補を算出する。情報処理装置100は、例えば、算出した複数の解候補のうち、0-1整数計画問題の暫定解よりも、目的関数の値を適切な方向に近付ける1以上の解候補が存在するか否かを判定する。適切な方向は、例えば、最小化の方向である。
【0105】
ここで、情報処理装置100は、例えば、目的関数の値を適切な方向に近付ける1以上の解候補が存在する場合、当該1以上の解候補のうち、目的関数の値を最も適切な方向に近付けるいずれかの解候補を選択する。情報処理装置100は、例えば、選択したいずれかの解候補で、0-1整数計画問題の暫定解を更新し、(step2)の処理に戻る。一方で、情報処理装置100は、例えば、目的関数の値を適切な方向に近付ける1以上の解候補が存在しない場合、(step4)の処理に移行する。これにより、情報処理装置100は、0-1整数計画問題の暫定解を、最適解に近付けることができる。
【0106】
(step4)情報処理装置100は、2-flip近傍探索処理を実施する。2-flip近傍探索処理は、下記(step4-1)と、下記(step4-2)と、下記(step4-3)と、下記(step4-4)とを含む。
【0107】
(step4-1)情報処理装置100は、例えば、j番目の変数xjを選択し、変数xjに対する近傍リストを取得する。jは、初期値1である。
【0108】
(step4-2)情報処理装置100は、例えば、選択した変数xjと、他の変数xkのいずれかとの関係度assoc(j,k)が算出済みではない場合、選択した変数xjと、他の変数xkのそれぞれとの関係度assoc(j,k)を算出する。情報処理装置100は、具体的には、下記式(11)に従って、変数xjと、他の変数xkのそれぞれとの関係度assoc(j,k)を算出し、(step4-3)の処理に移行する。aijは、変数xjにかかる係数である。aikは、変数xkにかかる係数である。情報処理装置100は、例えば、選択した変数xjと、他の変数xkのそれぞれとの関係度assoc(j,k)が算出済みであれば、当該関係度assoc(j,k)を取得し、(step4-4)の処理に移行する。
【0109】
【数11】
【0110】
(step4-3)情報処理装置100は、例えば、選択した変数xjに対する近傍リストに、他の変数xkのそれぞれのうち、算出した関係度assoc(j,k)が大きい方からC個までの他の変数xkを追加し、(step4-4)の処理に移行する。
【0111】
(step4-4)情報処理装置100は、例えば、近傍リストに基づいて、選択した変数xjと、近傍リストに記録された他の変数xkのいずれか一つとで形成し得る、2つの変数を組み合わせたグループをすべて特定する。情報処理装置100は、例えば、特定したグループのそれぞれに対して、0-1整数計画問題の暫定解から、当該グループに属する変数の値のみを反転した解候補を算出する。情報処理装置100は、算出した複数の解候補のうち、0-1整数計画問題の暫定解よりも、目的関数の値を適切な方向に近付ける1以上の解候補が存在するか否かを判定する。適切な方向は、例えば、最小化の方向である。
【0112】
ここで、情報処理装置100は、目的関数の値を適切な方向に近付ける1以上の解候補が存在する場合、当該1以上の解候補のうち、目的関数の値を最も適切な方向に近付けるいずれかの解候補を選択する。情報処理装置100は、選択したいずれかの解候補で、0-1整数計画問題の暫定解を更新し、(step2)の処理に戻る。
【0113】
一方で、情報処理装置100は、目的関数の値を適切な方向に近付ける1以上の解候補が存在しない場合、j<Nであれば、jをインクリメントし、(step4-1)に戻る。また、情報処理装置100は、目的関数の値を適切な方向に近付ける1以上の解候補が存在しない場合、j=Nであれば、(step5)の処理に移行する。これにより、情報処理装置100は、0-1整数計画問題の暫定解を、最適解に近付けることができる。
【0114】
(step5)情報処理装置100は、(3,4)-flip近傍探索処理を実施する。(3,4)-flip近傍探索処理は、下記(step5-1)と、下記(step5-2)と、下記(step5-3)と、下記(step5-4)とを含む。
【0115】
(step5-1)情報処理装置100は、例えば、j番目の変数xjを選択し、変数xjに対する近傍リストを取得する。jは、初期値1である。
【0116】
(step5-2)情報処理装置100は、例えば、選択した変数xjと、他の変数xkのいずれかとの関係度assoc(j,k)が算出済みではない場合、選択した変数xjと、他の変数xkのそれぞれとの関係度assoc(j,k)を算出する。情報処理装置100は、具体的には、上記式(11)に従って、変数xjと、他の変数xkのそれぞれとの関係度assoc(j,k)を算出し、(step5-3)の処理に移行する。情報処理装置100は、例えば、選択した変数xjと、他の変数xkのそれぞれとの関係度assoc(j,k)が算出済みであれば、当該関係度assoc(j,k)を取得し、(step5-4)の処理に移行する。
【0117】
(step5-3)情報処理装置100は、例えば、選択した変数xjに対する近傍リストに、他の変数xkのそれぞれのうち、算出した関係度assoc(j,k)が大きい方からC個までの他の変数xkを追加し、(step5-4)の処理に移行する。
【0118】
(step5-4)情報処理装置100は、例えば、近傍リストに基づいて、選択した変数xjと、近傍リストに記録された他の変数xkのいずれか2つとで形成し得る、3つの変数を組み合わせたグループをすべて特定する。情報処理装置100は、例えば、特定したグループのそれぞれに対して、0-1整数計画問題の暫定解から、当該グループに属する変数の値のみを反転した解候補を算出する。情報処理装置100は、算出した複数の解候補のうち、0-1整数計画問題の暫定解よりも、目的関数の値を適切な方向に近付ける1以上の解候補が存在するか否かを判定する。適切な方向は、例えば、最小化の方向である。
【0119】
ここで、情報処理装置100は、目的関数の値を適切な方向に近付ける1以上の解候補が存在する場合、当該1以上の解候補のうち、目的関数の値を最も適切な方向に近付けるいずれかの解候補を選択する。情報処理装置100は、選択したいずれかの解候補で、0-1整数計画問題の暫定解を更新し、(step2)の処理に戻る。
【0120】
一方で、情報処理装置100は、目的関数の値を適切な方向に近付ける1以上の解候補が存在しない場合、j<Nであれば、jをインクリメントし、(step5-1)に戻る。また、情報処理装置100は、目的関数の値を適切な方向に近付ける1以上の解候補が存在しない場合、j=Nであれば、(step6)の処理に移行する。これにより、情報処理装置100は、0-1整数計画問題の暫定解を、最適解に近付けることができる。
【0121】
(step6)情報処理装置100は、一連の処理を今回実施した際に、0-1整数計画問題の暫定解を更新しない場合、ペナルティ係数を調整する。ここで、ペナルティ係数は、値が大きいほど、制約条件を違反しない、0-1整数計画問題の暫定解を発見し易くすることができる。一方で、制約条件を違反する、0-1整数計画問題の暫定解を経由した方が、制約条件を違反する、0-1整数計画問題の暫定解を経由しないよりも、0-1整数計画問題の適切な解を精度よく効率的に探索し易くなる傾向がある。従って、0-1整数計画問題の適切な解を精度よく効率的に探索し易くするために、ペナルティ係数の値を小さくすることが好ましい状況が考えられる。
【0122】
(step6-1)情報処理装置100は、例えば、ペナルティ係数を一度も更新していない場合、少なくともいずれかの制約条件に対応するペナルティ係数を、現在の値よりも大きい値に更新する。情報処理装置100は、具体的には、0-1整数計画問題の暫定解に基づいて、当該暫定解が違反している1以上の制約条件を特定する。情報処理装置100は、具体的には、特定した1以上の制約条件のそれぞれの制約条件に対応するペナルティ係数を、現在の値よりも大きい値に更新する。その後、情報処理装置100は、(step2)の処理に戻る。
【0123】
ペナルティ係数を、現在の値よりも大きいどのような値に更新するのかについては、具体的には、上記非特許文献1を参照することができる。これにより、情報処理装置100は、制約条件の違反量の低減化を図ることができ、制約条件を違反しないよう、0-1整数計画問題の暫定解を更新し易くすることができ、0-1整数計画問題の解を精度よく探索し易くすることができる。
【0124】
(step6-2)情報処理装置100は、例えば、ペナルティ係数を前回更新した後に、0-1整数計画問題の暫定解を一度以上更新している場合、少なくともいずれかの制約条件に対応するペナルティ係数を、現在の値よりも大きい値に更新する。情報処理装置100は、具体的には、0-1整数計画問題の暫定解に基づいて、当該暫定解が違反している1以上の制約条件を特定する。情報処理装置100は、具体的には、特定した1以上の制約条件のそれぞれの制約条件に対応するペナルティ係数を、現在の値よりも大きい値に更新する。その後、情報処理装置100は、(step2)の処理に戻る。
【0125】
ペナルティ係数を、現在の値よりも大きいどのような値に更新するのかについては、具体的には、上記非特許文献1を参照することができる。これにより、情報処理装置100は、制約条件の違反量の低減化を図ることができ、制約条件を違反しないよう、0-1整数計画問題の暫定解を更新し易くすることができ、0-1整数計画問題の解を精度よく探索し易くすることができる。
【0126】
(step6-3)情報処理装置100は、例えば、ペナルティ係数を前回更新した後に、0-1整数計画問題の暫定解を一度も更新していない場合、少なくともいずれかの制約条件に対応するペナルティ係数を、現在の値よりも小さい値に更新する。情報処理装置100は、具体的には、複数の制約条件のそれぞれに対応するペナルティ係数を、現在の値よりも小さい値に更新する。情報処理装置100は、具体的には、複数の制約条件のうち、一定の割合の2以上の制約条件のそれぞれに対応するペナルティ係数を、現在の値よりも小さい値に更新してもよい。その後、情報処理装置100は、(step2)の処理に戻る。これにより、情報処理装置100は、制約条件を違反する、0-1整数計画問題の暫定解を経由し、0-1整数計画問題の適切な解を精度よく効率的に探索し易くすることができる。
【0127】
このように、情報処理装置100は、1つの制約条件にのみ出現する変数が存在するような0-1整数計画問題の適切な解を、精度よく効率的に算出することができる。情報処理装置100は、具体的には、下記式(12)が示すビンパッキング制約などを含むような0-1整数計画問題の適切な解を、精度よく効率的に算出することができる。
【0128】
【数12】
【0129】
例えば、上記非特許文献1に記載された従来の手法では、変数間の関係度のみに基づいて、0-1整数計画問題の適切な解を探索することになる。このため、従来の手法では、ビンパッキング制約などを含み、1つの制約条件にのみ出現する変数が存在するような0-1整数計画問題に対しては、0-1整数計画問題の適切な解を精度よく効率的に探索することができないという問題がある。
【0130】
これに対し、情報処理装置100は、変数間の関係度の他に、1つの制約条件にのみ出現する変数を考慮して、0-1整数計画問題の適切な解を探索することができる。このため、情報処理装置100は、ビンパッキング制約などを含み、1つの制約条件にのみ出現する変数が存在するような0-1整数計画問題に対しても、0-1整数計画問題の適切な解を精度よく効率的に探索することができる。
【0131】
(情報処理装置100の動作の一例)
次に、図5を用いて、情報処理装置100の動作の一例について説明する。
【0132】
図5は、情報処理装置100の動作の一例を示す説明図である。図5において、情報処理装置100は、変数xijと変数yiとを含む0-1整数計画問題500を取得する。情報処理装置100は、例えば、0-1整数計画問題500を規定する情報510を取得する。
【0133】
情報510は、例えば、下記式(13)によって定義される目的関数を含む。情報510は、例えば、下記式(14)~下記式(17)によって定義される制約条件を含む。wj(j=1,…,n)は、正の数である。Cは、正の数である。変数xijは、2以上の制約条件に出現する変数である。変数yiは、1つの制約条件にのみ出現する変数である。
【0134】
【数13】
【0135】
【数14】
【0136】
【数15】
【0137】
【数16】
【0138】
【数17】
【0139】
情報処理装置100は、前処理として、0-1整数計画問題500の暫定解に、複数の変数のそれぞれの値が0であることを表す0ベクトルを設定する。情報処理装置100は、前処理として、目的関数に、複数の制約条件のそれぞれの違反量に関する項を追加することにより、目的関数を拡張する。
【0140】
情報処理装置100は、1つの制約条件にのみ出現する変数yiと、当該制約条件とのペア520を特定する。情報処理装置100は、特定したペア520ごとに、当該ペア520に出現する変数xij(i=1,…,n;j=1,…,n)に対する近傍リストとなる、初期リスト530{yi}を生成して記憶する。近傍リストは、変数xijと同時に値を反転する対象となり得る他の変数xijまたは変数yiなどを記録するリストである。
【0141】
情報処理装置100は、初期リスト530と、変数間の関係度とに基づいて、1または複数の変数の値を反転することを試行しながら、0-1整数計画問題500の暫定解を更新していくことにより、0-1整数計画問題500の解を探索する。探索は、例えば、終了条件を満たすまで、一連の処理を繰り返し実施し、0-1整数計画問題500の暫定解を更新していくことにより実現される。探索は、具体的には、上記(step2)と、上記(step3)と、上記(step4)と、上記(step5)と、上記(step6)とによって実現される。
【0142】
これにより、情報処理装置100は、0-1整数計画問題500を解き易くすることができる。情報処理装置100は、例えば、0-1整数計画問題500の解を精度よく算出可能にすることができ、0-1整数計画問題500の解を効率的に算出可能にすることができる。情報処理装置100は、例えば、0-1整数計画問題500の解を算出する際にかかる所要時間の低減化を図ることができる。情報処理装置100は、具体的には、関係度のみを参照した場合には値を反転する対象とならない、1つの制約条件にのみ出現する変数を含むグループも、値を反転する対象に決定することができ、0-1整数計画問題500を解き易くすることができる。
【0143】
(情報処理装置100の動作の具体例)
次に、図6を用いて、情報処理装置100の動作の具体例について説明する。
【0144】
図6は、情報処理装置100の動作の具体例を示す説明図である。図6において、情報処理装置100は、0-1整数計画問題600を取得する。情報処理装置100は、前処理として、0-1整数計画問題600の暫定解に、複数の変数のそれぞれの値が0であることを表す0ベクトルを設定する。情報処理装置100は、前処理として、目的関数に、複数の制約条件のそれぞれの違反量に関する項を追加することにより、目的関数を拡張する。
【0145】
情報処理装置100は、1つの制約条件にのみ出現する変数yiと、当該制約条件とのペア610を特定する。情報処理装置100は、特定したペア610ごとに、当該ペア610に出現する変数に対する近傍リストとなる、初期リスト620を生成して記憶する。
【0146】
情報処理装置100は、例えば、ペア611の制約条件に出現する変数x2に対する近傍リストとなる初期リスト622に、ペア611の変数y1を追加する。情報処理装置100は、例えば、ペア611の制約条件に出現する変数x3に対する近傍リストとなる初期リスト623に、ペア611の変数y1を追加する。情報処理装置100は、例えば、ペア611の制約条件に出現する変数x5に対する近傍リストとなる初期リスト624に、ペア611の変数y1を追加する。
【0147】
情報処理装置100は、例えば、ペア612の制約条件に出現する変数x1に対する近傍リストとなる初期リスト621に、ペア612の変数y2を追加する。情報処理装置100は、例えば、ペア612の制約条件に出現する変数x3に対する近傍リストとなる初期リスト623に、ペア612の変数y2を追加する。情報処理装置100は、例えば、ペア612の制約条件に出現する変数x6に対する近傍リストとなる初期リスト625に、ペア612の変数y2を追加する。
【0148】
情報処理装置100は、初期リスト620と、変数間の関係度とに基づいて、1または複数の変数の値を反転することを試行しながら、0-1整数計画問題600の暫定解を更新していくことにより、0-1整数計画問題600の解を探索する。探索は、例えば、終了条件を満たすまで、一連の処理を繰り返し実施し、0-1整数計画問題600の暫定解を更新していくことにより実現される。探索は、具体的には、上記(step2)と、上記(step3)と、上記(step4)と、上記(step5)と、上記(step6)とによって実現される。
【0149】
情報処理装置100は、探索の際、上記(step4)と、上記(step5)とにおいては、選択した変数に対する近傍リストを更新することがある。情報処理装置100は、例えば、まず、初期リスト623を設定した、変数x3に対する近傍リストを取得する。情報処理装置100は、例えば、変数間の関係度に基づいて、変数x3との関係度が大きい方から規定の数の他の変数を、取得した近傍リストに追加することにより、近傍リストを更新する。更新後の近傍リストは、リスト630である。
【0150】
これにより、情報処理装置100は、0-1整数計画問題600を解き易くすることができる。情報処理装置100は、例えば、0-1整数計画問題600の解を精度よく算出可能にすることができ、0-1整数計画問題600の解を効率的に算出可能にすることができる。情報処理装置100は、例えば、0-1整数計画問題600の解を算出する際にかかる所要時間の低減化を図ることができる。情報処理装置100は、具体的には、関係度のみを参照した場合には値を反転する対象とならない、1つの制約条件にのみ出現する変数を含むグループも、値を反転する対象に決定することができ、0-1整数計画問題600を解き易くすることができる。
【0151】
(情報処理装置100の適用例)
次に、図7を用いて、情報処理装置100の適用例について説明する。
【0152】
図7は、情報処理装置100の適用例を示す説明図である。図7において、情報処理装置100は、いずれの荷物をいずれの経路を介して運搬するのかを決定する物流の実問題を表す0-1整数計画問題に対して適用される。0-1整数計画問題は、具体的には、各荷物i=1,…,nの配送経路を、設定された経路候補の集合Riの中から1つ選択することを前提とする。0-1整数計画問題は、具体的には、それぞれの経路候補に対して、運搬に使用する複数の運搬車が決定されていることを前提とする。
【0153】
ここで、各運搬車k=1,…,mに対して、運搬車kを使用して実現可能な、荷物i=1,…,nの経路候補の集合Sik⊆Riである。例えば、荷物iに対して、運搬車y1と、運搬車y2とを使用して、AからBに移動する経路候補xi1が存在する。例えば、荷物iに対して、運搬車y3と、運搬車y4と、運搬車y5とを使用して、AからBに移動する経路候補xi2が存在する。各運搬車k=1,…,mのコストは、ckである。
【0154】
0-1整数計画問題は、具体的には、使用する運搬車のコストの合計を最小化する各荷物の配送経路を選択することを目的とする。0-1整数計画問題は、具体的には、変数xij∈{0,1}(i=1,…,n;j∈Ri)と、変数yk∈{0,1}(k=1,…,m)とを含む。変数xijは、荷物iに対する経路候補jを採用する場合に1であり、荷物iに対する経路候補jを採用しない場合に0である。変数ykは、運搬車kを使用する場合に1であり、運搬車kを使用しない場合に0である。目的関数は、例えば、下記式(18)によって定義される。
【0155】
【数18】
【0156】
制約条件は、例えば、下記式(19)および下記式(20)によって定義される。下記式(19)は、各荷物iの配送経路が、経路候補の集合Riの中から1つ選択されることを表す。下記式(20)は、運搬車kを使用する場合に、運搬車kに対応する経路候補の集合が選択可能になることを表す。Mは、一定以上大きい正の定数である。
【0157】
【数19】
【0158】
【数20】
【0159】
情報処理装置100は、上記式(20)にのみ出現する変数ykが存在する場合にも、0-1整数計画問題の解を、精度よく効率的に算出することができる。このため、情報処理装置100は、使用する運搬車のコストの合計を最小化する各荷物の配送経路を、精度よく効率的に決定することができる。
【0160】
また、情報処理装置100は、例えば、コンテナなどに荷物を詰め込む際に、使用するコンテナの数を最小化する0-1整数計画問題に対して適用することができる。また、情報処理装置100は、例えば、物流の実問題以外に、製造分野などに適用することができる。情報処理装置100は、具体的には、木材または鉄板などの切り出しを表す0-1整数計画問題に対して適用することができる。
【0161】
(全体処理手順)
次に、図8を用いて、情報処理装置100が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0162】
図8は、全体処理手順の一例を示すフローチャートである。図8において、情報処理装置100は、0-1線形計画問題を取得する(ステップS801)。情報処理装置100は、図9に後述する初期化処理を実行する(ステップS802)。
【0163】
情報処理装置100は、終了条件を満たすか否かを判定する(ステップS803)。ここで、終了条件を満たす場合(ステップS803:Yes)、情報処理装置100は、ステップS811の処理に移行する。一方で、終了条件を満たさない場合(ステップS803:No)、情報処理装置100は、ステップS804の処理に移行する。
【0164】
ステップS804では、情報処理装置100は、図10に後述する1-flip近傍探索処理を実行する(ステップS804)。情報処理装置100は、暫定解を更新したか否かを判定する(ステップS805)。ここで、暫定解を更新した場合(ステップS805:Yes)、情報処理装置100は、ステップS803の処理に戻る。一方で、暫定解を更新していない場合(ステップS805:No)、情報処理装置100は、ステップS806の処理に移行する。
【0165】
ステップS806では、情報処理装置100は、図11に後述する2-flip近傍探索処理を実行する(ステップS806)。情報処理装置100は、暫定解を更新したか否かを判定する(ステップS807)。ここで、暫定解を更新した場合(ステップS807:Yes)、情報処理装置100は、ステップS803の処理に戻る。一方で、暫定解を更新していない場合(ステップS807:No)、情報処理装置100は、ステップS808の処理に移行する。
【0166】
ステップS808では、情報処理装置100は、図12に後述する(3,4)-flip近傍探索処理を実行する(ステップS808)。情報処理装置100は、暫定解を更新したか否かを判定する(ステップS809)。ここで、暫定解を更新した場合(ステップS809:Yes)、情報処理装置100は、ステップS803の処理に戻る。一方で、暫定解を更新していない場合(ステップS809:No)、情報処理装置100は、ステップS810の処理に移行する。
【0167】
ステップS810では、情報処理装置100は、ペナルティ係数を更新する(ステップS810)。情報処理装置100は、例えば、ペナルティ係数を初めて更新する際には、ペナルティ係数を、現在の値より大きい値に更新する。情報処理装置100は、例えば、ペナルティ係数を前回更新した後に、暫定解を一度でも更新していれば、ペナルティ係数を、現在の値より大きい値に更新する。情報処理装置100は、例えば、ペナルティ係数を前回更新した後に、暫定解を一度も更新していなければ、ペナルティ係数を、現在の値より小さい値に更新する。情報処理装置100は、ステップS803の処理に戻る。
【0168】
ステップS811では、情報処理装置100は、0-1整数計画問題の解を出力する(ステップS811)。情報処理装置100は、全体処理を終了する。
【0169】
(初期化処理手順)
次に、図9を用いて、情報処理装置100が実行する、初期化処理手順の一例について説明する。初期化処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0170】
図9は、初期化処理手順の一例を示すフローチャートである。図9において、情報処理装置100は、1つの制約条件にのみ出現する変数と、当該制約条件とのペアを抽出する(ステップS901)。情報処理装置100は、抽出したペアのそれぞれの制約条件に出現する変数のそれぞれに対して、近傍リストに設定する初期リストを生成する(ステップS902)。情報処理装置100は、初期化処理を終了する。
【0171】
(1-flip近傍探索処理手順)
次に、図10を用いて、情報処理装置100が実行する、1-flip近傍探索処理手順の一例について説明する。1-flip近傍探索処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0172】
図10は、1-flip近傍探索処理手順の一例を示すフローチャートである。図10において、情報処理装置100は、k番目の変数xkを選択する(ステップS1001)。情報処理装置100は、0-1整数計画問題の暫定解から、選択した変数xkの値を反転した解候補を生成する(ステップS1002)。
【0173】
情報処理装置100は、目的関数に基づいて、暫定解より、生成した解候補の方が、目的関数の値を適切な方向に近付けるか否かを判定する(ステップS1003)。ここで、暫定解より、生成した解候補の方が、目的関数の値を適切な方向に近付ける場合(ステップS1003:Yes)、情報処理装置100は、ステップS1006の処理に移行する。一方で、生成した解候補より、暫定解の方が、目的関数の値を適切な方向に近付ける場合(ステップS1003:No)、情報処理装置100は、ステップS1004の処理に移行する。
【0174】
ステップS1004では、情報処理装置100は、k>Nであるか否かを判定する(ステップS1004)。ここで、k>Nである場合(ステップS1004:Yes)、情報処理装置100は、1-flip近傍探索処理を終了する。一方で、k>Nではない場合(ステップS1004:No)、情報処理装置100は、kをインクリメントし(ステップS1005)、ステップS1001の処理に戻る。
【0175】
ステップS1006では、情報処理装置100は、暫定解を、生成した解候補で更新する(ステップS1006)。情報処理装置100は、1-flip近傍探索処理を終了する。
【0176】
(2-flip近傍探索処理手順)
次に、図11を用いて、情報処理装置100が実行する、2-flip近傍探索処理手順の一例について説明する。2-flip近傍探索処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0177】
図11は、2-flip近傍探索処理手順の一例を示すフローチャートである。図11において、情報処理装置100は、k番目の変数xkを選択する(ステップS1101)。情報処理装置100は、変数xkに対する近傍リストが、初期リストのままであれば、図13に後述する生成処理を実行し、変数xkに対する近傍リストを更新する(ステップS1102)。
【0178】
情報処理装置100は、変数xkに対する近傍リストに基づいて、変数xkに対応付けられた他の変数のそれぞれに対して、変数xkと当該他の変数とを含むグループを特定する(ステップS1103)。情報処理装置100は、特定したグループのそれぞれに対して、0-1整数計画問題の暫定解から、当該グループのそれぞれの変数の値を反転した解候補を生成する(ステップS1104)。
【0179】
情報処理装置100は、目的関数に基づいて、生成した解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの解候補が存在するか否かを判定する(ステップS1105)。ここで、いずれかの解候補が存在する場合(ステップS1105:Yes)、情報処理装置100は、ステップS1108の処理に移行する。一方で、いずれかの解候補が存在しない場合(ステップS1105:No)、情報処理装置100は、ステップS1106の処理に移行する。
【0180】
ステップS1106では、情報処理装置100は、k>Nであるか否かを判定する(ステップS1106)。ここで、k>Nである場合(ステップS1106:Yes)、情報処理装置100は、2-flip近傍探索処理を終了する。一方で、k>Nではない場合(ステップS1106:No)、情報処理装置100は、kをインクリメントし(ステップS1107)、ステップS1101の処理に戻る。
【0181】
ステップS1108では、情報処理装置100は、暫定解を、生成した解候補のうち、目的関数の値を最も適切な方向に近付けるいずれかの解候補で更新する(ステップS1108)。情報処理装置100は、2-flip近傍探索処理を終了する。
【0182】
((3,4)-flip近傍探索処理手順)
次に、図12を用いて、情報処理装置100が実行する、(3,4)-flip近傍探索処理手順の一例について説明する。(3,4)-flip近傍探索処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0183】
図12は、(3,4)-flip近傍探索処理手順の一例を示すフローチャートである。図12において、情報処理装置100は、k番目の変数xkを選択する(ステップS1201)。情報処理装置100は、変数xkに対する近傍リストが、初期リストのままであれば、図70に後述する生成処理を実行し、変数xkに対する近傍リストを更新する(ステップS1202)。
【0184】
情報処理装置100は、変数xkに対する近傍リストに基づいて、変数xkに対応付けられた、2つまたは3つの他の変数で形成可能な組み合わせのそれぞれに対して、変数xkと当該組み合わせとを含むグループを特定する(ステップS1203)。情報処理装置100は、特定したグループのそれぞれに対して、0-1整数計画問題の暫定解から、当該グループのそれぞれの変数の値を反転した解候補を生成する(ステップS1204)。
【0185】
情報処理装置100は、目的関数に基づいて、生成した解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの解候補が存在するか否かを判定する(ステップS1205)。ここで、いずれかの解候補が存在する場合(ステップS1205:Yes)、情報処理装置100は、ステップS1208の処理に移行する。一方で、いずれかの解候補が存在しない場合(ステップS1205:No)、情報処理装置100は、ステップS1206の処理に移行する。
【0186】
ステップS1206では、情報処理装置100は、k>Nであるか否かを判定する(ステップS1206)。ここで、k>Nである場合(ステップS1206:Yes)、情報処理装置100は、(3,4)-flip近傍探索処理を終了する。一方で、k>Nではない場合(ステップS1206:No)、情報処理装置100は、kをインクリメントし(ステップS1207)、ステップS1201の処理に戻る。
【0187】
ステップS1208では、情報処理装置100は、暫定解を、生成した解候補のうち、目的関数の値を最も適切な方向に近付けるいずれかの解候補で更新する(ステップS1208)。情報処理装置100は、(3,4)-flip近傍探索処理を終了する。
【0188】
(更新処理手順)
次に、図13を用いて、情報処理装置100が実行する、更新処理手順の一例について説明する。更新処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0189】
図13は、更新処理手順の一例を示すフローチャートである。図13において、情報処理装置100は、変数xkに対する近傍リストを取得する(ステップS1301)。情報処理装置100は、複数の制約条件に基づいて、変数xkと他の変数のそれぞれとの関係度を算出する(ステップS1302)。
【0190】
情報処理装置100は、算出した関係度に基づいて、変数xkに対応付ける、規定の数までの他の変数を決定し、変数xkに対する近傍リストを更新する(ステップS1303)。情報処理装置100は、更新処理を終了する。
【0191】
ここで、情報処理装置100は、図8図13の各フローチャートの一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS806,S808の処理の順序は入れ替え可能である。また、情報処理装置100は、図8図13の各フローチャートの一部ステップの処理を省略してもよい。例えば、ステップS808の処理は省略可能である。
【0192】
以上説明したように、情報処理装置100によれば、それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ複数の変数の少なくともいずれかを含む複数の制約条件を取得することができる。情報処理装置100によれば、複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する所定の数の制約条件とのペアを特定することができる。情報処理装置100によれば、特定したペアごとに、ペアの変数と、ペアの所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部400に登録することができる。情報処理装置100によれば、複数の変数における変数間の関係度に基づいて、複数の変数の少なくともいずれかの変数と、いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、記憶部400に登録することができる。情報処理装置100によれば、記憶部400を参照して、第1対応情報と第2対応情報とに基づいて、複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、0-1整数計画問題の解を探索することができる。これにより、情報処理装置100は、0-1整数計画問題の解を精度よく効率的に探索することができる。
【0193】
情報処理装置100によれば、所定の数に1を設定することができる。これにより、情報処理装置100は、1つの制約条件にのみ出現する変数が存在する場合にも、0-1整数計画問題の解を精度よく効率的に探索することができる。
【0194】
情報処理装置100によれば、一連の処理を、終了条件を満たすまで繰り返し実施することにより、0-1整数計画問題の解を探索することができる。一連の処理によれば、複数の変数のうち、対応付けられたいずれかの2以上の変数をそれぞれ含む1以上のグループを決定することができる。一連の処理によれば、決定した1以上のグループのそれぞれに関して、0-1整数計画問題の暫定解から、当該グループの値を反転した、0-1整数計画問題の解候補を特定することができる。一連の処理によれば、特定した解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの解候補が存在する場合に、暫定解を、いずれかの解候補で更新することができる。これにより、情報処理装置100は、暫定解を更新していくことにより、最適解に近付けることができ、0-1整数計画問題の適切な解を算出することができる。
【0195】
一連の処理によれば、第1処理を実施することができる。第1処理によれば、複数の変数のそれぞれに関して、0-1整数計画問題の暫定解から、当該変数の値を反転した、0-1整数計画問題の第1解候補を特定することができる。第1処理によれば、特定した第1解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第1解候補が存在する場合に、暫定解を、いずれかの第1解候補で更新することができる。これにより、情報処理装置100は、暫定解を更新していくことにより、最適解に近付けることができ、0-1整数計画問題の適切な解を算出することができる。
【0196】
一連の処理によれば、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第1解候補が存在しない場合に、第2処理を実施することができる。第2処理によれば、複数の変数のうち、対応付けられたいずれかの2つの変数をそれぞれ含む1以上のグループを決定することができる。第2処理によれば、決定した1以上のグループのそれぞれに関して、暫定解から、当該グループの値を反転した、0-1整数計画問題の第2解候補を特定することができる。第2処理によれば、特定した第2解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第2解候補が存在する場合に、暫定解を、いずれかの第2解候補で更新することができる。これにより、情報処理装置100は、暫定解を更新していくことにより、最適解に近付けることができ、0-1整数計画問題の適切な解を算出することができる。
【0197】
一連の処理によれば、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第2解候補が存在しない場合に、第3処理を実施することができる。第3処理によれば、複数の変数のうち、対応付けられたいずれかの3つまたは4つの変数をそれぞれ含む1以上のグループを決定することができる。第3処理によれば、決定した1以上のグループのそれぞれに関して、暫定解から、当該グループの値を反転した、0-1整数計画問題の第3解候補を特定することができる。第3処理によれば、特定した第3解候補のうち、暫定解よりも、目的関数の値を適切な方向に近付けるいずれかの第3解候補が存在する場合に、暫定解を、いずれかの第3解候補で更新することができる。これにより、情報処理装置100は、暫定解を更新していくことにより、最適解に近付けることができ、0-1整数計画問題の適切な解を算出することができる。
【0198】
情報処理装置100によれば、複数の制約条件のそれぞれの違反量の低減化を目的とするよう、複数の制約条件のそれぞれの違反量に、係数となるパラメータを乗算した積を含む目的関数を取得することができる。情報処理装置100によれば、複数の制約条件の少なくともいずれかに乗算する係数となるパラメータを、現在の値よりも大きい値に更新してから、一連の処理を再び実施することができる。これにより、情報処理装置100は、制約条件を違反しないよう暫定解を更新することができ、0-1整数計画問題の解を精度よく探索可能にすることができる。
【0199】
情報処理装置100によれば、複数の制約条件の少なくともいずれかに乗算する係数となるパラメータを、現在の値よりも小さい値に更新してから、一連の処理を再び実施することができる。これにより、情報処理装置100は、制約条件を違反する暫定解を経由し、0-1整数計画問題の解を効率よく探索可能にすることができる。
【0200】
情報処理装置100によれば、終了条件に、一連の処理を最初に実施してからの経過時間が、所定の長さを超えたことを採用することができる。これにより、情報処理装置100は、一連の処理を繰り返し実施することを、適切なタイミングで停止することができ、処理量の増大化を抑制することができる。
【0201】
情報処理装置100によれば、終了条件に、一連の処理を所定の回数実施したことを採用することができる。これにより、情報処理装置100は、一連の処理を繰り返し実施することを、適切なタイミングで停止することができ、処理量の増大化を抑制することができる。
【0202】
情報処理装置100によれば、終了条件に、終了指示の入力を受け付けたことを採用することができる。これにより、情報処理装置100は、一連の処理を繰り返し実施することを、適切なタイミングで停止することができ、処理量の増大化を抑制することができる。
【0203】
情報処理装置100によれば、終了条件に、暫定解を連続して更新しない回数が、所定の閾値を超えたことを採用することができる。これにより、情報処理装置100は、一連の処理を繰り返し実施することを、適切なタイミングで停止することができ、処理量の増大化を抑制することができる。
【0204】
情報処理装置100によれば、終了条件に、暫定解に対する目的関数の値が、所定の値になったことを採用することができる。これにより、情報処理装置100は、一連の処理を繰り返し実施することを、適切なタイミングで停止することができ、処理量の増大化を抑制することができる。
【0205】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0206】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0207】
(付記1)それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ前記複数の変数の少なくともいずれかを含む複数の制約条件を取得し、
前記複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する前記所定の数の制約条件とのペアを特定し、
特定した前記ペアごとに、前記ペアの変数と、前記ペアの前記所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録し、
前記複数の変数における変数間の関係度に基づいて、前記複数の変数の少なくともいずれかの変数と、前記いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、前記記憶部に登録し、
前記記憶部を参照して、前記第1対応情報と前記第2対応情報とに基づいて、前記複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、前記0-1整数計画問題の解を探索する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0208】
(付記2)前記所定の数は、1である、ことを特徴とする付記1に記載の情報処理プログラム。
【0209】
(付記3)前記0-1整数計画問題の解は、前記複数の変数のそれぞれの値の組み合わせであって、
前記探索する処理は、
前記複数の変数のうち、対応付けられたいずれかの2以上の変数をそれぞれ含む1以上のグループを決定し、決定した前記1以上のグループのそれぞれに関して、前記0-1整数計画問題の暫定解から、当該グループの値を反転した、前記0-1整数計画問題の解候補を特定し、前記0-1整数計画問題を形成する目的関数に基づいて、特定した前記解候補のうち、前記暫定解よりも、前記目的関数の値を適切な方向に近付けるいずれかの解候補が存在する場合に、前記暫定解を、前記いずれかの解候補で更新する、という一連の処理を、終了条件を満たすまで繰り返し実施することにより、前記0-1整数計画問題の解を探索する、ことを特徴とする付記2に記載の情報処理プログラム。
【0210】
(付記4)前記一連の処理は、
前記複数の変数のそれぞれに関して、前記0-1整数計画問題の暫定解から、当該変数の値を反転した、前記0-1整数計画問題の第1解候補を特定し、前記目的関数に基づいて、特定した前記第1解候補のうち、前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第1解候補が存在する場合に、前記暫定解を、前記いずれかの第1解候補で更新する、第1処理を含む、ことを特徴とする付記3に記載の情報処理プログラム。
【0211】
(付記5)前記一連の処理は、
前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第1解候補が存在しない場合に、前記複数の変数のうち、対応付けられたいずれかの2つの変数をそれぞれ含む1以上のグループを決定し、決定した前記1以上のグループのそれぞれに関して、前記暫定解から、当該グループの値を反転した、前記0-1整数計画問題の第2解候補を特定し、前記目的関数に基づいて、特定した前記第2解候補のうち、前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第2解候補が存在する場合に、前記暫定解を、前記いずれかの第2解候補で更新する、第2処理を含む、ことを特徴とする付記4に記載の情報処理プログラム。
【0212】
(付記6)前記一連の処理は、
前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第2解候補が存在しない場合に、前記複数の変数のうち、対応付けられたいずれかの3つまたは4つの変数をそれぞれ含む1以上のグループを決定し、決定した前記1以上のグループのそれぞれに関して、前記暫定解から、当該グループの値を反転した、前記0-1整数計画問題の第3解候補を特定し、前記目的関数に基づいて、特定した前記第3解候補のうち、前記暫定解よりも、前記目的関数の値を前記適切な方向に近付けるいずれかの第3解候補が存在する場合に、前記暫定解を、前記いずれかの第3解候補で更新する、第3処理を含む、ことを特徴とする付記5に記載の情報処理プログラム。
【0213】
(付記7)前記目的関数は、前記複数の制約条件のそれぞれの違反量の低減化を目的とするよう、前記複数の制約条件のそれぞれの違反量に、係数となるパラメータを乗算した積を含み、
前記探索する処理は、
前記係数となるパラメータを前回更新した後から、前記一連の処理を今回実施する前までの間に、前記暫定解を更新し、前記一連の処理を今回実施した際に、前記暫定解を更新しない場合、前記複数の制約条件の少なくともいずれかに乗算する前記係数となるパラメータを、現在の値よりも大きい値に更新してから、前記一連の処理を再び実施する、ことを特徴とする付記5または6に記載の情報処理プログラム。
【0214】
(付記8)前記探索する処理は、
前記係数となるパラメータを前回更新した後から、前記一連の処理を今回実施する前までの間に、前記暫定解を更新せず、前記一連の処理を今回実施した際にも、前記暫定解を更新しない場合、前記複数の制約条件の少なくともいずれかに乗算する前記係数となるパラメータを、現在の値よりも小さい値に更新してから、前記一連の処理を再び実施する、ことを特徴とする付記7に記載の情報処理プログラム。
【0215】
(付記9)前記終了条件は、前記一連の処理を最初に実施してからの経過時間が、所定の長さを超えたことである、ことを特徴とする付記3に記載の情報処理プログラム。
【0216】
(付記10)前記終了条件は、前記一連の処理を所定の回数実施したことである、ことを特徴とする付記3に記載の情報処理プログラム。
【0217】
(付記11)前記終了条件は、終了指示の入力を受け付けたことである、ことを特徴とする付記3に記載の情報処理プログラム。
【0218】
(付記12)前記終了条件は、前記暫定解を連続して更新しない回数が、所定の閾値を超えたことである、ことを特徴とする付記3に記載の情報処理プログラム。
【0219】
(付記13)前記終了条件は、前記暫定解に対する前記目的関数の値が、所定の値になったことである、ことを特徴とする付記3に記載の情報処理プログラム。
【0220】
(付記14)それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ前記複数の変数の少なくともいずれかを含む複数の制約条件を取得し、
前記複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する前記所定の数の制約条件とのペアを特定し、
特定した前記ペアごとに、前記ペアの変数と、前記ペアの前記所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録し、
前記複数の変数における変数間の関係度に基づいて、前記複数の変数の少なくともいずれかの変数と、前記いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、前記記憶部に登録し、
前記記憶部を参照して、前記第1対応情報と前記第2対応情報とに基づいて、前記複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、前記0-1整数計画問題の解を探索する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0221】
(付記15)それぞれ0または1の値を取る複数の変数を含む0-1整数計画問題を形成する、それぞれ前記複数の変数の少なくともいずれかを含む複数の制約条件を取得し、
前記複数の制約条件のうち、制約条件の総数未満である所定の数の制約条件にのみ出現する変数と、当該変数が出現する前記所定の数の制約条件とのペアを特定し、
特定した前記ペアごとに、前記ペアの変数と、前記ペアの前記所定の数の制約条件の少なくともいずれかに出現する他の変数とを対応付ける第1対応情報を、記憶部に登録し、
前記複数の変数における変数間の関係度に基づいて、前記複数の変数の少なくともいずれかの変数と、前記いずれかの変数との関係度が一定以上である他の変数とを対応付ける第2対応情報を、前記記憶部に登録し、
前記記憶部を参照して、前記第1対応情報と前記第2対応情報とに基づいて、前記複数の変数のうち、対応付けられたいずれかの2以上の変数のグループを、値を反転する対象に決定することにより、前記0-1整数計画問題の解を探索する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0222】
100 情報処理装置
110 0-1整数計画問題
120~122,520,610~612 ペア
130,140 表
150,400 記憶部
200 情報処理システム
201 クライアント装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
401 取得部
402 第1登録部
403 第2登録部
404 探索部
405 出力部
500,600 0-1整数計画問題
510 情報
530,620~625 初期リスト
630 リスト
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13