Skip to content

RamParILS

A parallel Rust rewrite of ParamILS — automated algorithm configuration via Iterated Local Search.

Used as the inner tuner in Grackle, a strategy portfolio invention system for automated reasoning solvers.

What it does

Given a target algorithm with configurable parameters, RamParILS finds the parameter setting that minimises runtime (or maximises solution quality) on a set of training instances.

It evaluates (configuration, instance) pairs in parallel across all available CPU cores and caches results in a persistent SQLite database — repeated runs on the same benchmark never redo solver calls.

Key differences from Ruby ParamILS

Ruby ParamILS RamParILS
Evaluation Sequential Parallel over all (neighbor, instance) pairs
Cache In-memory, per-run Persistent SQLite, shared across runs
Python API subprocess call Native extension via PyO3
Non-deterministic algorithms (multiple seeds) Supported Not (yet) supported

Acknowledgements

This project is part of DEEPER and supported by the DEEPER grant from Renaissance Philanthropy.