예제 #1
0
 /**
  * Determines whether a restart with a smaller simplex should be tried or not
  *
  * @return <CODE>true</CODE> if restart can be tried, <CODE>false</CODE> otherwise
  */
 protected boolean restartCriterion() {
   double f, S1, S2;
   double[] fX = new double[dimXP1];
   for (int i = 0; i < dimXP1; i++) fX[i] = x[i].getF(0);
   S1 = LinAlg.twoNorm(fX);
   S1 *= S1;
   S2 = LinAlg.oneNorm(fX);
   S2 *= S2;
   S2 /= (double) (dimXP1);
   f = (S1 - S2) / (double) dimX;
   if (f < (sqEps)) return true;
   else return false;
 }