/** * */ package rampancy.util.data.staticSegmentArray; import rampancy.util.RRobotState; import rampancy.util.RUtil; import rampancy.util.data.*; /** * @author Matthew Chun-Lum * */ public class RStaticSegmentArray { // public static void updateGuessFactors(double[] segment, int guessFactorIndex, double weight, int rollDepth) { // 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); // } private RSegmentFunction[] segmentFunctions; private double[][][][][][] segmentArray; private int numGuessFactors; public RStaticSegmentArray(RSegmentFunction[] segmentFunctions, int[] segmentsPerLevel, int numGuessFactors) { this.segmentFunctions = segmentFunctions; this.numGuessFactors = numGuessFactors; segmentArray = new double[segmentsPerLevel[0]] [segmentsPerLevel[1]] [segmentsPerLevel[2]] [segmentsPerLevel[3]] [segmentsPerLevel[4]] [numGuessFactors]; } public double[] getSegmentsForState(RRobotState state) { int[] segmentKey = new int[segmentFunctions.length]; for(int i = 0; i < segmentKey.length; i++) segmentKey[i] = segmentFunctions[0].getIndexForState(state, segmentArray[i].length); return segmentArray[segmentKey[0]] [segmentKey[1]] [segmentKey[2]] [segmentKey[3]] [segmentKey[4]]; } }