The Solvice Platform

Solvers

The Solvice Platform allows for solving multiple hard optimisation problems:

  • VRP: in routing optimisation
  • SHIFT: creating shifts according to a predefined demand
  • FILL: assigning resources to shifts
  • TASK: assigning tasks to resources within a shift

Platform structure: endpoints

Our platform is super simple. Per solver, we have 6 endpoints. You give us the input, we give you the output for an
optimization request of a certain kind.
Every solver has 3 action endpoints (POST requests):

  1. Solve: for optimizing requests. Read all about how optimization works in Intro to optimization.
  2. Evaluate: for evaluating solutions, whether they are feasible or not, human-made or algorithm-made. We return you
    the score of the solution.
  3. Suggest: for suggesting a multiple options for a single empty assignment. We return you a list of suggestions.

And 3 endpoints for retrieving information (GET requests):

  1. Status: Current state of the request: QUEUED, SOLVING, SOLVED, ERROR
  2. Solution: Solution response of the request
  3. Explanation: Explanation of the solution of the request. This explains what planning objects are involved in
    violated constraints.

Ideal flow:

Solver flow

Actions

You can use the same request body for that solver for every action. Check out the schemas in
the API reference.

Solve

Solving will optimize the schedule.

POST /v2/:solver/solve

Evaluate

Evaluating will only calculate a score for a certain (not-empty) schedule.

POST /v2/:solver/evaluate

Suggest

Suggesting will create multiple suggestions for only 1 empty assignment into a schedule.

POST /v2/:solver/suggest

Information

Status

The status endpoint will return the status of the solve run and the id of the solve job.

GET /v2/:solver/jobs/:job_id/status

Solution

The solution endpoint will return the solution of the solve run if the status is SOLVED.

GET /v2/:solver/jobs/:job_id/solution

Explanation

The explanation endpoint will return the explanation of the violated constraints of the solve run if the status
is SOLVED.

GET /v2/:solver/jobs/:job_id/explanation