NDD ProfileProfile
Overview
Profiles define the frequency and day-pattern constraints for periodic visits. Every job in the NDD model requires a profile, which is what distinguishes the NDD schema from the standard IVR7 model. Profiles control how many times a job must be visited within the planning period and, optionally, on which specific day patterns those visits may occur.
Applicable models
- NDD
ndd-cmibu6krtqja
Profile
The profile contains the information regarding the number of visits and the frequency type. If a non-standard frequency is required, custom cycles can be specified to enumerate the allowable day patterns.
Schema definition
message Profile {
required eFrequency frequencyType = 1;
repeated customCycle allowableCycles = 2;
optional int32 numVisits = 3;
}Fields
- frequencyType
- The type of frequency applicable to this profile. Frequencies are linked to the concept of a week, the length of which is defined in the dimension configuration.
- allowableCycles
- A list of allowable cycles if a
CUSTOMfrequency type is used. The length of each custom cycle must correspond to theperiodLengthspecified in the dimension configuration. - numVisits
- The number of visits which corresponds to the custom cycles specified in
allowableCycles. While the number of visits could be derived from the list ofallowableCycles, this provides a simple checksum to ensure that the custom cycles are specified correctly.
Examples
A profile for a customer that needs one visit per week in a 20-day (monthly) planning period:
frequencyType: ONCE_A_WEEKA profile for a customer visited three times per week:
frequencyType: THREE_TIMES_A_WEEKA custom profile for a 5-day period where the visit may occur on either the first or last day:
frequencyType: CUSTOM
allowableCycles {
visitProfile: true
visitProfile: false
visitProfile: false
visitProfile: false
visitProfile: false
}
allowableCycles {
visitProfile: false
visitProfile: false
visitProfile: false
visitProfile: false
visitProfile: true
}
numVisits: 1Notes
- The most common usage is to specify a standard
frequencyType(notCUSTOM) and use one of the pre-defined frequencies. Custom frequencies should ideally be avoided where possible as they add complexity. - Profiles are powerful constraints but also what make the NDD model particularly difficult to solve. They specify an exact visit structure that must be maintained across days.
- The frequency must be consistent with the
weekLengthandperiodLengthdefined in the dimension configuration. For example,ONCE_A_MONTHis invalid for a model with a period length of 5 (one week).
Profile.eFrequency
The frequency defines how often a job should be visited within the planning period.
Schema definition
enum eFrequency {
CUSTOM = 0;
SEVEN_TIMES_A_WEEK = 1;
SIX_TIMES_A_WEEK = 2;
FIVE_TIMES_A_WEEK = 3;
FOUR_TIMES_A_WEEK = 4;
THREE_TIMES_A_WEEK = 5;
TWICE_A_WEEK = 6;
ONCE_A_WEEK = 7;
EVERY_SECOND_WEEK = 8;
ONCE_A_MONTH = 9;
}Notes
- A frequency should correspond to the length of the period specified in the dimension configuration. A
ONCE_A_MONTHfrequency requires at least 4 weeks in the period. CUSTOMfrequencies requireallowableCyclesandnumVisitsto be specified on the profile.
Profile.customCycle
A custom cycle defines a single instance of a feasible visit pattern over the planning period.
Schema definition
message customCycle {
repeated bool visitProfile = 2;
}Fields
- visitProfile
- An ordered list of boolean indicators specifying where in the period a visit may occur. The length must correspond to the
periodLengthin the dimension configuration. The profile allows multiple custom cycles to be specified, providing an exhaustive enumeration of the allowable day patterns.
Examples
A custom cycle with two visits on the first and third days of a 5-day period:
visitProfile: true
visitProfile: false
visitProfile: true
visitProfile: false
visitProfile: falseNotes
- The length of the
customCyclemust match theperiodLength. - A single common frequency should be used across all custom cycles. A custom cycle with one visit may not be mixed with a custom cycle with three visits in the same profile.