anchor.diff:  == 6. Be fair (load balancing)
   
   When distributing work across humans (or machines), don't use averages.
  -Instead, the worst off human (or machine) counts the most.
  +Instead, *the worst off human (or machine) counts the most.*
   
   For example in employee rostering we want to distribute the shifts evenly,
   but we can't make it perfectly fair due to skill and other hard constraints.
  
positive.code: 
  There are 7 common ways to fail your optimization project:
  
  * Ignore the user's plan
  
  * Neglect a hard constraint
  
  * Decide all score weights up front
  
  * Change tentative plans drastically
  
  * Presume there is always a feasible plan
  
  * Average out fairness or load balancing
  
  * Focus on only 1 stakeholder
  
  Let's take a look at each one in detail and how to do it right:
  
  
  == 1. Keep the user in control
  
negative.code: image::nonvolatileReplanningSubset.png[]
  
  The middle solution is slightly more cost effective, but the last solution is far less disruptive.
  *Especially when scheduling people, who planned their social life based on the tentative schedule,
  it's important to minimize disruption.*
  
  Technically, we penalize the number of processes that moved,
  by keeping track of the old tentative computer assignment for each process too.
  
  Another way to make this easier is to also do backup planning.
  For example in employee rostering, we assign 3 reserve shifts as backups to 3 employees:
  if another employee calls in sick, one of the reserve employees takes over automatically,
  without replanning. Only when more than 3 employees call in sick, we actually need to do (non disruptive) replanning.
  