示例#1
0
  /** EvaluateConstraints() method */
  @Override
  public 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);
  }
示例#2
0
文件: GLT3.java 项目: jMetal/jMetal
  private double g(DoubleSolution solution) {
    double result = 0.0;

    for (int i = 1; i < solution.getNumberOfVariables(); i++) {
      double value =
          solution.getVariableValue(i)
              - Math.sin(
                  2 * Math.PI * solution.getVariableValue(0)
                      + i * Math.PI / solution.getNumberOfVariables());

      result += value * value;
    }

    return result;
  }
示例#3
0
文件: GLT3.java 项目: jMetal/jMetal
 @Override
 public void evaluate(DoubleSolution solution) {
   solution.setObjective(0, (1.0 + g(solution)) * solution.getVariableValue(0));
   if (solution.getObjective(0) < 0.05) {
     solution.setObjective(1, (1.0 + g(solution)) * (1.0 - 19.0 * solution.getVariableValue(0)));
   } else {
     solution.setObjective(
         1, (1.0 + g(solution)) * (1.0 / 19.0 - solution.getVariableValue(0) / 19.0));
   }
 }
示例#4
0
  /** Evaluate() method */
  @Override
  public void evaluate(DoubleSolution solution) {
    double[] fx = new double[getNumberOfObjectives()];

    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);

    fx[0] =
        -(25.0 * (x1 - 2.0) * (x1 - 2.0)
            + (x2 - 2.0) * (x2 - 2.0)
            + (x3 - 1.0) * (x3 - 1.0)
            + (x4 - 4.0) * (x4 - 4.0)
            + (x5 - 1.0) * (x5 - 1.0));

    fx[1] = x1 * x1 + x2 * x2 + x3 * x3 + x4 * x4 + x5 * x5 + x6 * x6;

    solution.setObjective(0, fx[0]);
    solution.setObjective(1, fx[1]);
  }