About

Hi-QUBOとは

概要や計算の流れなどをご紹介します。

Hi-QUBOとは?

           

Hi-QUBOは、組み合わせ最適化問題(QUBO/HUBO)を計算するためのソルバーとQUBO/HUBOへの数式変換のためのプログラミング用インタフェースがセットになったライブラリの商用サービスです。

コア部分の計算にQUBO++エンジンを用いており、組み合わせ最適化問題をHUBO(High-order Unconstrained Binary Optimization)形式に記号処理で変換でき、効率よく解を探索するQUBO/HUBOソルバー群をまとめたC++ライブラリです。

定式化された最適化問題のプログラミング、QUBO/HUBO形式への変換、解の探索といった一連のプロセスをシームレスに開発できます。

C++またはPythonで開発可能

外部ソルバー連携を可能にするAPIを搭載

組み合わせ最適化問題と専用アルゴリズムに関する課題

組み合わせ最適化問題は、

  • 物流の効率化
  • エネルギー消費の最小化
  • スケジューリングの最適化

など、現代社会の幅広い分野で重要な役割を果たしています。これらの課題を効率的に解くことは、社会的コストの削減や持続可能な社会の実現に直結するため、極めて重要です。

しかし、各課題に特化した専用ソルバーを開発するには、高度な専門知識と膨大なコストが必要であり、実装のハードルが高いのが現状です。

組み合わせ最適化問題に対する汎用的なアルゴリズムを用いたアプローチ

多くの組み合わせ最適化問題は、QUBO(Quadratic Unconstrained Binary Optimization)問題に変換できることが知られています。

この性質を活用することで、Hi-QUBOではより効率的な解法を構築することが可能になります。

具体的には、以下の3ステップで最適化計算を行います。

1

変換

解きたい組み合わせ最適化問題をQUBO形式に変換する

2

探索

QUBOソルバーを用いて最適解を探索する

3

逆変換

得られた結果を元の問題の解に逆変換する

このアプローチにより、高性能なQUBOソルバーを利用すれば、変換処理と逆変換処理の開発だけで、複雑な組み合わせ最適化問題に対して高精度な解を得ることができます。

Hi-QUBOを用いたシームレスな最適化計算の流れ

  1. STEP 1

    数理モデル構築

    課題を組み合わせ最適化問題として定式化します。
  2. STEP 2

    コーディング

    C++またはPythonでコーディングを行います。 数式はほぼそのままの形でプログラムとして記述することが可能で、二値変換などの煩雑な記号処理については、内部で自動的に変換されます。
  3. STEP 3

    ソルバーによる計算

    高性能なソルバーで、一般的なPCでも高速な計算が期待できます。
    • Easy Solver(ヒューリスティック型)
    • Exhaustive Solver(全探索型)
    • ABS3(GPUソルバー)
  4. STEP 4

    最適解

主な特徴

Feature 01

簡潔なC++17ベースの設計

基本的な3つのC++クラス、変数(qbpp::Var)、式(qbpp::Expr)、解(qbpp::Sol)を理解すれば、QUBO/HUBO問題を扱うC++コードを簡単に作成できます。

変数、多項式などのコアクラスにはQUBO++エンジンを採用、提供されるクラス、APIを用いてプログラミングします。

Feature 02

HUBOも計算可能

2次に限定されるQUBOだけでなく高次のHUBOも扱えます。
Hi-QUBOのHUBOソルバーは、次数削減せず、直接探索で元の式の構造を保持して計算します

Feature 03

QUBO/HUBOソルバー

QUBO++エンジンを用いて、最適解を探索します。

Easy Solver(ヒューリスティック型)

ヒューリスティックアルゴリズムにより解探索。単純ながら比較的高い解探索能力を備えています。

  • マルチコアCPUの並列スレッドを活用した高速並列探索

Exhaustive Solver(全探索型)

全解探索。小規模QUBO問題で、すべての最適解を列挙できるため、デバッグに活用できます。

  • デバッグ用途:全解を探索し、厳密解を必ず求める。実利用可能な二値変数の個数の上限:30〜40程度

ABS3 GPU Solver

マルチGPUでヒューリスティックアルゴリズムにより解探索を行うQUBO/HUBOソルバーです。

  • 遺伝的アルゴリズム+シミュレーティッドアニーリングによる局所探索をCUDAコアで並列実行

商用の最適化ソルバー Groubi Optimizer のAPIを呼び出して計算することも可能性です。

Feature 04

並列処理による高速化

マルチスレッド化により、標準的なPCでも高速な計算が期待できます。

Feature 05

高い移植性

BoostやTBBなどの標準的なライブラリのみを利用し、Linuxベースの多くの計算機で動作します。
WindowsのWSLでも動作確認済みです。

Download

Hi-QUBOを使ってみる

無料でダウンロードして、お試しいただけます。