クイックスタート¶
このページでは,クイックスタートの手順の概要を説明します. Windows 11 の WSL 上に Hi-QUBO をインストールするより詳細な手順は Windows (WSL) でのクイックスタート をご覧ください.
インストール
インストール の手順に従って Hi-QUBO をインストールしてください. Windows ユーザーは Windows (WSL) でのクイックスタート をご覧ください.
サンプルプログラムのコンパイルと実行
Hi-QUBO サンプルプログラムの作成
以下の Hi-QUBO サンプルプログラムを作成し,ファイル test.cpp として保存してください:
#include <qbpp/easy_solver.hpp>
#include <qbpp/qbpp.hpp>
int main() {
auto a = qbpp::var("a");
auto b = qbpp::var("b");
auto c = qbpp::var("c");
auto f = qbpp::sqr(a + 2 * b + 3 * c - 4);
f.simplify_as_binary();
std::cout << "f = " << f << std::endl;
auto solver = qbpp::EasySolver(f);
auto sol = solver.search({{"time_limit", 10}, {"target_energy", 0}});
std::cout << "sol = " << sol << std::endl;
}
このプログラムでは,次の式\(f\)を展開整理して得られたQUBO式をEasySolverで解を求めます.
プログラムのコンパイル
test.cpp をコンパイルして実行ファイル test を生成します:
g++ test.cpp -o test -std=c++17 -ldl -pthread
このコマンドにより,test という名前の実行ファイルが作成されます. コンパイラオプションの意味は以下の通りです:
-std=c++17: C++17 標準を使用します.-ldl: 動的ローダライブラリをリンクします(Hi-QUBO は実行時にdlopenで .so をロードします).-pthread: POSIX スレッドのライブラリをリンクします(Hi-QUBO の.soがstd::threadを内部で使用するため必須).
プログラムの実行
test を以下のように実行すると,\(f\)を展開して得られた式と解を表示します:
./test
f = 16 -7*a -12*b -15*c +4*a*b +6*a*c +12*b*c
sol = 0:{{a,1},{b,0},{c,1}}
次のステップ
ライセンスをアクティベートしてください.詳細は ライセンス管理 をご覧ください.
Hi-QUBO の基本を学びましょう.Hi-QUBO (C++) の 基礎 から始めてください.
ケーススタディ で Hi-QUBO プログラムの例を探索してください.
このページでは,PyQBPP のクイックスタート手順の概要を説明します. Windows 11 の WSL 上に PyQBPP をインストールするより詳細な手順は Windows (WSL) でのクイックスタート をご覧ください.
インストール
インストール の手順に従って PyQBPP をインストールしてください. Windows ユーザーは Windows (WSL) でのクイックスタート をご覧ください.
PyQBPP は PyPI で配布されており,通常は以下のコマンドでインストールできます:
pip install pyqbpp
PyQBPP は qbpp_*.so 共有ライブラリを同梱しており,実行時にロードします.
サンプルプログラムの作成と実行
PyQBPP サンプルプログラムの作成
以下の PyQBPP サンプルプログラムを作成し,test.py として保存してください:
import pyqbpp as qbpp
a = qbpp.var("a")
b = qbpp.var("b")
c = qbpp.var("c")
f = qbpp.sqr(a + 2 * b + 3 * c - 4)
f = qbpp.simplify_as_binary(f)
print("f =", f)
solver = qbpp.EasySolver(f)
sol = solver.search(time_limit=10, target_energy=0)
print("sol =", sol)
このプログラムでは,次の式 \(f\) を展開整理して得られた QUBO 式を EasySolver で解を求めます.
このサンプルで使用している主な API は以下の通りです:
qbpp.var(name): 指定した名前のバイナリ変数を生成します.qbpp.sqr(expr): 式を二乗して展開した結果を返します.qbpp.simplify_as_binary(expr): バイナリ(0/1)ルール(x*x = x,x*~x = 0等)を適用し,同類項をまとめます.qbpp.EasySolver(expr): 指定した QUBO 式に対するソルバーを生成します.solver.search(**kwargs): ソルバーを実行します.time_limit(秒)やtarget_energyなどのパラメータはキーワード引数で渡します.
プログラムの実行
test.py を以下のように実行すると,\(f\) を展開して得られた式と解を表示します:
./test
f = 16 -7*a -12*b -15*c +4*a*b +6*a*c +12*b*c
sol = 0:{{a,1},{b,0},{c,1}}
出力の 1 行目は \(f\) を展開した QUBO 式です.
2 行目はソルバーが見つけた解で,エネルギー値(この例では 0 となり target_energy に一致)と変数割り当て \((a, b, c) = (1, 0, 1)\) を示しています.
次のステップ
ライセンスを有効化してください.詳細は ライセンス管理 を参照してください.
PyQBPP の基礎を学びましょう.PyQBPP (Python) の 基礎 から始めてください.
ケーススタディ で PyQBPP プログラムの例を探索してください.