(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-09
(45)【発行日】2024-05-17
(54)【発明の名称】情報処理システム、情報処理方法及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240510BHJP
G05B 19/418 20060101ALI20240510BHJP
G06N 10/00 20220101ALI20240510BHJP
【FI】
G06N99/00 180
G05B19/418 Z
G06N10/00
(21)【出願番号】P 2020090923
(22)【出願日】2020-05-25
【審査請求日】2023-04-27
(73)【特許権者】
【識別番号】520184088
【氏名又は名称】株式会社シグマアイ
(74)【代理人】
【識別番号】100174137
【氏名又は名称】酒谷 誠一
(72)【発明者】
【氏名】大関 真之
【審査官】藤原 敬利
(56)【参考文献】
【文献】特開2019-159637(JP,A)
【文献】特開平09-231197(JP,A)
【文献】特開平07-192051(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/418
G06N 3/00 -99/00
(57)【特許請求の範囲】
【請求項1】
複数の対象物について、ある対象物の一部もしくは全部を別の順番に挿入する処理、ある対象物の一部もしくは全部を別の対象物の一部もしくは全部と入れ替える処理、対象物を別の対象物と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する手段と、
アニーリングマシンがアニーリングマシン用のコスト関数に基づいて決定した、前記対象物の候補それぞれについて処理を実行するか否かの情報を、当該アニーリングマシンから取得する手段と、
前記対象物の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、対象物の候補それぞれについて処理を実行するか否かを決定する手段と、
を備え、
前記入力する手段と、前記取得する手段と、前記決定する手段の処理を繰り返す
情報処理システム。
【請求項2】
前記アニーリングマシンに入力する手段は、複数種類の製品について複数の生産ラインで生産する場合に、一つの生産ラインのタイムスロットをカットして別の生産ラインに挿入する処理、一つの生産ラインのある製品のタイムスロットの一部もしくは全部を別の生産ラインのタイムスロットに挿入する処理、一つの生産ラインの製品のタイムスロットの一部もしくは全部を別の生産ラインの製品のタイムスロットの一部もしくは全部と入れ替える処理、一つの生産ラインの各製品のタイムスロットと別の生産ラインの各製品のタイムスロットと入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する
請求項1に記載の情報処理システム。
【請求項3】
前記選択された処理の実行の際には、前の工程での処理が終了しているという制約を満たすタイムスロットに対して実行される
請求項2に記載の情報処理システム。
【請求項4】
前記目的のコスト関数には、生産ライン毎の終了時刻の差が小さいほど評価が高くなる項が含まれる
請求項2または3に記載の情報処理システム。
【請求項5】
前記アニーリングマシンに入力する手段は、複数の都市について、都市を別の順番に挿入する処理、都市を別の都市と入れ替える処理、都市を別の都市と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する都市の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する
請求項1に記載の情報処理システム。
【請求項6】
前記アニーリングマシンに入力する手段は、性質の異なる複数の宿泊施設群について、宿泊施設群の一部もしくは全部を別の順番に挿入する処理、ある性質の宿泊施設群の一部もしくは全部を別の性質の宿泊施設群の一部もしくは全部と入れ替える処理、ある性質の宿泊施設群を別の性質の宿泊施設群と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する宿泊施設の候補それぞれと、アニーリングマシン用のコスト関数を、前記アニーリングマシンに入力する
請求項1に記載の情報処理システム。
【請求項7】
前記決定する手段は、目的のコスト関数が小さくなることを目的としている場合当該コスト関数が低減すれば前記アニーリングマシンの出力を採用し、該コスト関数が低減しなければ前記アニーリングマシンの出力を採用せず、一方、目的のコスト関数が大きくなることを目的としている場合当該コスト関数が増大すれば前記アニーリングマシンの出力を採用し、該コスト関数が増大しなければ前記アニーリングマシンの出力を採用しない
請求項1から4のいずれか一項に記載の情報処理システム。
【請求項8】
入力する手段が、複数の対象物について、ある対象物の一部もしくは全部を別の順番に挿入する処理、ある対象物の一部もしくは全部を別の対象物の一部もしくは全部と入れ替える処理、対象物を別の対象物と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する工程と、
取得する手段が、アニーリングマシンがアニーリングマシン用のコスト関数に基づいて決定した、前記対象物の候補それぞれについて処理を実行するか否かの情報を、当該アニーリングマシンから取得する工程と、
決定する手段が、前記対象物の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、対象物の候補それぞれについて処理を実行するか否かを決定する工程と、
を有し、
前記入力する工程と、前記取得する工程と、前記決定する工程の処理を繰り返す
情報処理方法。
【請求項9】
コンピュータを、
複数の対象物について、ある対象物の一部もしくは全部を別の順番に挿入する処理、ある対象物の一部もしくは全部を別の対象物の一部もしくは全部と入れ替える処理、対象物を別の対象物と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する手段と、
アニーリングマシンがアニーリングマシン用のコスト関数に基づいて決定した、前記対象物の候補それぞれについて処理を実行するか否かの情報を、当該アニーリングマシンから取得する手段と、
前記対象物の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、対象物の候補それぞれについて処理を実行するか否かを決定する手段と、
として機能させるためのプログラムであって、
前記入力する手段と、前記取得する手段と、前記決定する手段の処理を繰り返すプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
量子アニーリングは、組合せ最適化処理を高速かつ高精度に実行すると期待されている計算技術として知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、量子アニーリングマシンは、二次関数までの問題までしか扱えないという制限がある。制約条件を適切に利用することにより、非線形変換を含む一般の関数などの複雑なコスト関数を利用することができる可能性があったが、上記の制限で、その可能性の実現性には疑問符が残されていた。
【0005】
本発明は、上記問題に鑑みてなされたものであり、量子アニーリングマシンを用いた解探索において複雑なコスト関数を利用可能にする情報処理システム、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様に係る情報処理システムは、複数の対象物について、ある対象物の一部もしくは全部を別の順番に挿入する処理、ある対象物の一部もしくは全部を別の対象物の一部もしくは全部と入れ替える処理、対象物を別の対象物と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する手段と、アニーリングマシンがアニーリングマシン用のコスト関数に基づいて決定した、前記対象物の候補それぞれについて処理を実行するか否かの情報を、当該アニーリングマシンから取得する手段と、前記対象物の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、対象物の候補それぞれについて処理を実行するか否かを決定する手段と、を備え、前記入力する手段と、前記取得する手段と、前記決定する手段の処理を繰り返す。
【0007】
この構成によれば、目的のコスト関数とアニーリングマシン用のコスト関数を分けることにより、アニーリングマシン用のコスト関数は二次関数までの利用としつつ、目的のコスト関数を、三次以上の関数など複雑なコスト関数を利用することができる。また、情報処理システムが、制約条件を満たすタイムスロットについて処理を行うようにすることで、アニーリングマシンは制約条件を気にすることがなく処理を実行できる。
できる。
【0008】
本発明の第2の態様に係る情報処理システムは、第1の態様に係る情報処理システムであって、前記アニーリングマシンに入力する手段は、複数種類の製品について複数の生産ラインで生産する場合に、一つの生産ラインのタイムスロットをカットして別の生産ラインに挿入する処理、一つの生産ラインのある製品のタイムスロットの一部もしくは全部を別の生産ラインのタイムスロットに挿入する処理、一つの生産ラインの製品のタイムスロットの一部もしくは全部を別の生産ラインの製品のタイムスロットの一部もしくは全部と入れ替える処理、一つの生産ラインの各製品のタイムスロットと別の生産ラインの各製品のタイムスロットと入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコストを、アニーリングマシンに入力する。
【0009】
この構成によれば、複数種類の製品について複数の生産ラインで生産する場合の時間スケジュールを、より短時間で決定することができる。
【0010】
本発明の第3の態様に係る情報処理システムは、第2の態様に係る情報処理システムであって、前記選択された処理の実行の際には、前の工程での処理が終了しているという制約を満たすタイムスロットに対して実行される。
【0011】
この構成によれば、一つの製品について前の工程が終わってから、次の工程が実施されるという前後関係の制約が保証される。
【0012】
本発明の第4の態様に係る情報処理システムは、第2または3の態様に係る情報処理システムであって、前記目的のコスト関数には、生産ライン毎の終了時刻の差が小さいほど評価が高くなる項が含まれる。
【0013】
この構成によれば、生産ライン毎の終了時刻の差を縮めることができる。
【0014】
本発明の第5の態様に係る情報処理システムは、第1の態様に係る情報処理システムであって、前記アニーリングマシンに入力する手段は、複数の都市について、都市を別の順番に挿入する処理、都市を別の都市と入れ替える処理、都市を別の都市と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する都市の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する。
【0015】
この構成によれば、巡回セールスマン問題を、より短時間で解くことができる。
【0016】
本発明の第6の態様に係る情報処理システムは、第1の態様に係る情報処理システムであって、前記アニーリングマシンに入力する手段は、性質の異なる複数の宿泊施設群について、宿泊施設群の一部もしくは全部を別の順番に挿入する処理、ある性質の宿泊施設群の一部もしくは全部を別の性質の宿泊施設群の一部もしくは全部と入れ替える処理、ある性質の宿泊施設群を別の性質の宿泊施設群と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する宿泊施設の候補それぞれと、アニーリングマシン用のコスト関数を、前記アニーリングマシンに入力する。
【0017】
この構成によれば、複数の宿泊施設群を混在した状態になるように複数の宿泊施設群の表示順を決定する際に、より短時間で決定することができる。
【0018】
本発明の第7の態様に係る情報処理システムは、第1から4のいずれかの態様に係る情報処理システムであって、前記決定する手段は、目的のコスト関数が小さくなることを目的としている場合当該コスト関数が低減すれば前記アニーリングマシンの出力を採用し、該コスト関数が低減しなければ前記アニーリングマシンの出力を採用せず、一方、目的のコスト関数が大きくなることを目的としている場合当該コスト関数が増大すれば前記アニーリングマシンの出力を採用し、該コスト関数が増大しなければ前記アニーリングマシンの出力を採用しない。
【0019】
この構成によれば、アニーリングマシンの出力を採用、不採用を決定することができる。
【0020】
本発明の第8の態様に係る情報処理方法は、複数の対象物について、ある対象物の一部もしくは全部を別の順番に挿入する処理、ある対象物の一部もしくは全部を別の対象物の一部もしくは全部と入れ替える処理、対象物を別の対象物と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する工程と、アニーリングマシンがアニーリングマシン用のコスト関数に基づいて決定した、前記対象物の候補それぞれについて処理を実行するか否かの情報を、当該アニーリングマシンから取得する工程と、前記対象物の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、対象物の候補それぞれについて処理を実行するか否かを決定する工程と、を有し、前記入力する工程と、前記取得する工程と、前記決定する工程の処理を繰り返す情報処理方法である。
【0021】
この構成によれば、目的のコスト関数とアニーリングマシン用のコスト関数を分けることにより、アニーリングマシン用のコスト関数は二次関数までの利用としつつ、目的のコスト関数を、三次以上の関数など複雑なコストを利用することができる。また、制約条件を満たすタイムスロットについて処理を行うようにすることで、アニーリングマシンは制約条件を気にすることがなく処理を実行できる。
【0022】
本発明の第9の態様に係るプログラムは、コンピュータを、複数の対象物について、ある対象物の一部もしくは全部を別の順番に挿入する処理、ある対象物の一部もしくは全部を別の対象物の一部もしくは全部と入れ替える処理、対象物を別の対象物と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する手段と、アニーリングマシンがアニーリングマシン用のコスト関数に基づいて決定した、前記対象物の候補それぞれについて処理を実行するか否かの情報を、当該アニーリングマシンから取得する手段と、前記対象物の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、対象物の候補それぞれについて処理を実行するか否かを決定する手段と、として機能させるためのプログラムであって、前記入力する手段と、前記取得する手段と、前記決定する手段の処理を繰り返すプログラムである。
【0023】
この構成によれば、目的のコスト関数とアニーリングマシン用のコスト関数を分けることにより、アニーリングマシン用のコスト関数は二次関数までの利用としつつ、目的のコスト関数を、三次以上の関数など複雑なコスト関数を利用することができる。また、制約条件を満たすタイムスロットについて処理を行うようにすることで、アニーリングマシンは制約条件を気にすることがなく処理を実行できる。
【発明の効果】
【0024】
本発明の一態様によれば、目的のコスト関数とアニーリングマシン用のコスト関数を分けることにより、アニーリングマシン用のコスト関数は二次関数までの利用としつつ、目的のコスト関数を、三次以上の関数など複雑なコスト関数を利用することができる。また、制約条件を満たすタイムスロットについて処理を行うようにすることで、アニーリングマシンは制約条件を気にすることがなく処理を実行できる。
【図面の簡単な説明】
【0025】
【
図1】第1の実施形態に係る情報処理システムの概略構成図である。
【
図2】第1の実施形態に係る端末の概略構成図である。
【
図3】第1の実施形態に係る一つの工程を説明するための模式図である。
【
図4】一つの生産ラインの最後のタイムスロットをカットして別の生産ラインに挿入する処理を説明するための図である。
【
図5】一つの生産ラインのある製品のタイムスロットの一部もしくは全部を別の生産ラインのタイムスロットに挿入する処理を説明するための図である。
【
図6】一つの生産ラインの製品のタイムスロットの一部もしくは全部を別の生産ラインの製品のタイムスロットの一部もしくは全部と入れ替える処理を説明するための図である。
【
図7】一つの生産ラインの各製品のタイムスロットと別の生産ラインの各製品のタイムスロットと入れ替え及び/または順番の並び替えを説明するための図である。
【
図8】第1の実施形態に係る処理に流れの一例を示すフローチャートである。
【
図9】第1の実施形態において、2つの工程を実行した場合の処理結果の一例である。
【
図10】2つの工程を実行した場合の目的のコスト関数の時間経過を示すグラフである。
【
図11】第1の実施形態において、4つの工程を実行した場合の処理結果の一例である。
【
図12】4つの工程を実行した場合の目的のコスト関数の時間経過を示すグラフである。
【
図13】第1の実施形態において、6つの工程を実行した場合の処理結果の一例である。
【
図14】6つの工程を実行した場合の目的のコスト関数の時間経過を示すグラフである。
【
図15】第1の実施形態においてプロセス数と計算時間の関係を示すグラフである。
【
図16】第2の実施形態において初期状態の巡回路を表す模式図である。
【
図17】第2の実施形態において計算処理後の巡回路を表す模式図である。
【
図18】第2の実施形態に係る処理に流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0026】
以下、各実施形態について、図面を参照しながら説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
【0027】
<第1の実施形態>
上記、課題に加えて、第1の実施形態では、量子アニーリングマシンは制約条件を持つような組合せ最適化問題を必ずしも適切に解くことができなかったという課題を解決する。
【0028】
第1の実施形態では、複数種類の製品について複数の生産ラインで生産する場合に、生産スケジュールの最適化を目的とする。第1の実施形態では、工場の複数の製造ラインにおいて、複数の種類の製品それぞれを一つ以上生産することを想定する。また一例として本実施形態の生産には複数の工程があり、前の工程が終わらなければ次の工程に進めないとい制約がある。
【0029】
図1は、第1の実施形態に係る情報処理システムの概略構成図である。
図1に示すように、情報処理システムSは一例として、デジタルコンピュータの一例である端末1を備える。端末1は、通信回路網CNを介してアニーリングマシン2に接続されており、アニーリングマシン2と通信可能である。ここでは一例として情報処理システムSは一台の端末1で構成される例を示すが、これに限定されるものではなく、複数の情報処理装置で構成されてもよい。
【0030】
端末1は、ユーザが使用する端末装置であり、例えば、多機能携帯電話(いわゆるスマートフォン)などの携帯電話、タブレット、ノートパソコン、またはデスクトップパソコンなどである。端末1には例えば、本実施形態に係るプログラムを含むアプリケーションがインストールされており、このアプリケーションを立ち上げ、端末1はユーザの操作に応じて処理を実行する。以下、本実施形態では、端末1は、一例としてデスクトップパソコンであるものとして説明する。
【0031】
アニーリングマシン2は、量子アニーリングを実行するハードウェアである。アニーリングマシン2は例えば、D-Waveであるが、これに限ったものではない。
【0032】
図2は、第1の実施形態に係る端末の概略構成図である。
図2に示すように、端末1は例えば、入力インタフェース11と、通信回路12と、ストレージ13と、メモリ14と、ディスプレイ15と、プロセッサ16とを備える。
入力インタフェース11は、ユーザからの入力を受け付け、受け付けた入力に応じた入力信号をプロセッサ16へ出力する。
通信回路12は、通信回路網CNに接続されて、通信回路網CNに接続されているアニーリングマシン2と通信する。この通信は有線であっても無線であってもよい。
【0033】
ストレージ13には、プロセッサ16が読み出して実行するためのアプリケーションのプログラム及び各種のデータが格納されている。このアプリケーションは、サーバもしくはクラウド経由でダウンロードされてインストールされたものであってもよい。
メモリ14は、データ及びプログラムを一時的に保持する。メモリ14は、揮発性メモリであり、例えばRAM(Random Access Memory)である。
【0034】
プロセッサ16は、ストレージ13から本実施形態に係るアプリケーションのプログラムをメモリ14にロードし、当該プログラムに含まれる一連の命令を実行する。
【0035】
ディスプレイ17は、プロセッサ16の指令に従って情報をディスプレイ17に表示する。なお、ディスプレイ17は端末1に外付けではなく、内蔵であってもよい。
【0036】
図3は、第1の実施形態に係る一つの工程を説明するための模式図である。
図3に示すように、一つの工程において、製造ラインが3つあり、
図3において製造ライン毎の工程スケジュールが示されている。工程pの製造ラインのインデックスiの作業終了時間t
p,iは、(各製品の処理数×処理時間の総和)+(各製品間の切り替え時間の総和)である。例えば
図3の工程p(=1)の製造ラインのインデックスi=1の工程時間t
p=1,i=1は、例えば、(製品Aの処理数16×処理時間100+製品Eの処理数32×処理時間1000+製品Cの処理数24×処理時間600)+(製品Aから製品Eへの切り替え時間180+製品Eから製品Cへの切り替え時間220)=48400(sec)である。
【0037】
本実施形態において、目的とするコスト関数Hは一例として以下の通りである。
【0038】
【0039】
ここで、tmax=max(tp,i)、すなわちtmaxは工程pの製造ラインのインデックスiの作業終了時間tp,iの最大値である。jは製造ラインのインデックスであり、α、βは、必要に応じて調整する係数である。ここで、コスト関数Hが小さくなることを目的としており、第2項は、生産ライン毎の終了時刻の差が小さいほど、コスト関数Hが小さくなる。ここでは一例として、生産ライン毎の終了時刻がそろっているほど、全体の工程の終了時間が短くなる経験則があったので、生産ライン毎の終了時刻の差が小さいほど、コスト関数Hが小さくなるように第2項が設定されている。すなわち、目的のコスト関数Hには一例として、生産ライン毎の終了時刻の差が小さいほど評価が高くなる項が第2項として含まれる。
【0040】
続いて、本実施形態において繰り返し行われる処理について
図4~
図7を用いて説明する。
図4は、一つの生産ラインの最後のタイムスロットをカットして別の生産ラインに挿入する処理を説明するための図である。
図4に示すように、インデックスiの生産ラインの最後のタイムスロットのうち、インデックスjの生産ラインの最後のタイムスロットより延長している部分(2C
p,i,jの時間)を半分にカットして、別のインデックスjの生産ラインの最後のタイムスロットに付け足す。これにより、インデックスiの生産ラインの作業終了時間t’
p,i=t’
p,i-c
p,i,jq
p,i,jに短縮され、別のインデックスjの生産ラインの作業終了時間t’
p,j=t’
p,j+c
p,j,iq
p,i,jに延長される。このことにより、全体の作業終了時間が短縮される効果がある。
【0041】
図5は、一つの生産ラインのある製品のタイムスロットの一部もしくは全部を別の生産ラインのタイムスロットに挿入する処理を説明するための図である。
図5に示すように、インデックスiの生産ラインの先頭のタイムスロットを、別のインデックスjの生産ラインの生産工程の切れ目に挿入する。これにより、インデックスiの生産ラインの作業終了時間t’
p,i=t’
p,i-c
p,i,jq
p,i,jに短縮され、別のインデックスjの生産ラインの作業終了時間t’
p,j=t’
p,j+c
p,j,iq
p,i,jに延長される。
【0042】
図6は、一つの生産ラインの製品のタイムスロットの一部もしくは全部を別の生産ラインの製品のタイムスロットの一部もしくは全部と入れ替える処理を説明するための図である。
図6に示すように、インデックスiの生産ラインの先頭のタイムスロットと、別のインデックスjの生産ラインの最後のタイムスロットを入れ替える。これにより例えば、インデックスiの生産ラインの作業終了時間t’
p,i=t’
p,i-c
p,i,jq
p,i,jに変更され、別のインデックスjの生産ラインの作業終了時間t’
p,j=t’
p,j+c
p,j,iq
p,i,jに変更される。ここで、入れ替え前のインデックスiの生産ラインの先頭のタイムスロットの時間をa
p,i,j、入れ替え後のインデックスiの生産ラインの先頭のタイムスロットの時間をb
p,i,jとすると、c
p,i,j=a
p,i,j-b
p,i,jである。同様に、入れ替え前のインデックスjの生産ラインの最後のタイムスロットの時間をa
p,i,j、入れ替え後のインデックスjの生産ラインの最後のタイムスロットの時間をb
p,i,jとすると、c
p,j,j=a
p,i,j-b
p,i,jである。
【0043】
図7は、一つの生産ラインの各製品のタイムスロットと別の生産ラインの各製品のタイムスロットと入れ替え及び/または順番の並び替えを説明するための図である。
図7に示すように、インデックスiの生産ラインの最後のタイムスロットと、別のインデックスjの生産ラインの最後のタイムスロットを入れ替え、その後にインデックスiの生産ラインの先頭と最後のタイムスロットを入れ替え、別のインデックスjの生産ラインの先頭と最後のタイムスロットを入れ替える。これにより例えば、インデックスiの生産ラインの作業終了時間t’
p,i=t’
p,i-c
p,i,jq
p,i,jに変更され、別のインデックスjの生産ラインの作業終了時間t’
p,j=t’
p,j+c
p,j,iq
p,i,jに変更される。ここで、入れ替え前のインデックスiの生産ラインの作業終了時間をa
p,i,j、入れ替え後のインデックスiの生産ラインの作業終了時間をb
p,i,jとすると、c
p,i,j=a
p,i,j-b
p,i,jである。同様に、入れ替え前のインデックスjの生産ラインの作業終了時間をa
p,i,j、入れ替え後のインデックスjの生産ラインの作業終了時間をb
p,i,jとすると、c
p,j,j=a
p,i,j-b
p,i,jである。
【0044】
続いて、第1の実施形態に係る処理に流れの一例について説明する。
図8は、第1の実施形態に係る処理に流れの一例を示すフローチャートである。
【0045】
(ステップS10)端末1のプロセッサ16は、アニーリングマシンに入力する手段として機能する。当該アニーリングマシンに入力する手段は、複数種類の製品について複数の生産ラインで生産する場合に、一つの生産ラインの最後のタイムスロットをカットして別の生産ラインに挿入する処理、一つの生産ラインのある製品のタイムスロットの一部もしくは全部を別の生産ラインのタイムスロットに挿入する処理、一つの生産ラインの製品のタイムスロットの一部もしくは全部を別の生産ラインの製品のタイムスロットの一部もしくは全部と入れ替える処理、一つの生産ラインの各製品のタイムスロットと別の生産ラインの各製品のタイムスロットと入れ替え及び/または順番の並び替えのうちの少なくとも一つから選択された処理を実行する対象の候補を一つ以上決定する。
【0046】
この処理の選択は、予め各処理の順番が決められていてその順番に沿って自動で選択されてもよいし、ランダムであってもよい。
【0047】
(ステップS20)端末1のプロセッサ16は、アニーリングマシン用のコスト関数、
選択された処理を実行する対象の候補を、アニーリングマシン2へ送信する。
【0048】
このように、端末1のプロセッサ16は、アニーリングマシンに入力する手段として機能する。当該アニーリングマシンに入力する手段は、複数種類の製品について複数の生産ラインで生産する場合に、一つの生産ラインの最後のタイムスロットをカットして別の生産ラインに挿入する処理、一つの生産ラインのある製品のタイムスロットの一部もしくは全部を別の生産ラインのタイムスロットに挿入する処理、一つの生産ラインの製品のタイムスロットの一部もしくは全部を別の生産ラインの製品のタイムスロットの一部もしくは全部と入れ替える処理、一つの生産ラインの各製品のタイムスロットと別の生産ラインの各製品のタイムスロットと入れ替え及び/または順番の並び替えの少なくとも一つから選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシン2に入力する。
【0049】
本実施形態では、一つの製品について前の工程が終わっていなければ、次の工程が実施できないという制約条件がある。そのため、前記選択された処理の実行の際には、前の工程での処理が終了しているという制約を満たすタイムスロットに対して実行される。これにより、一つの製品について前の工程が終わってから、次の工程が実施されるという前後関係の制約が保証される。この制約条件については、端末1のプロセッサ16側で考慮することで、アニーリングマシン2では考慮する必要がない。
【0050】
目的のコスト関数とは、別にアニーリング用のコスト関数が、アニーリングマシンに設定されている。このアニーリング用のコスト関数は、目的のコスト関数が2次関数以下で表される場合には、同じであってもよい。一方、アニーリング用のコスト関数は、目的のコスト関数が3次以上などの非線形関数で表される場合、別のコスト関数が設定されていてもよい。本実施形態では、アニーリング用のコスト関数も、目的のコスト関数の第2項と第3項の和であるものとして説明する。
【0051】
(ステップS30)アニーリングマシン2は、アニーリングマシン用のコスト関数を用いて、選択された処理を実行する対象の候補それぞれについて、処理を実行するか否かを出力する。
【0052】
(ステップS30)アニーリングマシン2は、対象の候補それぞれについて処理を実行するか否かを示す情報を端末1へ送信する。
【0053】
そして端末1のプロセッサ16は、アニーリングマシン2がアニーリングマシン用のコスト関数に基づいて決定した、前記対象の候補それぞれについて処理を実行するか否かを示す情報を、当該アニーリングマシン2から取得する手段として機能する。
【0054】
(ステップS50)端末1のプロセッサ16は、前記対象の候補それぞれについて処理を実行するか否かを示す情報を受信した場合、前記対象の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、対象の候補それぞれについて処理を実行するか否かを決定する手段として機能する。
【0055】
ここで、当該決定する手段は、本実施形態のように、目的のコスト関数が小さくなることを目的としている場合当該コスト関数が低減すれば前記アニーリングマシンの出力を採用し、該コスト関数が低減しなければ前記アニーリングマシンの出力を採用しない。
【0056】
なお、目的のコスト関数が大きくなることを目的としている場合、当該決定する手段は、当該コスト関数が増大すれば前記アニーリングマシンの出力を採用し、該コスト関数が増大しなければ前記アニーリングマシンの出力を採用しないようにしてもよい。
【0057】
(ステップS60)端末1のプロセッサ16は、所定の回数、繰り返したか否か判定し、所定の回数繰り返していない場合、ステップS10に戻って、処理を繰り返す。一方、所定の回数、繰り返した場合、端末1のプロセッサ16は、本フローチャートの処理を終了する。
【0058】
図9は、第1の実施形態において、2つの工程を実行した場合の処理結果の一例である。
図9に示すように、製造工程において各タイムスロットがほぼ隙間なく埋まり、終了時刻が41860[sec]である。
図10は、2つの工程を実行した場合の目的のコスト関数の時間経過を示すグラフである。10000MCSに対して実行時間は45.9秒であり、5000MCSでほぼ極小解に到達している。
【0059】
図11は、第1の実施形態において、4つの工程を実行した場合の処理結果の一例である。
図11に示すように、製造工程において各タイムスロットが割り当てられ、終了時刻が51880[sec]である。
図12は、4つの工程を実行した場合の目的のコスト関数の時間経過を示すグラフである。10000MCSに対して実行時間は101.86秒である。
【0060】
図13は、第1の実施形態において、6つの工程を実行した場合の処理結果の一例である。
図13に示すように、製造工程において各タイムスロットが割り当てられ、終了時刻が65380[sec]である。
図14は、6つの工程を実行した場合の目的のコスト関数の時間経過を示すグラフである。10000MCSに対して実行時間は148.92秒である。
【0061】
図15は、第1の実施形態においてプロセス数と計算時間の関係を示すグラフである。
図15に示すように、プロセス数の増加に応じて、計算時間が線形に増加する。
【0062】
以上、第1の実施形態に係る情報処理システムSは、複数種類の製品について複数の生産ラインで生産する場合に、一つの生産ラインのタイムスロット(例えばある製品の後半のタイムスロット)をカットして別の生産ラインに挿入する処理、一つの生産ラインのある製品のタイムスロットの一部もしくは全部を別の生産ラインのタイムスロットに挿入する処理、一つの生産ラインの製品のタイムスロットの一部もしくは全部を別の生産ラインの製品のタイムスロットの一部もしくは全部と入れ替える処理、一つの生産ラインの各製品のタイムスロットと別の生産ラインの各製品のタイムスロットと入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する手段を備える。更に情報処理システムSは、アニーリングマシンがアニーリングマシン用のコスト関数に基づいて決定した、前記対象の候補それぞれについて処理を実行するか否かを示す情報を、当該アニーリングマシンから取得する手段を備える。更に情報処理システムSは、前記対象の候補それぞれについて処理を実行するか否かを示す情報に基づいて、目的のコスト関数を決定し、当該目的のコスト関数の値に応じて、前記対象の候補それぞれについて処理を実行するか否かを決定する手段を備える。情報処理システムSは、前記入力する手段と、前記取得する手段と、前記決定する手段の処理を繰り返す。
【0063】
この構成により、複数種類の製品について複数の生産ラインで生産する場合の時間スケジュールを、より短時間で決定することができる。また、目的のコスト関数とアニーリングマシン用のコスト関数を分けることにより、アニーリングマシン用のコスト関数は二次関数までの利用としつつ、目的のコスト関数を、三次以上の関数など非線形変換を含む一般の関数を利用することができる。また、情報処理システムSが、制約条件を満たすタイムスロットについて処理を行うようにすることで、アニーリングマシンは制約条件を気にすることがなく処理を実行できる。
【0064】
なお、第1の実施形態では製造が複数の工程である場合について説明したが、製造が1つの工程であっても同様に適用可能である。
【0065】
<第2の実施形態>
続いて第2の実施形態について説明する。第1の実施形態では、複数種類の製品について複数の生産ラインで生産する場合に、生産スケジュールの最適化を目的とした。第2の実施形態では、巡回セールスマン問題を解くことを目的とする。巡回セールスマン問題は、都市の集合と各2都市間の移動コスト(ここでは例えば距離)が与えられたとき、全ての都市をちょうど一度ずつ巡り出発地に戻る巡回路のうちで総移動コストが最小のものを求める(セールスマンが所定の複数の都市を1回だけ巡回する場合の最短経路を求める)組合せ最適化問題である。
【0066】
本実施形態では、一例として、0番から23番までの都市があるものとする。この場合、目的のコスト関数とアニーリング用のコスト関数は同じであり、総移動距離である。第2の実施形態では、第1の実施形態とは制約条件が異なっており、第2の実施形態では
また、特定の都市に特定のタイミングで訪問しなくてはならないという制約条件を付してもよい。この制約条件については、端末1のプロセッサ16側で考慮することで、アニーリングマシン2では考慮する必要がない。
【0067】
処理工程としては、端末1のプロセッサ16は例えば、初期状態の訪問順番に対して、X番目に訪問する都市とY番目に訪問する都市を入れ替えるか否かを0、1で用意しておいて、X番目に訪問する都市とY番目に訪問する都市の入れ替えを採択するかどうかをアニーリングマシンで決定し、端末1のプロセッサ16は、採択した結果、総移動距離が短くなっていれば採用し、総移動距離が長くなっていれば採用しない。
【0068】
また、第2の実施形態において、アニーリングマシンに入力する手段は、複数の対象物(ここでは都市)について、ある対象物(ここでは都市)を別の順番に挿入する処理、ある対象物(ここでは都市)を別の対象物(ここでは都市)と入れ替える処理、対象物(ここでは都市)を別の対象物(ここでは都市)と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシンに入力する。
【0069】
図16は、第2の実施形態において初期状態の巡回路を表す模式図である。
図16に示すように、各都市が番号とともに示されており、経路が実線で示されている。初期状態の巡回路はランダムで決定されている。
【0070】
図17は、第2の実施形態において計算処理後の巡回路を表す模式図である。
図17に示すように、総移動距離が最短になるように、各都市が実線で結ばれている。
【0071】
<カット&フリップを含めたデジタルコンピュータの処理内容>
カット&フリップを含めたデジタルコンピュータの処理内容について、以下、三つの利用例について説明する。
【0072】
(1)素朴な利用例
巡回セールスマン問題では、訪問都市の番号を1,2,3,4,5と振った時にその番号の順列組み合わせで答えが出る。例えば、「5,2,3,1,4」などが答えとなる。この場合、5,2,3,1,4の順に都市を回ると、総移動距離が最短になることを意味する。ここで「1」、「2」などの1都市をカットしてカットした都市同士を入れ替え(フリップ)てもよいし、「5,2」、「1,4」などの連続する複数の都市をカットして、カットした複数都市同士を入れ替え(フリップ)してもよい。このカットは、偶数個用意する。すなわち入れ替える都市候補は複数個用意する。フリップは、これらのカットした都市同士を入れ替えることである。
【0073】
「5,2,3,1,4」の場合、カット候補(すなわち入れ替える都市候補)として、「2」,「1」とした場合(但し、入れ替える都市候補同士は隣接せず離れていることが条件)、アニーリングマシンの出力値0の場合、「2」,「1」のまま(結果は「5,2,3,1,4」のなる)であることを表し、アニーリングマシンの出力値1の場合、「1」,「2」に変える(結果は「5,1,3,2,4」のなる)ことを表す。
デジタルコンピュータの一例である端末1では、このカットする候補(すなわち入れ替える都市候補)を提案する処理を実行する。そして、端末1は、このカットする候補(すなわち入れ替える都市の候補)を入れ替えた場合の、目的のコスト関数の増減の比較を行う。
【0074】
上記の手続きで提案した入れ替える都市の候補、増減を基に、アニーリングマシンに対してコスト関数を準備する。具体的には、i番目の入れ替える都市候補のペアを、入れ替える(フリップする)とコストが上がるか下がるかを示す数値ΔEiに対してΔEi×Σiというコスト関数を用意する。このΣiが0と1をとる二値の変数である。ペアの数分この項を足し上げて、その総和を最小化する問題をアニーリングマシンで解く。巡回セールスマン問題の場合は、各ペアiごとに独立に決定される項であるので、各ペアiについてΔEiが負であればΣiは1とするのがコスト関数を最小化する解となる。
【0075】
(2)少し高度な利用例
上記の利用例では独立にカットする候補(すなわち入れ替える都市候補)を考慮して、採用するかどうかを判定することでも処理を行うことができる。
しかしながら、本手法では、より柔軟に、入れ替える都市候補に対してコスト関数をデザインする任意性があり、連続するカットを避けた上記の例から踏み込み、入れ替える都市候補間の相互作用、例えばカットが隣り合うために入替において、独立にコスト関数が決定されず、ΔEiとして書くことができず、ΔEijΣiΣjという二次の項を持つ場合(片方を採用する(Σi=+1)がもう片方は採用しない(Σj=0)場合、両者を採用した場合(Σi=Σj=+1)など)を考慮したコスト関数を用意することも可能である。
【0076】
(3)高度な利用例
同様に「8,2,5,3,6,4,7,1」などの経路があった時に、入れ替える都市候補として、「5,3,6,4」などの4箇所の連続する都市を抜き取ってもよい。このカット内部の都市の入れ替えは4!通りであるが、この4!通りのうち最適なものへ都市の並びを入れ替える(フリップする)というやり方でもよい。その場合、4!通りの中から最適なものを出すためのコスト関数(これは従前の巡回セールスマン問題で、巡回するという条件を外したコスト関数)でよい。
その際、従前の巡回セールスマン問題から巡回する条件を外して、次のようなコスト関数E(x)を利用する。
【0077】
【0078】
ここでσiは2値変数0または1であり、地点間(i,j)の間の距離dij、第二項、および第三項は必ず異なるタイミングで一度訪問する制約条件を課すための項である。Nは訪問可能な都市の総数である。tは時刻を表すインデックスで、Tは考慮するべき地点の数Nと等しい。またσi,tはi地点に時刻tに訪れるかどうかを示す0と1の情報、λは制約条件を満たす強制力の強さである。このように、アニーリング用のコスト関数及び/または目的のコスト関数は、都市間の距離を表すパラメータを含む。
【0079】
以下、
図18を用いて、第2の実施形態に係る処理に流れの一例を説明する。
図18は第2の実施形態に係る処理に流れの一例を示すフローチャートである。ここでは、一例として、上記の素朴な利用例を前提として説明する。
【0080】
(ステップS110)端末1のプロセッサ16は、巡回セールスマン問題に関する情報を受け付ける。ここで巡回セールスマン問題に関する情報は、訪問する場所(例えば都市)、場所の座標、場所の間の距離情報などである。
【0081】
(ステップS120)端末1のプロセッサ16は、回答の初期値を設定する。ここで回答の初期値は、「1,2,3,4,5,6,7,8」などの順番データで表される。回答の初期値は、予め決められていてもよいし、乱数で設定されてもよい。
【0082】
(ステップS130)端末1のプロセッサ16は、入れ替える都市ペアの候補を決定する。
【0083】
(ステップS140)端末1のプロセッサ16は、アニーリングマシン用のコスト関数、入れ替える都市ペアの候補を送信する。ここで、アニーリングマシン用のコスト関数は、上記の素朴な利用例、少し高度な利用例、高度な利用例に応じて端末1で設定される。このアニーリングマシン用のコスト関数は例えば、量子アニーリングの利用において必要な2次形式(QUBO(Quadratic Unconstrained Binary Optimization)形式)の行列にかかる係数値である。
【0084】
(ステップS150)アニーリングマシン2は、アニーリングマシン用のコスト関数の最適化を実行する。
【0085】
(ステップS160)アニーリングマシン2は、ステップS150の実行によって得られた、候補となった都市ペアを入れ替えるか否かの情報を端末1へ送信する。ここで、都市ペアを入れ替えるか否かの情報は、0か1の情報である。これは、少し高度な利用例でも同様である。
【0086】
なお、高度な利用例の場合、このステップ160でアニーリングマシン2から端末1へ送信される情報は例えば、0と1のみのデータであるが、それが「5,3,6,4」に対して、例えば、どのような順番で入れ替えをするかを示す0か1の情報である。例えば、[[0,0,0,1],[0,0,1,0],[1,0,0,0],[0,1,0,0]]という場合、4番目、3番目、1番目、2番目の数字をこの順番に並び替えるという意味であり、例えば元の数字の順番が「5,3,6,4」(1番目は5、2番目は3、3番目は6、4番目は4)の場合、「5,3,6,4」から「4,6,5,3」に並び替えよという意味を持つ0,1からなる行列データである。
【0087】
(ステップS170)端末1のプロセッサ16は、都市候補を入れ替えるかの情報に基づき、都市を入れ替えた場合に、目的のコスト関数(もしくはエネルギー)を下げる場合、採用する。端末1のプロセッサ16は、目的のコスト関数(もしくはエネルギー)を上げるものであっても、確率的な基準(例えば、マルコフ連鎖モンテカルロ法)により、採用・不採用を決定する。
【0088】
(ステップS180)端末1のプロセッサ16は、終了条件を満たすか否かを判定する。終了条件を満たさなければステップS130へ戻って処理を繰り返す。終了条件を満たす場合、)端末1のプロセッサ16は、本フローチャートの処理を終了する。
【0089】
<第3の実施形態>
続いて第3の実施形態について説明する。第2の実施形態では、巡回セールスマン問題を解くことを目的としたが、第3の実施形態では、WEBページにおいて、ビジネスホテル群の掲載と、リゾートホテル群の掲載とが、ミックスされることを目的とする。
【0090】
目的とするコスト関数及びアニーリングマシン用のコスト関数は、i番目とj番目のホテルの類似度dijを用いて、以下のようなコスト関数E(x)にする。第3項と第4項は、各ホテルが各順番において1度だけ表示されるために必要な項である。
【0091】
【0092】
ここでNはホテルの総数である。hiはi番目のホテルの好感度、σi,tはWEBページにおけるリスト順番(掲載順番)tに対してホテルiが選ばれるかどうかを示す0か1の値、第三項と第四項はホテルが必ず一つ選ばれどの順番にするべきかを一つ答えるための制約項であり、λは制約条件を満たす強制力の強さである。Tはリストで並べるホテルの総数である。なお、hiはi番目のホテルのランキングを示してもよい。このコスト関数E(x)が小さくなると、アニーリングマシン及び情報処理システムは、選択された処理の実行を採用する。このように、アニーリング用のコスト関数及び/または目的のコスト関数は、ホテルの類似度を表すパラメータ、及びホテルの好感度及び/またはランキングを表すパラメータのうち少なくとも一つを含む。
【0093】
この場合、第3の実施形態において、アニーリングマシンに入力する手段は、複数の対象物(ここではビジネスホテル群とリゾートホテル群)について、ある対象物(例えばビジネスホテル群)の一部もしくは全部を別の順番に挿入する処理、ある対象物(例えばビジネスホテル群)の一部もしくは全部を別の対象物(例えばリゾートホテル群)の一部もしくは全部と入れ替える処理、対象物(例えばビジネスホテル群)を別の対象物(例えばリゾートホテル群)と入れ替え及び/または順番の並び替えのうちの少なくとも一つの処理から選択された処理を実行する対象物の候補それぞれと、アニーリングマシン用のコスト関数を、アニーリングマシン2に入力する。なお、ここでは、性質(もしくは種類)の異なる複数の宿泊施設群の一例として、ビジネスホテル群とリゾートホテル群について説明したが、これに限ったものではなく、例えば、旅館群とホテル群に適用してもよく、あらゆる性質(もしくは種類)の異なる複数の宿泊施設群に対して適用可能である。
【0094】
なお、上述した実施形態で説明した情報処理システムSは、一つの端末の例について説明したが、これに限らず、複数の情報処理装置によって、情報処理システムSを機能させてもよい。この場合、情報処理システムSの少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、情報処理システムSの少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD-ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【0095】
また、情報処理システムSの少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【0096】
以上、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0097】
1 端末
11 入力インタフェース
12 通信回路
13 ストレージ
14 メモリ
15 ディスプレイ
16 プロセッサ
17 カメラ
2 アニーリングマシン
S 情報処理システム