Currently the input is defined as follows:
public final Input<Double> scaleFactorInput = new Input<>("scaleFactor",
"scaling factor: range from 0 to 1. Close to zero is very large jumps, " +
"close to 1.0 is very small jumps.", 0.75);
However the default use of this value in KernelDistribution is:
@Override
public double getScaler(int dim, double oldValue, double scaleFactor) {
double scale = 0;
scale = scaleFactor * getRandomNumber();
scale = Math.exp(scale);
return scale;
}
So close to zero produces small jumps and there's nothing at all special about 1.0. (From the following AbstractScale input it looks to be the default upper bound:
final public Input<Double> scaleUpperLimit = new Input<>("upper",
"Upper Limit of scale factor", 1.0 - 1e-8);
but apparently this isn't the case either, since there's this mysterious code in AbstractScale::initAndValidate:
//TODO why?
if (scaleUpperLimit.get() == 1 - 1e-8) {
scaleUpperLimit.setValue(10.0, this);
}
so it seems the default upper bound is effectively 10.0?)
Given how much these "scale" operators have changed over the last couple of years, I'm not confident enough to propose a fix for this directly - but it'd be wonderful if somebody who knows the ins and outs of how the new kernel-based system could look at this. Thanks!
Currently the input is defined as follows:
However the default use of this value in KernelDistribution is:
So close to zero produces small jumps and there's nothing at all special about 1.0. (From the following AbstractScale input it looks to be the default upper bound:
but apparently this isn't the case either, since there's this mysterious code in AbstractScale::initAndValidate:
so it seems the default upper bound is effectively 10.0?)
Given how much these "scale" operators have changed over the last couple of years, I'm not confident enough to propose a fix for this directly - but it'd be wonderful if somebody who knows the ins and outs of how the new kernel-based system could look at this. Thanks!