Skip to main content

· 2 min read
Shitaro

JijZept Updates

We’re pleased to announce the release of JijZept with important updates and fixes that further refine your experience.

Updated SDKs

New Features

  • MIPLIB Instances with jijmodeling: A tutorial is now available for efficiently loading MIPLIB instances using jijmodeling, aimed at simplifying benchmarking and testing workflows.

  • jijzept v1.17.0: This release removes JijDA3Sampler and adds a new row-oriented SampleSet, accessible as follows:

    import jijzept as jz
    sampler = jz.JijSASampler(config="config.toml")
    sampleset = sampler.sample_model(problem, instance_data).get_sampleset()
  • Enhanced Sampler Metadata: SampleSets from JijDA4Sampler and JijLeapHybridCQMSampler now include details on trivial constraints in their metadata:

    sampleset.metadata["presolve"]["trivial_constraint"]
  • Expanded Support in JijLeapHybridCQMSampler: Continuous variables via jijmodeling.ContinuousVar are now supported, enhancing the sampler's flexibility.

Bug Fixes

  • Server Response Stability: We have fixed a critical issue where certain jm.Problem submissions caused server unresponsiveness.

  • Scoped Element Naming: Element names are now context-specific within constraints and functions, enabling the reuse of generic identifiers like i and j without introducing errors or conflicts with other variables and placeholders:

    import jijmodeling as jm

    n = jm.Placeholder("n")
    x = jm.BinaryVar("x", shape=(n,))

    problem = jm.Problem("problem")
    i = jm.Element("i", belong_to=n)
    problem += jm.Constraint("const1", x[i] == 1, forall=i)

    i = jm.Element("i", belong_to=3)
    # No more ModelingError for reusing "i" with a different definition in the same problem scope.
    problem += jm.Constraint("const2", i * x[i] == 1, forall=i)

Important Notices

  • End of Support for JijDA3Sampler: Please be advised that as of today, November 6th, support for JijDA3Sampler has ended. We continue to support JijDA4Sampler and encourage users to consider using this sampler for future projects.

  • Transition to New SampleSet Schema: We are planning a transition to a new schema for SampleSets. This upgrade will enhance the data structure and user access patterns. Details and instructions for this transition will be provided well in advance to ensure a smooth update process.

Thank you for your continued support. Should you need any assistance or have inquiries, please do not hesitate to contact us.

· 2 min read
Shitaro

Updated SDKs

Please update your SDKs to the latest version.

New Features

General Update

We are pleased to announce the latest updates to JijZept.

  • Released jijzept v1.16.8, which now supports pydantic v2. This enhances JijZept's performance by leveraging the speed of Rust-based Pydantic. Update your installation with the following command:

    pip install -U jijzept
  • Released jijmodeling v.1.1.1 and jijmodeling v.1.1.0, which now support the latest version of jijzept. Update your installation with the following command:

    pip install -U jijmodeling

The features of jijmodeling v.1.1.1 and jijmodeling v.1.1.0 are as follows:

  • (jijmodeling v1.1.0) Added a loader for the MPS format used in MIPLIB. If you already have an MPS file, you can read it into jijmodeling.Problem and instance data as follows:
    import jijmodeling as jm
    problem, instance_data = jm.load_mps("testset/data.mps.gz")
  • (jijmodeling v1.1.0) Added a feature to easily fetch data published by MIPLIB. For example, to fetch data from https://miplib.zib.de/instance_details_50v-10.html, use:
    import jijmodeling.dataset
    miplib = jijmodeling.dataset.Miplib(verbose=False) # Downloads data if not cached locally (~600MB)
    problem, instance_data = miplib.load("50v-10")
  • (jijmodeling v1.1.1) Significantly reduced the time required to instantiate the dataset.Miplib class in a Jupyter Notebook environment.
  • (jijmodeling v1.1.0) You can retrieve statistical information on the data published by MIPLIB using miplib.instance_statistics. Here's how to filter instances with no continuous variables using pandas:
    import pandas
    import jijmodeling.dataset

    miplib = jijmodeling.dataset.Miplib(verbose=False)
    df = pandas.DataFrame(miplib.instance_statistics).T
    df[df["continuous"] == 0]

Known Issues

Bug Fixes

  • Various bug fixes related to the from_old_sampleset function which converts old SampleSet objects to a new, soon-to-be-changed SampleSet object (experimental.SampleSet).
    • Fixed issues with empty dict objects in experimental.Violation and experimental.EvaluationResult.
    • Fixed an issue where multiple experimental.VarValues objects were created instead of a single one.
  • (jijmodeling v1.1.0) Fixed an issue where the experimental module, which contains the new SampleSet object, could not be directly imported using import jijmodeling.experimental or jijmodeling.jijmodeling.experimental.

We continue to develop JijZept to make it more user-friendly and valuable. If you have any feedback, feel free to let us know.