当前位置: 首页>>代码示例>>Java>>正文


Java BOBYQAOptimizer类代码示例

本文整理汇总了Java中org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer的典型用法代码示例。如果您正苦于以下问题:Java BOBYQAOptimizer类的具体用法?Java BOBYQAOptimizer怎么用?Java BOBYQAOptimizer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


BOBYQAOptimizer类属于org.apache.commons.math3.optim.nonlinear.scalar.noderiv包,在下文中一共展示了BOBYQAOptimizer类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: applyToNetwork

import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer; //导入依赖的package包/类
@Override
public double applyToNetwork(final MixedClearingNetwork network) {
   Preconditions.checkNotNull(network);
   final int dimension = network.getNumberOfEdges();
   
   final ResidualCostFunction aggregateCostFunction =
      super.getResidualScalarCostFunction(network);
   final RealVector
      start = new ArrayRealVector(network.getNumberOfEdges());
   start.set(1.0);                                       // Initial rate guess.
   
   final BOBYQAOptimizer optimizer = new BOBYQAOptimizer(2*dimension + 1, 1.2, 1.e-8);
   final PointValuePair result = optimizer.optimize(
      new MaxEval(maximumEvaluations),
      new ObjectiveFunction(aggregateCostFunction),
      GoalType.MINIMIZE,
      new SimpleBounds(new double[dimension], ArrayUtil.ones(dimension)),
      new InitialGuess(start.toArray())
      );
   
   final double residualCost = result.getValue();
   System.out.println("Network cleared: residual cost: " + residualCost + ".");
   
   return residualCost;
}
 
开发者ID:crisis-economics,项目名称:CRISIS,代码行数:26,代码来源:BoundedQuadraticEstimationClearingAlgorithm.java

示例2: findOptimum

import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer; //导入依赖的package包/类
@Override
public TreeMap<Double, TariffSpecification> findOptimum(TariffUtilityEstimate tariffUtilityEstimate,
    int NUM_RATES, int numEval) {

  double[] startingVertex = new double[NUM_RATES]; // start from the fixed-rate tariff's offset
  Arrays.fill(startingVertex, 0.0);
  //Arrays.fill(startingVertex, 0.5 * INITIAL_TRUST_REGION_RADIUS);
  //Arrays.fill(startingVertex, 1 * INITIAL_TRUST_REGION_RADIUS);

  final int numIterpolationPoints = 2 * NUM_RATES + 1; // BOBYQA recommends 2n+1 points
  BOBYQAOptimizer optimizer = new BOBYQAOptimizer(numIterpolationPoints , INITIAL_TRUST_REGION_RADIUS, STOPPING_TRUST_REGION_RADIUS);

  // needed since one optimization found positive 
  // charges (paying customer to consume...)
  double[][] boundaries = createBoundaries(NUM_RATES);
 
  final PointValuePair optimum
      = optimizer.optimize(
          new MaxEval(numEval),
          new ObjectiveFunction(new OptimizerWrapperApacheObjective(tariffUtilityEstimate)),
          GoalType.MAXIMIZE,
          new InitialGuess(startingVertex),
          //new SimpleBounds(boundaries[0], boundaries[1]));
          SimpleBounds.unbounded(NUM_RATES));
          
  
  TreeMap<Double, TariffSpecification> eval2TOUTariff = new TreeMap<Double, TariffSpecification>();
  eval2TOUTariff.put(optimum.getValue(), tariffUtilityEstimate.getCorrespondingSpec(optimum.getKey()));
  return eval2TOUTariff;
}
 
开发者ID:LARG,项目名称:TacTex,代码行数:31,代码来源:OptimizerWrapperApacheBOBYQA.java

示例3: run

import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer; //导入依赖的package包/类
@Override
public void run() throws Exception {
	// Let's find optimum for beta0, beta1, beta2
	NelderMeadSimplex optMethod = new NelderMeadSimplex(3);
	
	/*
	SimplexOptimizer optimizer = new SimplexOptimizer(1e-5, 1e-10);
	final PointValuePair optimum =
			optimizer.optimize(
				new MaxEval(150), 
                new ObjectiveFunction(this), 
                GoalType.MAXIMIZE, 
                new InitialGuess(new double[]{ Math.log(.6), Math.log(.2), Math.log(0.05) }), 
                optMethod);
	 */
     // new NelderMeadSimplex(new double[]{ 0.2, 0.2 }));
	
	/*
	SimplexOptimizer optimizer = new SimplexOptimizer(1e-5, 1e-10);
	final PointValuePair optimum =
			optimizer.optimize(
				new MaxEval(200), 
                new ObjectiveFunction(this), 
                GoalType.MAXIMIZE, 
                new InitialGuess(new double[]{ .6, .2, 0.05 }), 
                optMethod);
	*/
	
	
	//PowellOptimizer optimizer = new PowellOptimizer(1e-8, 1e-5, 1e-4, 1e-4);
	BOBYQAOptimizer optimizer = new BOBYQAOptimizer(2*3+1+2); // 2*point.length + 1+additional
	final PointValuePair optimum =
			optimizer.optimize(
				new MaxEval(150), 
                new ObjectiveFunction(this), 
                GoalType.MAXIMIZE, 
                new InitialGuess(new double[]{ 1.0, 1.0, 1.0 }),
                new SimpleBounds(new double[] { 0.0 , 0.0 , 0.0 },
                          new double[] { 3.5 , 3.5, 3.5 }));

	
	double[] point = optimum.getPoint();
	System.out.print("point= ");
	for(int i=0; i< point.length; i++) System.out.print("  "+ point[i]);
	System.out.println(" ");
	System.out.println("value = "+ optimum.getValue());
	
}
 
开发者ID:mrc-ide,项目名称:PhyDyn,代码行数:49,代码来源:PopModelParameterEstimation.java

示例4: bobyqa

import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer; //导入依赖的package包/类
private PointValuePair bobyqa(final double[] initialValues) {
	return optimize(new BOBYQAOptimizer(2 * initialValues.length), initialValues);
}
 
开发者ID:ProfilingIO,项目名称:insight-ml,代码行数:4,代码来源:AbstractOptimizable.java

示例5: estimateAlphaBeta

import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer; //导入依赖的package包/类
/**
     * Estimate alpha, beta given c, t
     *
     * @param c Counts
     * @param t Branch lengths
     * @return Point, containing (alpha, beta), and associated log-likelihood
     */
    @VisibleForTesting
    static PointValuePair estimateAlphaBeta(final double[] c, final double[] t) {
        // Optimize. point[0] = alpha, point[1] = beta
        final int dim = 2;
        BOBYQAOptimizer optimizer = new BOBYQAOptimizer(2 * dim + ADDL_INTERPOLATION_PTS);

        final MultivariateFunction fn = new MultivariateFunction() {
            @Override
            public double value(double[] point) {
                Preconditions.checkArgument(point.length == 2,
                        "Invalid data size: %s", point.length);
                return logLikelihood(point[0], point[1], c, t);
            }
        };

        // Start with method-of-moments
        final double mean = StatUtils.mean(c),
                var = StatUtils.variance(c);

        double mom_alpha, mom_beta;
        if (var > mean) {
            mom_alpha = (mean * mean) / (var - mean);
            mom_beta = mean / (var - mean);
        } else {
            mom_alpha = 1;
            mom_beta = 1;
        }

        // Bounds - both must be positive
        final double lowerBounds[] = new double[]{1e-7, 1e-7};
        final double upperBounds[] = new double[]{Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY};
        final double initial[] = new double[]{mom_alpha, mom_beta};
        try {
            PointValuePair result = optimizer.optimize(
                    new MaxEval(2000),
                    new InitialGuess(initial),
                    GoalType.MAXIMIZE,
                    new ObjectiveFunction(fn),
                    new SimpleBounds(lowerBounds, upperBounds));
            logger.log(Level.FINE, "BOBYQA finished in {0} iterations", optimizer.getIterations());
            return result;
        } catch (Exception e) {
//            logger.log(Level.SEVERE,
//                    "Optimization failed [mom_alpha: {0}, mom_beta: {1}]\nc={2}\nt={3}",
//                    new Object[]{mom_alpha, mom_beta,
//                            java.util.Arrays.toString(c),
//                            java.util.Arrays.toString(t)});
            throw e;
        }
    }
 
开发者ID:cmccoy,项目名称:startreerenaissance,代码行数:58,代码来源:TLambdaPoissonSmoother.java

示例6: solve

import org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer; //导入依赖的package包/类
@Override
public synchronized void solve(Objenome o, List<SetNumericValue> variables) {
    
    this.variables = variables;
    this.objenome = o;
    
    if (numStarts==-1)
        numStarts = variables.size() * 2;
    
    double[] lower = new double[variables.size()];
    double[] upper = new double[variables.size()];
    double[] mid = new double[variables.size()];
    int j = 0;
    for (SetNumericValue n : variables) {
        lower[j] = n.getMin().doubleValue();
        upper[j] = n.getMax().doubleValue();
        mid[j] = (lower[j] + upper[j]) * 0.5f;
        j++;
    }
    
    //TODO add MultiStart
    
    MultivariateOptimizer optimize = 
            new BOBYQAOptimizer(variables.size()*2);
            //new PowellOptimizer(0.01, 0.05);
    
    RandomGenerator rng = getRandomGenerator();
    
    MultiStartMultivariateOptimizer multiOptimize = new MultiStartMultivariateOptimizer(optimize, numStarts, new UncorrelatedRandomVectorGenerator(variables.size(), new UniformRandomGenerator(rng)));
    
    PointValuePair result = multiOptimize.optimize(
            new MaxEval(evaluations),
            new SimpleBounds(lower, upper),
            goal,
            new InitialGuess(mid),
            new ObjectiveFunction(this)
            );        
    
    apply(result.getPointRef());
            
    this.bestValue = result.getValue();
}
 
开发者ID:automenta,项目名称:objenome_prototype,代码行数:43,代码来源:OptimizeMultivariate.java


注:本文中的org.apache.commons.math3.optim.nonlinear.scalar.noderiv.BOBYQAOptimizer类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。