HN 日本語サマリー

← 一覧へ戻る
プログラミング

最適化ソルバー・アズ・ア・サービス

Optimization Solver as a Service (quicopt.com)

40 pointsby paddi9132 コメント

要約

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を介して送信されたデータを保持します。最適化モデル内に個人情報、機密情報、またはその他の機密性の高いデータを送信しないでください — サービスはそのような目的で設計されていません。詳細については、プライバシーポリシー・法的通知をご覧ください。