double tile_delta = (new_tile_error - tile_error) / tile_error;
double goal_delta = (new_goal_error - goal_error) / goal_error;
double delta = tile_delta + goal_delta;
double tile_delta = (new_tile_error - tile_error) / tile_error;
double goal_delta = (new_goal_error - goal_error) / goal_error;
double delta = tile_delta + goal_delta;
boolean doSwap = good && (Math.random() < swapProbability);
//boolean doSwap = good && (tile_delta <= 0 && goal_delta <= 0);
//boolean doSwap = good && (tile_delta + goal_delta <= 0);
boolean doSwap = good && (Math.random() < swapProbability);
//boolean doSwap = good && (tile_delta <= 0 && goal_delta <= 0);
//boolean doSwap = good && (tile_delta + goal_delta <= 0);