package objfuncs; //============================================================================== // Rosenbrock, DeJong F2; [unimodal - Yes], Now generalized. 1-2-97 // this function has a parabolic valley along the curve y = x^2 // x*=(1, 1), F(x*) = 0; //============================================================================== public class Rosenbrock extends Objfunc { public Rosenbrock(int d) // if you omit public, you cannot access outside package { numVar = d; low = -6.0; high = 6.0; minimum = 0.0; fname = "Rosenbrock"; } /* Not generalized public double eval(double x[]) { // domain [-6, 6) for Rosenbrock function double score = (x[0]*x[0] - x[1]); score *= score; return 100.0*score + (1.0 - x[0])*(1.0 - x[0]); } */ public double eval(double[] X) { double score=0.0; double tmp; for(int i=0; i < numVar-1; i++) { tmp = (X[i]*X[i] - X[i+1]); tmp *= tmp; score += 100.0*tmp + (1.0 - X[i])*(1.0 - X[i]); } return score; } }