Jij-Inc
ommx
BlogDocsChangelog

Performance History

Latest Results

Simple QUBO example in Rust (#647) Co-authored-by: Claude <noreply@anthropic.com>
main
12 hours ago
Add separate QPLIB tutorial notebooks and docs dependency auto-update workflow (#644) ## Summary This PR includes two main improvements: ### 1. QPLIB Tutorial Addition Created dedicated QPLIB tutorial notebooks separate from MIPLIB: - **Separate Notebooks**: Created `download_qplib_instance.ipynb` for both English and Japanese - **Updated TOC**: Added entries to both `docs/en/_toc.yml` and `docs/ja/_toc.yml` - **QPLIB Introduction**: Explanation of QPLIB as quadratic programming benchmark library - **Code Examples**: Sample code using `dataset.qplib("0018")` and PySCIPOpt adapter - **Annotation Documentation**: Focus on QPLIB-specific annotations with reference to official documentation - **QPLIB-specific annotations**: `org.ommx.qplib.probtype`, `objtype`, `objcurvature`, etc. - **Links**: References to QPLIB website, GitHub Container Registry, and official QPLIB documentation at https://qplib.zib.de/doc.html - **Clean Separation**: MIPLIB notebooks remain unchanged, focusing solely on MIPLIB content ### 2. Docs Dependency Auto-Update Infrastructure Implemented automated workflow to keep documentation dependencies up-to-date with released OMMX versions: - **New Script**: `python/update-docs-deps.py` - Fetches latest OMMX version from PyPI (or accepts explicit version) - Updates all `ommx*` dependencies in `docs/pyproject.toml` - Type-safe implementation with proper assertions - **Workflow Integration**: `.github/workflows/release_python.yml` - New `update_docs_deps` job runs after PyPI publish - Automatically creates PR to update `docs/pyproject.toml`, `docs/uv.lock`, and `requirements.txt` - Extracts version from git tag (`python-X.Y.Z`) - **Task Updates**: - `task python:update-docs-deps -- <version>`: Update docs dependencies - `task pip_compile`: Compile requirements.txt (simplified, no auto-update) ### 3. Cleanup - Removed `bin/task` from git tracking - Added `bin/` to `.gitignore` to prevent accidental commits of downloaded binaries ## Changes - `.github/workflows/release_python.yml`: Add `update_docs_deps` job - `python/update-docs-deps.py`: New script for updating docs dependencies - `python/Taskfile.yml`: Add `update-docs-deps` task - `Taskfile.yml`: Simplify `pip_compile` task - `docs/pyproject.toml`: Updated to OMMX 2.0.9 - `docs/uv.lock`, `requirements.txt`: Regenerated with updated dependencies - `docs/en/tutorial/download_qplib_instance.ipynb`: New dedicated QPLIB tutorial (English) - `docs/ja/tutorial/download_qplib_instance.ipynb`: New dedicated QPLIB tutorial (Japanese) - `docs/en/_toc.yml`: Added QPLIB notebook entry - `docs/ja/_toc.yml`: Added QPLIB notebook entry - `.gitignore`: Add `bin/` directory Fixes #643 <!-- START COPILOT CODING AGENT TIPS --> --- 💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click [here](https://survey3.medallia.com/?EAHeSx-AP01bZqG0Ld9QLQ) to start the survey. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: termoshtt <1238153+termoshtt@users.noreply.github.com> Co-authored-by: Toshiki Teramura <toshiki.teramura@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
main
2 days ago
Redistribute QPLIB as OMMX Artifact (#640) ## Summary This PR adds support for redistributing QPLIB (Quadratic Programming Library) benchmark instances as OMMX Artifacts. Similar to MIPLIB2017, QPLIB instances are packaged in OMMX format and made accessible via the Artifact system. ## Changes ### Core Implementation - **Rust SDK**: Added QPLIB metadata (CSV with 453 instances) in `rust/ommx/src/dataset/qplib.rs` with parsing and validation logic - **QPLIB Parser**: Improved `pow` function in `rust/ommx/src/qplib.rs` using `is_multiple_of(2)` - **Dataset Tool**: Added artifact packaging functionality in `rust/dataset/src/qplib.rs` ### Python API - **`ommx.dataset.qplib(tag: str)`**: Load a specified QPLIB instance - **`ommx.dataset.qplib_instance_annotations()`**: Return metadata for all QPLIB instances ### Metadata & Validation - Added CSV metadata for 453 QPLIB instances (variables, constraints, problem types, etc.) - QPLIB-specific annotations stored with `org.ommx.qplib.*` namespace (URL, problem type, curvature, etc.) - Fixed created timestamp generation logic, now applied to MIPLIB2017 as well ## Example Usage ```python from ommx.dataset import qplib # Load QPLIB instance instance = qplib("0018") print(instance.title) # "QPLIB_0018" print(instance.annotations["org.ommx.qplib.probtype"]) # "QCL" ``` ## Testing - QPLIB CSV metadata loading and validation - Instance parsing logic - Python binding API functionality --------- Co-authored-by: Claude <noreply@anthropic.com>
main
6 days ago
Fix CodSpeed Action v4 mode requirement in benchmark workflow (#637) This PR fixes the CodSpeed Action v4 error that was causing benchmark workflow failures. As of CodSpeed Action v4, the `mode` input parameter is now required and must be explicitly set to either 'instrumentation' or 'walltime'. ## Problem The benchmark workflow was failing with the following error: ``` Error: The 'mode' input is required as of CodSpeed Action v4. Please explicitly set 'mode' to 'instrumentation' or 'walltime'. Before, this variable was automatically set to instrumentation on every runner except for CodSpeed macro runners where it was set to walltime by default. ``` ## Solution Added the required `mode: instrumentation` parameter to both CodSpeed actions in `.github/workflows/bench.yml`: 1. **Rust SDK benchmarks**: Added `mode: instrumentation` to the CodSpeed action that runs `cargo codspeed run` 2. **Python SDK benchmarks**: Added `mode: instrumentation` to the CodSpeed action that runs `pytest python/ommx-tests/ --codspeed` ## Why instrumentation mode? According to the [CodSpeed documentation](https://codspeed.io/docs/instruments), `instrumentation` mode uses CodSpeed's native instrumentation for more accurate measurement and was the default for standard GitHub runners. Since this repository uses `ubuntu-latest` runners, `instrumentation` is the appropriate choice over `walltime` mode (which was only default for CodSpeed macro runners). This ensures the benchmark workflows will continue to function properly with CodSpeed Action v4 while maintaining the same measurement accuracy as before. <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > Error: The 'mode' input is required as of CodSpeed Action v4. Please explicitly set 'mode' to 'instrumentation' or 'walltime'. Before, this variable was automatically set to instrumentation on every runner except for CodSpeed macro runners where it was set to walltime by default. See https://codspeed.io/docs/instruments for details. > > これを修正するPRを作成して </details> <!-- START COPILOT CODING AGENT TIPS --> --- 💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click [here](https://survey3.medallia.com/?EAHeSx-AP01bZqG0Ld9QLQ) to start the survey. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: termoshtt <1238153+termoshtt@users.noreply.github.com>
main
6 days ago

Active Branches

No pull requests foundAs pull requests are created, their performance will appear here.
© 2025 CodSpeed Technology
Home Terms Privacy Docs