Repolode
d-krupke

d-krupke/cpsat-primer

Google OR-ToolsのCP-SATソルバーを使って組合せ最適化問題のモデリングと解法を学べる、無料で公開された書籍形式の入門書です。

スター
834
フォーク
69
未解決の Issue
9
最終コミット
2 か月前

これは何?

CP-SAT Primerは、制約プログラミングとSATに基づく組合せ最適化ソルバーであるGoogle OR-ToolsのCP-SATソルバーを学ぶための、無料の書籍形式のチュートリアルです。コンピューターサイエンスの学生や開発者を対象に、全編を通してPythonの例を掲載し、CP-SATと混合整数計画(MIP)ソルバー、その他の最適化ツールを比較しています。

前半では、インストール、最初のモデル、変数・目的関数・制約の基本的なモデリング、回路・区間・リザーバー制約などの高度な制約、ソルバーのパラメーター、ソルバーログの読み方を扱います。後半では、保守しやすい最適化コードを書くためのパターン、APIを通じた最適化ジョブの提供、大規模近傍探索ヒューリスティック、モデルのベンチマークといった実践的なエンジニアリングのトピックを取り上げます。

この入門書はTU BraunschweigのDominik Krupkeがメンテナンスしており、CC-BY 4.0ライセンスで公開されています。同じ内容を本の形式で表示する専用サイトも用意されています。

主な機能

  • 01変数、目的関数、線形制約、論理制約など、CP-SATの基本を解説します。
  • 02回路制約、区間制約、NoOverlap制約などの高度な制約を説明します。
  • 03ソルバーの制限時間、ヒント、並列処理の設定方法を紹介します。
  • 04ソルバーログの読み方を解説し、解の品質を判断できるようにします。
  • 05CP-SATとMIPソルバー、その他の最適化手法を比較します。
  • 06Pythonのコード例を掲載し、大規模近傍探索のセクションも収録しています。

ユースケース

  • コンピューターサイエンスの学生が組合せ最適化を学ぶ。
  • スケジューリングやルーティングのモデルで、MIPソルバーからCP-SATに移行する。
  • APIの背後でCP-SATを動かす、保守しやすい最適化サービスを構築する。
  • 実運用の問題に向けてCP-SATモデルのベンチマークとチューニングを行う。

クイックスタート

  1. 1

    pipでOR-Toolsをインストールする

    pip install -U ortools
  2. 2

    READMEからKnapsackのサンプルをコピーして、Pythonで実行する

トピック

よくある質問

cpsat-primer とは?
Google OR-ToolsのCP-SATソルバーを使って組合せ最適化問題のモデリングと解法を学べる、無料で公開された書籍形式の入門書です。 CP-SAT Primerは、制約プログラミングとSATに基づく組合せ最適化ソルバーであるGoogle OR-ToolsのCP-SATソルバーを学ぶための、無料の書籍形式のチュートリアルです。コンピューターサイエンスの学生や開発者を対象に、全編を通してPythonの例を掲載し、CP-SATと混合整数計画(MIP)ソルバー、その他の最適化ツールを比較しています。
cpsat-primer は無料で使えますか?ライセンスは?
cpsat-primer は CC-BY-4.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
cpsat-primer は今もメンテナンスされていますか?
半年以内に更新あり。cpsat-primer の最終コミットは 2026年9月6日 です。
cpsat-primer は何に使えますか?
コンピューターサイエンスの学生が組合せ最適化を学ぶ。 スケジューリングやルーティングのモデルで、MIPソルバーからCP-SATに移行する。 APIの背後でCP-SATを動かす、保守しやすい最適化サービスを構築する。 実運用の問題に向けてCP-SATモデルのベンチマークとチューニングを行う。
cpsat-primer のインストール方法は?
pipでOR-Toolsをインストールする: pip install -U ortools READMEからKnapsackのサンプルをコピーして、Pythonで実行する
cpsat-primer はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/d-krupke/cpsat-primer

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト