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);
}