Introduction#
🌐 日本語 | English
JijZept Tools is an SDK (Software Development Kit) that supports development workflows in optimization computing. Its goal is to let you quickly validate mathematical optimization workflows and to streamline development processes such as experiment management, visualization, and tuning.
Main Features#
Black-box optimization
BOCS (Bayesian Optimization for Combinatorial Structures)
Optimization methods using Factorization Machines
Workflow management
The
WorkflowGraphfeature, which lets you define an intuitive node-based processing flow (DAG) and run it consistently together with state management
Model utilities
Tools that help you work with optimization models — for example, functions that relax binary and integer variables into continuous ones — integrating with external libraries such as JijModeling and ommx
Experiment dashboard (experimental)
Visualize and interactively analyze experiment results managed with
minto
Planned extensions
Additional mathematical optimization algorithms such as column generation
Further expansion of experiment management tools (experiment tracking, parameter management, visualization, etc.)
Stronger integration with other optimization solvers and frameworks
Quick Start#
Black-box optimization#
import numpy as np
from jijzepttools.blackbox_optimization import BOCSWorkflow
# Prepare the (X, y) data to optimize
X = np.random.binomial(1, 0.5, size=(100, 10))
y = np.sum(X, axis=1)
# Instantiate BOCSWorkflow
bocs = BOCSWorkflow(random_seed=42)
# Define the black-box function and the solver
def blackbox_func(x):
return np.sum(x)
def solver(instance):
# `instance` is expected to receive a QUBO and parameters
# For simplicity, return random spins here
return np.random.binomial(1, 0.5, size=10)
# Run the optimization for a given number of iterations
X_new, y_new = bocs.run(X, y, blackbox_func, solver, n_iter=5)
print("Final X:", X_new)
print("Final y:", y_new)
Workflow management#
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)
# Define the flow: Node 1 → Node 2 → END
workflow.add("process1", increment).add("process2", lambda x: x * 2)
# Run with input value 5 and an initial state
result = workflow.run(5, MyState())
print(result) # => 12 (example)
Experiment dashboard (experimental)#
from jijzepttools.experimental.dashboard import dashboard
import minto
# Visualize experiment data managed with minto.Experiment
exp = minto.Experiment("my_experiment", auto_saving=False)
# After running some experiments and recording results...
# Use pygwalker to interactively analyze the DataFrame
dashboard(exp)