Page tree
Skip to end of metadata
Go to start of metadata

Available starting from V 6.5

Summary

Searches for a good shift schedule for an entered staffing level.

Example: ...

Situation

For a given demand, shift type constraints and optimization parameter set an optimal coverage is calculated.

Settings

Input table

Result

Project File

Input table structure

ParameterDescriptionValuesDefault ValueDefault Factor
Demand

Demand for the specified hour per day of the week in the following table structure space separated

From To Mon Tue Wed Thu Fri Sat Sun




Demand minimum and maximum MISSING




Shift type

Shift type constraints in the following table structure space separated

Name Earliest_Start Best_Start Latest_Start Min_Dur Best_Dur Max_Dur

The allowed shift types influence the possible over- and/or understaffing by the solution:




Shift type: On call duty MISSING





Shift type: Travel to work MISSING





Shift type: Day(s) of the week




Shift type: Unpaid breaks MISSING





Contraints




Further settings




MinimizeHighCover

Keep high cover to a minimum



0,20
MinimizeLowCover

Keep low cover to a minimum



0,20

Interaction of
MinimizeHighCover and MinimizeLowCover
with the demand curve

If a demand curve can not be covered without over- and/or understaffing, eg in this example where only 8-h-shifts are allowed either over- or understaffing has to result, then the relativ weights decide the outcome of the solution:




MinimizeNumberOfShifts

Keep number of types of shift types to a minimum

Example: If the demand increases from 06:00 onwards every 15 min by 1 or 2 persons, it would be efficient to use many different shift types starting at 06:00, 06:15, 06:30, ...

However, for some organisations the handling of many different shift types causes difficulties eg in adminstration, communication, leadership, ... . So they might be interested in accepting some over- and/or understaffing in exchange for fewer shift types. Eg starting only every 30 min like 06:00, 06:30, ...



12,00
DifferenShiftEndsPrefer same shift ends

0,00
MinimumShiftLengths

Prefer shifts of length equal or greater to

Often employees prefer eg longer shifts because they reduce time for commuting to work. This parameters help to increase the likelyhood of such shifts to be chosen for the solution. Other parameters (MinimizesNumberOfDutiesPerWeek, MinimizeNumberOfShifts)might work to the same effect.



1,00
PreferredShiftLengthInMinutes

Preferred shift length in minutes


240,00
MinimizesNumberOfDutiesPerWeek

Keep number of average duties per week to a minimum per employee (FTE)



200,00
bMaximumNumbeOfWorkingHours    Maximum number of working hours scheduled (checkbox)


Weight for MaximumNumberOfWorkingHoursmissing


MaximumNumbeOfWorkingHours

Maximum number of working hours scheduled

The constraint on the maximum number of working hours in normal shifts allows you to formulate an upper bound on your available capacity.
Eg, if you have no more than 2.500 employees that can each work 40 per week, this constraint can keep the number of work hours a solution uses to max. 100.000.

The default value here is chosen especially high so that you don´t inflict your solution by accidentally activating the check-box.



40,00
missing




bMaximumNumberOfEmployeesmissing (checkbox)


MaximumNumberOfEmployees

Maximum number of employees scheduled

The constraint on the maximum number of duties in normal shifts aims at a similar direction as MinimizesNumberOfDutiesPerWeek, but allows you to formulate an upper bound.
Eg, if you have no more than 20 employees that can each work 5 duties per week, this constraint can keep the number of duties a solution uses to max. 100.



400,00
missing




MinimumDemandOfStaff MISSING

Weight for Minimum workforce requirements

If in the Desktop Solution of OPA a minimum curve (eg because due to saftey at least always 3 employees per time interval have to be scheduled) has been entered, a weight can be attached so that the solution is not below this minimum demand per interval.



4,00

MaximumDemandOfStaff MISSING

Weight for Maximum workforce requirements

If in the Desktop Solution of OPA a maximum curve (eg because the unit has not more than 100 workplaces so even if 110 employes might be useful cannot dispatch more then 100) has been entered, a weight can be attached so that the solution is not below this minimum demand per interval.



4,00

SimilaritWithDemandCurve MISSING

Similarity between cover and operating hours curves

If an understaffing has to be accepted (eg because the overall personnel capacity is 10% lower than the demand), then often it is better to have eg 10% less coverage at any time interval than more than enough in the morning and very few in the afternoon. By setting this weight a relatively even distribution of over-/understaffing in the resulting solution is furthered.



5,00
AverageWorkingHoursPerWeek

Average working hours per week


48,00
OptimumNumberOfDutiesPerWeek

Optimum number of duties per week


3,50
DesiredMaximalDutiesPerWeek

Desired maximal duties per week


6,00
PreferredShiftEndInMinutesPreferred shift end in minutes
15,00
bMaximumNumberOfPersons

Consider desired maximum number of persons (checkbox)

  • 0-no
  • 1-yes
0,00
MaximumNumberOfPersons

Desired maximum number of persons

e.g. call center having limited number of workstations


100,00
bMaximumNumberOfShifts

Consider desired maximum number of shifts (checkbox)

  • 0-no
  • 1-yes
0,00
MaximumNumberOfShifts

Desired maximum number of shifts


10,00
bMaximumNumberOfPersonsOnCallShiftsConsider desired maximum number of persons in on call shifts
  • 0-no
  • 1-yes
0,00
MaximumNumberOfPersonsOnCallShifts

Desired maximum number of persons in on call shifts



100,00
bMaximumNumberOnCallShiftsConsider desired maximum number of on call shift (checkbox)
  • 0-no
  • 1-yes
0,00
MaximumNumberOnCallShifts

Desired maximum number of on call shifts 


10,00

missing

Employees per team

If a demand curve changes in steps of 1, 2, ... persons per interval, but an operation needs to work in teams of eg 4 persons each (meaning either 4 persons are dispatched at the same time or not because eg 3 are to few for a given task) then you can enter 4 here and the staffing levels in the solution will always be a multiple of 4, eg 4, 8, 12, ...

Alternatively, you could modify the demand curve in advance so that it expresses the number of teams per interval (instead of persons per intervall).




Algorithm
  • For Check Cover select MINCOSTMAXFLOW (considers only demand and shift types, weights for over-/understaffing but no other constraints) (warning) Day Start Time should be "02:00" instead of "05:00" in order fix the Monday problem
  • For Find New Solution or Improve Solution select TABUSEARCH

  • TABUSEARCH
  • MINCOSTMAXFLOW


StopAfterSeconds


600
StopAfterSecondsNoImprovement    


15
JobGUID
SUPERUSER_COMPLEX


JobDirectory
TIS\$System\OPA_SUPERUSER_COMPLEX


Output table structure






CalculationStartTime

CalculationEndTime

ErrorCodesee error codes table below
LowCover

HighCover

NumberOfShifts

AverageWorkingHours

Solution
Shift IDStartLengthMonTueWedThuFriSatSun
Shift type ID + NumberTimehh:mm#######

Error Codes

ErrorError CodeDescription

0Successfully executed

General (ErrorCodes bis 99)

ERR_GeneralError1not further specified error (wird im Zwei onError goto:.. abgefangen)
ERR_NoRequirements10No requirements specified
ERR_NoShiftTypes11No ShiftTypes specified
ERR_NoWeights12No Weights specified

Requirements (ErrorCodes von 100-199)

ERR_InvalidRequirementsArguments100Invalid Requirements: wrong number of arguments. 9 arguments are required
ERR_InvalidRequirementDuty101Duties must be numeric!
ERR_InvalidRequirements102Invalid Requirements: not further specified error

ShiftTypes (ErrorCodes von 200-299)

ERR_InvalidShiftTypeEarliestStartTime200Invalid earliest start time of a shift type
ERR_InvalidShiftTypeLatestStartTime201Invalid latest start time of a shift type
ERR_InvalidShiftTypeOptimalStartTime207Invalid latest start time of a shift type
ERR_InvalidShiftTypeLength202Invalid length of a shift type
ERR_InvalidShiftTypesArguments203Invalid ShiftTypes: wrong number of arguments. 5 arguments are required
ERR_InvalidShiftTypeLengthDefinition204the minimum and maximum length of a shift type is not clearly defined
ERR_AmbiguousShiftType205one shift type abbreviation is used more often than once
ERR_InvalidShiftType206Invalid shift type: not further specified error
ERR_InvalidUnfixedBreak208Invalid shifttype:
ERR_InvalidNewComing209Invalid shift type: not further specified error
ERR_InvalidPercentage210Invalid shift type: not further specified error
ERR_InvalidColor211Invalid shift type: not further specified error
ERR_InvalidOverlappingTime212Invalid shift type: Übergabezeit
ERR_InvalidPercentageStandby213Invalid shift type: not further specified error
ERR_InvalidReserveNecessary214Invalid shift type: not further specified error

BreakTypes (ErrorCodes von 300-399)

ERR_InvalidBreakTypeArgument300one of the passed arguments is invalid
ERR_InvalidBreakDistance301max distance from start is smaller than min distance"
ERR_InvalidBreakTypeArgNumber302wrong number of arguments. 6 args are required
ERR_InvalidBreakType303not further specified error
ERR_SpecifiedShiftTypeInvalid304the shift type specified in the break type doesn
ERR_OverlappingBreakTypes306two break types that are assigned to one shift type are overlapping!
ERR_InvalidNumberOfBreakTypes307maximal 3 PausenTypen pro SchichtType sind erlaubt!
ERR_BreakTypeDoesNotFitInShifttype308maximal 3 PausenTypen pro SchichtType sind erlaubt!

Weights (ErrorCodes von 400-499)

ERR_InvalidWeights400invalid weight (muß positiv sein)
ERR_InvalidNumberOfWeights401ungültige Anzahl von Gewichten => müssen 3 sein!!
ERR_InvalidNumberOfOtherConstraints402ungültige Anzahl von Gewichten => müssen 3 sein!!
ERR_InvalidOtherConstraints403

StopAfterSeconds (ErrorCodes von 500-599)

ERR_InvalidStopAfterSecondsTime500invalid stopAfterSecondsSpecification (must be positive!)

Time (ErrorCodes von 600-699)

ERR_InvalidNumberOfCharactersInTimeString600Zeitstring muß aus 5 Zeichen bestehen
ERR_InvalidTimeCharacter601der Zeitstring darf nur aus Ziffern und ":" bestehen
ERR_InvalidTimeString602ungültiger TimeString
ERR_TimeMustBeLessThan24603Zeit muß zwischen 00:00 und 23:59 sein
ERR_MinutesInTimeCauseInvalidInterval604die Minuten im Zeitstring müssen durch 5 teilbar
ERR_InvalidDayStartTime605Invalid day start time

Solution (Eingabe) (ErrorCodes von 700-799)

ERR_InvalidSolutionTime700Zeitstring muß aus 5 Zeichen bestehen
ERR_InvalidSolutionDuty701Besetzungsstärken müssen eine Zahl sein
ERR_InvalidSolutionArgs

ERR_SolutionHasNoShiftType703die Input-Solution hat keinen Schichttyp, der passt!!
ERR_InvalidSolutionUnfixedBreak704
ERR_InvalidSolutionPercentage705
ERR_InvalidSolutionNewComing706
ERR_InvalidSolutionStandby707
ERR_InvalidSolutionColor708
ERR_InvalidSolution709
ERR_InvalidSolutionShiftStatus710

Plausibilität der LÖSUNG überprüfen (ErrorCodes ab 1000)

ERR_InvalidShiftGenerated1000eine Schicht wurde erzeugt, die nicht zu den Spezifikationen des Schichttyps passt
ERR_InvalidBreakGenerated1001mindestens eine erzeugte Pause liegt nicht innerhalb der Schicht
ERR_UnfixedBreakGenerated1002mindestens eine nicht fixe Pause wurde erzeugt
ERR_NotEnoughGeneratedBreaks1003es wurde nicht für jede Person eine Pause erzeugt!
ERR_TooManyGeneratedBreaks1004es wurden Pausen für mehr Personen als am entsprechenden Wochentag anwesend sind erzeugt.
ERR_InvalidNumberOfBreaks1005einer Person ist eine ungültige Anzahl von Pausen zugeteilt worden
ERR_BreaksNotAllowed1006Bei der Generierung dürften keine Pausen erzeugt werden (Aufruf ohne Pause)"
ERR_SameShiftabbreviation1007
ERR_ShiftHasNoFittingShifttype1008

ERR_OptimizeBreaks_TimePeriodToOptimize2000
ERR_OptimizeBreaks_BreakLunchQty2001
ERR_OptimizeBreaks_BreakType2Qty2002
ERR_OptimizeBreaks_BreakLengthVar2003
ERR_OptimizeBreaks_BreakLengthFix2004
ERR_OptimizeBreaks_BreakPosVar2005
ERR_OptimizeBreaks_BreakPosFix2006
ERR_OptimizeBreaks_MissingBreakDefinitons2007
ERR_OptimizeBreaks_MeetingsDefiniton2009
ERR_OptimizeBreaks_MeetingsOutside2010
ERR_OptimizeBreaks_IntervalTooSmall2011
ERR_OptimizeBreaks_RuleBreaksWeights2012
ERR_OptimizeBreaks_BreakDistance2008

ERR_OptimizeBreaks_NoINIFile2050
ERR_OptimizeBreaks_COMETNoInitalSolution2051
ERR_OptimizeBreaks_COMETPROCESSTerminated2052
ERR_OptimizeBreaks_COMETInternalError2053
ERR_OptimizeBreaks_COMETNoSolution2054
ERR_OptimizeBreaks_COMETUserRights2055
ERR_OptimizeBreaks_COMETProcessStartInvalid2056

ERR_OptimizeBreaks_NoBreakRules2500

Want to learn more?

Searches for a good shift schedule for an entered staffing level

Parameter

ParameterValueOpt.DescriptionExample





Example 1: ...

...

Calculation methodSettingsResult
...


ProblemFrequent CauseSolutions
...

...

Related topics