public void newParamSet() {
        for (OptParam op : opt_params) {
            Param p = op.getParam();
            double new_mean = random.nextDouble() * op.getRange() + p.getLower();
            op.setMean(new_mean);

            // Calculate new parameter values based on the random mean.
            double[] pro_dev = op.getDev();
            double[] new_val = new double[pro_dev.length];
            double min = p.getLower();
            double max = p.getUpper();

            for (int j = 0; j < new_val.length; j++) {
                new_val[j] = pro_dev[j] * new_mean;
                if (new_val[j] > max) {
                    new_val[j] = max;
                }
                if (new_val[j] < min) {
                    new_val[j] = min;
                }
            }
            //  Update the Parameter objects with the new values
            Util.setVals(new_val, p);
        }
    }