demo/demoEvalMeanX.R

## This demo just displays the complete code of rCMA::cmaEvalMeanX
##
## 
cmaEvalMeanX <- function(cma,fitFunc,isFeasible) {
    meanX = rJava::.jcall(cma,"[D","getMeanX");
    rType = "Lfr/inria/optimization/cmaes/CMASolution;";
    if (isFeasible(meanX)) {
      bestSolutionObj = rJava::.jcall(cma,rType,"setFitnessOfMeanX",fitFunc(meanX));
      # setFitnessOfMeanX may update the best-ever solution
    }  else {
      bestSolutionObj = rJava::.jcall(cma,rType,"getBestSolution");
    }
    bestSolution = list(bestX = rJava::.jcall(bestSolutionObj,"[D","getX")
                      , meanX = meanX
                      , bestFitness = rJava::.jcall(bestSolutionObj,"D","getFitness")
                      , bestEvalNum = rJava::.jcall(bestSolutionObj,"J","getEvaluationNumber")
                      , lastEvalNum = rJava::.jcall(cma,"J","getCountEval")
                      );
    if (bestSolution$bestEvalNum == bestSolution$lastEvalNum & isFeasible(meanX))
      bestSolution$bestX = bestSolution$meanX;

    return(bestSolution);
}

## just to show the syntax, without calling cmaOptimDP
fitFunc <- function(x) {  sum(x*x); }
isFeasible <- function(x) {  TRUE;  }
cma <- cmaNew();
cmaInit(cma,dimension=2,initialX=1.5);
bestSolution=cmaEvalMeanX(cma,fitFunc,isFeasible);
str(bestSolution);

Try the rCMA package in your browser

Any scripts or data that you put into this service are public.

rCMA documentation built on June 24, 2022, 5:06 p.m.