/** * Specifies initial state of the search and completion criteria * * @param initial Initial parameter state * @param numberOfParameters Number many parameters are being optimized. * @param minimumFunctionValue The minimum possible value that the function can output */ public void initialize(double initial[] , int numberOfParameters , double minimumFunctionValue ) { super.initialize(initial,numberOfParameters); tmp_p.reshape(numberOfParameters,1); regionRadius = config.regionInitial; fx = cost(x); if( verbose != null ) { verbose.println("Steps fx change |step| f-test g-test tr-ratio region "); verbose.printf("%-4d %9.3E %10.3E %9.3E %9.3E %9.3E %6.2f %6.2E\n", totalSelectSteps, fx, 0.0,0.0,0.0,0.0, 0.0, regionRadius); } this.parameterUpdate.initialize(this,numberOfParameters, minimumFunctionValue); // a perfect initial guess is a pathological case. easiest to handle it here if( fx <= minimumFunctionValue ) { if( verbose != null ) { verbose.println("Converged minimum value"); } mode = TrustRegionBase_F64.Mode.CONVERGED; } else { mode = TrustRegionBase_F64.Mode.COMPUTE_DERIVATIVES; } }
/** * Specifies initial state of the search and completion criteria * * @param initial Initial parameter state * @param numberOfParameters Number many parameters are being optimized. * @param minimumFunctionValue The minimum possible value that the function can output */ public void initialize(double initial[] , int numberOfParameters , double minimumFunctionValue ) { super.initialize(initial,numberOfParameters); tmp_p.reshape(numberOfParameters,1); regionRadius = config.regionInitial; fx = cost(x); if( verbose != null ) { verbose.println("Steps fx change |step| f-test g-test tr-ratio region "); verbose.printf("%-4d %9.3E %10.3E %9.3E %9.3E %9.3E %6.2f %6.2E\n", totalSelectSteps, fx, 0.0,0.0,0.0,0.0, 0.0, regionRadius); } this.parameterUpdate.initialize(this,numberOfParameters, minimumFunctionValue); // a perfect initial guess is a pathological case. easiest to handle it here if( fx <= minimumFunctionValue ) { if( verbose != null ) { verbose.println("Converged minimum value"); } mode = TrustRegionBase_F64.Mode.CONVERGED; } else { mode = TrustRegionBase_F64.Mode.COMPUTE_DERIVATIVES; } }