JijZept SDK

Development Kit for Mathematical Optimization

A free development kit that bundles optimization packages. Installing JijZept SDK alone lets you easily set up all the tools you need for optimization.

pip install "jijzept_sdk[all]"

Packages Included in JijZept SDK

JijModeling

Intuitively formulate optimization problems

With JijModeling, you can formulate problems using expressions similar to mathematical notation. Its structure analysis features help further enhance solver performance.

OMMX

Seamless integration with optimization tools

OMMX enables easy integration with various solvers and visualization and analysis tools.

MINTO

Simplify management of complex experimental data

MINTO allows you to save and manage optimization results along with runtime parameters. This makes it easy to organize and compare experimental data.

Qamomile

Support for quantum optimization beyond classical approaches

Qamomile enables quantum optimization for problems formulated with JijModeling or OMMX. Note that "quantum" here refers to gate-based quantum computers.

Quick Start

Running optimization with JijZept SDK follows these 4 steps.

1

Installation

Install JijZept SDK to set up all packages necessary for mathematical optimization.

pip install "jijzept_sdk[all]"
2

Modeling

Use JijModeling to describe mathematical models. The following is an example of formulating the knapsack problem.

import jijmodeling as jm
# Define the knapsack problem
v = jm.Placeholder("v", ndim=1) # Item values
w = jm.Placeholder("w", ndim=1) # Item weights
W = jm.Placeholder("W") # Knapsack capacity
N = v.len_at(0, latex="N") # Number of items
x = jm.BinaryVar("x", shape=(N,)) # Decision variables
i = jm.Element("i", belong_to=(0, N))
problem = jm.Problem("Knapsack", sense=jm.ProblemSense.MAXIMIZE)
problem += jm.sum(i, v[i] * x[i]) # Objective: maximize value
problem += jm.Constraint("weight", jm.sum(i, w[i] * x[i]) <= W) # Weight constraint
# Instance data
instance_data = {
"v": [10, 13, 18, 31, 7, 15], # Item values
"w": [11, 15, 20, 35, 10, 33], # Item weights
"W": 47, # Knapsack capacity
}
# Create OMMX instance
interpreter = jm.Interpreter(instance_data)
instance = interpreter.eval_problem(problem)
3

Solver Selection and Solving

Solve optimization problems with solvers. With OMMX Adapter, you can use the same interface regardless of the solver.

from ommx_highs_adapter import OMMXHighsAdapter
solution = OMMXHighsAdapter.solve(instance)
from ommx_openjij_adapter import OMMXOpenJijSAAdapter
solution = OMMXOpenJijSAAdapter.solve(instance)
from ommx_python_mip_adapter import OMMXPythonMIPAdapter
solution = OMMXPythonMIPAdapter.solve(instance)
from ommx_pyscipopt_adapter import OMMXPySCIPOptAdapter
solution = OMMXPySCIPOptAdapter.solve(instance)

See the list of solvers supported by OMMX Adapter here.

4

Result Analysis

You can easily retrieve objective function values and decision variables from the solution as shown below.

Objective Function

# Value of the objective function
print(f"Value of the objective function: {solution.objective}")

Value of the objective function: 41.0

Decision Variables

dv_df = solution.decision_variables_df
# Drop unnecessary columns for display
dv_df.drop(columns=["description", "substituted_value"])
id kind lower upper name subscripts value
0 Binary 0.0 1.0 x [0] 1.0
1 Binary 0.0 1.0 x [1] 1.0
2 Binary 0.0 1.0 x [2] 1.0
3 Binary 0.0 1.0 x [3] 0.0
4 Binary 0.0 1.0 x [4] 0.0
5 Binary 0.0 1.0 x [5] 0.0

For more efficient data management, please use MINTO.

Install Now

Get the free packages you need for optimization.
Install the package with the following command.

pip install "jijzept_sdk[all]"

Feel Free to Contact Us

We welcome any questions or technical inquiries about JijZept SDK and its included packages.