Savanty vs cvxpy
This is a scope comparison, not a rivalry. The two tools solve fundamentally different problems — and Savanty will actively send you to cvxpy when your problem is the kind cvxpy is for.
cvxpy is a Python library for continuous convex optimization: you define real-valued variables and a convex objective, and a convex solver finds the provably optimal point. It is the right tool for portfolio allocation, control, and constrained regression — problems where the answer is a vector of real numbers.
Savanty is for discrete constraint satisfaction: every variable takes one value from a
finite set, and the answer is an assignment. Different mathematics, different solvers, different problems.
Savanty's very first LLM call is a suitability check, and if your problem
looks continuous it returns not_suitable=True with suggested_tool pointing at
cvxpy or scipy.
| Axis | Savanty | cvxpy |
|---|---|---|
| Problem class | Discrete constraint satisfaction over finite domains. | Continuous convex optimization (LP, QP, SOCP, SDP) over real-valued variables. |
| Variables | Take one value from a finite, enumerable set. | Real numbers, constrained by convex inequalities and equalities. |
| What you write | An English description; the LLM emits the ASP. | Python that builds Variable objects and a convex objective/constraints, by hand. |
| Solver | Clingo (ASP) — sound & complete over finite domains. | Convex solvers (ECOS, SCS, OSQP, …) — provably optimal for convex problems. |
| Objective | Feasibility, or discrete optimization via ASP #minimize / #maximize. | Minimize/maximize a convex (often smooth) function. |
| Typical problems | Scheduling, assignment, seating, graph colouring, logic puzzles. | Portfolio optimization, control, regression with constraints, resource pricing. |
| Who writes the model | Anyone who can describe the problem in English. | Someone comfortable formulating a convex program. |
The short version
If your answer is a set of real numbers optimizing a smooth function, use cvxpy. If your answer is a discrete assignment satisfying a set of hard rules, use Savanty. If it is genuinely mixed, reach for a MILP/MINLP toolkit — both cvxpy and Savanty deliberately stay in their lanes.