Releases: StevenBtw/solvOR
Version 0.5.3
[0.5.3] - 2025-12-29
Some small QoL improvements and ported all the graph algoeithmes from another project (AutoMate) which now relies on solvOR.
Added
- Graph analysis:
topological_sort,strongly_connected_components,condensefor dependency ordering and cycle detection.pagerankfor node importance.louvainfor community detection.articulation_points,bridgesfor finding critical connections.kcore_decomposition,kcorefor core/periphery analysis. - Version: Added
__version__to package.
Changed
- CI: Parallelized lint/typecheck jobs, added publish version tag verification.
- Exports: Added
Progress,ProgressCallbackto public API. - Refactor: Extracted
reconstruct_pathto utils (shared by dijkstra, bfs, a_star).
Fixed
- Flow solvers: Now track iterations correctly.
- Exports: Fixed missing
__all__in utils/validate.py.
Full Changelog: v0.5.2...v0.5.3
Version 0.5.2
[0.5.2] - 2025-12-28
Who let de docs out!
solvOR went through some nice changes. CP got amputated, LP got more company, docs got a full checkup, CI got faster.
Added
- CI docs test:
test_docs.pyrunsmkdocs build --strictto catch missing type hints and broken links before they reach main. - Interior point: Added
solve_lp_interior()for linear programming. Primal-dual method with Mehrotra predictor-corrector. Alternative to simplex method.
Fixed
- README: Fixed incorrect
solve_vrptwexample (wrong parameter names, missing customer IDs).
Changed
- CP refactor: Extracted SAT encoding to
cp_encoder.py(cp.py went from 861 to 428 lines, much easier to read now).Model.solve()defaults tosolver="auto"which picks DFS for simple constraints and SAT for globals (circuit, no_overlap, cumulative, sum_*). Force a specific solver withsolver="dfs"orsolver="sat". Also,IntVarnow supports multiplication (x * 3,3 * x) for expressions liketimeslot * n_rooms + room. - Module docstrings: Standardized all 18 solvor docstrings with consistent format: "How it works" section, "Use this for" bullets, "Parameters" section, r"""string. Same style, so easier when scanning the different solvors.
- solvOR.ai documentation: Added "How It Works" sections explaining the math behind 16 algorithms (simplex, interior point, dijkstra, bellman-ford, floyd-warshall, A*, anneal, tabu, genetic, PSO, DE, BFGS, knapsack, bin-packing, SAT, DLX). Also added references, tips, and full signature sections.
- Tests: Removed tests with weak assertions, improved edge case coverage. No bugs found (yet).
- CI/pre-commit: Turned on uv cache, removed redundant type checks across Python versions, added no-commit-to-branch for main.
- README: Added docs badge.
Full Changelog: v0.5.1...v0.5.2
Version 0.5.1
[0.5.1] - 2025-12-27
Fixed
- Documentation consistency pass: Reviewed all 29 solvors and 7 extended examples against MkDocs pages. Fixed parameter name mismatches, incorrect signatures, and outdated solution formats across 15+ documentation files.
What's Changed
- minor fixes by @StevenBtw in #44
- Multiple docs improvements and fixes by @StevenBtw in #45
- Updated changelog by @StevenBtw in #46
Full Changelog: v0.5.0...v0.5.1
Version 0.5.0
[0.5.0] - 2025-12-26
solvOR is now in beta!
Documentation finally has a proper home. Moved everything from the wiki to MkDocs, deployed at solver.ai. The wiki now just points there.
Added
-
Documentation site at solver.ai. MkDocs with Material theme, dark mode by default (as it should be). Getting started, algorithm reference (40+ pages), cookbook with 18 worked examples, API docs, troubleshooting.
-
GitHub Actions workflow for docs, auto-deploys to GitHub Pages on push to main.
Changed
-
BREAKING:
evolve()renamedmax_gentomax_iterfor consistency. Update your code:evolve(..., max_gen=100)→evolve(..., max_iter=100) -
Resultis now generic (Result[T]), so type checkers actually know what.solutioncontains. Less red underscores in the IDE. -
Test coverage now statistically significant at 95%, added tests for adam learning rate schedules, genetic adaptive mutation, validation utilities.
-
Internal cleanup:
Evaluatorclass andreport_progress()insolvor/utils/helpers.py, deduplicated boilerplate across 12 solver files. No API changes for this one. -
Wiki retired, all content now lives at solver.ai. The wiki just points there.
What's Changed
- Version 0.5.0 by @StevenBtw in #42
- Codecov fix in ci by @StevenBtw in #43
Full Changelog: v0.4.8...v0.5.0
Version 0.4.8
[0.4.8] - 2025-12-25
Examples! Finally they all work (and can be used as extra tests! optional for now). Also some last changes to solvors that didn't play nice with some of the wikipedia examples. 0.5.0 will be next, which will be considered a "beta" where 0.4.x releases are "alpha". Development cycle will slow down after that, extra maintainers are welcome!
Added
-
We need examples, lots of examples:
quick_examples/minimal working code for every solver, copy-paste readyclassic/TSP, knapsack, bin packing, job shop, VRP benchmarkspuzzles/sudoku, n-queens, zebra puzzle, pentomino, magic squarelinear_programming/diet problem, portfolio optimization, blendingmachine_learning/gradient descent for regression (yes it works)real_world/nurse scheduling that actually respects constraints
-
py.typedmarker for type checker support
Changed
-
WIKILEAKS: Wiki completely up to date, using quick examples from the repo now for consistency. Lots of copy-pasting.
-
Full tests overhaul: Tests reorganized into
tests/solvers/andtests/examples/, grouped example tests into folder categories. More copy-pasting. -
CI simplified the per-solver conditional testing was clever but unmaintainable, just run everything now, tweaked some of the slower tests.
-
Input validation added to graph algorithms and MILP: bellman_ford, floyd_warshall, mst and milp now tell you what's wrong instead of crashing.
-
Extra parameters: I don't want to add too many parameters and complexity, but added warm_start to milp and a solution limit. Added
allow_forest=Truefor kruskals, which returns minimum spanning forest instead of giving up. -
README & CONTRIBUTING: Up-to-date again, were lagging behind with new solvers and parameters, CI changes and more. Should be consistent with the repo's content again.
Full Changelog: v0.4.7...v0.4.8
Version 0.4.7
[0.4.7] - 2025-12-25
Added a changelog (this file), a whole lot of solvors and some much needed optimizations, working on some more examples, but they need a bit more work still.
This could have been a 0.5.0 release, if it wasn't for the examples, readme and wiki. Will probably add the examples in the next release, then 0.5.0 with extra tests and more polish (readme/wiki/etc.).
Added
Santa's been busy, a lot more solvors, focussing on more real world problems, good for some examples I want to add later.
-
job_shopjob shop scheduling -
vrpvehicle routing problem -
lnslarge neighborhood search -
differential_evolutionevolution strategy for continuous optimization -
particle_swarmswarm intelligence (just peer pressure for algorithms), also includes "velocity clamping" so particles don't yeet into infinity, which the textbook examples apparently do -
knapsackthe classic packing problem -
bin_packfit items into bins -
CHANGELOG.mdto keep track of what was done when for future entertainment/troubleshooting
Changed
-
bayesian_opta lot of upgrades, including:- Acquisition optimization now tries multiple starting points (was single-shot before)
- Progress callbacks for monitoring long runs
- Cholesky decomposition instead of Gaussian elimination, more stable numerically
- Fixed status reporting when hitting iteration limit
-
adamadded learning rate schedules:- Supports constant, step, cosine, and warmup decay
-
solve_exact_coveradded secondary columns:- Optional constraints, covered at most once, but not required
-
evolvenow with adaptive mutation:- Mutation rate responds to progress and increases when stuck, decreases when improving
Full Changelog: v0.4.6...v0.4.7
Version 0.4.6
Version 0.4.5
What's Changed
- Rewrite of cp, sat, utils and a real world example by @StevenBtw in #38
Full Changelog: v0.4.4...v0.4.5
Version 0.4.4
What's Changed
- back merge by @StevenBtw in #33
- More test for better coverage by @StevenBtw in #35
- Update network_simplex.py by @StevenBtw in #36
- Update pyproject.toml by @StevenBtw in #37
Full Changelog: v0.4.3...v0.4.4
Version 0.4.3
What's Changed
- Update ci.yml by @StevenBtw in #30
- Dev by @StevenBtw in #31
- Made some improvements suggested by https://github.com/jevandezande by @StevenBtw in #32
Full Changelog: v0.4.2...v0.4.3