/** * 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; }