These docs are for v1.1. Click to read the latest docs for v2.0.


Why is a certain solve like it is?

Optimisation requires the definition of hard and soft constraints. Hard constraints are supposed to not be broken. If any hard constraint is broken, the solution is identified as infeasible.
If infeasible, it is always important to be able to understand why our Solvers have come up with that particular solution. At Solvice, we call this Solver Explainability.



A goal is defined by a hard constraint. If it is present in the result, there must be a hard constraint violation.

goalName of the objective / constraint.String
weightTotal weight (or impact) of all the conflicts in this goal.Number
conflictsList of ConflictsList of Conflict


A conflict is a specific reason why an assignment has violations, possibly multiple.

weightWeight of a specific conflictNumber
reasonsConflicting entities in the goal.Map of String

VRP example

In a Single Day Vehicle Routing problem, there might be an order assigned to a vehicle which does not own that Type Requirement. If there is no other option but to assign the order to that vehicle then the resulting solution contains a violation against the Type Requirement goal.
The solver always explains the details of this violation. E.g. that order4 is assigned to truck0.

  "id": "46c799c1-65ff-40f7-a203-df2e461e51f5",
  "goals": [
      "goal": "Type Requirement",
      "weight": -1,
      "conflicts": [
          "weight": -1,
          "reasons": {
            "order": "order4",
            "vehicle": "truck0"
  "timestamp": 1647355985