Java源码示例:org.apache.commons.math3.random.SobolSequenceGenerator

示例1
/**
 * Constructor for Delsa
 * @param f : costfunction to be minimized
 * @param minRangePar : minimum of range to scan for each parameter
 * @param maxRangePar : maximum of range
 * @param nPoints: number of grid points for each parameter or number of sample
 */
public DelsaCoreOptimizer(ICostFunction f, IVector minRangePar, IVector maxRangePar, int nPoints, boolean isSobol, IVector pInit){
	this.f = f;
	if (isSobol){
		// add grid settings
		this.nparam=minRangePar.getSize();
		this.minRangePar = minRangePar.getValues();
		this.maxRangePar = maxRangePar.getValues();
		this.pCurrent = minRangePar;
		this.fCurrent = Double.POSITIVE_INFINITY;
		this.SL1 = new IVector[nPoints];
		this.isSobol = isSobol;
		sobolSequence = new SobolSequenceGenerator(this.nparam);

		// compute variances of the parameters (see Appendix B of Rakovec et al, 2014)
		this.paramVariance = new Vector(nparam);
		for (int iParam=0; iParam<this.nparam; iParam++){
			double thisVariance = (this.maxRangePar[iParam]-this.minRangePar[iParam])*(this.maxRangePar[iParam]-this.minRangePar[iParam])/12.0d;
			this.paramVariance.setValue(iParam,thisVariance);
		}

	} else {
		int nPointsPerParameter = nPoints;
		this.setGrid(minRangePar, maxRangePar, nPointsPerParameter);
	}
	this.pInit = pInit;
}
 
示例2
public static List<Vector2D> makeRandom(int samples) {
    SobolSequenceGenerator generator = new SobolSequenceGenerator(2);
    generator.skipTo(999999);
    List<Vector2D> points = new ArrayList<Vector2D>();
    for (double i = 0; i < samples; i++) {
        double[] vector = generator.nextVector();
        vector[0] = vector[0] * 2 - 1;
        vector[1] = vector[1] * 2 - 1;
        Vector2D point = new Vector2D(vector);
        points.add(point);
    }
    
    return points;
}
 
示例3
public static List<Vector2D> makeRandom(int samples) {
    SobolSequenceGenerator generator = new SobolSequenceGenerator(2);
    generator.skipTo(999999);
    List<Vector2D> points = new ArrayList<Vector2D>();
    for (double i = 0; i < samples; i++) {
        double[] vector = generator.nextVector();
        vector[0] = vector[0] * 2 - 1;
        vector[1] = vector[1] * 2 - 1;
        Vector2D point = new Vector2D(vector);
        points.add(point);
    }
    
    return points;
}
 
示例4
public static List<Vector2D> makeRandom(int samples) {
    SobolSequenceGenerator generator = new SobolSequenceGenerator(2);
    generator.skipTo(999999);
    List<Vector2D> points = new ArrayList<Vector2D>();
    for (double i = 0; i < samples; i++) {
        double[] vector = generator.nextVector();
        vector[0] = vector[0] * 2 - 1;
        vector[1] = vector[1] * 2 - 1;
        Vector2D point = new Vector2D(vector);
        points.add(point);
    }
    
    return points;
}
 
示例5
public static List<Vector2D> makeRandom(int samples) {
    SobolSequenceGenerator generator = new SobolSequenceGenerator(2);
    generator.skipTo(999999);
    List<Vector2D> points = new ArrayList<Vector2D>();
    for (double i = 0; i < samples; i++) {
        double[] vector = generator.nextVector();
        vector[0] = vector[0] * 2 - 1;
        vector[1] = vector[1] * 2 - 1;
        Vector2D point = new Vector2D(vector);
        points.add(point);
    }
    
    return points;
}
 
示例6
/**
 * Constructs a Sobol sequence with given dimension.
 *
 * @param dimension The dimension of the sequence.
 */
public SobolSequence(final int dimension) {
	this.dimension = dimension;
	generator = new SobolSequenceGenerator(dimension);
}
 
示例7
/**
 * Constructs a Sobol sequence with given dimension.
 *
 * @param dimension The dimension of the sequence.
 */
public SobolSequence(final int dimension) {
	this.dimension = dimension;
	generator = new SobolSequenceGenerator(dimension);
}