/** * Adds a new double parameter to be altered for the model being tuned. * * @param param the model parameter * @param initialSearchValues the values to try for the specified parameter */ public void addParameter(DoubleParameter param, double... initialSearchValues) { if (param == null) throw new IllegalArgumentException("null not allowed for parameter"); searchParams.add(param); DoubleList dl = new DoubleList(initialSearchValues.length); for (double d : initialSearchValues) dl.add(d); Arrays.sort(dl.getBackingArray()); // convience, only really needed if param is warm if (param.isWarmParameter() && !param.preferredLowToHigh()) Collections.reverse(dl); // put it in the prefered order if (param.isWarmParameter()) // put it at the front! searchValues.add(0, dl); else searchValues.add(dl); }
/** * Sets the parameters according to the given array * * @param setTo the index corresponds to the parameters, and the value which parameter value to * use. */ private void setParameters(int[] setTo) { for (int i = 0; i < setTo.length; i++) { Parameter param = searchParams.get(i); if (param instanceof DoubleParameter) ((DoubleParameter) param).setValue(searchValues.get(i).get(setTo[i])); else if (param instanceof IntParameter) ((IntParameter) param).setValue(searchValues.get(i).get(setTo[i]).intValue()); } }