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

   

 

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