clpz
osqp
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
clpz
-
Logic programming is overrated, at least for logic puzzles (2013)
As pointed out in the comments in the article, these kinds of logic puzzles are easier to solve using constraint programming than "regular" logic programming.
For example, see the solution to the Zebra Puzzle here: https://www.metalevel.at/prolog/puzzles which uses CLPZ[^1].
[^1]: https://github.com/triska/clpz
-
Markus Triska Interview on Prolog
Scryer has the strings-as-lists-but-implemented-efficiently thing, possibly more strict ISO Prolog compatible syntax, and it may ship with a more advanced constraint library (I'm not clear on the relationship between SWI's clpfd and Scryer clpz).
-
is it possible to have a reversable operation
None of these are full-fledged programming languages, however. They're limited to problems that lie in the polynomial hierarchy (A class which contains P and NP). Logic programming is generally only used to solve hard problems for which no good algorithm is known. Prolog also sort of fits this niche and it has a bunch of solvers integrated into it. Notably CLPFD which uses https://github.com/triska/clpz for constraint logic programming. Rosette (https://docs.racket-lang.org/rosette-guide/index.html) is another solver-based language. Except it uses lisp syntax (it's embedded in the Racket language). It uses Z3 as a solver (linked above for SMT theories)
- Ask HN: Do you use an optimization solver? Which one? Why? Do you like it?
-
What is the difference between constraint solving and constraints programming?
Constraint programming I guess is when one uses a prolog library such as: https://github.com/triska/clpz
osqp
-
Best/Any Convex Optimization Solver for Rust?
There's also two bindings for the osqp library (which is written in C), osqp published 2 years ago and osqp-rust published 3 months ago. I don't know what are the differences between them, but they both target osqp 0.6.2 (released in 2021) while the last released version is osqp 0.6.3 which was released last week.
-
Cvxpy probs
Cvxpy is overkill for a standard quadratic program. I’d recommend trying OSQP https://osqp.org which can take advantage of sparsity.
-
Ask HN: Do you use an optimization solver? Which one? Why? Do you like it?
I have been using OSQP [1] quite a bit in a project where I needed to solve many quadratic programs (QPs). When I started the project, OSQP didn't exist yet; I ended up using both cvxopt and MOSEK; both were frustratingly slow.
After I picked up the project again a year later, I stumbled across the then new OSQP. OSQP blew both cvxopt and MOSEK out of the water (up to 10 times faster) in terms of speed and quality of the solutions. Plus the C interface was quite easy to use and super easy (as far as numerics C code goes) to integrate into my larger project.
[1] https://osqp.org/
-
What's the industry standard "fast" library for optimization methods?
For quadratic programming—which is a class of problems in convex optimization, which is a sub-field of numerical optimization in general—a solver that is frequently used is OSQP. Although it is implemented in C++ you can also use it in Python thanks to its bindings. If your goal is to use a solver that's state-of-the-art and relatively versatile it is a good pick. If your goal is to find the best solver for a given problem, then there is no one-stop-shop. For example in this benchmark OSQP was the best-performing solver for sparse problems but quadprog performed better on dense problems.
What are some alternatives?
prolog-checkers - A Player vs AI game of checkers implemented in Prolog
HiGHS - Linear optimization software
MControlCenter - An application that allows you to change the settings of MSI laptops running Linux
SSI - A Prolog Compiler written in Prolog.
quadprog - Quadratic Programming Solver
kanren - An extensible, lightweight relational/logic programming DSL written in pure Python
golomb-solver - Create Golomb rulers with constraint programming
or-tools - Google's Operations Research tools:
vroom - Vehicle Routing Open-source Optimization Machine
csips - A pure-python integer programming solver
python-mip - Python-MIP: collection of Python tools for the modeling and solution of Mixed-Integer Linear programs