数理最適化モデル記述ツール JijModeling のご紹介

435 Views

May 30, 25

スライド概要

人工知能学会2025 の数理最適化オーガナイズドセッションでJijModelingについて発表した際のスライドです。

profile-image

株式会社Jijは、数理最適化・量子技術の専門家が集い、開発プラットフォームJijZeptをグローバルに提供するスタートアップです。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

人工知能学会2025 数理最適化モデル記述ツール JijModeling のご紹介 株式会社 Jij 石井大海*, 清水太郎, 寺村俊紀 @2025 Jij Inc. Slides Available 1

2.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 2

3.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 2

4.

JijModeling の概要 @2025 Jij Inc.

5.

JijModeling の概要 ● Pythonライブラリとして提供される数 理最適化モデラー ○ 数式に近い記法で最適化問題を定式化可能 ○ 社内案件でも実戦で活躍中 ● 弊社の数理最適化統合プラットフォー ムJijZept [JijZept] の根幹要素の一つ ● 通常のPython ライブラリとしても無償 利用が可能(PyPI にて配付中) 実務における数理最適化 pandas DuckDB 業務データ分析 JijModeling 数理モデル作成 Qamomile 前処理・エンコード JijPresolve SCIP 最適化 Gurobi JijSolver matplotlib MINTO Jupyter Kubeflow 可視化・検証 ©2025 Jij Inc. OMMX のデータ形式標準化 pip install jijmodeling uv add jijmodeling # With uv @2025 Jij Inc. 4

6.

JijModeling の概要 ● Pythonライブラリとして提供される数 理最適化モデラー ○ 数式に近い記法で最適化問題を定式化可能 ○ 社内案件でも実戦で活躍中 ● 弊社の数理最適化統合プラットフォー ムJijZept [JijZept] の根幹要素の一つ ● 通常のPython ライブラリとしても無償 利用が可能(PyPI にて配付中) 実務における数理最適化 pandas DuckDB 業務データ分析 JijModeling 数理モデル作成 Qamomile 前処理・エンコード JijPresolve SCIP 最適化 Gurobi JijSolver matplotlib MINTO Jupyter Kubeflow 可視化・検証 ©2025 Jij Inc. OMMX のデータ形式標準化 pip install jijmodeling uv add jijmodeling # With uv @2025 Jij Inc. 4

7.

About Me ● 石井大海(いしい・ひろみ) ● 2019年筑波大学数理物質科学研究科数学専攻修了。博士(理学) ○ 専門:数理論理学・計算機代数 ● 株式会社 Jij ソフトウェア開発チーム シニアエンジニア(2025/11〜) ○ JijModeling の設計・開発を担当 ○ 前職では汎用数値計算ソルバの言語設計に従事 ○ 数理ソフトウェアの領域特化言語の設計・開発が専門 ● 本日はこうした観点から JijModeling の特徴についてお話させて頂きます @2025 Jij Inc. 5

8.

JijModeling の特徴 01 Seamless Integration with Python Ecosystem 02 Separation of Model and Data Python エコシステムとの統合 モデルと実データの分離 03 Multiple Solver Support via OMMX 04 Constraint Detection OMMX による複数ソルバとの連携 制約条件検出による求解の高速化 05 Robustness and Efficiency via Rust Rust による堅牢性と効率性の両立 @2025 Jij Inc. 6

9.

JijModeling の特徴 01 Seamless Integration with Python Ecosystem 02 Separation of Model and Data Python エコシステムとの統合 モデルと実データの分離 03 Multiple Solver Support via OMMX 04 Constraint Detection OMMX による複数ソルバとの連携 制約条件検出による求解の高速化 05 Robustness and Efficiency via Rust Rust による堅牢性と効率性の両立 @2025 Jij Inc. 6

10.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 7

11.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 7

12.

JijModeling による記述例 Python との統合、モデル・データ分離、OMMX @2025 Jij Inc.

13.

問題 N 個の物品について、各物品の価値 vi と重さ wi が与えられる。ナップザックの耐荷重 W を越え ない範囲で、価値の総和を最大化せよ。 例題:ナップザック問題 @2025 Jij Inc. 定式化 二進決定変数 xi ∈ {0,1} に対し、 9

14.

JijModeling によるナップザック問題の定式化 import jijmodeling as jm v = jm.Placeholder("v", ndim=1) # アイテムの価値 w = jm.Placeholder("w", ndim=1) # アイテムの重さ W = jm.Placeholder("W") # ナップサックの耐荷重 N = v.len_at(0, latex="N") # アイテムの総数 # アイテムiをナップサックに入れる場合は1, 入れない場合は0を取る決定変数 x = jm.BinaryVar("x", shape=(N,)) # アイテムに割り当てられた番号を走る添え字 i = jm.Element("i", belong_to=(0, N)) problem = jm.Problem("Knapsack Problem", sense=jm.ProblemSense.MAXIMIZE) problem += jm.sum(i, v[i] * x[i]) problem += jm.Constraint("重量制限", jm.sum(i, w[i] * x[i]) W) 10 = < @2025 Jij Inc.

15.

JijModeling によるナップザック問題の定式化 import jijmodeling as jm v = jm.Placeholder("v", ndim=1) # アイテムの価値 w = jm.Placeholder("w", ndim=1) # アイテムの重さ W = jm.Placeholder("W") # ナップサックの耐荷重 N = v.len_at(0, latex="N") # アイテムの総数 # アイテムiをナップサックに入れる場合は1, 入れない場合は0を取る決定変数 x = jm.BinaryVar("x", shape=(N,)) # アイテムに割り当てられた番号を走る添え字 最大化問題 i = jm.Element("i", belong_to=(0, N)) problem = jm.Problem("Knapsack Problem", sense=jm.ProblemSense.MAXIMIZE) problem += jm.sum(i, v[i] * x[i]) problem += jm.Constraint("重量制限", jm.sum(i, w[i] * x[i]) W) 10 = < @2025 Jij Inc.

16.

JijModeling によるナップザック問題の定式化 import jijmodeling as jm v = jm.Placeholder("v", ndim=1) # アイテムの価値 w = jm.Placeholder("w", ndim=1) # アイテムの重さ W = jm.Placeholder("W") # ナップサックの耐荷重 N = v.len_at(0, latex="N") # アイテムの総数 # アイテムiをナップサックに入れる場合は1, 入れない場合は0を取る決定変数 x = jm.BinaryVar("x", shape=(N,)) # アイテムに割り当てられた番号を走る添え字 目的関数 N−1 最大化問題 vx ∑ i i i = jm.Element("i", belong_to=(0, N)) i=0 problem = jm.Problem("Knapsack Problem", sense=jm.ProblemSense.MAXIMIZE) problem += jm.sum(i, v[i] * x[i]) problem += jm.Constraint("重量制限", jm.sum(i, w[i] * x[i]) W) 10 = < @2025 Jij Inc.

17.

JijModeling によるナップザック問題の定式化 import jijmodeling as jm v = jm.Placeholder("v", ndim=1) # アイテムの価値 w = jm.Placeholder("w", ndim=1) # アイテムの重さ W = jm.Placeholder("W") # ナップサックの耐荷重 N = v.len_at(0, latex="N") # アイテムの総数 # アイテムiをナップサックに入れる場合は1, 入れない場合は0を取る決定変数 x = jm.BinaryVar("x", shape=(N,)) # アイテムに割り当てられた番号を走る添え字 目的関数 N−1 最大化問題 vx ∑ i i i = jm.Element("i", belong_to=(0, N)) i=0 problem = jm.Problem("Knapsack Problem", sense=jm.ProblemSense.MAXIMIZE) problem += jm.sum(i, v[i] * x[i]) problem += jm.Constraint("重量制限", jm.sum(i, w[i] * x[i]) W) 制約条件 @2025 Jij Inc. N−1 ∑ = < i=0 wi xi ≤ W 10

18.

JijModeling によるナップザック問題の定式化 import jijmodeling as jm 数式に近い 記述が可能! v = jm.Placeholder("v", ndim=1) # アイテムの価値 w = jm.Placeholder("w", ndim=1) # アイテムの重さ W = jm.Placeholder("W") # ナップサックの耐荷重 N = v.len_at(0, latex="N") # アイテムの総数 # アイテムiをナップサックに入れる場合は1, 入れない場合は0を取る決定変数 x = jm.BinaryVar("x", shape=(N,)) # アイテムに割り当てられた番号を走る添え字 目的関数 N−1 最大化問題 vx ∑ i i i = jm.Element("i", belong_to=(0, N)) i=0 problem = jm.Problem("Knapsack Problem", sense=jm.ProblemSense.MAXIMIZE) problem += jm.sum(i, v[i] * x[i]) problem += jm.Constraint("重量制限", jm.sum(i, w[i] * x[i]) W) 制約条件 @2025 Jij Inc. N−1 ∑ = < i=0 wi xi ≤ W 10

19.

特徴01: Python エコシステムとの統合 ● Numpy や Jupyter など既存 Python エコシステムとシームレスな連携が可能 ● 例:Jupyter での数式プレビュー、求解結果のPandas Data Frame 表示 ナップザック問題のプレビューの様子 @2025 Jij Inc. Pandas DataFrame への変換・プレビュー 11

20.

特徴02:モデルと実データの分離 ● 多くのモデラーでは数式による定義とデータ入力は同時に行われる ● JijModeling ではモデルの記述と実データ(パラメータ)の入力を分離 ○ モデルの再利用も容易に ● 制約条件の追加・変更が素早く容易 ● 数式プレビューもモデルの記号表現を に変換することで実現 ● 後述する制約検出を効率的に行うためにも重要 instance_data = { "v": [10, 13, 18, 31, 7, 15], "w": [11, 15, 20, 35, 10, 33], "W": 47, } interpreter = jm.Interpreter(instance_data) instance = interpreter.eval_problem(problem) @2025 Jij Inc. 12

21.

特徴02:モデルと実データの分離 ● 多くのモデラーでは数式による定義とデータ入力は同時に行われる ● JijModeling ではモデルの記述と実データ(パラメータ)の入力を分離 ○ モデルの再利用も容易に ● 制約条件の追加・変更が素早く容易 ● 数式プレビューもモデルの記号表現を に変換することで実現 ● 後述する制約検出を効率的に行うためにも重要 instance_data = { "v": [10, 13, 18, 31, 7,データはモデルの外部で保持 15], "w": [11, 15, 20, 35, 10, 33], "W": 47, } interpreter = jm.Interpreter(instance_data) instance = interpreter.eval_problem(problem) @2025 Jij Inc. 12

22.

特徴02:モデルと実データの分離 ● 多くのモデラーでは数式による定義とデータ入力は同時に行われる ● JijModeling ではモデルの記述と実データ(パラメータ)の入力を分離 ○ モデルの再利用も容易に ● 制約条件の追加・変更が素早く容易 ● 数式プレビューもモデルの記号表現を に変換することで実現 ● 後述する制約検出を効率的に行うためにも重要 instance_data = { "v": [10, 13, 18, 31, 7,データはモデルの外部で保持 15], "w": [11, 15, 20, 35, 10, 33], "W": 47, } interpreter = jm.Interpreter(instance_data) instance = interpreter.eval_problem(problem) OMMX への変換時に初めて データを結合 @2025 Jij Inc. 12

23.

特徴03: OMMX による複数ソルバとの連携 ● JijModeling で記述された問題は最終的に OMMX Message にコンパイルされる ○ OMMX:弊社寺村の先の講演を御参照下さい ● OMMX Adapter を通じ既存の複数のソルバから選んで求解 ○ OSS・商用幅広いソルバから選択可能 ● OMMX を介した有名ベンチマーク問題のロードにも対応 OSSソルバ 商用ソルバ HiGHS Fujitsu Digital Annealer (DA4) OpenJij D-Wave Python-MIP Fixstars Amplify PySCIPOpt Gurobi from ommx_pyscipopt_adapter import OMMXPySCIPOptAdapter # SCIPを介して問題を解き、ommx.v1.Solutionとして解を取得 solution = OMMXPySCIPOptAdapter.solve(instance) @2025 Jij Inc. 13

24.

JijModeling の特徴 01 Seamless Integration with Python Ecosystem 02 Separation of Model and Data Python エコシステムとの統合 モデルと実データの分離 03 Multiple Solver Support via OMMX 04 Constraint Detection OMMX による複数ソルバとの連携 制約条件検出による求解の高速化 05 Robustness and Efficiency via Rust Rust による堅牢性と効率性の両立 @2025 Jij Inc. 14

25.

JijModeling の特徴 01 Seamless Integration with Python Ecosystem 02 Separation of Model and Data Python エコシステムとの統合 モデルと実データの分離 03 Multiple Solver Support via OMMX 04 Constraint Detection OMMX による複数ソルバとの連携 制約条件検出による求解の高速化 05 Robustness and Efficiency via Rust Rust による堅牢性と効率性の両立 @2025 Jij Inc. 14

26.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 15

27.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 15

28.

制約検出による求解の高速化 制約検出、Rust による堅牢性と効率性 @2025 Jij Inc.

29.

背景:制約条件の形式に応じたアルゴリズムの利用 ● 特定の形式の制約の構造を活かして効率的に最適化問 題を解くアルゴリズムが知られている 4. 設計・実装のポイント 4.4 インスタンスの構造解析(1) n インスタンスに含まれる制約条件を,その構造をもとに以下の 30 タイプに分類※9 n いくつかの制約条件タイプに対して,特定の変数の消去や近傍抽出をおこなう ○ 例:SOS1/2, One-Hot (単体), ... ○ ソルバに渡す前に、検知できると高速化が期待 ● モデル・データ一体型モデラーやOMMX Message から の効率的な検出は困難 ○ 数万個の数式を個別に処理・検出する必要 ● JijModeling は OMMX コンパイル前(データ入力前) に特許技術*1の記号表現から検出するため、高速なパ ターン検出が可能! ● 実際に高速化されるベンチマーク結果をご紹介します とくに重要な制約条件タイプ(構造を大きく変えるかたちでの変数消去・近傍定義を実施) ※9 MIPLIB 2017 Instance Statistic Guide ( https://miplib.zib.de/statistics.html ) に記載の分類を独自に修正・拡張 したもの.複数タイプに合致する制約条件は No. の若いものに分類する. 2024/11/22 Optimization Night #9 ‒ Yuji KOGUMA 24 Yuki KOGUMA "メタヒューリスティクスに基づく汎用線形整数計画ソル バーの開発" p.24 [Koguma]より抜粋 *1: 特許第 7034528 号 @2025 Jij Inc. 17

30.

1型特殊順序集合制約 (SOS 1) SOS1(x ⃗ ): N 個の非負決定変数 x0, …, xN−1 のうち 高々一つが非零性を要求する制約。 定式化 決定変数が二進変数 xi ∈ {0,1} の場合、 例:1型特殊順序集合 (SOS1) MIPソルバは SOS1 専用のAPI を提供していることが多い と表せる。一般の非負連続 or 整数変数の場合、 補助的な二進変数 δi ∈ {0,1} を導入し、 と定式化できる(但し、Mi は xi の上界)。 @2025 Jij Inc. 18

31.

1型特殊順序集合制約 (SOS 1) SOS1(x ⃗ ): N 個の非負決定変数 x0, …, xN−1 のうち 高々一つが非零性を要求する制約。 定式化 決定変数が二進変数 xi ∈ {0,1} の場合、 例:1型特殊順序集合 (SOS1) MIPソルバは SOS1 専用のAPI を提供していることが多い と表せる。一般の非負連続 or 整数変数の場合、 補助的な二進変数 δi ∈ {0,1} を導入し、 データを流し込むと、 N 個の独立した制約に! と定式化できる(但し、Mi は xi の上界)。 @2025 Jij Inc. 18

32.

問題 ● Given: 顧客 N 人 (位置 pc, j, 需要 dj ∈ ℝ+), 工場候補地 M 個 (位置 pp,i, 最大出力 Ci ∈ ℝ+) 例題:二地区工場配置問題* ● 決定変数:工場 i から顧客 j への割当量 sij ● 制約:東西に高々一つずつ工場を建て、最大出 力を守りながら顧客の需要をちょうど満たす ● 最小化:配送距離と割当量の積と出力の総和 定式化 * [Santos–Toffolo] の例を単純化したもの @2025 Jij Inc. 19

33.

問題 ● Given: 顧客 N 人 (位置 pc, j, 需要 dj ∈ ℝ+), 工場候補地 M 個 (位置 pp,i, 最大出力 Ci ∈ ℝ+) 例題:二地区工場配置問題* ● 決定変数:工場 i から顧客 j への割当量 sij ● 制約:東西に高々一つずつ工場を建て、最大出 力を守りながら顧客の需要をちょうど満たす ● 最小化:配送距離と割当量の積と出力の総和 定式化 * [Santos–Toffolo] の例を単純化したもの @2025 Jij Inc. 19

34.

問題 ● Given: 顧客 N 人 (位置 pc, j, 需要 dj ∈ ℝ+), 工場候補地 M 個 (位置 pp,i, 最大出力 Ci ∈ ℝ+) 例題:二地区工場配置問題* ● 決定変数:工場 i から顧客 j への割当量 sij ● 制約:東西に高々一つずつ工場を建て、最大出 力を守りながら顧客の需要をちょうど満たす ● 最小化:配送距離と割当量の積と出力の総和 定式化 * [Santos–Toffolo] の例を単純化したもの @2025 Jij Inc. 19

35.

JijModeling による二地区工場配置問題のベンチマーク 二地区工場配置問題の求解時間 ● JijModeling 1.12.3 で問題を記述 ● OMMX 越しにPySCIPOpt 1.8.1 60 ○ SOS1検出あり/なしで比較 ● 環境 ○ MacBook Pro 2024 (M3 8 cores, 16 GB RAM) ○ pytest-benchmark 求解時間 [sec] [SCIP] を呼び出して求解 検出なし 45 検出あり 30 15 0 6 12 18 ※ 論文執筆時のコードに誤りがあったため、プロット結果は大きく異なっています @2025 Jij Inc. 24 30 36 42 48 54 60 入力サイズ 20

36.

JijModeling による二地区工場配置問題のベンチマーク 二地区工場配置問題の求解時間 ● JijModeling 1.12.3 で問題を記述 ● OMMX 越しにPySCIPOpt 1.8.1 60 ○ SOS1検出あり/なしで比較 ● 環境 ○ MacBook Pro 2024 (M3 8 cores, 16 GB RAM) ○ pytest-benchmark 求解時間 [sec] [SCIP] を呼び出して求解 検出なし 45 検出あり 30 15 0 6 12 18 ※ 論文執筆時のコードに誤りがあったため、プロット結果は大きく異なっています @2025 Jij Inc. 24 30 36 42 48 54 60 入力サイズ 20

37.

JijModeling による二地区工場配置問題のベンチマーク 二地区工場配置問題の求解時間 ● JijModeling 1.12.3 で問題を記述 ● OMMX 越しにPySCIPOpt 1.8.1 60 ○ SOS1検出あり/なしで比較 ● 環境 ○ MacBook Pro 2024 (M3 8 cores, 16 GB RAM) ○ pytest-benchmark 求解時間 [sec] [SCIP] を呼び出して求解 検出なし 45 検出あり 30 15 0 6 12 18 ※ 論文執筆時のコードに誤りがあったため、プロット結果は大きく異なっています @2025 Jij Inc. 24 30 36 42 48 54 60 入力サイズ 20

38.

JijModeling による二地区工場配置問題のベンチマーク 二地区工場配置問題の求解時間 ● JijModeling 1.12.3 で問題を記述 ● OMMX 越しにPySCIPOpt 1.8.1 60 ○ SOS1検出あり/なしで比較 ● 環境 ○ MacBook Pro 2024 (M3 8 cores, 16 GB RAM) ○ pytest-benchmark 求解時間 [sec] [SCIP] を呼び出して求解 検出なし 45 検出あり 30 15 0 6 12 18 ※ 論文執筆時のコードに誤りがあったため、プロット結果は大きく異なっています @2025 Jij Inc. 24 30 36 制約検出による 42 48 54 60 大幅な漸近高速化! 入力サイズ 20

39.

代数的な同値性を考慮した制約検出 ● データとの結合前の記号的な構文木に対するパターンマッチを実行 ● 問題:記述者によって記法が異なり得るため、代数的な同値性を考慮する必要 ○ 例: δ ≤1も δ − 1 ≤ 0 もいずれも SOS1 を表す同値な式 ∑ i ∑ i i i ● JijModeling では e-graphs good (egg) と呼ばれる技術 [Willsey et al.] を用い、代数的な同値性を考慮 したパターンマッチを効率的・一般的に実現! ○ ∑i (δi + δi) − 1 ≤ 1 なども SOS1 として認識(普通こんな書き方はしないですが) ○ egg は Rust ライブラリとして実装されており、堅牢性・高速性を両立 ○ JijModeling は元から Rust で実装されており egg を手軽に利用できた ○ 詳細は来月の EGRAPHS '25 [EG25] にて発表(概要は6月初旬 arXiv アップロード予定) @2025 Jij Inc. 21

40.

JijModeling の特徴 01 Seamless Integration with Python Ecosystem 02 Separation of Model and Data Python エコシステムとの統合 モデルと実データの分離 03 Multiple Solver Support via OMMX 04 Constraint Detection OMMX による複数ソルバとの連携 制約条件検出による求解の高速化 05 Robustness and Efficiency via Rust Rust による堅牢性と効率性の両立 @2025 Jij Inc. 22

41.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 23

42.

JijModeling の概要 目次 Table of Contents JijModeling による記述例 制約検出による求解の高速化 今後の展望・まとめ @2025 Jij Inc. 23

43.

今後の展望・まとめ @2025 Jij Inc.

44.

今後の展望 ● 大規模言語モデルとの連携、MCPサーバの提供 ○ 自然言語によるモデル記述から JijModeling による実装を生成 ○ LLM補助のための MCP サーバも開発中 ● 現在、 JijModeling 2 を開発中 ○ より自然な Python 的構文(Element 構文要素の廃止、内包表記サポート等) ○ 自前の型システムによる開発体験の向上 ■ データ入力前にすぐにモデル記述上のバグが発見できるように! ■ (旧来のモデラーでのデータ入力後数時間経ってエラー、なんて体験との決別) ■ MCP サーバでもより検査できる範囲が広がる可能性 @2025 Jij Inc. 25

45.

まとめ ● JijModeling: 以下の特徴を兼ね備えた代数的な数理最適化モデラー 01 Seamless Integration with Python Ecosystem 02 Separation of Model and Data Python エコシステムとの統合 モデルと実データの分離 03 Multiple Solver Support via OMMX 04 Constraint Detection OMMX による複数ソルバとの連携 制約条件検出による求解の高速化 05 Robustness and Efficiency via Rust Rust による堅牢性と効率性の両立 @2025 Jij Inc. 26

46.

謝辞 本研究の一部は、内閣府総合科学技術・イノベーション会 議の戦略的イノベーション創造プログラム(SIP)「先進的 量子技術基盤の社会課題への応用促進」(管理法人: 量研) によって実施されました。 @2025 Jij Inc. 27

47.

参考文献 [EG25] EGRAPHS 2025. https: pldi25.sigplan.org/home/egraphs-2025. [JijZept] JijZept - Mathematical Optimization Platform, https: www.jijzept.com/ja/. [Koguma] Koguma, Y., メタヒューリスティクスに基づく汎用線形整数計画ソルバーの開発 (2024). https: speakerdeck.com/snowberryfield/metahiyurisuteikusuniji-dukufan-yongxian-xing-zheng-shu-ji-hua-sorubanokai-fa?slide=24. [SCIP] Maher, S. et al., PySCIPOpt: Mathematical Programming in Python with the SCIP Optimization Suite, in Mathematical Software – ICMS 2016, pp. 301–307, Springer International Publishing (2016). [Toffolo-Santos] Plant Location with Non-Linear Costs – Modeling Examples – Python-MIP documentation, https: python-mip.readthedocs.io/en/latest/examples.html#exsos. [Willsey et al.] Willsey, M., et al., egg: Fast and Extensible Equality Saturation, Proc. ACM Program. Lang., Vol. 5, No. POPL (2021). 28 / / / / / / / / @2025 Jij Inc.

48.

御清聴 ありがとう ございました @2025 Jij Inc. 29

49.

Any Questions? ● JijModeling: 以下の特徴を兼ね備えた代数的な数理最適化モデラー 01 Seamless Integration with Python Ecosystem 02 Separation of Model and Data Python エコシステムとの統合 モデルと実データの分離 03 Multiple Solver Support via OMMX 04 Constraint Detection OMMX による複数ソルバとの連携 制約条件検出による求解の高速化 05 Robustness and Efficiency via Rust Rust による堅牢性と効率性の両立 @2025 Jij Inc. JijModeling Documents Waiting List Jij Community 30