Exemple #1
0
  public void doOptimize() {
    nlopt = NloptLibrary.nloptCreate(NloptAlgorithm.NLOPT_LD_MMA, start.length);

    IntValuedEnum<NloptResult> nloptResult =
        nloptSetMinObjective(nlopt, Pointer.pointerTo(object), Pointer.NULL);
    if (!nloptResult.equals(NloptResult.NLOPT_SUCCESS)) {
      throw new IllegalStateException(nloptResult.toString());
    }

    nloptResult =
        NloptLibrary.nloptAddInequalityMconstraint(
            nlopt,
            inequalConstraints.getConstraintsSize(),
            Pointer.pointerTo(inequalConstraints),
            Pointer.NULL,
            Pointer.pointerToDoubles(inequalTolerents));
    if (!nloptResult.equals(NloptResult.NLOPT_SUCCESS)) {
      throw new IllegalStateException(nloptResult.toString());
    }

    nloptSetXtolRel(nlopt, objectRelativeTolerent);
    NloptLibrary.nloptSetXtolAbs1(nlopt, objectAbsoluteTolerence);

    Pointer<Double> functionResultPoint = Pointer.pointerToDouble(0);
    Pointer<Double> parameterPoint = Pointer.pointerToDoubles(start);

    if (null != initOptimizationTrigger) {
      Map<String, Object> initData = new HashMap<String, Object>();
      initData.put("start", start);
      initOptimizationTrigger.accept(initData);
    } else {
      logger.warn("initOptimizationBus is null");
    }
    resultStatus = NloptLibrary.nloptOptimize(nlopt, parameterPoint, functionResultPoint).value();

    resultParameters = parameterPoint.getDoubles();
    resultValue = functionResultPoint.getDouble();

    NloptLibrary.nloptDestroy(nlopt);
  }