Statistics

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.

HTTP GET http://api.solvice.io/stats/:id

Goal

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

Property

Description

Type

goal

Name of the objective / constraint.

String

weight

Total weight (or impact) of all the conflicts in this goal.

Number

conflicts

List of Conflicts

List of Conflict

Conflict

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

Property

Description

Type

weight

Weight of a specific conflict

Number

reasons

Conflicting 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
}

Property

Description