JijZept Tools 最適化開発ワークフローを支援するツール群
数理最適化ワークフローを素早く検証し、実験の管理・可視化・チューニングなどの開発プロセスを効率化することを目的としたSDK。
pip install jijzepttools
主な特徴
1
ブラックボックス最適化
- BOCS (Bayesian Optimization for Combinatorial Structures)
- Factorization Machine を用いた最適化手法
import numpy as np
from jijzepttools.blackbox_optimization import BOCSWorkflow
# 最適化対象の (X, y) データを用意
X = np.random.binomial(1, 0.5, size=(100, 10))
y = np.sum(X, axis=1)
# BOCSWorkflow のインスタンス化
bocs = BOCSWorkflow(random_seed=42)
# ブラックボックス関数とソルバを定義
def blackbox_func(x):
return np.sum(x)
def solver(instance):
# instanceには QUBO やパラメータが渡される想定
# ここでは簡単のため乱数でスピンを返す
return np.random.binomial(1, 0.5, size=10)
# 反復回数を指定して最適化を実行
X_new, y_new = bocs.run(X, y, blackbox_func, solver, n_iter=5)
print("最終的な X:", X_new)
print("最終的な y:", y_new)
2
ワークフロー管理
直観的なノード単位の処理フロー (DAG) を定義し、ステート管理とともに一貫した実行を行う WorkflowGraph 機能
from jijzepttools.workflow.workflow import WorkflowGraph
import dataclasses
@dataclasses.dataclass
class MyState:
counter: int = 0
def increment(x, state: MyState):
state.counter += 1
return x + 1
workflow = WorkflowGraph(MyState)
# Node 1 → Node 2 → END の流れを定義
workflow.add("process1", increment).add("process2", lambda x: x * 2)
# 入力値 5 と初期ステートを渡して実行
result = workflow.run(5, MyState())
print(result) # => 12 (例)
3
モデルユーティリティ
JijModeling や ommx などの外部ライブラリと連携し、バイナリ変数や整数変数を連続化する関数など、最適化モデルを扱う上で役立つツールを提供
4
実験ダッシュボード
minto で管理された実験結果を可視化・インタラクティブに分析
from jijzepttools.experimental.dashboard import dashboard
import minto
# minto.Experiment で管理している実験データを可視化
exp = minto.Experiment("my_experiment", auto_saving=False)
# いくつかの実験を実行して結果を記録した後...
# pygwalker を使ってデータフレームをインタラクティブに分析
dashboard(exp)
5
今後の拡張予定
- 列生成法などの数理最適化アルゴリズムの追加
- 実験管理ツール (Experiment Tracking, パラメータ管理、可視化など) のさらなる拡充
- 他の最適化ソルバやフレームワークとの連携強化
数理最適化の開発ワークフローをさらに効率化するための機能拡張が継続的に計画されています。
詳細なドキュメントを見る詳細なドキュメント
各機能の詳細な使い方やチュートリアルをご覧いただけます
お気軽にお問い合わせください
高度な最適化スキルを持つ専門スタッフが、あなたビジネスのお悩みや不明点にお答えします。
メールアドレスと基本情報で簡単に入力が完了します。