public double createProbabilityWeight(
     MachineReassignment machineReassignment, MrProcessAssignment processAssignment) {
   MrMachine machine = processAssignment.getMachine();
   // TODO reuse usage calculated by of the ScoreCalculator which is a delta
   long[] usage = new long[machineReassignment.getResourceList().size()];
   for (MrProcessAssignment someProcessAssignment :
       machineReassignment.getProcessAssignmentList()) {
     if (someProcessAssignment.getMachine() == machine) {
       MrProcess process = someProcessAssignment.getProcess();
       for (MrResource resource : machineReassignment.getResourceList()) {
         usage[resource.getIndex()] += process.getUsage(resource);
       }
     }
   }
   double sum = 0.0;
   for (MrResource resource : machineReassignment.getResourceList()) {
     double available =
         (double)
             (machine.getMachineCapacity(resource).getSafetyCapacity()
                 - usage[resource.getIndex()]);
     sum += (available * available);
   }
   return sum + 1.0;
 }