docs: private void evaluateConstraints(DoubleSolution solution)  {
      double[] constraint = new double[this.getNumberOfConstraints()];
  
      double x1,x2,x3,x4,x5,x6;
      x1 = solution.getVariableValue(0);
      x2 = solution.getVariableValue(1);
      x3 = solution.getVariableValue(2);
      x4 = solution.getVariableValue(3);
      x5 = solution.getVariableValue(4);
      x6 = solution.getVariableValue(5);
  
      constraint[0] = (x1 + x2)/2.0 - 1.0;
      constraint[1] = (6.0 - x1 - x2)/6.0;
      constraint[2] = (2.0 - x2 + x1)/2.0;
      constraint[3] = (2.0 - x1 + 3.0*x2)/2.0;
      constraint[4] = (4.0 - (x3-3.0)*(x3-3.0) - x4)/4.0;
      constraint[5] = ((x5-3.0)*(x5-3.0) +x6 - 4.0)/4.0;
  
      double overallConstraintViolation = 0.0;
      int violatedConstraints = 0;
      for (int i = 0; i < getNumberOfConstraints(); i++) {
        if (constraint[i]<0.0){
          overallConstraintViolation+=constraint[i];
          violatedConstraints++;
        }
      }
  
      overallConstraintViolationDegree.setAttribute(solution, overallConstraintViolation);
      numberOfViolatedConstraints.setAttribute(solution, violatedConstraints);
    }