About

Page created using Nurse Rostering Problem (NRP) API (3.1.3693.32444)

1 2 3 4 5
2009 December01020304050607080910111213141516171819202122232425262728293031
TWTFSSMTWTFSSMTWTFSSMTWTFSSMTWT

P

V

OP1

M

M

M

M

H

 

A

A

A

A

A

H

 

D

 

N

 

N

   

M

M

M

M

M

   

A

A

A

A

3 0
OP10                              

N

   

H

 

M

M

M

M

M

H

 

A

A

A

A

6 0
OP11

A

A

A

A

   

N

 

D

 

N

   

M

 

M

M

M

H

 

A

A

A

A

A

H

 

N

 

N

  3 0
OP12  

N

   

H

 

M

M

M

M

M

   

A

 

A

A

A

 

H

 

D

 

N

     

M

M

M

M

3 0
OP13

M

M

M

M

   

A

A

A

A

A

 

H

 

H

 

N

     

D

 

N

 

N

   

M

M

M

M

7 0
OP14

A

A

A

A

   

D

 

N

 

N

 

H

 

H

 

N

     

M

M

M

M

M

   

A

A

A

A

7 0
OP15                                                               30 0
OP16

A

A

A

A

 

H

 

N

       

H

             

N

 

D

 

N

   

M

M

M

M

7 0
OP2

M

M

M

M

H

 

A

A

A

A

A

   

N

 

D

 

N

   

M

M

M

M

M

H

 

A

A

A

A

3 0
OP3  

N

 

N

 

H

 

N

 

N

 

H

 

M

 

M

M

M

   

A

A

A

A

A

   

N

 

D

  7 0
OP4

N

   

N

   

M

M

M

M

M

   

A

 

A

A

A

H

 

N

 

N

     

H

 

N

 

D

7 0
OP5

M

M

M

M

H

 

A

A

A

A

A

H

 

N

                                  10 0
OP6          

H

 

D

 

N

     

M

 

M

M

M

   

A

A

A

A

A

 

H

 

N

 

N

3 0
OP7

D

 

N

     

M

M

M

M

M

   

A

 

A

A

A

 

H

 

N

     

H

 

M

M

M

M

0 0
OP8

A

A

A

A

   

N

 

N

   

H

 

M

 

M

M

M

H

 

A

A

A

A

A

   

D

 

N

  3 0
OP9

N

 

N

     

M

M

M

M

M

   

A

 

A

A

A

 

H

 

N

 

N

   

H

 

D

 

N

7 0
Temp1  

D

     

H

               

H

                                6 0
Temp2                  

D

                           

D

            4 0
Temp3    

D

                           

D

 

H

                      6 0
Temp4      

D

           

D

 

H

 

H

 

D

           

D

   

H

        14 0
Employees' penalty (soft constraints) 136

Violations

Shift Cover (Skill : All)
M Max - - - - 0 0 - - - - - 0 0 - 0 - - - 0 0 - - - - - 0 0 - - - -   
M Provided 4 4 4 4 0 0 4 4 4 4 4 0 0 4 0 4 4 4 0 0 4 4 4 4 4 0 0 4 4 4 4 00
D Min 1 1 1 1 0 0 1 1 1 1 1 0 0 1 - 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1   
D Max 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1   
D Provided 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 00
H Min 0 0 0 0 4 4 0 0 0 0 0 4 4 0 4 0 0 0 4 4 0 0 0 0 0 4 4 0 0 0 0   
H Max 0 0 0 0 4 4 0 0 0 0 0 4 4 0 4 0 0 0 4 4 0 0 0 0 0 4 4 0 0 0 0   
H Provided 0 0 0 0 4 4 0 0 0 0 0 4 4 0 4 0 0 0 4 4 0 0 0 0 0 4 4 0 0 0 0 00
A Max - - - - 0 0 - - - - - 0 0 - 0 - - - 0 0 - - - - - 0 0 - - - -   
A Provided 4 4 4 4 0 0 4 4 4 4 4 0 0 4 0 4 4 4 0 0 4 4 4 4 4 0 0 4 4 4 4 00
N Max - - - - 0 0 - - - - - 0 0 - 0 - - - 0 0 - - - - - 0 0 - - - -   
N Provided 2 2 2 2 0 0 2 2 2 2 2 0 0 2 0 2 2 2 0 0 2 2 2 2 2 0 0 2 2 2 2 00
Shift Cover (Skill : Permanent staff member)
M Min 4 4 4 4 - - 4 4 4 4 4 - - 4 - 4 4 4 - - 4 4 4 4 4 - - 4 4 4 4   
M Max 4 4 4 4 - - 4 4 4 4 4 - - 4 0 4 4 4 - - 4 4 4 4 4 - - 4 4 4 4   
M Provided 4 4 4 4 0 0 4 4 4 4 4 0 0 4 0 4 4 4 0 0 4 4 4 4 4 0 0 4 4 4 4 00
D Provided 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 00
H Min - - - - 2 2 - - - - - 2 2 - 2 - - - 2 2 - - - - - 2 2 - - - -   
H Provided 0 0 0 0 4 3 0 0 0 0 0 4 3 0 2 0 0 0 4 3 0 0 0 0 0 4 3 0 0 0 0 00
A Min 4 4 4 4 - - 4 4 4 4 4 - - 4 - 4 4 4 - - 4 4 4 4 4 - - 4 4 4 4   
A Max 4 4 4 4 - - 4 4 4 4 4 - - 4 0 4 4 4 - - 4 4 4 4 4 - - 4 4 4 4   
A Provided 4 4 4 4 0 0 4 4 4 4 4 0 0 4 0 4 4 4 0 0 4 4 4 4 4 0 0 4 4 4 4 00
N Min 2 2 2 2 - - 2 2 2 2 2 - - 2 - 2 2 2 - - 2 2 2 2 2 - - 2 2 2 2   
N Max 2 2 2 2 - - 2 2 2 2 2 - - 2 0 2 2 2 - - 2 2 2 2 2 - - 2 2 2 2   
N Provided 2 2 2 2 0 0 2 2 2 2 2 0 0 2 0 2 2 2 0 0 2 2 2 2 2 0 0 2 2 2 2 00
Total penalty (soft constraints)136
Total violations (hard constraints)0

Shifts Start End Description

M

08:00 15:00 Morning. Time units=7.

D

08:00 07:59 Stand by. Time units=24.

H

10:00 09:59 Holiday. Time units=24.

A

15:00 22:00 Afternoon. Time units=7.

N

22:00 08:00 Night. Time units=10.
 
Cover constraints
Must not be over preferred levels: Soft constraint, weight=1, function=Linear.
Must not be under preferred levels: Soft constraint, weight=1, function=Linear.
Must not be over maximum levels: Soft constraint, weight=1000, function=Linear.
Must not be under minimum levels: Soft constraint, weight=1000, function=Linear.

KEY
 Assignment frozen
 Day off request
 Day on request
 Shift off request
 Shift on request

 

Computation
Found by   tec on BEECHBONE (CS)
Algorithm
Computation time
Date 11 February 2010
System Microsoft Windows NT 5.1.2600 Service Pack 3
CLR Version: 2.0.50727.3603
Processors: 2
CPU  

 

Penalties

OP1
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=True].
AllM  4
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=True].
AllM  4
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=True].
AllM  5
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=True].
AllM  5
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=True].
AllA  5
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=True].
AllA  5
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=True].
AllA  4
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=True].
AllA  4
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=True].
AllN  2
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  9
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  9
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  2
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = True
AllMwk1 = True
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = True
AllMwk4 = True
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = True
AllAwk2 = True
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = True
AllAwk5 = True
Nwk1 = False
Nwk2 = False
Nwk3 = True
Nwk4 = False
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP10
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 6
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  0
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
Prefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 0
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=True].
AllM  5
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=True].
AllM  5
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=True].
AllA  4
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=True].
AllA  4
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=True].
AllN  1
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  5
xAt least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  0
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  4
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  1
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = True
AllMwk4 = True
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = True
AllAwk5 = True
Nwk1 = False
Nwk2 = False
Nwk3 = True
Nwk4 = False
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP11
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=True].
AllM  4
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=True].
AllM  4
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=True].
AllA  4
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=True].
AllA  4
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=True].
AllA  5
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=True].
AllA  5
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=True].
AllN  2
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=True].
AllN  2
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  4
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  9
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  4
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = True
AllMwk3 = True
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = True
AllAwk1 = True
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = True
AllAwk4 = True
Awk5 = False
AllAwk5 = False
Nwk1 = False
Nwk2 = True
Nwk3 = False
Nwk4 = False
Nwk5 = True
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP12
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=True].
AllM  5
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=True].
AllM  5
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=True].
AllM  4
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=True].
AllM  4
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=True].
AllA  4
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=True].
AllA  4
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=True].
AllN  1
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=True].
AllN  1
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  9
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  4
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  2
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = True
AllMwk2 = True
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = True
AllMwk5 = True
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = True
AllAwk3 = True
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = True
Nwk2 = False
Nwk3 = False
Nwk4 = True
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP13
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=True].
AllM  4
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=True].
AllM  4
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=True].
AllM  4
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=True].
AllM  4
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=True].
AllA  5
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=True].
AllA  5
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=True].
AllN  1
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=True].
AllN  2
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  8
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  5
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  3
Conditionals 0 4
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = True
AllMwk1 = True
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = True
AllMwk5 = True
Awk1 = False
AllAwk1 = False
Awk2 = True
AllAwk2 = True
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = False
Nwk2 = False
Nwk3 = True
Nwk4 = True
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
xShifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP14
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=True].
AllM  5
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=True].
AllM  5
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=True].
AllA  4
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=True].
AllA  4
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=True].
AllA  4
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=True].
AllA  4
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=True].
AllN  2
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=True].
AllN  1
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  5
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  8
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  3
Conditionals 0 4
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = True
AllMwk4 = True
Mwk5 = False
AllMwk5 = False
Awk1 = True
AllAwk1 = True
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = True
AllAwk5 = True
Nwk1 = False
Nwk2 = True
Nwk3 = True
Nwk4 = False
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
xShifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP15
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 30
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  0
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  0
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
Prefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 0
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
xAt least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  0
xAt least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  0
xAt least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  0
xAt least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  0
xAt least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  0
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = False
Nwk2 = False
Nwk3 = False
Nwk4 = False
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP16
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=True].
AllM  4
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=True].
AllM  4
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=True].
AllA  4
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=True].
AllA  4
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=True].
AllN  1
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=True].
AllN  2
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  4
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  4
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  3
Conditionals 0 4
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = True
AllMwk5 = True
Awk1 = True
AllAwk1 = True
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = False
Nwk2 = True
Nwk3 = False
Nwk4 = True
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
xShifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP2
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=True].
AllM  4
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=True].
AllM  4
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=True].
AllM  5
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=True].
AllM  5
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=True].
AllA  5
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=True].
AllA  5
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=True].
AllA  4
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=True].
AllA  4
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=True].
AllN  2
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  9
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  9
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  2
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = True
AllMwk1 = True
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = True
AllMwk4 = True
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = True
AllAwk2 = True
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = True
AllAwk5 = True
Nwk1 = False
Nwk2 = False
Nwk3 = True
Nwk4 = False
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP3
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=True].
AllM  4
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=True].
AllM  4
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=True].
AllA  5
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=True].
AllA  5
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=True].
AllN  2
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=True].
AllN  2
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=True].
AllN  1
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  4
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  5
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  5
Conditionals 0 4
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = True
AllMwk3 = True
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = True
AllAwk4 = True
Awk5 = False
AllAwk5 = False
Nwk1 = True
Nwk2 = True
Nwk3 = False
Nwk4 = False
Nwk5 = True
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
xShifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP4
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=True].
AllM  5
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=True].
AllM  5
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=True].
AllA  4
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=True].
AllA  4
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=True].
AllN  2
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=True].
AllN  2
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=True].
AllN  1
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  5
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  4
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  5
Conditionals 0 4
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = True
AllMwk2 = True
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = True
AllAwk3 = True
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = True
Nwk2 = False
Nwk3 = False
Nwk4 = True
Nwk5 = True
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
xShifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP5
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 6
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  0
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
Prefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 0
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=True].
AllM  4
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=True].
AllM  4
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=True].
AllA  5
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=True].
AllA  5
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=True].
AllN  1
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  4
xAt least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  0
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  5
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  1
Conditionals 0 4
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = True
AllMwk1 = True
Mwk2 = False
AllMwk2 = False
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = True
AllAwk2 = True
Awk3 = False
AllAwk3 = False
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = False
Nwk2 = False
Nwk3 = True
Nwk4 = False
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
xShifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP6
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=True].
AllM  4
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=True].
AllM  4
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=True].
AllA  5
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=True].
AllA  5
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=True].
AllN  1
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=True].
AllN  2
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  4
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  5
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  3
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = True
AllMwk3 = True
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = True
AllAwk4 = True
Awk5 = False
AllAwk5 = False
Nwk1 = False
Nwk2 = True
Nwk3 = False
Nwk4 = False
Nwk5 = True
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP7
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 0
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
Prefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 0
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=True].
AllM  5
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=True].
AllM  5
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=True].
AllM  4
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=True].
AllM  4
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=True].
AllA  4
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=True].
AllA  4
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=True].
AllN  1
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=True].
AllN  1
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=False].
AllN  0
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  9
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  4
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  2
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = True
AllMwk2 = True
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = True
AllMwk5 = True
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = True
AllAwk3 = True
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = True
Nwk2 = False
Nwk3 = False
Nwk4 = True
Nwk5 = False
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP8
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=False].
AllM  0
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=False].
AllM  0
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=True].
AllM  4
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=True].
AllM  4
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=True].
AllA  4
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=True].
AllA  4
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=False].
AllA  0
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=False].
AllA  0
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=True].
AllA  5
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=True].
AllA  5
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=False].
AllN  0
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=True].
AllN  2
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=False].
AllN  0
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=True].
AllN  1
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  4
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  9
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  3
Conditionals 0 0
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = False
AllMwk2 = False
Mwk3 = True
AllMwk3 = True
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = True
AllAwk1 = True
Awk2 = False
AllAwk2 = False
Awk3 = False
AllAwk3 = False
Awk4 = True
AllAwk4 = True
Awk5 = False
AllAwk5 = False
Nwk1 = False
Nwk2 = True
Nwk3 = False
Nwk4 = False
Nwk5 = True
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
OP9
Skills: Permanent staff member
Contract: OP
Requirement Violations Penalty Details
Patterns 0 3
SatisfiedPattern matchesPatternsMatched
Start day123
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On 0
Max 1 D shift
Max 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
Max 2 H shifts (and equal numbers of Sat and Sun work)
Max 2 matches between days 0-30 of pattern:
[Soft constraint, weight=8, function=Linear].
AllH  2
D shifts should be attached to N shifts (D-Off-N)
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=10, function=Linear].
AllDOffNot N0
xPrefer M before D shifts
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=3, function=Linear].
AllNot MD 1
At least one M in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Mwk1, Value=False].
AllM  0
Min 4 M in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllMwk1, Value=False].
AllM  0
At least one M in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Mwk2, Value=True].
AllM  5
Min 5 M in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllMwk2, Value=True].
AllM  5
At least one M in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Mwk3, Value=False].
AllM  0
Min 4 M in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllMwk3, Value=False].
AllM  0
At least one M in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Mwk4, Value=False].
AllM  0
Min 5 M in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllMwk4, Value=False].
AllM  0
At least one M in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Mwk5, Value=False].
AllM  0
Min 4 M in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllMwk5, Value=False].
AllM  0
At least one A in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Awk1, Value=False].
AllA  0
Min 4 A in week 1
Min 4 matches between days 0-3 of pattern:
[Variable, ID=AllAwk1, Value=False].
AllA  0
At least one A in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Awk2, Value=False].
AllA  0
Min 5 A in week 2
Min 5 matches between days 6-10 of pattern:
[Variable, ID=AllAwk2, Value=False].
AllA  0
At least one A in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Awk3, Value=True].
AllA  4
Min 4 A in week 3
Min 4 matches between days 13-17 of pattern:
[Variable, ID=AllAwk3, Value=True].
AllA  4
At least one A in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Awk4, Value=False].
AllA  0
Min 5 A in week 4
Min 5 matches between days 20-24 of pattern:
[Variable, ID=AllAwk4, Value=False].
AllA  0
At least one A in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Awk5, Value=False].
AllA  0
Min 4 A in week 5
Min 4 matches between days 27-30 of pattern:
[Variable, ID=AllAwk5, Value=False].
AllA  0
At least one N in week 1
Min 1 match between days 0-3 of pattern:
[Variable, ID=Nwk1, Value=True].
AllN  2
At least one N in week 2
Min 1 match between days 6-10 of pattern:
[Variable, ID=Nwk2, Value=False].
AllN  0
At least one N in week 3
Min 1 match between days 13-17 of pattern:
[Variable, ID=Nwk3, Value=False].
AllN  0
At least one N in week 4
Min 1 match between days 20-24 of pattern:
[Variable, ID=Nwk4, Value=True].
AllN  2
At least one N in week 5
Min 1 match between days 27-30 of pattern:
[Variable, ID=Nwk5, Value=True].
AllN  1
At least one M
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllM  5
At least one D
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllD  1
At least one H
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllH  2
At least one A
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllA  4
At least one N
Min 1 match between days 0-30 of pattern:
[Soft constraint, weight=6, function=Linear].
AllN  5
Conditionals 0 4
SatisfiedConditionalVars
If 1 M in week 1 then All M in week1
IF Mwk1 THEN AllMwk1
[Soft constraint, weight=9].
Mwk1 = False
AllMwk1 = False
Mwk2 = True
AllMwk2 = True
Mwk3 = False
AllMwk3 = False
Mwk4 = False
AllMwk4 = False
Mwk5 = False
AllMwk5 = False
Awk1 = False
AllAwk1 = False
Awk2 = False
AllAwk2 = False
Awk3 = True
AllAwk3 = True
Awk4 = False
AllAwk4 = False
Awk5 = False
AllAwk5 = False
Nwk1 = True
Nwk2 = False
Nwk3 = False
Nwk4 = True
Nwk5 = True
If 1 M in week 2 then All M in week2
IF Mwk2 THEN AllMwk2
[Soft constraint, weight=9].
If 1 M in week 3 then All M in week3
IF Mwk3 THEN AllMwk3
[Soft constraint, weight=9].
If 1 M in week 4 then All M in week4
IF Mwk4 THEN AllMwk4
[Soft constraint, weight=9].
If 1 M in week 5 then All M in week5
IF Mwk5 THEN AllMwk5
[Soft constraint, weight=9].
If 1 A in week 1 then All A in week1
IF Awk1 THEN AllAwk1
[Soft constraint, weight=9].
If 1 A in week 2 then All A in week2
IF Awk2 THEN AllAwk2
[Soft constraint, weight=9].
If 1 A in week 3 then All A in week3
IF Awk3 THEN AllAwk3
[Soft constraint, weight=9].
If 1 A in week 4 then All A in week4
IF Awk4 THEN AllAwk4
[Soft constraint, weight=9].
If 1 A in week 5 then All A in week5
IF Awk5 THEN AllAwk5
[Soft constraint, weight=9].
Shifts should rotate between weeks from M->A->N
IF Mwk1 THEN Awk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk1 THEN Nwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk1 THEN Mwk2
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk2 THEN Awk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk2 THEN Nwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk2 THEN Mwk3
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk3 THEN Awk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk3 THEN Nwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Nwk3 THEN Mwk4
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Mwk4 THEN Awk5
[Soft constraint, weight=4].
Shifts should rotate between weeks from M->A->N
IF Awk4 THEN Nwk5
[Soft constraint, weight=4].
xShifts should rotate between weeks from M->A->N
IF Nwk4 THEN Mwk5
[Soft constraint, weight=4].
 
Temp1
Contract: Temp
Requirement Violations Penalty Details
Patterns 0 6
SatisfiedPattern matchesPatternsMatched
Start day12
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On0
H and D shifts only
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=9, function=Linear].
AllM or
A or
N
 0
xAssign as few shifts to Temp staff as possible
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=2, function=Linear].
AllOn 3
 
Temp2
Contract: Temp
Requirement Violations Penalty Details
Patterns 0 4
SatisfiedPattern matchesPatternsMatched
Start day12
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On0
H and D shifts only
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=9, function=Linear].
AllM or
A or
N
 0
xAssign as few shifts to Temp staff as possible
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=2, function=Linear].
AllOn 2
 
Temp3
Contract: Temp
Requirement Violations Penalty Details
Patterns 0 6
SatisfiedPattern matchesPatternsMatched
Start day12
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On0
H and D shifts only
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=9, function=Linear].
AllM or
A or
N
 0
xAssign as few shifts to Temp staff as possible
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=2, function=Linear].
AllOn 3
 
Temp4
Contract: Temp
Requirement Violations Penalty Details
Patterns 0 14
SatisfiedPattern matchesPatternsMatched
Start day12
Day off after N, D or H
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=1000, function=Linear].
AllD or
H or
N
On0
H and D shifts only
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=9, function=Linear].
AllM or
A or
N
 0
xAssign as few shifts to Temp staff as possible
Max 0 matches between days 0-30 of pattern:
[Soft constraint, weight=2, function=Linear].
AllOn 7
 

Total employees' penalty (soft constraints)

Requirement Penalty
1. Patterns 108
2. Conditionals 28
Total 136