Skip to main content
Compilation context that creates variables, constraints, and objectives and emits a SolverRequest for the Python CP-SAT solver service.

Constructors

new ModelBuilder(config)

Returns: ModelBuilder

Properties

costContext
CostContext | undefined
required
Shared context for cost rules. Set by minimizeCost(), read by modifiers.
coverage
CoverageRequirement[]
required
coverageBucketMinutes
number
required
days
SchedulingDay[]
required
fairDistribution
boolean
required
members
SchedulingMember[]
required
options
{ diagnostics?: "none" | "hard"; solutionLimit?: number; timeLimitSeconds?: number; } | undefined
required
rules
CompiledRule[]
required
shiftPatterns
ShiftPattern[]
required
strategy
ModelSolveStrategy
required
weekStartsOn
DayOfWeek
required

Methods

addAtMostOne(vars)

  • vars: string[]

addBoolAnd(vars)

  • vars: string[]

addBoolOr(vars)

  • vars: string[]

addExactlyOne(vars)

  • vars: string[]

addImplication(ifVar, thenVar)

  • ifVar: string
  • thenVar: string

addLinear(terms, op, rhs, id?)

  • terms: object[]
  • op: "<=" | ">=" | "=="
  • rhs: number
  • id?: string

addNoOverlap(intervals)

  • intervals: string[]

addPenalty(varName, weight)

  • varName: string
  • weight: number

addSoftLinear(terms, op, rhs, penalty, id?, stage?)

  • terms: object[]
  • op: "<=" | ">="
  • rhs: number
  • penalty: number
  • id?: string
  • stage?: string

assignment(memberId, patternId, day)

Returns the aggregate shift assignment variable for a member, pattern, and day. Returns: string

boolVar(name)

  • name: string
Returns: string

calculateCost(assignments)

Returns: CostContribution

canAssign(member, pattern)

Returns: boolean

compile()

Returns: CompilationResult

endMinutes(pattern, day)

Returns: number

getCompiledInstructions()

Returns model-backed coverage and rule instructions in explanation order. Returns: readonly CompiledModelInstruction[]

getConstraintTraces()

Returns: readonly ConstraintTrace[]

getInstructionResults()

Returns: ReadonlyMap<string, readonly InstructionResult[]>

intervalVar(name, start, end, size, presenceVar?)

  • name: string
  • start: number
  • end: number
  • size: number
  • presenceVar?: string
Returns: string

intVar(name, min, max)

  • name: string
  • min: number
  • max: number
Returns: string

membersForCoverage(cov)

Returns team members who can satisfy a coverage requirement. Matching logic:
  • If only roles: must have ANY of those roles (OR)
  • If only skills: must have ALL specified skills (AND)
  • If both: must have a matching role AND ALL specified skills
  • cov: CoverageRequirement
Returns: SchedulingMember[]

membersWithRole(roleId)

  • roleId: string
Returns: SchedulingMember[]

patternAvailableOnDay(pattern, day)

Checks if a shift pattern can be used on a specific day. Returns false if the pattern has dayOfWeek restrictions that exclude this day. Returns: boolean

patternDuration(patternId)

  • patternId: string
Returns: number

shiftActive(patternId, day)

Returns: string

startMinutes(pattern, day)

Returns: number