public TrustRegionBase_F64(ParameterUpdate<S> parameterUpdate, HM hessian ) { super(hessian); configure(new ConfigTrustRegion()); this.parameterUpdate = parameterUpdate; this.hessian = hessian; }
public ConfigTrustRegion copy() { ConfigTrustRegion out = new ConfigTrustRegion(); out.regionInitial = regionInitial; out.regionMaximum = regionMaximum; out.set(this); return out; }
/** * Dense trust-region unconstrained minimization using Dogleg steps and BFGS to estimate the Hessian. * @param config Trust region configuration * @return The new optimization routine */ public static UnconstrainedMinimization doglegBFGS( @Nullable ConfigTrustRegion config ) { if( config == null ) config = new ConfigTrustRegion(); HessianBFGS hessian = new HessianBFGS_DDRM(true); TrustRegionUpdateDogleg_F64<DMatrixRMaj> update = new TrustRegionUpdateDogleg_F64<>(); UnconMinTrustRegionBFGS_F64 alg = new UnconMinTrustRegionBFGS_F64(update,hessian); alg.configure(config); return alg; }
@Override protected UnconstrainedLeastSquares<DMatrixRMaj> createSearch(double minimumValue) { ConfigTrustRegion config = new ConfigTrustRegion(); config.hessianScaling = true; TrustRegionUpdateCauchy_F64<DMatrixRMaj> cauchy = new TrustRegionUpdateCauchy_F64<>(); UnconLeastSqTrustRegion_F64<DMatrixRMaj> tr = new UnconLeastSqTrustRegion_F64<>( cauchy, new HessianLeastSquares_DDRM(),new MatrixMath_DDRM()); tr.configure(config); return tr; }
@Override protected UnconstrainedLeastSquaresSchur<DMatrixSparseCSC> createSearch(double minimumValue) { ConfigTrustRegion config = new ConfigTrustRegion(); // config.regionInitial = 1; config.hessianScaling = true; TrustRegionUpdateDogleg_F64<DMatrixSparseCSC> dogleg = new TrustRegionUpdateDogleg_F64<>(); HessianSchurComplement_DSCC hessian = new HessianSchurComplement_DSCC(); UnconLeastSqTrustRegionSchur_F64<DMatrixSparseCSC> tr = new UnconLeastSqTrustRegionSchur_F64<>(dogleg,hessian); tr.configure(config); // tr.setVerbose(true); return tr; } }
@Override protected UnconstrainedMinimization createSearch() { ConfigTrustRegion config = new ConfigTrustRegion(); UnconMinTrustRegionBFGS_F64 tr = new UnconMinTrustRegionBFGS_F64( new TrustRegionUpdateCauchy_F64(), new HessianBFGS_DDRM(false)); tr.configure(config); return tr; }
@Override protected UnconstrainedLeastSquares<DMatrixRMaj> createSearch(double minimumValue) { ConfigTrustRegion config = new ConfigTrustRegion(); config.regionInitial = 100; config.hessianScaling = true; UnconLeastSqTrustRegion_F64<DMatrixRMaj> tr = createSolver(); tr.configure(config); return tr; } }
protected UnconMinTrustRegionBFGS_F64 createAlg() { TrustRegionUpdateDogleg_F64 dogleg = new TrustRegionUpdateDogleg_F64(); HessianBFGS_DDRM hessian = new HessianBFGS_DDRM(true); return new UnconMinTrustRegionBFGS_F64(dogleg,hessian); } }
protected void combinedStep(double regionRadius, DMatrixRMaj step) { // find the Cauchy point CommonOps_DDRM.scale(-distanceCauchy, direction, stepCauchy); stepLength = regionRadius; // touches the trust region double distancePtoGN = SpecializedOps_DDRM.diffNormF(stepCauchy,stepGN); double f = fractionCauchyToGN(distanceCauchy,distanceGN,distancePtoGN,regionRadius); CommonOps_DDRM.add(1-f,stepCauchy,f,stepGN,step); predictedReduction = owner.computePredictedReduction(step); }
@Test public void initialize() { MockTrustRegionBase_F64 alg = createFixedCost(1,0.5); double x[] = new double[]{1,2}; alg.initialize(x,2,0); assertEquals(1,alg.fx, UtilEjml.TEST_F64); assertEquals(alg.regionRadius,alg.config.regionInitial, UtilEjml.TEST_F64); }
@Override public UnconstrainedLeastSquares<DMatrixRMaj> createAlgorithm() { return createAlg(); } }
@Override public UnconstrainedMinimization createAlgorithm() { return createAlg(); }
private MockTrustRegionBase_F64 createFixedCost( double cost , double predictedReduction ) { MockParameterUpdate update = new MockParameterUpdate() { @Override public double getPredictedReduction() { return predictedReduction; } }; return new MockTrustRegionBase_F64(update) { @Override protected double cost(DMatrixRMaj x) { return cost; } }; }
/** * Dense trust-region unconstrained minimization using Dogleg steps and BFGS to estimate the Hessian. * @param config Trust region configuration * @return The new optimization routine */ public static UnconstrainedMinimization doglegBFGS( @Nullable ConfigTrustRegion config ) { if( config == null ) config = new ConfigTrustRegion(); HessianBFGS hessian = new HessianBFGS_DDRM(true); TrustRegionUpdateDogleg_F64<DMatrixRMaj> update = new TrustRegionUpdateDogleg_F64<>(); UnconMinTrustRegionBFGS_F64 alg = new UnconMinTrustRegionBFGS_F64(update,hessian); alg.configure(config); return alg; }
@Override protected UnconstrainedLeastSquares<DMatrixRMaj> createSearch(double minimumValue) { ConfigTrustRegion config = new ConfigTrustRegion(); TrustRegionUpdateCauchy_F64<DMatrixRMaj> cauchy = new TrustRegionUpdateCauchy_F64<>(); UnconLeastSqTrustRegion_F64<DMatrixRMaj> tr = new UnconLeastSqTrustRegion_F64<>( cauchy, new HessianLeastSquares_DDRM(),new MatrixMath_DDRM()); tr.configure(config); return tr; } }
@Override protected UnconstrainedLeastSquares<DMatrixRMaj> createSearch(double minimumValue) { ConfigTrustRegion config = new ConfigTrustRegion(); config.regionInitial = -1; UnconLeastSqTrustRegion_F64<DMatrixRMaj> tr = createSolver(); tr.configure(config); return tr; } }
public TrustRegionBase_F64(ParameterUpdate<S> parameterUpdate, HM hessian ) { super(hessian); configure(new ConfigTrustRegion()); this.parameterUpdate = parameterUpdate; this.hessian = hessian; }
public ConfigTrustRegion copy() { ConfigTrustRegion out = new ConfigTrustRegion(); out.regionInitial = regionInitial; out.regionMaximum = regionMaximum; out.set(this); return out; }
@Override protected UnconstrainedMinimization createSearch() { ConfigTrustRegion config = new ConfigTrustRegion(); config.regionInitial = 100; TrustRegionUpdateDogleg_F64 dogleg = new TrustRegionUpdateDogleg_F64(); HessianBFGS_DDRM hessian = new HessianBFGS_DDRM(true); UnconMinTrustRegionBFGS_F64 tr = new UnconMinTrustRegionBFGS_F64(dogleg,hessian); tr.configure(config); return tr; } }
@Override protected UnconstrainedLeastSquares<DMatrixSparseCSC> createSearch(double minimumValue) { ConfigTrustRegion config = new ConfigTrustRegion(); TrustRegionUpdateCauchy_F64<DMatrixSparseCSC> cauchy = new TrustRegionUpdateCauchy_F64<>(); UnconLeastSqTrustRegion_F64<DMatrixSparseCSC> tr = new UnconLeastSqTrustRegion_F64<>( cauchy, new HessianLeastSquares_DSCC(),new MatrixMath_DSCC()); tr.configure(config); return tr; } }