Skip to main content

Function: parseSolverResponse()

function parseSolverResponse(response): SolverResult;
Extracts shift assignments from solver response. Parses variable names matching the pattern assign:${employeeId}:${patternId}:${day} and returns assignments where the variable value is 1 (true).

Parameters

ParameterTypeDescription
response{ error?: string; softViolations?: { actualValue: number; constraintId: string; targetValue: number; violationAmount: number; }[]; solutionInfo?: string; statistics?: { branches?: number; conflicts?: number; solveTimeMs?: number; }; status: "OPTIMAL" | "FEASIBLE" | "INFEASIBLE" | "TIMEOUT" | "ERROR"; values?: Record<string, number>; }The solver response containing variable values
response.error?string-
response.softViolations?{ actualValue: number; constraintId: string; targetValue: number; violationAmount: number; }[]-
response.solutionInfo?string-
response.statistics?{ branches?: number; conflicts?: number; solveTimeMs?: number; }-
response.statistics.branches?number-
response.statistics.conflicts?number-
response.statistics.solveTimeMs?number-
response.status"OPTIMAL" | "FEASIBLE" | "INFEASIBLE" | "TIMEOUT" | "ERROR"-
response.values?Record<string, number>-

Returns

SolverResult Parsed schedule result with assignments

Remarks

IDs are validated by ModelBuilder to not contain colons, ensuring unambiguous parsing.

Example

const response = await client.solve(request);
const result = parseSolverResponse(response);

if (result.status === "OPTIMAL" || result.status === "FEASIBLE") {
  for (const assignment of result.assignments) {
    console.log(`${assignment.employeeId} works ${assignment.shiftPatternId} on ${assignment.day}`);
  }
}