Skip to main content

Class: ModelBuilder

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

Constructors

Constructor

new ModelBuilder(config): ModelBuilder;

Parameters

ParameterType
configModelBuilderConfig

Returns

ModelBuilder

Properties

coverage

readonly coverage: CoverageRequirement[];

coverageBucketMinutes

readonly coverageBucketMinutes: number;

days

readonly days: string[];

employees

readonly employees: SchedulingEmployee[];

fairDistribution

readonly fairDistribution: boolean;

options

readonly options:
  | {
  solutionLimit?: number;
  timeLimitSeconds?: number;
}
  | undefined;

reporter

readonly reporter: ValidationReporter;

rules

readonly rules: CompilationRule[];

shiftPatterns

readonly shiftPatterns: ShiftPattern[];

weekStartsOn

readonly weekStartsOn: DayOfWeek;

Methods

addAtMostOne()

addAtMostOne(vars): void;

Parameters

ParameterType
varsstring[]

Returns

void

addBoolAnd()

addBoolAnd(vars): void;

Parameters

ParameterType
varsstring[]

Returns

void

addBoolOr()

addBoolOr(vars): void;

Parameters

ParameterType
varsstring[]

Returns

void

addExactlyOne()

addExactlyOne(vars): void;

Parameters

ParameterType
varsstring[]

Returns

void

addImplication()

addImplication(ifVar, thenVar): void;

Parameters

ParameterType
ifVarstring
thenVarstring

Returns

void

addLinear()

addLinear(
   terms,
   op,
   rhs): void;

Parameters

ParameterType
terms{ coeff: number; var: string; }[]
op"<=" | ">=" | "=="
rhsnumber

Returns

void

addNoOverlap()

addNoOverlap(intervals): void;

Parameters

ParameterType
intervalsstring[]

Returns

void

addPenalty()

addPenalty(varName, weight): void;

Parameters

ParameterType
varNamestring
weightnumber

Returns

void

addSoftLinear()

addSoftLinear(
   terms,
   op,
   rhs,
   penalty,
   id?): void;

Parameters

ParameterType
terms{ coeff: number; var: string; }[]
op"<=" | ">="
rhsnumber
penaltynumber
id?string

Returns

void

assignment()

assignment(
   employeeId,
   patternId,
   day): string;

Parameters

ParameterType
employeeIdstring
patternIdstring
daystring

Returns

string

boolVar()

boolVar(name): string;

Parameters

ParameterType
namestring

Returns

string

canAssign()

canAssign(employee, pattern): boolean;

Parameters

ParameterType
employeeSchedulingEmployee
patternShiftPattern

Returns

boolean

compile()

compile(): CompilationResult;

Returns

CompilationResult

employeesForCoverage()

employeesForCoverage(cov): SchedulingEmployee[];
Returns team members who can satisfy a coverage requirement. Matching logic:
  • If only roleId: must have that role
  • If only skillIds: must have ALL specified skills
  • If both: must have the role AND ALL specified skills

Parameters

ParameterType
covCoverageRequirement

Returns

SchedulingEmployee[]

employeesWithRole()

employeesWithRole(roleId): SchedulingEmployee[];

Parameters

ParameterType
roleIdstring

Returns

SchedulingEmployee[]

endMinutes()

endMinutes(pattern, day): number;

Parameters

ParameterType
patternShiftPattern
daystring

Returns

number

intervalVar()

intervalVar(
   name,
   start,
   end,
   size,
   presenceVar?): string;

Parameters

ParameterType
namestring
startnumber
endnumber
sizenumber
presenceVar?string

Returns

string

intVar()

intVar(
   name,
   min,
   max): string;

Parameters

ParameterType
namestring
minnumber
maxnumber

Returns

string

patternAvailableOnDay()

patternAvailableOnDay(pattern, day): boolean;
Checks if a shift pattern can be used on a specific day. Returns false if the pattern has daysOfWeek restrictions that exclude this day.

Parameters

ParameterType
patternShiftPattern
daystring

Returns

boolean

patternDuration()

patternDuration(patternId): number;

Parameters

ParameterType
patternIdstring

Returns

number

shiftActive()

shiftActive(patternId, day): string;

Parameters

ParameterType
patternIdstring
daystring

Returns

string

startMinutes()

startMinutes(pattern, day): number;

Parameters

ParameterType
patternShiftPattern
daystring

Returns

number

validateSolution()

validateSolution(assignments): void;
Run post-solve validation on all rules. Call this after solving with the resolved assignments.

Parameters

ParameterType
assignmentsResolvedShiftAssignment[]

Returns

void