(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-02
(45)【発行日】2024-08-13
(54)【発明の名称】ニューラルネットワークを使用して混合整数問題を解くこと
(51)【国際特許分類】
G06N 99/00 20190101AFI20240805BHJP
G06N 3/02 20060101ALI20240805BHJP
G06F 17/11 20060101ALI20240805BHJP
【FI】
G06N99/00 180
G06N3/02
G06F17/11
(21)【出願番号】P 2023537142
(86)(22)【出願日】2021-12-20
(86)【国際出願番号】 EP2021086740
(87)【国際公開番号】W WO2022129631
(87)【国際公開日】2022-06-23
【審査請求日】2023-08-15
(32)【優先日】2020-12-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517030789
【氏名又は名称】ディープマインド テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】セルゲイ・バルトノフ
(72)【発明者】
【氏名】フェリックス・アクセル・ヒメノ・ヒル
(72)【発明者】
【氏名】イングリッド・カリン・フォン・フレーン
(72)【発明者】
【氏名】パウエル・リチョッキ
(72)【発明者】
【氏名】イヴァン・ロボフ
(72)【発明者】
【氏名】ヴィノード・ナイル
(72)【発明者】
【氏名】ブレンダン・ティモシー・オドノヒュー
(72)【発明者】
【氏名】ニコラ・ソヌラ
(72)【発明者】
【氏名】クリスティアン・ティヤンドラートマディア
(72)【発明者】
【氏名】ペンミン・ワン
【審査官】北川 純次
(56)【参考文献】
【文献】特開2020-113190(JP,A)
【文献】国際公開第2020/109774(WO,A1)
【文献】DING, Jian-Ya et al.,Accelerating Primal Solution Findings for Mixed Integer Programs Based on Solution Prediction,arXiv [online],v2,Cornell University,2019年09月09日,[検索日 2024.06.24], インターネット: <URL: https://doi.org/10.48550/arXiv.1906.09575>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06N 3/02
G06F 17/11
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータによって実行される方法であって、
制約のセットに従って目的を最小化するために複数の変数の各々にそれぞれの値を割り当てることを必要とする混合整数問題(MIP)のパラメータを指定するデータを取得するステップであって、前記複数の変数の第1のサブセットが、整数値であるように制約される、ステップと、
前記MIPの前記パラメータから、入力表現を生成するステップと、
前記第1のサブセット内の前記変数の各々について、それぞれの埋込みを生成するために、エンコーダニューラルネットワークを使用して、前記入力表現を処理するステップと、
複数の部分的割当てを生成するステップであって、前記部分的割当ての各々について、
前記変数の第1のサブセットのそれぞれの第2の適切なサブセットを選択するステップと、
前記それぞれの第2のサブセット内の前記変数の各々について、前記変数に関する少なくとも前記それぞれの埋込みを使用して、前記変数の前記値に対するそれぞれの追加の制約を生成するステップと
を含む、ステップと、
前記複数の部分的割当ての各々について、前記部分的割当てにおける前記追加の制約から開始して前記複数の変数の各々にそれぞれの値を割り当てる対応する候補最終割当てを生成するステップと、
前記MIPに関する最終割当てとして、(i)前記MIPに対する実行可能な解であり、(ii)前記MIPに対して実行可能な解である候補最終割当てのうちのいずれかの前記目的の最小値を有する、前記候補最終割当てを選択するステップと
を含む、方法。
【請求項2】
前記第1のサブセットが、前記複数の変数の適切なサブセットである、請求項1に記載の方法。
【請求項3】
前記複数の部分的割当ての各々について、対応する候補最終割当てを生成するステップが、前記対応する候補最終割当てを並行して生成するステップを含む、請求項1または2に記載の方法。
【請求項4】
前記複数の部分的割当てが、並行して動作するように構成されたぞれぞれのニューラルネットワークによって並行して生成される、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記複数の部分的割当ての各々について、対応する候補最終割当てを生成するステップが、前記MIPの前記パラメータと前記部分的割当てにおける前記追加の制約とに対して条件付けられたヒューリスティックベースのMIPソルバを使用して前記対応する候補最終割当てを生成するステップを含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記MIPの前記パラメータから、入力表現を生成するステップが、
前記MIPの前記パラメータから、2部グラフの表現を生成するステップを含み、前記2部グラフが、
(i)各々が前記複数の変数のうちの1つを表す変数ノードの第1のセットと、各々が前記制約のうちの1つを表す制約ノードの第2のセットとを含む複数のノードと、
(iii)各制約ノードについて、前記制約ノードから前記制約ノードによって表される前記制約において現れる変数を表す各変数ノードへのそれぞれのエッジと
を有し、前記表現が、
前記複数のノードの各々に関するそれぞれの特徴と、
前記2部グラフ内の前記変数ノードと前記制約ノードとの間の接続性を表す隣接行列と
を含む、
請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記エンコーダニューラルネットワークが、前記第1のサブセット内の前記変数に関する前記埋込みを生成するために、1つまたは複数のグラフ層のシーケンスを通じて、前記複数のノードの各々に関する特徴を処理するように構成されたグラフニューラルネットワークであり、
各グラフ層が、グラフ内の前記ノードの各々に関するそれぞれの入力埋込みを入力として受信し、前記グラフ内の前記ノードの各々に関するそれぞれの出力埋込みを出力として生成するように構成され、
前記シーケンス内の第1のグラフ層に関する前記グラフ内の前記ノードの各々に関する前記入力埋込みが、前記ノードに関する前記特徴を含み、
前記第1のサブセット内の前記ノードの各々に関する前記埋込みが、前記第1のサブセット内の前記変数を表す前記ノードに関する前記シーケンス内の最後の前記グラフ層によって生成された前記出力埋込みである、
請求項6に記載の方法。
【請求項8】
各グラフ層が、
更新された埋込みを生成するために、更新関数を前記入力埋込みの各々に適用し、
初期出力埋込みを生成するために、前記隣接行列を前記更新された埋込みに適用する
ように構成される、
請求項7に記載の方法。
【請求項9】
前記初期出力埋込みが、前記グラフ層に関する前記出力埋込みである、請求項8に記載の方法。
【請求項10】
各グラフ層が、
前記グラフ層に関する前記出力埋込みを生成するために、前記グラフ層によって生成された前記初期出力埋込みと、前記グラフ層に関する前記入力埋込みとを組み合わせるように構成される、
請求項8に記載の方法。
【請求項11】
前記更新関数が、多層パーセプトロン(MLP)である、請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記隣接行列が、N×N行列であり、Nが、グラフ内のノードの総数であり、エントリ(i,j)が、
インデックスiを有するノードがエッジによってインデックスjを有するノードに接続されている場合、1に等しく、
iがjに等しくなく、インデックスiを有するノードがエッジによってインデックスjを有するノードに接続されていない場合、0に等しい、
請求項6から11のいずれか一項に記載の方法。
【請求項13】
前記隣接行列が、N×N行列であり、Nが、グラフ内のノードの総数であり、前記隣接行列内のエントリが、前記制約における正規化された係数を表す、請求項6から11のいずれか一項に記載の方法。
【請求項14】
特定の部分的割当てについて、第2のサブセットが、バイナリ変数であるように制約される特定の変数を含み、前記バイナリ変数に関する前記追加の制約を生成するステップが、
予測ニューラルネットワークヘッドを使用して、前記バイナリ変数に関する少なくとも前記それぞれの埋込みを処理することによって、前記バイナリ変数に関する確率を生成するステップと、
前記確率に従って、前記バイナリ変数に関する値をサンプリングするステップと、
前記バイナリ変数の前記値が前記サンプリングされた値に等しくなるように制約する追加の制約を生成するステップと
を含む、
請求項1から13のいずれか一項に記載の方法。
【請求項15】
前記第1のサブセットが、バイナリ変数であるように制約される特定の変数を含み、特定の部分的割当てについて、前記それぞれの第2の適切なサブセットを選択するステップが、
対応する割当てニューラルネットワークヘッドを使用して、前記バイナリ変数に関する少なくとも前記それぞれの埋込みを処理することによって、前記バイナリ変数に関する割当て確率を生成するステップと、
前記割当て確率に従って、前記バイナリ変数を前記それぞれの第2のサブセット内に含めるかどうかを決定するステップと
を含む、
請求項1から14のいずれか一項に記載の方法。
【請求項16】
前記部分的割当てのうちの異なるものが、前記第1のサブセットの異なる予想されるカバレッジを結果として生じる割当て確率を生成するようにトレーニングされている、異なる対応する割当てニューラルネットワークヘッドに関連付けられる、請求項15に記載の方法。
【請求項17】
特定の部分的割当てについて、第2のサブセットが、3つ以上の可能な値をとることができる一般的な整数変数であるように制約される特定の変数を含み、前記一般的な整数変数に関する前記追加の制約を生成するステップが、
予測ニューラルネットワークヘッドを使用して、前記一般的な整数変数に関する少なくとも前記それぞれの埋込みを処理することによって、前記一般的な整数変数のカーディナリティを表すビットのシーケンス内の前記ビットのうちの1つまたは複数に関するそれぞれの確率を生成するステップと、
前記ビットに関する前記確率に従って、前記1つまたは複数のビットの各々について、それぞれの値をサンプリングするステップと、
前記サンプリングされた値に基づいて、前記一般的な整数変数の前記値を制約する追加の制約を生成するステップと
を含む、
請求項1から16のいずれか一項に記載の方法。
【請求項18】
前記1つまたは複数のビットが、前記シーケンス内の前記ビットのすべてを含み、前記サンプリングされた値が、前記一般的な整数変数に関する単一の値を定義し、前記追加の制約が、前記一般的な整数が前記単一の値を有するように制約する、請求項17に記載の方法。
【請求項19】
前記1つまたは複数のビットが、前記シーケンス内の1つまたは複数の最上位ビットを含む前記シーケンス内の前記ビットの適切なサブセットのみを含み、前記サンプリングされた値が、前記一般的な整数変数に関する値の範囲を定義し、前記追加の制約が、前記一般的な整数が前記最上位ビットに関する前記サンプリングされた値によって定義された前記値の範囲内の値を有するように制約する、請求項17に記載の方法。
【請求項20】
前記特定の部分的割当てについて、前記それぞれの第2の適切なサブセットを選択するステップが、
対応する割当てニューラルネットワークヘッドを使用して、前記一般的な整数変数に関する少なくとも前記それぞれの埋込みを処理することによって、前記ビットのシーケンス内の1つまたは複数のビットの各々に関するそれぞれの割当て確率を生成するステップと、
前記シーケンス内の最上位ビットに関する前記割当て確率に従って、前記一般的な整数変数を前記それぞれの第2のサブセット内に含めるかどうかを決定するステップと
を含む、請求項17から19のいずれか一項に記載の方法。
【請求項21】
前記それぞれの割当て確率に基づいて、値がサンプリングされる前記1つまたは複数のビット内に、どれくらい多くのビットを含めるかを決定するステップをさらに含む、請求項20に記載の方法。
【請求項22】
前記部分的割当てのうちの異なるものが、前記第1のサブセットの異なる予想されるカバレッジを結果として生じる割当て確率を生成するようにトレーニングされている、異なる対応する割当てニューラルネットワークヘッドに関連付けられる、請求項20または21に記載の方法。
【請求項23】
前記エンコーダニューラルネットワークが、ヒューリスティックベースのMIPソルバによって生成されたトレーニングMIPのデータセットに対する実行可能な解においてトレーニングされる、請求項1から22のいずれか一項に記載の方法。
【請求項24】
前記最終割当てに関する最適性ギャップ証明を定義する最適性ギャップデータを生成するステップ
をさらに含む、請求項1から23のいずれか一項に記載の方法。
【請求項25】
前記最適性ギャップデータを生成するステップが、
複数のステップにわたって、探索木の各ノードにおいて部分的整数割当てを有する前記探索木を再帰的に生成する分枝限定技法を使用して、前記最適性ギャップデータを生成するステップを含み、前記探索木を生成するステップが、各ステップにおいて、
現在の前記探索木の分枝元の葉ノードを選択するステップと、
前記選択された葉ノードを拡張するかどうかを決定するステップと、
前記選択された葉ノードを拡張するとの決定に応答して、
前記選択された葉ノードにおける未固定変数のセットから変数を選択するステップと、
前記選択された変数について異なるドメインを各々が有する2つの子ノードを前記探索木に追加することによって、前記探索木を拡張するステップと
を含む、
請求項24に記載の方法。
【請求項26】
前記選択された葉ノードにおける未固定変数のセットから変数を選択するステップが、
前記選択された葉ノードによって定義されたサブMIPの新しい入力表現を生成するステップと、
前記未固定変数の各々についてそれぞれの埋込みを生成するために、第2のエンコーダニューラルネットワークを使用して、前記新しい入力表現を処理するステップと、
前記未固定変数の各々についてそれぞれの分枝スコアを生成するために、分枝ニューラルネットワークを使用して、前記それぞれの埋込みを処理するステップと、
前記それぞれの分枝スコアを使用して、前記変数を選択するステップと
を含む、請求項25に記載の方法。
【請求項27】
前記分枝ニューラルネットワークが、前記分枝限定技法に関する分枝決定を生成するエキスパートポリシーを模倣する模倣学習を通じてトレーニングされている、請求項26に記載の方法。
【請求項28】
前記第2のエンコーダニューラルネットワークが、前記分枝ニューラルネットワークと共同でトレーニングされている、請求項27に記載の方法。
【請求項29】
前記第2のエンコーダニューラルネットワークが、前記エンコーダニューラルネットワークと同じである、請求項27に記載の方法。
【請求項30】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から29のいずれか一項に記載のそれぞれの動作を実行させる命令を記憶する1つまたは複数の記憶デバイスと
を備えるシステム。
【請求項31】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から29のいずれか一項に記載の方法のそれぞれの動作を実行させる命令を記憶する1つまたは複数のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、ニューラルネットワークを使用して混合整数問題を解くことに関する。
【背景技術】
【0002】
ニューラルネットワークは、受信した入力に対する出力を予測するために、非線形ユニットの1つまたは複数の層を用いる機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層、すなわち、次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在の値に従って、受信した入力から出力を生成する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本明細書は、ニューラルネットワークを使用して混合整数問題(MIP: mixed integer program)を解く、1つまたは複数の位置における1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムについて説明する。
【課題を解決するための手段】
【0004】
本明細書で説明する主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装され得る。
【0005】
従来の混合整数問題ソルバは、実際に遭遇する大規模なMIPインスタンスを解くために、かなりの研究を用いて開発された高度なヒューリスティックの配列に依存する。しかしながら、これらのソルバは、非常に計算集約的であり、並列処理ハードウェアに適応せず、異なるMIPインスタンス間の共有構造を自動的に利用することができない。
【0006】
本明細書で説明する技法は、一方で、所与のMIPインスタンスの整数変数に対する複数の部分的割当てを生成するためにディープニューラルネットワークを使用し、結果として生じる、未割当ての変数に対するより小さいMIPは、高品質の共同割当てを構築するために、MIPソルバを用いて解かれる。
【0007】
トレーニングMIPインスタンスのセットにおいてトレーニングされているディープニューラルネットワークを使用することによって、システムは、ディープニューラルネットワークによって学習され、新しいMIPインスタンスに一般化するヒューリスティックを活用することができ、新しいMIPインスタンスに対して生成される割当ての品質を改善する。
【0008】
さらに、説明する技法は、大規模なMIPについての最終割当ての生成を効果的に並列化するために、並列処理ハードウェアを活用するように設計される。特に、技法は、MIPソルバが、部分的割当ての各々に独立して適用され得るように、すなわち、それぞれの候補最終割当てが、各部分的割当てから独立して生成され得るように設計される。それに加えて、任意の所与の部分的割当てを生成するために必要なサンプリングはまた、各割当てについて並行して実行され得、サンプリングが非自己回帰である場合、所与の部分的割当て内の個々の変数に必要なサンプリングは、さらに並列化され得る。したがって、システムは、解を生成するのに必要な時間を短縮するために、MIPを解くために必要な作業負荷を複数の並列処理デバイス間で効果的に分散させることができる。これは、並列処理ハードウェアを活用することができず、それらの計算の多くを順番に実行する従来のMIPソルバとは対照的である。
【0009】
それに加えて、部分的割当てを生成するために使用されるニューラルネットワークは、所与のMIPインスタンスに対してMIPソルバを実行することによって生成されるすべての実行可能な割当てにおいてトレーニングされ得、割当てのいずれかがMIPインスタンスにとって最適な解であることを必要としない。したがって、モデルのためのトレーニングデータは、収集するのが容易であり、モデルは、比較的少ないMIPインスタンスがトレーニングデータセット内に存在する場合であっても、高品質の配置を生成するためにトレーニングされ得る。
【0010】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付図面および以下の説明において記載される。主題の他の特徴、態様、および利点が、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】例示的な混合整数問題(MIP)ソルバシステムを示す図である。
【
図2】MIPの整数変数のための埋込みを生成する一例を示す図である。
【
図3】MIPに対する最終割当てを生成するための例示的なプロセスのフロー図である。
【
図4A】所与の部分的割当てのためのバイナリ変数に関する追加の制約を生成するための例示的なプロセスのフロー図である。
【
図4B】所与の部分的割当てのための一般的な整数変数に対する追加の制約を生成するための例示的なプロセスのフロー図である。
【
図5】MIPのための最適性ギャップデータを生成するための例示的なプロセスのフロー図である。
【
図6】様々なMIP解決タスクにおける別のMIP解決技法に対する説明する技法の性能を示す図である。
【
図7】MIP解決タスクにおける他のMIP解決技法に対する説明する技法の性能を示す図である。
【発明を実施するための形態】
【0012】
様々な図面における同様の参照番号および呼称は、同様の要素を示す。
【0013】
図1は、例示的な混合整数問題(MIP)ソルバシステム100を示す。MIPソルバシステム100は、以下で説明するシステム、構成要素、および技法が実装され得る、1つまたは複数の位置における1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムの一例である。
【0014】
システム100は、MIPを指定するパラメータデータ102を入力として受信し、MIPに対する解である最終割当て112を出力として生成するシステムである。オプションで、システムは、最終割当て112に対する最適性ギャップ証明を定義する最適性ギャップデータ114を出力として生成することもできる。
【0015】
一般に、MIPは、変数の値に対する制約のセットに従って、変数のセット内の各変数にそれぞれの値を割り当てるための最適化問題、例えば、最小化問題を定義する。
【0016】
特に、n個の変数とm個の制約とを有するMIPは、
cTxを最小化し
Ax≦bを条件とし
l≦x≦u
【0017】
【0018】
の形式を有し、ここで、
【0019】
【0020】
は、変数のベクトルであり、
【0021】
【0022】
は、m個の制約の各々に関する係数を指定する制約行列であり、
【0023】
【0024】
は、m個の制約に関する制約境界値を指定し、
【0025】
【0026】
は、目的に関する係数、すなわち、目的関数係数を指定し、lは、変数の各々に関するそれぞれの下限を指定するn成分ベクトルであり、uは、変数の各々に関するそれぞれの上限を指定するn成分ベクトルであり、
【0027】
【0028】
は、整数のセットであり、Ιは、整数変数のインデックスセットである。MIPに関する割当ては、変数のセットの各々にそれぞれの値を割り当てる。
【0029】
変数の値に対する制約のセットが満たされるように変数のセットの各々にそれぞれの値を割り当てる割当ては、「実行可能な」割当てとも呼ばれる。
【0030】
MIPを解くことは、割当てが実行可能であり、目的が最小化されるように、変数のセットの各々にそれぞれの値を割り当てる割当てを生成することを指す。言い換えれば、MIPを解くことは、実行可能で、最適な割当ての探索中に考慮される任意の候補の実行可能な割当ての目的の最小値を有する候補割当てを識別することを指す。すなわち。「MIPを解くこと」は、最適な割当て、すなわち、目的がその可能な限り最も低い値(大域的最小値)を有する最適な可能な実行可能な割当てを取得することを必ずしも意味しない。
【0031】
制約のセットに加えて、上記の式からわかるように、セット内の変数のうちの少なくとも一部(すなわち、xの成分の適切なサブセットまたはxのすべての成分)は、ある連続範囲内の任意の値をとることができる連続変数とは対照的に、整数変数、すなわち、整数変数のみをとるように制約される変数であるように制約される。
【0032】
場合によっては、整数変数のすべては、バイナリ変数、すなわち、2つの可能な整数値、例えば、ゼロまたは1のうちの1つのみをとるこができる変数である。
【0033】
場合によっては、整数変数のうちの少なくともいくつかは、一般的な整数、すなわち、3つ以上の値をとることができる、特に、変数の下限値と変数の上限値との間の任意の整数値をとることができる変数であるようにのみ制約される。
【0034】
したがって、システム100によって入力として受信されるパラメータデータ102は、最小化されるべき目的と満たされる必要がある制約とを定義するパラメータを含む。より具体的には、パラメータデータ102は、変数の数と、制約の数と、目的に関する係数と、制約に関する係数値および制約境界値と、変数の各々についてのそれぞれの上限および下限と、整数であるように制約される変数の整数セットとを指定する。
【0035】
解決されるMIPは、様々な現実世界の技術的最適化問題のうちのいずれか、例えば、ビンパッキング、キャパシティプランニング、リソース割当て、工場運営、計算ワークロード、データセンタ最適化、さらにはスケジューリング、コンピュータネットワークトラフィックルーティング、自動車トラフィックルーティング、フライトスケジューリング、および他の多数を表すことができる。特に、MIPを解くことは、例えば、特定の時間期間中、現実世界のタスクの1つまたは複数の対応する構成要素を実行するために、1つまたは複数の現実世界のリソース(コンピューティングリソースまたはハードウェアリソース(機器のアイテム)など)を割り当てる制御方法を実行することに相当し得る。MIPの解決に続いて、解に基づいて、制御指示を現実世界のリソース(例えば、コンピューティングリソースである現実世界のリソースの場合、それらのリソースを実装する1つまたは複数のコンピュータシステムおよび/またはメモリユニット)に送信するステップが存在し得、それによって、タスクの割り当てられた構成要素を実行するためにリソースを制御する。
【0036】
すなわち、本開示はまた、混合整数問題(MIP)ソルバシステム100(1つまたは複数のコンピュータシステムによって実装される)と、ソルバシステム100によって提供される解に基づいて制御命令を生成し、それらを現実世界のリソースに送信する、例えば、MIPの解に従って、データセンタに、容量またはリソースを、特定のサービス、例えば、データセンタ内のソフトウェアサービス、データベースシャードなどに割り当てさせるために、1つまたは複数のデータセンタに命令を送信するための制御ユニットとを含む制御システムを開示する。本開示は、制御システムと現実世界のリソースとを含むシステムをさらに開示する。
【0037】
1つの例として、MIPにおける変数は、産業施設の構成要素を表すことができ、構成要素に関する値は、構成要素に関する設定、例えば、構成要素が任意の所与の時間においてアクティブであるかどうかを示すことができる。特定の例として、変数は、発電機、例えば、電力グリッドにおいて電力を生成する発電所または他の構成要素を表すことができ、MIPは、エネルギーグリッドにおけるエネルギーの需要を満たしながら、なんらかの効率メトリックを最小化することを試みる。
【0038】
別の例として、MIPは、物流問題、例えば、リソースが特定の要件を満たすようにルーティングされることを保証するためにリソースを輸送手段に割り当てることを表すことができる。特定の例として、MIPは、特定の制約を満たしながら、配送時間を最小化する複数のフライト間の貨物の割当てを表すことができる。
【0039】
別の例として、MIPは、ニューラルネットワークの予測の検証を表すことができ、すなわち、入力における摂動に対して予測がどれくらいロバストであるかを測定することができる。例えば、ニューラルネットワークは、(例えば、カメラによって捕捉された)画像もしくは(例えば、マイクロフォンによって捕捉された)オーディオ信号、および/または画像もしくはオーディオ信号から取得された特徴である入力を受信すると、画像/オーディオ信号の内容がカテゴリのセットのうちの少なくとも1つであることを示すラベルを出力する、すなわち、画像/オーディオ信号が分類されるように構成されたものであり得る。この場合、MIPは、ニューラルネットワークへの入力、例えば、画像またはオーディオ信号に対応することができ、MIPは、ニューラルネットワークが結果として生じるノイズの多い入力に誤ったラベル、すなわち元の入力についてニューラルネットワークに割り当てられたラベルとは異なるラベルを割り当てなければならないという要件によって制約される、入力に追加される必要があるノイズの量を最小化しようと試みることができる。
【0040】
別の例として、MIPは、例えば、コンピュータリソースまたはサービスのセットのいずれかがデータのいずれかにアクセスするために必要な待ち時間に対する特定の制約を満たしながら、なんらかのメトリック、例えば、消費される全体の記憶容量を最小化するための、複数の記憶場所にわたるデータの割当てを表すことができる。特定の例として、MIPは、異なる地理的場所における複数の記憶セル、例えば、データセンタにわたる検索エンジンインデックスデータベース(または、多くの異なる場所からクエリされる他のデータベース)のシャーディングを表すことができる。別の特定の例として、MIPは、所与のデータセンタに割り当てられるデータベースのシャードを、データセンタ内のマシン、利用可能な記憶位置、またはその両方にわたって記憶する方法を表すことができる。
【0041】
別の例として、MIPは、コンピューティングシステムの性能に対する制約に従って、効率を最大化するため、例えば、消費されるリソースの総量を最小化するための、コンピューティングシステムの複数のコンピューティング構成要素にわたる計算リソースの割当てを表すことができる。
【0042】
特定の例として、MIPは、異なる地理的場所における複数のデータセンタの各々にそれぞれの容量を割り当てることを表すことができる。
【0043】
別の特定の例として、MIPにおける変数は、ソフトウェアサービス-データセンタのペアを表すことができ、所与の変数に割り当てられた値は、所与のデータセンタにおける所与のサービスに割り当てられる計算リソースの量を表すことができる。制約は、各サービスに割り当てられた総リソースに対する制約、1つまたは複数の地理的領域内のサービスのうちの1つまたは複数に対する要求に応答するための待ち時間、所与の地理的領域内の所与のサービスに必要な冗長性のレベルなどを表すことができる。
【0044】
一般に、最終割当て112を生成するために、システム100は、MIPのパラメータから、ニューラルネットワークによって処理され得るフォーマットにおいてMIPを表す入力表現120を生成する。
【0045】
次いで、システム100は、整数変数の各々について、すなわち、整数であるように制約される変数のサブセット内の変数の各々について、それぞれの埋込み140を生成するために、エンコーダニューラルネットワーク130を使用して入力表現120を処理する。本明細書において使用されるように、埋込みは、数値の順序付けられたコレクション、例えば、固定次元を有する、浮動小数点値または他の数値のベクトルである。
【0046】
入力表現120を生成し、それぞれの埋込み140を生成するために入力表現120を処理することについて、
図2と
図3とを参照して以下でより詳細に説明する。
【0047】
システム100は、それぞれの埋込み140とMIPソルバ150とを使用して、最終割当てを生成する。
【0048】
MIPソルバ150は、入力制約のセットから開始して入力MIPを解く任意の適切なMIPソルバ、例えば、ヒューリスティックベースのMIPソルバであり得る。システム100によって使用され得るヒューリスティックベースのMIPソルバの例は、SCIP(Gamrathら、2020年)、CPLEX(IBM ILOG CPLEX 2019年)、Gurobi(Gurobi Optimization 2020年)、およびXpress(FICO Xpress 2020年)を含む。
【0049】
より具体的には、システム100内の部分的割当てエンジン160は、整数変数のうちのいくつかまたはすべての値に対して追加の制約を課す複数の部分的割当て162を生成するために、それぞれの埋込み140と1つまたは複数のニューラルネットワークとを使用する。例えば、エンジン160が生成する部分的割当て162は、変数のうちの1つもしくは複数の正確な値、変数のうちの1つもしくは複数のより大きい下限、より小さい上限、もしくはその両方、またはなんらかの組合せを指定することができる。
【0050】
したがって、各部分的割当て162は、パラメータデータ120において指定された制約と、エンジン160によって生成された部分的割当て162によって定義される1つまたは複数の追加の制約とを有する、より小さいMIPを定義する。ここで、「より小さい」という用語は、「より厳密に制約された」を意味するために使用され、例えば、変数のセットが選択されなければならない可能性の空間は、パラメータデータ102によって定義された制約によって定義された可能性の空間の適切なサブセットである。
【0051】
部分的割当て162を生成することについて、
図2と
図3とを参照してより詳細に説明する。
【0052】
次いで、システム100は、部分的割当て162における追加の制約から開始して、複数の変数の各々にそれぞれの値を割り当てる、各部分的割当て162に対するそれぞれの候補最終割当て170を生成するために、各々のより小さいMIPを解くため、すなわち、各部分的割当て162によって指定されるそれぞれのより小さいMIPを解くために、MIPソルバ150を使用する。
【0053】
次いで、システム100は、MIPに対する最終割当て112として、(i)MIPに対する実行可能な解であり、(ii)MIPに対する実行可能な解である候補最終割当て170のうちのいずれかの目的の最小値を有する候補最終割当て170を選択する。
【0054】
以下に説明するように、対応する候補最終割当て170の生成(およびそれぞれの埋込みから部分的割当て162を生成するために必要なサンプリング)は、各々のより小さいMIPについて並行して実行され得、MIPに関する最終割当て112を生成するために必要な時間を大幅に短縮する。
【0055】
いくつかの実装形態において、システム100は、最終割当て112に対する最適性ギャップ証明を定義する出力最適性ギャップデータ114を生成することもできる。
【0056】
最適性ギャップ証明は、最終割当て112と最適な割当て、すなわち最適な可能な実行可能な割当てとの間の目的値のギャップに対する証明された境界を指定し、最終割当て112の品質を検証するために使用され得、すなわち、よりよい最終割当て112は、目的値ギャップにおいてより小さい境界を有することになるが、より悪い最終割当て112は、目的値ギャップにおけるより大きい境界を有することになるからである。
【0057】
最適性ギャップデータ114を生成することについて、
図5を参照して以下でより詳細に説明する。
【0058】
エンコーダニューラルネットワーク130と、エンジン160によって用いられるニューラルネットワークとを使用する前に、システム100または別のトレーニングシステムは、複数のトレーニングMIPの各々について、(i)MIPを指定するパラメータと、(ii)MIPに対する1つまたは複数の実行可能な割当てとを含むトレーニングデータにおいて、これらのニューラルネットワークをトレーニングする。例えば、実行可能な割当ては、MIPソルバ150によって、または別のヒューリスティックベースのソルバによって生成されている可能性がある。有利なことに、実行可能な割当ては、最適であること(または最適に近づくこと)を必要としない。すなわち、システム100またはトレーニングシステムは、トレーニングデータが、多くの最適ではないが実行可能な割当てを含む場合であっても、高品質の割当てを生成するためにニューラルネットワークをトレーニングすることができ、すなわち、実行可能な割当てを生成することは、最適な割当てを検索することよりもはるかに容易であるので、はるかにより広い範囲の割当てが使用され、トレーニングデータがはるかにより容易に収集されることを可能にする。
【0059】
図2は、MIPの整数変数について埋込み140を生成することの一例を示す。
【0060】
図2に示すように、システム、例えば、
図1のMIPソルバシステム100は、MIPのパラメータを指定する仕様データを受信し、仕様データからMIPの入力表現を生成する。
【0061】
特に、入力表現は、MIPを指定する2部グラフ210の表現である。
【0062】
2部グラフ210は、各々がMIPに関する複数の変数のうちの1つを表す変数ノードの第1のセット212と、各々がMIPに対する制約のうちの1つを表す制約ノードの第2のセット214とを含む。
【0063】
2部グラフはまた、各制約ノードについて、制約ノード214から制約ノード214によって表される制約において現れる変数を表す各変数ノード212へのそれぞれのエッジ216を含む。
【0064】
入力表現、すなわち、2部グラフ210の表現は、複数のノードの各々について、すなわち、変数ノード212および制約ノード214の各々についての1つまたは複数のそれぞれの特徴と、2部グラフ内の変数ノード212と制約ノード214との間の接続性を表す隣接行列とを含む。
【0065】
変数ノード212の各々に関するそれぞれの特徴は、例えば、変数ノード212によって表される変数の目的関数係数の埋込みの表現、ワンホット表現、またはスカラー表現と、オプションで、変数ノードによって表される変数の値に対する上限および下限の表現とを含む。特徴は、ノードがどのような変数のタイプ、例えば、バイナリ変数、一般的な整数変数、を表すかを符号化する特徴をオプションで追加で含むことができる。それに加えて、特徴は、MIPのLP緩和を解くことから得られる特徴も含むことができる。MIPのLP緩和は、変数のうちのいくつかが整数であるという制約を元のMIPから取り除くことによって生じることになる問題である。LP緩和は、線形計画法によって簡単かつ効率的に解かれ得る。LP緩和を解くことから得られる特徴は、LP緩和に対する解によってノードによって表される変数に割り当てられた値を指定する特徴、LP緩和に対する解によってノードによって現れる変数に割り当てられた値の割合(fractionality)を指定する特徴などを含むことができる。オプションで、これらの特徴のうちのいくつかまたはすべてが、変数ノードにわたって正規化され得る。
【0066】
制約ノード214の各々に関するそれぞれの特徴は、制約ノード214によって表される制約の制約境界値の表現を含む。別の例として、特徴は、制約係数ベクトルと目的係数ベクトルとのコサイン類似度を表す特徴をオプションで追加で含むことができる。それに加えて、特徴は、MIPのLP緩和を解くことから得られる特徴、例えば、解における制約の厳格さ指標、制約に対する双対解値なども含むことができる。オプションで、これらの特徴のうちのいくつかまたはすべてが、変数ノードにわたって正規化され得る。
【0067】
特に、隣接行列は、N×M行列であり、ここで、Nは、2部グラフ内のノードの総数である(n個の変数ノード212とm個の制約ノード214の両方をカウントする)。
【0068】
いくつかの実装形態において、隣接行列内のエントリ(i,j)は、(a)ノードの順序付けにおいてインデックスiを有するノードが、順序付けにおいてインデックスjを有するノードにエッジによって接続されている場合、1に等しく、(b)iがjに等しくなく、インデックスiを有するノードがインデックスjを有するノードにエッジによって接続されていない場合、0に等しい。隣接行列内のエントリ(i,i)(すなわち、対角エントリ)は、1に等しくなり得る。
【0069】
いくつかの他の実装形態において、システムは、隣接行列内のエントリがMIPに関する制約における正規化された係数を表すことによって、制約に関する追加の情報を隣接行列内に組み込む。具体的には、これらの実装形態において、i番目の変数とj番目の制約とについて、隣接行列内のそれらの2つの対応するエントリ、すなわち、エントリ(i,j)およびエントリ(j,i)は、両方ともajiに設定され、ここで、ajiは、係数が正規化された後のMIPに関する制約行列の行jおよび列iにおける係数である。これは、バイナリの1および0ではなく、MIPに関する制約行列のエントリによって重み付けされたエッジを結果として生じる。
【0070】
次いで、システムは、整数サブセット内の変数の各々について、すなわち、整数値であるように制約される変数の各々について、それぞれの埋込みを生成するために、エンコーダニューラルネットワーク220を使用して、入力表現、すなわち、2部グラフ210の表現を処理する。
【0071】
図2の例において、エンコーダニューラルネットワーク220は、整数サブセット内の変数に関する埋込みを生成するために、1つまたは複数のグラフ層のシーケンスを通じて複数のノードの各々について特徴を処理するように構成されるグラフニューラルネットワークである。
【0072】
グラフ層の各々は、グラフ内のノードの各々に関するそれぞれの入力埋込みを入力として受信し、グラフ内のノードの各々に関するそれぞれの出力埋込みを出力として生成するように構成される。
【0073】
シーケンス内の第1のグラフ層について、ノードの各々に関する入力埋込みは、グラフ210の表現からのノードに関する特徴を含む。シーケンス内の各々の後続のグラフ層について、ノードの各々に関する入力埋込みは、シーケンス内の前の層によって生成されたノードに関する出力埋込みである。
【0074】
次いで、システムは、整数サブセット内の各変数について、変数を表すノードに関するシーケンス内の最後のグラフ層によって生成された出力埋込みを、変数に関する出力埋込みとして使用する。
【0075】
より具体的には、各グラフ層は、更新された埋込みを生成するために更新関数を入力埋込みの各々に適用し、次いで、初期出力埋込みを生成するために、すなわち、隣接行列に、行列の行として更新された埋込みを有する行列を乗じることによって、更新された埋込みに隣接行列を適用するように構成される。
【0076】
一般に、更新関数は、各埋込みに独立して適用され得る任意の学習済み関数であり得る。例えば、更新関数は、多層パーセプトロン(MLP: multi-layer perceptron)または他のニューラルネットワークであり得る。
【0077】
いくつかの実装形態において、初期出力埋込みは、グラフ層に関する出力埋込みである。
【0078】
いくつかの他の実装形態において、各グラフ層はまた、グラフ層に関する出力埋込みを生成するために、グラフ層によって生成された初期出力埋込みと、グラフ層に関する入力埋込みとを組み合わせるように構成され得る。例えば、グラフ層は、各ノードについて、ノードに関する出力埋込みを生成するために、ノードに関する初期出力埋込みと、ノードに関する入力埋込みとを連結することができる。別の例として、グラフ層は、層に関する出力埋込みを生成するために、各ノードについて、ノードに関する初期出力埋込みと、ノードに関する入力埋込みとを連結し、次いで、連結された埋込みに正規化、例えば、LayerNormを適用することができる。
【0079】
MIPの2部グラフ表現を入力表現として使用し、エンコーダニューラルネットワークをグラフニューラルネットワークにすることによって、システムは、ネットワーク出力、すなわち、整数変数の埋込みが、変数および制約の順列に対して不変であることと、ネットワークが、パラメータの同じセットを使用して、異なるサイズのMIPに適用され得ることとを保証する。変数および制約に関するどんな正規の順序付けも存在しない場合があり、同じアプリケーション内の異なるインスタンスが異なる数の変数と制約とを有する可能性があるので、これらの両方とも、重要である。すなわち、上記のアーキテクチャを用いることは、システムが、トレーニング後に、異なるサイズおよび異なる順序付けの変数および制約を有するMIPに一般化され得ることを保証する。
【0080】
次いで、システムは、MIPに関する最終割当て112を生成するために、グラフニューラルネットワークによって生成された整数変数に関する出力埋込み140を使用する。
【0081】
これについて、
図3を参照して以下でより詳細に説明する。
【0082】
図3は、MIPに関する最終割当てを生成するための例示的なプロセス300のフロー図である。便宜上、プロセス300について、1つまたは複数の場所において配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。例えば、適切にプログラムされたMIPソルバシステム、例えば、
図1のMIPソルバシステム100は、プロセス300を実行することができる。
【0083】
システムは、例えば、
図2を参照して上で説明したように、MIPのパラメータを指定する仕様データを受信し(ステップ302)、MIPのパラメータから入力表現を生成する(ステップ304)。
【0084】
システムは、変数の第1のサブセット内の変数の各々について、すなわち、整数値であるように制約される整数変数の各々について、それぞれの埋込みを生成するために、エンコーダニューラルネットワークを使用して入力表現を処理する(ステップ306)。例えば、システムは、整数変数に関するそれぞれの埋込みを生成するために、上で説明したように、グラフニューラルネットワークを使用して入力表現を処理することができる。
【0085】
システムは、複数の部分的割当てを生成する(ステップ308)。
【0086】
特に、システムは、固定数の部分的割当てを生成することができる。
【0087】
各部分的割当てについて、システムは、最初に、変数の第1のサブセットのそれぞれの第2の適切なサブセット、すなわち、整数変数のそれぞれの第2の適切なサブセットを選択することによって部分的割当てを生成し、次いで、それぞれの第2のサブセット内の変数の各々について、変数に関する少なくともそれぞれの埋込みを使用して、変数の値に対するそれぞれの追加の制約を生成することができる。第2のサブセットは、すべてよりも少ない整数変数を含むので、「適切な」サブセットと呼ばれる。
【0088】
所与の部分的割当てについて、システムは、様々な方法のいずれかにおいて、整数変数のそれぞれの適切なサブセットを選択することができる。
【0089】
例えば、システムは、整数変数の固定サイズの適切なサブセットをランダムに選択することができる。
【0090】
別の例として、システムは、部分的割当てに関する適切なサブセットを選択するために、1つまたは複数の割当てニューラルネットワークヘッドを使用することができる。ニューラルネットワーク「ヘッド」は、1つまたは複数のニューラルネットワーク層の集合体である。例えば、各割当てニューラルネットワークヘッドは、MLPであり得る。
【0091】
整数変数の適切なサブセットを選択するために割当てニューラルネットワークヘッドを使用することについて、
図4Aと
図4Bとを参照して以下でより詳細に説明する。
【0092】
システムが適切なサブセットまたは所与の部分的割当てを選択すると、システムは、適切なサブセット内の各変数について、対応する予測ニューラルネットワークヘッドを使用して、少なくとも変数に関する埋込みから、変数の値に対するそれぞれの追加の制約を生成する。
【0093】
一般に、適切なサブセット内の所与の整数変数が、2つの可能な整数値のみをとることができるバイナリ変数である場合、システムは、整数変数の正確な値を指定する追加の制約を生成する。
【0094】
バイナリ変数に関する追加の制約を生成することについて、
図4Aを参照して以下で説明する。
【0095】
一般に、適切なサブセット内の所与の整数変数が、3つ以上の可能な整数値をとることができる、すなわち、指定された下限と指定された上限との間の任意の値をとることができる一般的な整数変数である場合、システムは、整数変数の正確な値を指定する追加の制約を生成することができ、または整数変数の縮小された範囲を指定する追加の制約、すなわち、整数変数の下限を増加させる、上限を減少させる、またはその両方を行う追加の制約を生成することができる。
【0096】
一般的な整数変数に対する追加の制約を生成することについて、
図4Bを参照して以下で説明する。
【0097】
システムは、複数の部分的割当ての各々について、対応する候補最終割当てを生成する(ステップ310)。
【0098】
各候補最終割当ては、対応する部分的割当てにおける追加の制約から開始して、複数の変数の各々にそれぞれの値を割り当てる。すなわち、候補最終割当てによって各変数に割り当てられる最終値は、パラメータデータにおいて指定された初期制約だけでなく、対応する部分的割当てによって対応する適切なサブセット内の整数変数に指定された追加の制約も満たす。
【0099】
特に、システムは、MIPのパラメータと部分的割当てにおける追加の制約とに対して条件を付されたヒューリスティックベースのMIPソルバを使用して、各対応する候補最終割当てを生成することができる。
【0100】
いくつかの実装形態において、ヒューリスティックベースのMIPソルバは、各々の他の候補最終割当てとは独立して各候補最終割当てを生成するので、システムは、対応する候補最終割当てを並行して、すなわち、互いに独立に、同時に生成する。例えば、システムは、各部分的割当てを、対応する異なるハードウェアリソースに、例えば、異なるコンピュータに、異なるプロセッサに、異なるASIC、例えば、異なるグラフィックス処理ユニット(GPU)もしくはテンソル処理ユニット(TPU)に、または1つもしくは複数のマルチコアプロセッサの異なるコアに割り当てることができ、ヒューリスティックベースのMIPソルバの別個のインスタンスを使用して、対応する候補最終割当てを生成するために、対応するハードウェアリソースを使用することができる。さらに、
図4Aおよび
図4Bの説明から明らかなように、部分的割当てを生成することはまた、整数変数の埋込みが生成されると、並行して実行され得る。したがって、いくつかの実装形態において、ハードウェアリソースはまた、部分的割当てを並行して、例えば、対応する異なるハードウェアリソースによって各々生成し、オプションで、同じハードウェアリソースが、所与の部分的割当てを生成するタスクと、所与の部分的割当てに関する対応する候補最終割当てを生成するタスクの両方を割り当てられる。
【0101】
システムは、MIPに対する実行可能な解である各候補最終割当てについて、目的のそれぞれの値を決定する(ステップ312)。すなわち、システムは、各候補最終割当てについて、候補最終割当てにおける値が制約の各々を満たすかどうかをチェックすることによって、割当てがMIPに対する実行可能な解であるかどうかを決定し、そうである場合、すなわち、各値を対応する目的係数によって重み付けして、値の重み付けされた合計を計算することによって、候補最終割当てに関する制約の値を計算する。割当てが実行可能な解ではない場合、システムは、候補最終割当てを破棄することができる。
【0102】
システムは、MIPに関する最終割当てとして、(i)MIPに対する実行可能な解であり、(ii)MIPに対する実行可能な解である候補最終割当てのうちのいずれかの目的の最小値を有する候補最終割当てを選択する(ステップ314)。
【0103】
図4Aは、所与の部分的割当てに関するバイナリ変数に関する追加の制約を生成するための例示的なプロセス400のフロー図である。便宜上、プロセス400について、1つまたは複数の場所において配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。例えば、適切にプログラムされたMIPソルバシステム、例えば、
図1のMIPソルバシステム100が、プロセス400を実行することができる。
【0104】
各部分的割当てについて、システムは、最初に、バイナリ変数を部分的割当てに関する適切なサブセット内に含めるかどうかを決定し、次いで、そうである場合、バイナリ変数に関する追加の制約を決定するために、整数変数のセット内の各バイナリ変数について、プロセス400を実行することができる。
【0105】
さらに、システムは、部分的割当ての各々についてプロセス400を並行して実行することができる。
【0106】
整数変数のセット内の各バイナリ変数について、システムは、対応する割当てニューラルネットワークヘッドを使用して、バイナリ変数に関する少なくともそれぞれの埋込みを処理することによって、バイナリ変数に関する割当て確率を生成する(ステップ402)。
【0107】
特定の例として、割当てニューラルネットワークヘッドは、割当て確率を定義する値を出力として生成するために、所与のバイナリ変数に関する埋込みを処理するMLPであり得る。例えば、MLPは、割当て確率を直接出力することができる。別の例として、値は、成功確率が1/(1+exp(-yd))に等しくなるように、ベルヌーイ分布の成功確率を定義することができ、ここで、ydは、MLPによって出力される値である。
【0108】
場合によっては、システムは、単一の割当てニューラルネットワークヘッドのみを使用し、すなわち、各部分的割当ては、同じ割当てニューラルネットワークヘッドに対応する。
【0109】
いくつかの他の例において、各部分的割当ては、複数の割当てニューラルネットワークヘッドのセット内のそれぞれの割当てニューラルネットワークヘッドに対応する。複数の割当てニューラルネットワークヘッドの各々は、第1のサブセットの、すなわち、整数変数のサブセットの異なる予想カバレッジを結果として生じる割当て確率を生成するようにトレーニングされている。特定の例として、各部分的割当ては、各々の他の割当てニューラルネットワークヘッドとは異なる予想カバレッジを結果として生じる割当て確率を生成するようにトレーニングされている異なる割当てニューラルネットワークヘッドに対応することができる。ここで、整数値のサブセットの「カバレッジ」は、割り当てられる整数変数のサブセットの割合を示す値である。例えば、それは、割り当てられている整数変数の数と割り当てられていない整数変数の数との比率として定義され得る。
【0110】
次いで、各バイナリ変数について、システムは、バイナリ変数に関する割当て確率に従って、バイナリ変数をそれぞれの適切なサブセット内に含めるかどうかを決定する(ステップ404)。すなわち、システムは、割当て確率に等しい確率を有するバイナリ変数を含めると決定し、1から割当て確率を引いたものに等しい確率を有するバイナリ変数を含めないと決定する。
【0111】
それぞれの適切なサブセット内に含めるために選択された各バイナリ変数について、システムは、対応する予測ニューラルネットワークヘッドを使用して、バイナリ変数に関する少なくともそれぞれの埋込みを処理することによって、バイナリ変数に関する確率を生成する(ステップ406)。
【0112】
場合によっては、システムは、単一の予測ニューラルネットワークヘッドのみを使用し、すなわち、各部分的割当ては、同じ予測ニューラルネットワークヘッドに対応する。
【0113】
いくつかの他の場合において、各部分的割当ては、複数の予測ニューラルネットワークヘッドのセット内のそれぞれの予測ニューラルネットワークヘッドに対応する。特に、システムが複数の割当てニューラルネットワークヘッドを使用するいくつかの実装形態において、各予測ニューラルネットワークヘッドは、すなわち、各部分的割当てが、割当て-予測ヘッドのそれぞれのペアに対応するように、割当てニューラルネットワークヘッドのうちの1つに対応することができる。これらの場合において、各予測ヘッドは、以下でより詳細に説明するように、割当てヘッドのトレーニングの一部として対応する割当てヘッドと共同でトレーニングされている。
【0114】
さらに他の場合において、複数の割当てヘッドが存在する場合、依然として単一の予測ヘッドのみが存在する。
【0115】
特定の例として、対応する予測ニューラルネットワークヘッドは、確率を定義する値を出力として生成するために、所与のバイナリ変数に関する埋込みを処理するMLPであり得る。例えば、MLPは、確率を直接出力することができる。別の例として、値は、成功確率が1/(1+exp(-td))に等しくなるように、ベルヌーイ分布の成功確率を定義することができ、ここで、tdは、MLPによって出力される値である。
【0116】
次いで、それぞれの適切なサブセット内に含めるために選択された各バイナリ変数について、システムは、バイナリ変数に関する確率に従って、バイナリ変数に関する値をサンプリングし(ステップ408)、サンプリングされた値に等しくなるようにバイナリ変数の値を制約する追加の制約を生成する(ステップ410)。例えば、システムは、バイナリ変数がとることができる2つの変数のうちの高い方を、予測ヘッドによって生成された確率に等しい確率を用いてサンプリングし、低い方の値を、予測ヘッドによって生成された確率を1から引いたものに等しい確率を用いてサンプリングすることができ、またはその逆も同様である。
【0117】
図4Bは、所与の部分的割当てに関する一般的な整数変数に対する追加の制約を生成するための例示的なプロセス450のフロー図である。便宜上、プロセス450について、1つまたは複数の場所において配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。例えば、適切にプログラムされたMIPソルバシステム、例えば、
図1のMIPソルバシステム100が、プロセス450を実行することができる。
【0118】
各部分的割当てについて、システムは、最初に、変数を部分的割当てに関する適切なサブセット内に含めるかどうかを決定し、次いで、そうである場合、一般的な整数変数に対する追加の制約を決定するために、整数変数のセット内の各々の一般的な整数変数について、プロセス450を実行することができる。
【0119】
さらに、システムは、部分的割当ての各々についてプロセス450を並行して実行することができる。
【0120】
一般的な整数変数について、システムは、一般的な整数変数のカーディナリティ、すなわち、整数変数に関する上限と下限との間の差のバイナリ表現を表すビットのシーケンスに対して動作する。
【0121】
整数変数のセット内の各々の一般的な整数変数について、システムは、シーケンス内の最上位ビットから開始して進行する。
【0122】
一般に、各々の一般的な整数変数について、システムは、対応する割当てニューラルネットワークヘッド、すなわち、所与の部分的割当てに対応する割当てニューラルネットワークヘッドを使用して、一般的な整数変数に関する少なくともそれぞれの埋込みを処理することによって、ビットのシーケンス内の1つまたは複数のビットの各々に関するそれぞれの割当て確率を生成する。
【0123】
次いで、システムは、シーケンス内の最上位ビットに関する割当て確率に従って、バイナリ変数をそれぞれの適切なサブセット内に含めるかどうかを決定する。
【0124】
システムが、バイナリ変数を適切なサブセット内に含めることを決定した場合、システムは、それぞれの割当て確率に基づいて値がサンプリングされる1つまたは複数のビット内にどれくらい多くのビットを含めるかを決定する。次いで、システムは、一般的な整数変数の値に対する追加の制約を生成するために、1つまたは複数のビットに関するサンプリングされた値を使用する。
【0125】
このプロセスについて、ステップ452~460を参照して以下でより詳細に説明する。
【0126】
特にシステムは、対応する割当てニューラルネットワークヘッドを使用して、一般的な整数変数に関する少なくともそれぞれの埋込みを処理することによって、シーケンス内の現在のビットに関する割当て確率を生成する(ステップ452)。場合によっては、システムは、シーケンス内の各ビットについて独立して処理を実行する。これらの場合において、割当てニューラルネットワークヘッドへの入力は、それぞれの埋込みと、シーケンス内のビットのインデックスの識別子とを含むことができる。他の場合において、システムは、処理を自己回帰的に実行する。これらの場合において、割当てニューラルネットワークヘッドへの入力は、それぞれの埋込みと、識別子と、前のビットの処理から得られたデータとを含むことができる。
【0127】
次いで、システムは、割当て確率に基づいて、一般的な整数変数の値をさらに制約するかどうかを決定する(ステップ454)。
【0128】
一般的な整数変数の値をさらに制約しないとの決定に応答して、システムは、一般的な整数変数に対する制約として現在の上限および下限を返す(ステップ456)。したがって、システムが、所与の一般的な整数変数について、シーケンス内の最上位ビットのみを処理した後、値をさらに制約しないと決定した場合、システムは、シーケンス内の最上位ビットに関する割当て確率に従って、それぞれの第2のサブセット内に変数を含めないことを効果的に決定する。
【0129】
一般的な整数変数の値をさらに制約するとの決定に応答して、システムは、対応する予測ニューラルネットワークヘッドを使用して、一般的な整数変数に関する少なくともそれぞれの埋込みを処理することによって、現在のビットに関する予測を生成し、予測に従って、現在のビットに関する値をサンプリングする(ステップ458)。場合によっては、システムは、シーケンス内の各ビットについて独立して処理を実行する。これらの場合において、予測ニューラルネットワークヘッドへの入力は、それぞれの埋込みと、シーケンス内のビットのインデックスの識別子とを含むことができる。他の場合において、システムは、処理を自己回帰的に実行する。これらの場合において、予測ニューラルネットワークヘッドへの入力は、それぞれの埋込みと、識別子と、前のビットの処理から得られたデータとを含むことができる。
【0130】
次いで、システムは、サンプリングされた値に基づいて、一般的な整数変数の値に対する制約を更新する(ステップ460)。すなわち、システムは、ビットに対してどの値がサンプリングされるかに基づいて、現在の下限を増加させるか、現在の上限を減少させるかを決定する。
【0131】
例えば、ビットに関する値が1である場合、システムは、(ub-lb)/2の最高限度に等しい値を現在の下限に加えることによって、現在の下限を増加させることができ、ここで、ubは、現在の上限であり、lbは、現在の下限である。
【0132】
別の例として、ビットに関する値が0である場合、システムは、(ub-lb)/2の最低限度に等しい値を現在の上限から減じることによって、現在の上限を減少させることができる。
【0133】
いくつかの実装形態において、システムは、値が、シーケンス内のビットのすべてについてサンプリングされるまで、またはシステムが、ステップ456において変数の値をさらに制約しないと決定するまで、プロセス450を実行し続ける。これらの実装形態において、システムが、シーケンス内のビットのすべてについてそれぞれの値をサンプリングした場合、サンプリングされた値は、一般的な整数変数に関する単一の値を定義し、すなわち、追加の制約は、一般的な整数値に関する正確な値を指定する。値がサンプリングされる1つまたは複数のビットが、シーケンス内の1つまたは複数の最上位ビットを含むビットのシーケンスの適切なサブセットのみを含む場合、サンプリングされた値は、一般的な整数変数に関する値の範囲を定義し、追加の制約は、最上位ビットに関するサンプリングされた値によって定義される値の範囲内の値を有するように一般的な整数を制約する。
【0134】
いくつかの他の実装形態において、システムは、値がサンプリングされ得るビットの最大数を指定するしきい値を維持する。シーケンスが、しきい値数を超えるビットを含む場合、システムは、しきい値数のビットに関する値がサンプリングされた後、追加のビットが残っており、システムが変数の値をさらに制約しないとまだ決定していない場合であっても、プロセス450を終了することになる。したがって、これらの実装形態において、カーディナリティが、しきい値よりも長いビットのシーケンスを結果として生じる一般的な整数変数は、正確な値にではなく、複数の整数の範囲内にあるように制約されたそれらの値を常に有することになる。
【0135】
上で説明したように、新しいMIPに関する割当てを生成するために、エンコーダニューラルネットワークと、割当てニューラルネットワークヘッドと、予測ニューラルネットワークヘッドとを使用する前に、システムは、トレーニングデータにおいてニューラルネットワークをトレーニングする。
【0136】
トレーニングデータは、複数のトレーニングMIPの各々について、(i)MIPを指定するパラメータと、(ii)MIPに関する1つまたは複数の実行可能な割当てとを含む。例えば、実行可能な割当ては、MIPソルバまたは別のヒューリスティックベースのソルバによって生成されている可能性がある。有利なことに、実行可能な割当ては、最適であること(または最適に近づくこと)を必要としない。すなわち、システムまたはトレーニングシステムは、トレーニングデータが、多くの最適ではないが実行可能な割当てを含む場合であっても、高品質の割当てを生成するためにニューラルネットワークをトレーニングすることができ、すなわち、実行可能な割当てを生成することは、最適な割当てを検索することよりもはるかに容易であるので、はるかにより広い範囲の割当てが使用され、トレーニングデータがはるかにより容易に収集されることを可能にする。特定の例として、所与のトレーニングMIPに関する実行可能な割当ては、トレーニングMIPに関する最終割当てを検索している間に、ヒューリスティックベースのソルバによって生成された、すなわち、上記の技法のいずれも用いることなく、MIPをゼロから解くためにソルバのみを使用して生成された実行可能な割当てのすべてを含むことができる。したがって、所与のMIPに関する実行可能な割当ては、ソルバによって発見された最適な割当てに加えて、多くの実行可能ではあるが最適ではない割当てを含むことになる。
【0137】
特に、システムは、(i)予測ヘッドが、より高品質の割当てを結果として生じる確率を生成することを奨励する一方で、(ii)各割当てヘッドが、対応するカバレッジレベルを有する適切なサブセットを結果として生じる割当て確率を生成することを奨励する(すなわち、変数、または具体的には、整数変数の所望の割合が割り当てられる)目的関数を最適化するために、トレーニングデータにおいてニューラルネットワークをトレーニングする。
【0138】
特定の例として、システムは、以下の損失関数Lを最小化するために、適切な教師あり学習技法を使用してニューラルネットワークをトレーニングすることができ、
【0139】
【0140】
、ここで、Nは、トレーニングデータのバッチ内のトレーニングMIPの数であり、iは、整数インデックスであり、Miは、バッチ内のi番目のMIPであり、Niは、i番目のMIPに関する実行可能な解の総数であり、xi,jは、i番目のMIPに関するj番目の実行可能な解であり、xi,j
dは、i番目のMIPに関するj番目の実行可能な解における整数変数Ιのセット内のd番目の整数変数に関する値であり、θは、ニューラルネットワークのパラメータであり、pθ(xi,j
d|Mi)は、Miの入力表現を処理することによってニューラルネットワークによってxi,j
dに割り当てられる確率であり、yi,j
dは、予測されるカバレッジCを有するようにトレーニングされた割当てヘッドによってi番目のMIPに関するj番目の実行可能な解における整数変数Ιのセット内のd番目の整数変数に割り当てられた割当て確率であり、λは、ハイパーパラメータであり、Ψは、ペナルティ項、例えば、2次ペナルティ項である。
【0141】
複数の割当て、予測ヘッド、またはその両方が存在する場合、システムは、Cの複数の異なる値を用いてモデルの複数のセットを同時にトレーニングすることができる。例えば、システムは、対応するCの値を使用して、割当て-予測ヘッドの各ペアをトレーニングし、次いで、すべてのペア間で共有されるエンコーダに勾配を逆伝播することができる。
【0142】
上の説明は、割当て確率および値確率、すなわち、予測ヘッドによって生成される確率が、適切なサブセットにおける各変数について独立して生成されると説明したが、場合によっては、システムは、所与の変数に関する値確率が、順序付けにおいて所与の変数の前の変数に関する値確率に依存するように、適切なサブセット内の変数のなんらかの順序付けに従って、値確率を自己回帰的に生成する。例えば、システムは、MIPに関するパラメータデータにおいて識別される順序に従って、変数の各々に関する目的係数に従って、またはヒューリスティックベースのソルバによって決定されるような変数のそれぞれの割合に従って、変数をランダムに順序付けすることができる。
【0143】
システムは、様々な方法のいずれかにおいて、値確率を自己回帰的に生成することができる。例えば、予測ヘッドは、値確率を生成するために埋込みを順次処理する自己回帰ニューラルネットワーク、例えば、LSTMまたはトランスフォーマであり得る。別の例として、システムは、変数値がサンプリングされて割り当てられるとき、基礎となるLP(線形計画)問題を増分的に解くことによってのみ、自己回帰的依存関係を提供することができる。基礎となるLP問題は、元の最適化問題から変数のうちのいくつかが整数であるという制約を取り除くことによって生じることになる問題である。この制約が取り除かれた最適化は、「LP緩和」と呼ばれる。すなわち、これらの例において、予測ヘッドは、依然としてMLPであるが、MLPへの入力は、各々の所与の変数について、ヒューリスティックベースのソルバによって生成されたMLPに関する割当てを指定するデータを含み、順序内の所与の変数の前の変数の値のうちのいくつかまたはすべては、それらの変数について生成された追加の制約に基づいて制約される。例えば、システムは、順序内のK個の変数ごとにMLPソルバを実行することができ、各所与の変数に関する入力は、所与の変数に関する埋込みと、MLPソルバの最新の実行の結果として計算された割当てとを含むことができる。
【0144】
図5は、MIPに関する最適性ギャップデータを生成するための例示的なプロセス500のフロー図である。便宜上、プロセス500について、1つまたは複数の場所において配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。例えば、適切にプログラムされたMIPソルバシステム、例えば、
図1のMIPソルバシステム100が、プロセス500を実行することができる。
【0145】
特に、最適性ギャップデータは、プロセス300を使用して生成された最終割当てに関する最適性ギャップ証明を定義する。
【0146】
最適性ギャップ証明を生成するために、システムは、複数のステップにわたって、探索木の各ノードにおいて部分的整数割当てを有する探索木を再帰的に生成する分枝限定技法を使用して、最適性ギャップデータを生成する。
【0147】
分枝限定技法の各ステップにおいて、システムは、現在の探索木の分枝元の葉ノードを選択する(ステップ502)。システムは、適切なMIPダイビング技法を使用してこのノードを選択することができる。
【0148】
システムは、選択された葉ノードを拡張するかどうかを決定する(ステップ504)。例えば、システムは、そのノードにおける固定変数の範囲をそれらの割り当てられた値に制約するLP緩和を解くことができる。この解は、選択された葉ノードから任意のさらなる子ノードの真の目的値における有効な下限を与える。この境界が既知の実行可能な割当てよりも大きい場合、システムは、元の問題に対する最適解がそのノードからの部分木において存在することができないので、葉ノードを拡張せず、探索木のこの部分を刈り取ることを決定する。境界がより大きくない場合、システムは、選択された葉ノードを拡張することを決定する。
【0149】
選択された葉ノードを拡張するとの決定に応答して、システムは、選択された葉ノードにおける未固定変数(すなわち、値が割り当てられていない変数)のセットから変数を選択する。
【0150】
変数を選択するために、システムは、すなわち、
図1および
図2を参照して上で説明したように、選択された葉ノードによって定義されたサブMIPの新しい入力表現を生成する(ステップ506)。サブMIPは、パラメータデータによって定義された元のMIPに、対応する部分的割当てを適用した結果として生じる、より小さいMIPである。
【0151】
次いで、システムは、未固定変数の各々についてそれぞれの埋込みを生成するために、第2のエンコーダニューラルネットワークを使用して新しい入力表現を処理する(セット508)。第2のエンコーダニューラルネットワークは、一般に、最終割当てを決定するために使用される上で説明したエンコーダニューラルネットワークと同じアーキテクチャを有する。いくつかの実装形態において、2つのニューラルネットワークは、同じニューラルネットワークであり、すなわち、上で説明したようにエンコーダニューラルネットワークをトレーニングすることによって決定された同じパラメータ値を有する。いくつかの他の実装形態において、以下でより詳細に説明するように、第2のエンコーダニューラルネットワークは、異なるパラメータ値を有する。
【0152】
次いで、システムは、未固定変数の各々について、それぞれの分枝スコアを生成するために、分枝ニューラルネットワークを使用してそれぞれの埋込みを処理し、それぞれの分枝スコアを使用して変数を選択する(ステップ510)。
【0153】
次いで、システムは、選択された変数について異なる「ドメイン」(範囲)を各々が有する2つの子ノードを探索木に追加することによって、探索木を拡張する(ステップ512)。異なるドメインは、ノードのうちの一方については、選択された変数が親ノードにおける選択された変数に関するLP緩和値の最高限度以上になるように制約されるのに対し、他方のノードについては、選択された変数は、親ノードにおける選択された変数に関するそのLP緩和値の最低限度以下になるように制約される。
【0154】
(ステップ504において)探索木を拡張しないとの決定に応答して、システムは、分枝限定技法の現在のステップを終了し、すなわち、ステップ502に戻る。
【0155】
システムは、模倣学習を使用して、分枝ニューラルネットワークと、オプションで第2のエンコーダニューラルネットワークとをトレーニングすることができる。特定の例として、システムは、エキスパートポリシーによって生成されたものを模倣する分枝決定を生成するように、2つのニューラルネットワークをトレーニングすることができる。例えば、エキスパートポリシーは、ノード効率がよいが、推論時に展開するには計算集約的であり過ぎることになる、計算集約的なエキスパートであり得る。
【0156】
図6は、様々なMIP解決タスクにおける別のMIP解決技法と比較した、説明した技法の性能を示す。
【0157】
特に、
図6は、特定のタスクのために調整されたハイパーパラメータを有するSCIPヒューリスティックベースのソルバを使用する従来の最先端のヒューリスティックベースの技法-「調整されたSCIP」技法と比較した、説明した技法の性能を示す6つのプロットを示す。各プロットは、説明した技法の2つの変形例、部分的割当ての生成および候補最終解の生成が部分的割当てに対して順番に実行される「シーケンシャルニューラルダイビング」と、部分的割当ての生成および候補最終解の生成が各部分的割当てについて並行して実行され、各部分的割当てが異なるコンピュータに割り当てられる「パラレルニューラルダイビング」とを示す。
【0158】
各プロットは、すなわち、より小さい平均プライマルギャップが、最高の既知の目的値をより密接に達成する、より優れた性能の解を示すように、対応するデータセットにおける実行時間の関数として、プライマル境界と、様々なアルゴリズムによって達成される最良の既知の目的値との間の平均プライマルギャップを示す。
【0159】
プロット610は、MIPを解くことによってハイイログマのための緑の回廊(wildlife corridor)を構築することを必要とするCORLATタスクにおける性能を示す。
【0160】
プロット620は、MIPを解くことによってニューラルネットワークが入力摂動に対してロバストであるかどうかを検証することを必要とするニューラルネットワーク検証タスクにおける性能を示す。
【0161】
プロット630は、MIPを解くことによって記憶場所をデータセンタ内のデータベースのシャードに割り当てることを必要とする生産パッキングタスクにおける性能を示す。
【0162】
プロット640は、MIPを解くことによってデータセンタ容量を異なるソフトウェアサービスに割り当てることを必要とする生産計画タスクにおける性能を示す。
【0163】
プロット650は、MIPを解くことによって電力需要を満たすために1日の異なる時間間隔において使用する発電機の選択を最適化する電力グリッド最適化タスクにおける性能を示す。
【0164】
プロット660は、MIPLIBタスクにおける性能を示す。MIPLIBは、多くの異なるアプリケーション領域にわたるMIPの「ハード」インスタンスを含む異種データセットである。
【0165】
プロット610~660からわかるように、シーケンシャルニューラルダイビングとパラレルニューラルダイビングの両方は、すべての時間間隔にわたって、調整されたSCIPよりも大幅に改善し、パラレルニューラルダイビングによって用いられる並列化は、多くのタスクに関するシーケンシャルニューラルダイビング手法にわたって大幅な時間の節約を提供する。すなわち、説明した技法は、並列処理ハードウェアを活用するように設計され、並列ニューラルダイビング手法は、最先端の従来技法と、説明した技法のシーケンシャルバージョンの両方を大幅に改善するためである。
【0166】
図7は、MIP解決タスクの同じセットにおける他のMIP解決技法と比較した、説明した技法の性能も示す。
【0167】
特に、
図7は、「調整されたSCIP」技法、「シーケンシャルニューラルダイビング」技法、および「パラレルニューラルダイビング」手法の性能を示す6つのプロットを示す。
【0168】
各プロットは、すなわち、インスタンスのより大きい割合が、所与の時点において最もよく知られている目的値をより密接に達成する、より優れた性能の解を示すように、(周知の解と比較した)複数の時点における様々なアルゴリズムによって達成される目標ギャップ以下のプライマルギャップを有するインスタンスの割合を示す。
【0169】
プロット710は、CORLATタスクにおける性能を示し、プロット720は、ニューラルネットワーク検証タスクにおける性能を示し、プロット730は、生産パッキングタスクにおける性能を示し、プロット740は、生産計画タスクにおける性能を示し、プロット750は、電力グリッド最適化タスクにおける性能を示し、プロット760は、MIPLIBタスクにおける性能を示す。
【0170】
プロット710~760からわかるように、いくつかのタスクにおいて、調整されたSCIPは、シーケンシャルニューラルダイビングとパラレルニューラルダイビングの両方によって達成される割合に最終的に追いつくかまたはそれを超えるが、パラレルニューラルダイビングは、すべてのタスクにおいて、調整されたSCIPよりもはるかに迅速に高品質の解の高い割合を達成する。すなわち、説明した技法は、並列処理ハードウェアを活用するように設計されているので、パラレルニューラルダイビング手法は、例えば、低遅延解が必要なタスクにおいて、高品質の解をより迅速に一貫して生成することができる。
【0171】
本明細書は、システムおよびコンピュータプログラム構成要素に関連して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムについて、特定の動作またはアクションを実行するように構成されることは、システムが、動作時にシステムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールされていることを意味する。1つまたは複数のコンピュータプログラムについて、特定の動作またはアクションを実行するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。
【0172】
本明細書で説明する主題の実施形態および機能動作は、デジタル電子回路において、有形に具体化されたコンピュータソフトウェアもしくはファームウェアにおいて、本明細書で開示する構造とそれらの構造的均等物とを含むコンピュータハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行するため、またはデータ処理装置の動作を制御するために有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであり得る。代替的に、またはそれに加えて、プログラム命令は、データ処理装置による実行のために適切な受信機装置に伝送するための情報を符号化するために生成される、人工的に生成された伝播信号、例えば、機械生成された電気信号、光信号、または電磁信号上に符号化され得る。
【0173】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例として、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置はまた、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)であり得、またはそれらをさらに含むことができる。装置は、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードをオプションで含むことができる。
【0174】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれるまたは記述される場合もあるコンピュータプログラムは、コンパイル型言語もしくはインタープリタ型言語、または宣言型言語もしくは手続き型言語を含む、任意の形態のプログラミング言語で書かれ得、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、もしくはコンピューティング環境において使用するのに適した他のユニットとして、を含む、任意の形態で展開され得る。プログラムは、必要ではないが、ファイルシステム内のファイルに対応し得る。プログラムは、他のプログラムまたはデータを保持するファイルの一部分、例えば、マークアップ言語文書内に記憶された1つまたは複数のスクリプト内に、対象のプログラム専用の単一のファイル内に、または、複数の協調ファイル、例えば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部分を記憶するファイル内に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つのサイトにおいて配置され、もしくは複数のサイトにわたって分散され、データ通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
【0175】
本明細書では、「データベース」という用語は、データの任意の集合を指すように広く使用され、データは、任意の特定の方法で構成される必要はなく、またはまったく構成される必要はなく、1つまたは複数の場所における記憶デバイス上に記憶され得る。したがって、例えば、インデックスデータベースは、データの複数の集合体を含むことができ、その各々は、異なって編成およびアクセスされ得る。
【0176】
同様に、本明細書では、「エンジン」という用語は、1つもしくは複数の特定の機能を実行するようにプログラムされるソフトウェアベースのシステム、サブシステム、または、プロセスを指すように広く使用される。一般に、エンジンは、1つまたは複数の場所における1つまたは複数のコンピュータ上にインストールされた1つまたは複数のソフトウェアモジュールまたは構成要素として実装されることになる。場合によっては、1つまたは複数のコンピュータが、特定のエンジン専用にされることになり、他の場合では、複数のエンジンが、同じコンピュータ上にインストールされ、実行され得る。
【0177】
本明細書に記載のプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによって機能を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実行され得る。プロセスおよび論理フローは、専用論理回路、例えば、FPGAもしくはASICによって、または、専用論理回路および1つもしくは複数のプログラムされたコンピュータによっても実行され得る。
【0178】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサもしくはその両方、または任意の他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、読出し専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信することになる。コンピュータの必須要素は、命令を実行または遂行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。中央処理装置およびメモリは、専用論理回路によって補完され得るか、または専用論理回路内に組み込まれ得る。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、または光ディスクも含むか、または、それらからデータを受信する、もしくはそれらにデータを送信する、もしくはその両方のために動作可能に結合されることになる。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えば、少しだけ例を挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)レシーバ、または携帯型記憶デバイス、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ内に組み込まれ得る。
【0179】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。
【0180】
ユーザとの対話を提供するために、本明細書に記載の主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、例えば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、例えば、マウスまたはトラックボールとを有するコンピュータ上で実装され得る。ユーザとの対話を提供するために、他の種類のデバイスが同様に使用され得、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚的フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そこから文書を受信することによって、例えば、ユーザのデバイス上のウェブブラウザから受信した要求に応答してウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。また、コンピュータは、パーソナルデバイス、例えば、メッセージングアプリケーションを実行しているスマートフォンにテキストメッセージまたは他の形態のメッセージを送信し、引き換えにユーザから応答メッセージを受信することによってユーザと対話することができる。
【0181】
機械学習モデルを実施するためのデータ処理装置は、例えば、機械学習の訓練または製作、すなわち、推論、作業負荷の共通部分および計算集約的部分を処理するための専用ハードウェアアクセラレータユニットを含むこともできる。
【0182】
機械学習モデルは、機械学習フレームワーク、例えば、TensorFlowフレームワークを使用して実装および展開され得る。
【0183】
本明細書に記載の主題の実施形態は、バックエンド構成要素を、例えば、データサーバとして含む、または、ミドルウェア構成要素、例えば、アプリケーションサーバを含む、または、フロントエンド構成要素、例えば、グラフィカルユーザインターフェース、ウェブサーバ、もしくは、ユーザが、本明細書に記載の主題の一実装形態と対話することができるアプリを有するクライアントコンピュータを含む、または、1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、例えば、インターネットを含む。
【0184】
コンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントおよびサーバは、一般に、互いに離れており、典型的には、通信ネットワークを介して対話する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、例えば、クライアントとして動作するデバイスと対話するユーザに対してデータを表示し、ユーザからのユーザ入力を受信する目的のために、データ、例えば、HTMLページをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、例えば、ユーザ対話の結果が、デバイスからサーバにおいて受信され得る。
【0185】
本明細書は、多くの具体的な実装形態の詳細を含むが、これらは、任意の発明の範囲に対する限定、または特許請求されてもよい範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書において別々の実施形態の文脈で説明されている特定の特徴は、単一の実施形態において組み合わせても実施され得る。逆に、単一の実施形態の文脈で説明されている様々な特徴は、複数の実施形態において別々に、または任意の適切な部分的組合せにおいても実装され得る。さらに、特徴は、特定の組合せにおいて作用するものとして上で説明されている場合があり、そのようなものとして当初は特許請求されている場合さえあるが、特許請求された組合せからの1つまたは複数の特徴は、場合によっては組合せから削除され得、特許請求された組合せは、部分的組合せまたは部分的組合せの変形例に向けられ得る。
【0186】
同様に、動作は、特定の順序で図面に描かれ、特許請求の範囲に列挙されているが、これは、所望の結果を達成するために、そのような動作が示された特定の順序もしくはシーケンシャルな順序で実行されること、または示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスキングおよび並列処理が有利な場合がある。さらに、上で説明した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品において一緒に統合され得、または複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
【0187】
主題の特定の実施形態について説明した。他の実施形態は、添付の特許請求の範囲内にある。例えば、特許請求の範囲内に列挙された行動は、異なる順序で実行され得、依然として所望の結果を達成することができる。1つの例として、添付の図面において描かれたプロセスは、所望の結果を達成するために、示された特定の順序、またはシーケンシャルな順序を必ずしも必要としない。場合によっては、マルチタスキングおよび並列処理が有利な場合がある。
【符号の説明】
【0188】
100 混合整数問題(MIP)ソルバシステム、MIPソルバシステム、ソルバシステム、システム
102 パラメータデータ
112 最終割当て
114 最適性ギャップデータ、出力最適性ギャップデータ
120 入力表現
130 エンコーダニューラルネットワーク
140 埋込み、出力埋込み
150 MIPソルバ
160 部分的割当てエンジン、エンジン
162 部分的割当て
170 候補最終割当て
210 2部グラフ
212 変数ノード
214 制約ノード
216 エッジ
220 エンコーダニューラルネットワーク
610 プロット
620 プロット
630 プロット
640 プロット
650 プロット
660 プロット
710 プロット
720 プロット
730 プロット
740 プロット
750 プロット
760 プロット