Skip to content

Releases: StevenBtw/solvOR

Version 0.5.3

29 Dec 21:57
cd3634a

Choose a tag to compare

[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, condense for dependency ordering and cycle detection. pagerank for node importance. louvain for community detection. articulation_points, bridges for finding critical connections. kcore_decomposition, kcore for core/periphery analysis.
  • Version: Added __version__ to package.

Changed

  • CI: Parallelized lint/typecheck jobs, added publish version tag verification.
  • Exports: Added Progress, ProgressCallback to public API.
  • Refactor: Extracted reconstruct_path to 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

28 Dec 15:18

Choose a tag to compare

[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.py runs mkdocs build --strict to 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_vrptw example (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 to solver="auto" which picks DFS for simple constraints and SAT for globals (circuit, no_overlap, cumulative, sum_*). Force a specific solver with solver="dfs" or solver="sat". Also, IntVar now supports multiplication (x * 3, 3 * x) for expressions like timeslot * 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

27 Dec 04:40

Choose a tag to compare

[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

Full Changelog: v0.5.0...v0.5.1

Version 0.5.0

26 Dec 17:11

Choose a tag to compare

[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() renamed max_gen to max_iter for consistency. Update your code: evolve(..., max_gen=100)evolve(..., max_iter=100)

  • Result is now generic (Result[T]), so type checkers actually know what .solution contains. 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: Evaluator class and report_progress() in solvor/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

Full Changelog: v0.4.8...v0.5.0

Version 0.4.8

26 Dec 14:01

Choose a tag to compare

[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 ready
    • classic/ TSP, knapsack, bin packing, job shop, VRP benchmarks
    • puzzles/ sudoku, n-queens, zebra puzzle, pentomino, magic square
    • linear_programming/ diet problem, portfolio optimization, blending
    • machine_learning/ gradient descent for regression (yes it works)
    • real_world/ nurse scheduling that actually respects constraints
  • py.typed marker 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/ and tests/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=True for 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

25 Dec 22:27

Choose a tag to compare

[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_shop job shop scheduling

  • vrp vehicle routing problem

  • lns large neighborhood search

  • differential_evolution evolution strategy for continuous optimization

  • particle_swarm swarm intelligence (just peer pressure for algorithms), also includes "velocity clamping" so particles don't yeet into infinity, which the textbook examples apparently do

  • knapsack the classic packing problem

  • bin_pack fit items into bins

  • CHANGELOG.md to keep track of what was done when for future entertainment/troubleshooting

Changed

  • bayesian_opt a 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
  • adam added learning rate schedules:

    • Supports constant, step, cosine, and warmup decay
  • solve_exact_cover added secondary columns:

    • Optional constraints, covered at most once, but not required
  • evolve now 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

24 Dec 22:08

Choose a tag to compare

What's Changed

Full Changelog: v0.4.5...v0.4.6

Version 0.4.5

24 Dec 17:35

Choose a tag to compare

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

23 Dec 08:20

Choose a tag to compare

What's Changed

Full Changelog: v0.4.3...v0.4.4

Version 0.4.3

22 Dec 21:32

Choose a tag to compare

What's Changed

Full Changelog: v0.4.2...v0.4.3