プログラミング
最適化ソルバー・アズ・ア・サービス
Optimization Solver as a Service (quicopt.com)
要約
Quicoptは、複雑な最適化問題を解決するためのサービスです。ユーザーは、OR-Tools MathOptやPyomoといった標準的なPythonモデリングフロントエンドを使用してモデルを構築し、Quicoptクライアントの単一のsolve()呼び出しで問題を解くことができます。アカウントやAPIキーの管理は不要で、最初の呼び出しで自動的に設定されます。このサービスは、LP、QP、MILP、MINLP、QUBO、PUBO/HUBO、NLPモデルなど、様々な種類のモデルに対応しています。
全文翻訳
最初のモデルを解く
Quicoptは、困難な最適化問題のためのソルバーです。このページの目的は、空のディレクトリから3つのステップでモデルを解けるようにすることです:インストール、例の実行、何が起こったかを理解する。
あなたは標準的なPythonモデリングフロントエンド — OR-Tools MathOptまたはPyomo — でモデルを構築し、それを単一のclient.solve()呼び出しに渡します。
ここにあるものはすべて無料ティアで実行されます:アカウント不要、管理するAPIキー不要 — 最初の呼び出しで自動的に設定されます。APIを試すための小さなエントリーポイントです。質問がある場合や、さらに進みたい場合は、私たちにご相談ください。
ステップ1 — インストール
クライアントはPyPI上の1つのパッケージです。モデルを構築するフロントエンドと共にインストールしてください — このページにある例ではOR-Tools MathOptを使用しています:
Copypip install "quicopt[mathopt]"
Pyomoを好む場合は、代わりにquicopt[pyomo]をインストールしてください — solve()は両方の種類のモデルを直接受け入れます。これがセットアップのすべてです:ライセンスファイル不要、サインアップ不要、どこかにコピーするキー不要。
ステップ2 — 例を実行する
すぐに実行できる2つのスクリプト — QUBOと小さなMILP。どちらか一方を保存して実行してください。タブを切り替えて比較してください — 各スライドはモデルと正確に表示される内容を示しています:
QUBO
MILP
qubo.py
Copy
from ortools.math_opt.python import mathopt
from quicopt import Client
# QUBO: 4つのバイナリ変数、二次目的関数、制約なし。
model = mathopt.Model(name="qubo")
x = [model.add_binary_variable(name=f"x{i}") for i in range(4)]
# 各変数を報酬し、4サイクル0-1-2-3-0の隣接ペアを罰する。
# 異なる線形重みは対称性を破るため、最適解は一意です。
model.minimize(
-(1.0 * x[0] + 0.7 * x[1] + 1.3 * x[2] + 0.5 * x[3])
+ 2.0 * (x[0] * x[1] + x[1] * x[2] + x[2] * x[3] + x[0] * x[3])
)
client = Client("https://try.quicoptapi.pgi.fz-juelich.de")
result = client.solve(model)
print(result.display)
$ python qubo.py
├── shots
│ ├── 1 · Heuristic 1 -2.3 0.0s ◀ best
│ ├── 2 · Heuristic 2 -2.3 0.0s
│ └── 3 · Heuristic 2 -2.3 0.0s
├── status: heuristic
├── feasible: n/a
├── objective: -2.3
├── x: x0=1, x1=0, x2=1, x3=0 (4 variables)
└── solve_time: 0.0017 s
milp.py
Copy
from ortools.math_opt.python import mathopt
from quicopt import Client
# 小さな混合整数モデル:連続変数1つと整数変数1つ。
model = mathopt.Model(name="milp")
x = model.add_variable(lb=0.0, name="x")
y = model.add_integer_variable(lb=0.0, ub=10.0, name="y")
model.add_linear_constraint(x + 2 * y <= 14)
model.add_linear_constraint(3 * x - y >= 0)
model.maximize(3 * x + 4 * y)
client = Client("https://try.quicoptapi.pgi.fz-juelich.de")
result = client.solve(model)
print(result.display)
$ python milp.py
├── status: optimal
├── feasible: true
├── objective: 42.0
├── x: x=14, y=0 (2 variables)
└── solve_time: 0.0041 s
ステップ3 — 何が起こったかを理解する
例は3つのことを行いました:
モデルを構築しました — 変数、目的関数、(MILPでは)制約を持つ標準的なMathOpt Modelです。Quicopt固有のものは何もありません。同じコードはMathOpt互換のどのソルバーでも実行でき、Pyomoモデルも同様に機能します。
client.solve(model)を呼び出しました — クライアントはモデルを変換し、Quicopt APIに送信し、APIキーを処理しました。最初の呼び出しにはキーは必要ありません。1つが自動的に設定され、同じClientでのそれ以降のすべての呼び出しで再利用されます。
結果を表示して返しました — result.displayはサーバーがレンダリングするフレーム化されたビューです。Resultオブジェクトは、ステータス、目的関数、および変数名でキー付けされた解も運びます。すべてのフィールドはAPIリファレンスで説明されています。
今日解けるもの
APIは現在、LP、QP、MILP、MINLP、QUBO、PUBO/HUBO、NLPモデルを解決します — それぞれに実行可能な例があります。無料ティアの注意点:非線形モデルでは、バイナリのオン/オフ決定を超える整数変数はまだ受け入れられません。ブラックボックス目的関数はまもなく登場します。今日のクラス以外のモデルは、半解かれた結果ではなく、読みやすいメッセージで拒否されます。
無料ティアを超えて
無料ティアは、APIを試すための小さく、一度限りのエントリーポイントです。質問、不明な点、またはQuicoptで試したい実際のモデルはありますか?お気軽にお問い合わせください:
質問がありますか?私たちに話してください。
不明な点がある場合でも、実際のモデルでQuicoptを試したい場合でも、何を最適化しているか教えてください。
私たちに話す →
次へ
例 — サポートされているすべての問題クラスの実行可能なモデル、および実行不可能なモデルがどのように返されるかを含みます。
APIリファレンス — Quicopt Pythonクライアントのすべて:Client、solve()、Resultフィールド、および非同期ジョブAPI。
モデリングフロントエンド — PyomoとOR-Tools MathOptで表現できるもの。
このサービスについて
無料評価APIは現状有姿で提供され、評価および研究目的のみに使用されます。可用性、機能、または結果の保証はなく、サービスレベルもありません。責任は、法律で許可される範囲で、意図と重大な過失に限定されます。
当社は、将来のソルバーバージョンの改善のために、APIを介して送信されたデータを保持します。最適化モデル内に個人情報、機密情報、またはその他の機密性の高いデータを送信しないでください — サービスはそのような目的で設計されていません。詳細については、プライバシーポリシー・法的通知をご覧ください。