Matrix<double> RastriginFunction::calculate_inverse_Hessian(void) { Matrix<double> inverse_Hessian(variables_number, variables_number); const double pi = 3.1415927; Vector<double> argument = multilayer_perceptron_pointer->get_independent_parameters(); for(int i = 0; i < variables_number; i++) { for(int j = 0; j < variables_number; j++) { if(i == j) { inverse_Hessian[i][j] = 1.0/(2.0 + 10.0*cos(2.0*pi*argument[i])*4.0*pow(pi,2)); } else { inverse_Hessian[i][j] = 0.0; } } } return(inverse_Hessian); }
Matrix<double> RastriginFunction::calculate_inverse_Hessian(void) const { const double pi = 3.1415927; const unsigned int variables_number = neural_network_pointer->count_parameters_number(); const Vector<double> argument = neural_network_pointer->arrange_parameters(); Matrix<double> inverse_Hessian(variables_number, variables_number, 0.0); for(unsigned int i = 0; i < variables_number; i++) { inverse_Hessian[i][i] = 1.0/(2.0 + 10.0*cos(2.0*pi*argument[i])*4.0*pow(pi,2)); } return(inverse_Hessian); }
Matrix<double> DeJongFunction::calculate_inverse_Hessian(void) { Matrix<double> inverse_Hessian(variables_number, variables_number); for(int i = 0; i < variables_number; i++) { for(int j = 0; j < variables_number; j++) { if(i == j) { inverse_Hessian[i][j] = 0.5; } else { inverse_Hessian[i][j] = 0.0; } } } return(inverse_Hessian); }