動画(ハンズオン)

ブラウザで動く Python Playground にプログラムを入力して実行し、結果を見てから機能を説明する、初心者向けのシリーズの Python 版です。 何もインストールせずに、動画と一緒に入力しながら進められます。 同じ内容の C++ 版は、C++ 版のページにあります。 動画は YouTube のチャンネル QUBO++ で公開していて、再生リスト QUBO++ ハンズオン(日本語) に C++ 版と一緒にまとめています。 画像をクリックすると、このページで再生できます。 QUBO++ の使い方を体系的に説明する動画は動画(チュートリアル)、具体的な問題を解く例は動画(ケーススタディ)のページにあります。

QUBO++ ハンズオン #1 式を作って整理する(Python)(8:15・YouTube)Playground にプログラムを入力して実行し、出力を見ながら説明します。変数 x と y で (2x+3y-2) の 2 乗を作り、式が自動的に展開されることを確かめて、qbpp.simplify・qbpp.simplify_as_binary・qbpp.sqr で整理し、式に変数の値を渡して計算します。
QUBO++ ハンズオン #2 ソルバーで解く(Python)(6:06・YouTube)第 1 回の式 (x+2y+3z-3) の 2 乗を一番小さくする値を、ExhaustiveSolver で探します。print(sol) の出力と sol(x)・sol.energy、best_energy_sols=0 ですべての最適解、all_sols=1 ですべての解を見たあと、EasySolver に書き換えて 2 つのソルバーを比べます。
QUBO++ ハンズオン #3 変数の配列(Python)(6:28・YouTube)変数の配列を使って、8 個の数を和が等しい 2 つのグループに分けます。qbpp.var の shape で変数の配列を作り、qbpp.array と qbpp.sum で 2 つのグループの和 P と Q を式にして、(P − Q) の 2 乗を ExhaustiveSolver で最小にします。sol(x) で配列の値を取り出し、すべての最適解を表示したあと、40 個の数を EasySolver で分けます。
QUBO++ ハンズオン #4 制約(Python)(6:06・YouTube)10 個の品物から、重さの合計を 50 以下にして価値の合計が最大になる選び方を探します(ナップサック問題)。価値の合計にマイナスを付けて最小にし、qbpp.cons で重さの制約を加えて、制約の値と重みが式にどう効くかを見ます。sol.energy と f.cons(sol) を表示し、重みを小さくすると制約を破った解が選ばれることを確かめたあと、選ぶ個数の制約を加えます。

Back to top

Page last modified: 2026.11.05.

© 2026 中野浩嗣, 広島大学