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
}
Updated about 2 years ago