package beast.evolution.operators;
import beast.core.Description;
import beast.core.Input;
import beast.core.Input.Validate;
import beast.core.Operator;
import beast.core.parameter.IntegerParameter;
import beast.core.util.Log;
import beast.util.Randomizer;
@Description("A uniform random operator that selects a random dimension of the integer parameter and picks a new random value within the bounds.")
@Deprecated
public class IntUniformOperator extends Operator {
final public Input<IntegerParameter> parameterInput = new Input<>("parameter", "the parameter to operate a random walk on.", Validate.REQUIRED);
@Override
public void initAndValidate() {
Log.warning.println("\n\nIntUniformOperator is depracated. Use UniformOperator instead.\n\n");
}
/**
* override this for proposals,
* returns log of hastingRatio, or Double.NEGATIVE_INFINITY if proposal should not be accepted *
*/
@Override
public double proposal() {
IntegerParameter param = parameterInput.get(this);
int i = Randomizer.nextInt(param.getDimension());
int newValue = Randomizer.nextInt(param.getUpper() - param.getLower() + 1) + param.getLower();
param.setValue(i, newValue);
return 0.0;
}
@Override
public void optimize(double logAlpha) {
// nothing to optimise
}
} // class IntUniformOperator