code: 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;
  		}
  	}
docs: 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