/** * */ package rampancy.util.data.segmentArray; import rampancy.util.RRobotState; import rampancy.util.RUtil; /** * @author Matthew Chun-Lum * */ public class RLeafSegment implements RNode { public static void updateGuessFactors(RLeafSegment leaf, int guessFactorIndex, double weight, int rollDepth) { leaf.visits++; int visits = leaf.visits; double[] guessFactors = leaf.guessFactorArray; guessFactors[guessFactorIndex] = RUtil.rollingAvg(guessFactors[guessFactorIndex], 1.0, Math.min(visits - 1, rollDepth), weight + 1); for(int i = 0; i < guessFactors.length; i++) if(i != guessFactorIndex) guessFactors[i] = RUtil.rollingAvg(guessFactors[i], 1.0 / (Math.pow(guessFactorIndex - i, 2) + 1.0), Math.min(visits, rollDepth), weight); } public double[] guessFactorArray; public int visits; public RLeafSegment(int size) { guessFactorArray = new double[size]; visits = 0; } /* (non-Javadoc) * @see rampancy_v2.util.data.segmentArray.RNode#getSegmentForState(rampancy_v2.util.RRobotState) */ public RLeafSegment getSegmentForState(RRobotState state) { return this; } public RNode newInstance(RSegmentArray reference, int depth) { return new RLeafSegment(guessFactorArray.length); } }