"/Users?/pcupka/eclipse_workspace/WaveRecorder?.data/max/"; |
"/your/data/dir/"; |
String[] files = {"cig5000.txt", "dm5000.txt", "sparrow5000.txt", "floodmini5000.txt", "rmb5000.txt", "aspid5000.txt", "dt5000.txt", "fhqw5000.txt", "funky5000.txt", "taow5000.txt", "tron5000.txt"}; |
String[] files = {"cig900.w2.txt", "dm900.w2.txt", "sparrow900.w2.txt", "fm900.w2.txt", "rmb900.w2.txt", "aspid900.w2.txt", "dt900.w2.txt", "fhqw900.w2.txt", "funky900.w2.txt", "taow900.w2.txt", "tron900.w2.txt", "grb900.w2.txt"}; |
wr.findBestLatVelDistanceWallDistanceVChangeTimeSlicesTwoAll?(2, 37); wr.findBestLatVelDistanceWallDistanceVChangeTimeSlicesTwoAll?(3, 37); wr.findBestLatVelDistanceWallDistanceVChangeTimeSlicesTwoAll?(4, 37); wr.findBestLatVelDistanceWallDistanceVChangeTimeSlicesTwoAll?(5, 37); |
wr.findBestLatVelDistanceWallDistanceReverseWallDistanceVChangeTimeSlicesTwoAll?( 3, 3, 3, 1, 3, 37); |
w.distance = (float)Double.parseDouble(fields[8]); w.wallDistance = (float)Double.parseDouble(fields[9]); w.relativeHeading = (float)Double.parseDouble(fields[10]); |
w.timeSinceZeroVelocity? = Integer.parseInt(fields[8]); w.timeSinceMaxVelocity? = Integer.parseInt(fields[9]); w.distance = (float)Double.parseDouble(fields[10]); w.wallDistance = (float)Double.parseDouble(fields[11]); w.reverseWallDistance = (float)Double.parseDouble(fields[12]); w.relativeHeading = (float)Double.parseDouble(fields[13]); w.distanceLastEightTicks? = (float)Double.parseDouble(fields[14]); w.distanceLastFifteenTicks? = (float)Double.parseDouble(fields[15]); w.distanceLastTwentyFiveTicks? = (float)Double.parseDouble(fields[16]); |
public void findBestLatVelDistanceWallDistanceReverseWallDistanceVChangeTimeSlicesTwoAll?( int numLatVelSlices?, int numDistSlices?, int numWallDistSlices?, int numReverseWallDistSlices?, int numVChangeTimeSlices?, int gfSlices) { DataRecordTwoGroup?[] drtg = new DataRecordTwoGroup?[waveSets.size() * 3]; Iterator iter; int gIndex = 0; for (int y = 0; y < 3; y++) { iter = waveSets.keySet().iterator(); gIndex = 0; while (iter.hasNext()) { String filename = (String)iter.next(); ArrayList waves = waveSets.get(filename); DataRecordTwo?[] drt = new DataRecordTwo?[waves.size()]; int tempIndex = 0; for (int x = 0; x < waves.size(); x++) { Wave w = (Wave)waves.get(x); if (w.accel == y) { drt[tempIndex++] = parseWaveLatVel?(w, gfSlices); } } drt = trimDataSet?(drt, tempIndex); drtg[(y * waveSets.size()) + gIndex] = new DataRecordTwoGroup?(gIndex, drt); gIndex++; } } int[] baseCounts = new int[drtg.length]; for (int x = 0; x < drtg.length; x++) { baseCounts[x] = drtg[x].dataSet.length; } ThresholdData? latVelData? = findBestAttrSlices?(drtg, numLatVelSlices?, 0.25f, gfSlices, 0, 8, baseCounts); float[] latVelSlices? = new float[numLatVelSlices? + 1]; for (int x = 0; x < numLatVelSlices?; x++) { latVelSlices?[x] = latVelData?.slices[x]; } latVelSlices?[numLatVelSlices?] = Float.POSITIVE_INFINITY; float[] distSlices = new float[numDistSlices? + 1]; drtg = new DataRecordTwoGroup?[waveSets.size() * 3 * (numLatVelSlices? + 1)]; for (int y = 0; y < 3; y++) { for (int z = 0; z < latVelSlices?.length; z++) { iter = waveSets.keySet().iterator(); gIndex = 0; while (iter.hasNext()) { String filename = (String)iter.next(); ArrayList waves = waveSets.get(filename); DataRecordTwo?[] drt = new DataRecordTwo?[waves.size()]; int tempIndex = 0; for (int x = 0; x < waves.size(); x++) { Wave w = (Wave)waves.get(x); if (w.accel == y && w.latVel < latVelSlices?[z] && (z == 0 || w.latVel >= latVelSlices?[z-1])) { drt[tempIndex++] = parseWaveDistance?(w, gfSlices); } } drt = trimDataSet?(drt, tempIndex); drtg[((y * latVelSlices?.length + z) * waveSets.size()) + gIndex] = new DataRecordTwoGroup?(gIndex, drt); gIndex++; } } } baseCounts = new int[drtg.length]; for (int x = 0; x < drtg.length; x++) { baseCounts[x] = drtg[x].dataSet.length; } ThresholdData? distData = findBestAttrSlices?(drtg, numDistSlices?, 25, gfSlices, 0, 1000, baseCounts); for (int x = 0; x < numDistSlices?; x++) { distSlices[x] = distData.slices[x]; } distSlices[numDistSlices?] = Float.POSITIVE_INFINITY; float[] walldistSlices = new float[numWallDistSlices? + 1]; drtg = new DataRecordTwoGroup?[waveSets.size() * 3 * (numLatVelSlices? + 1) * (numDistSlices? + 1)]; for (int y = 0; y < 3; y++) { for (int z = 0; z < latVelSlices?.length; z++) { for (int a = 0; a < distSlices.length; a++) { iter = waveSets.keySet().iterator(); gIndex = 0; while (iter.hasNext()) { String filename = (String)iter.next(); ArrayList waves = waveSets.get(filename); DataRecordTwo?[] drt = new DataRecordTwo?[waves.size()]; int tempIndex = 0; for (int x = 0; x < waves.size(); x++) { Wave w = (Wave)waves.get(x); if (w.accel == y && w.latVel < latVelSlices?[z] && (z == 0 || w.latVel >= latVelSlices?[z-1]) && w.distance < distSlices[a] && (a == 0 || w.distance >= distSlices[a-1])) { drt[tempIndex++] = parseWaveWallDistance?(w, gfSlices); } } drt = trimDataSet?(drt, tempIndex); drtg[((a + z * distSlices.length + y * latVelSlices?.length * distSlices.length) * waveSets.size()) + gIndex] = new DataRecordTwoGroup?(gIndex, drt); gIndex++; } } } } baseCounts = new int[drtg.length]; for (int x = 0; x < drtg.length; x++) { baseCounts[x] = drtg[x].dataSet.length; } ThresholdData? walldistData = findBestAttrSlices?(drtg, numWallDistSlices?, 0.05f, gfSlices, 0, 1.2f, baseCounts); for (int x = 0; x < numWallDistSlices?; x++) { walldistSlices[x] = walldistData.slices[x]; } walldistSlices[numWallDistSlices?] = Float.POSITIVE_INFINITY; float[] reverseWallDistSlices? = new float[numReverseWallDistSlices? + 1]; drtg = new DataRecordTwoGroup?[waveSets.size() * 3 * (numLatVelSlices? + 1) * (numDistSlices? + 1) * (numWallDistSlices? + 1)]; for (int y = 0; y < 3; y++) { for (int z = 0; z < latVelSlices?.length; z++) { for (int a = 0; a < distSlices.length; a++) { for (int b = 0; b < walldistSlices.length; b++) { iter = waveSets.keySet().iterator(); gIndex = 0; while (iter.hasNext()) { String filename = (String)iter.next(); ArrayList waves = waveSets.get(filename); DataRecordTwo?[] drt = new DataRecordTwo?[waves.size()]; int tempIndex = 0; for (int x = 0; x < waves.size(); x++) { Wave w = (Wave)waves.get(x); if (w.accel == y && w.latVel < latVelSlices?[z] && (z == 0 || w.latVel >= latVelSlices?[z-1]) && w.distance < distSlices[a] && (a == 0 || w.distance >= distSlices[a-1]) && w.wallDistance < walldistSlices[b] && (b == 0 || w.wallDistance >= walldistSlices[b-1])) { DataRecordTwo? drtTemp = parseWaveReverseWallDistance?(w, gfSlices); if (drtTemp != null) { drt[tempIndex++] = drtTemp; } } } drt = trimDataSet?(drt, tempIndex); drtg[((b + a * walldistSlices.length + z * distSlices.length * walldistSlices.length + y * latVelSlices?.length * distSlices.length * walldistSlices.length) * waveSets.size()) + gIndex] = new DataRecordTwoGroup?(gIndex, drt); gIndex++; } } } } } baseCounts = new int[drtg.length]; for (int x = 0; x < drtg.length; x++) { baseCounts[x] = drtg[x].dataSet.length; } ThresholdData? reverseWallDistData? = findBestAttrSlices?(drtg, numReverseWallDistSlices?, 0.05f, gfSlices, 0, 1.2f, baseCounts); for (int x = 0; x < numReverseWallDistSlices?; x++) { reverseWallDistSlices?[x] = reverseWallDistData?.slices[x]; } reverseWallDistSlices?[numReverseWallDistSlices?] = Float.POSITIVE_INFINITY; float[] vchangeSlices = new float[numVChangeTimeSlices? + 1]; drtg = new DataRecordTwoGroup?[waveSets.size() * 3 * (numLatVelSlices? + 1) * (numDistSlices? + 1) * (numWallDistSlices? + 1) * (numReverseWallDistSlices? + 1)]; for (int y = 0; y < 3; y++) { for (int z = 0; z < latVelSlices?.length; z++) { for (int a = 0; a < distSlices.length; a++) { for (int b = 0; b < walldistSlices.length; b++) { for (int c = 0; c < reverseWallDistSlices?.length; c++) { iter = waveSets.keySet().iterator(); gIndex = 0; while (iter.hasNext()) { String filename = (String)iter.next(); ArrayList waves = waveSets.get(filename); DataRecordTwo?[] drt = new DataRecordTwo?[waves.size()]; int tempIndex = 0; for (int x = 0; x < waves.size(); x++) { Wave w = (Wave)waves.get(x); if (w.accel == y && w.latVel < latVelSlices?[z] && (z == 0 || w.latVel >= latVelSlices?[z-1]) && w.distance < distSlices[a] && (a == 0 || w.distance >= distSlices[a-1]) && w.wallDistance < walldistSlices[b] && (b == 0 || w.wallDistance >= walldistSlices[b-1]) && w.reverseWallDistance < reverseWallDistSlices?[c] && (c == 0 || w.reverseWallDistance >= reverseWallDistSlices?[c-1])) { DataRecordTwo? drtTemp = parseWaveVChangeTime?(w, gfSlices); if (drtTemp != null) { drt[tempIndex++] = drtTemp; } } } drt = trimDataSet?(drt, tempIndex); drtg[((c + b * reverseWallDistSlices?.length + a * reverseWallDistSlices?.length * walldistSlices.length + z * reverseWallDistSlices?.length * distSlices.length * walldistSlices.length + y * latVelSlices?.length * distSlices.length * walldistSlices.length * reverseWallDistSlices?.length) * waveSets.size()) + gIndex] = new DataRecordTwoGroup?(gIndex, drt); gIndex++; } } } } } } baseCounts = new int[drtg.length]; for (int x = 0; x < drtg.length; x++) { baseCounts[x] = drtg[x].dataSet.length; } ThresholdData? vchangeData = findBestAttrSlices?(drtg, numVChangeTimeSlices?, 0.05f, gfSlices, 0, 1.2f, baseCounts); for (int x = 0; x < numVChangeTimeSlices?; x++) { vchangeSlices[x] = vchangeData.slices[x]; } vchangeSlices[numVChangeTimeSlices?] = Float.POSITIVE_INFINITY; System.out.print("LatVel? Slices: " + round(latVelSlices?[0], 2)); for (int z = 1; z < latVelSlices?.length - 1; z++) { System.out.print(" / " + round(latVelSlices?[z], 2)); } System.out.println(); System.out.print("Distance Slices: " + round(distSlices[0], 0)); for (int z = 1; z < distSlices.length - 1; z++) { System.out.print(" / " + round(distSlices[z], 0)); } System.out.println(); System.out.print("WallDistance Slices: " + round(walldistSlices[0], 2)); for (int z = 1; z < walldistSlices.length - 1; z++) { System.out.print(" / " + round(walldistSlices[z], 2)); } System.out.println(); System.out.print("ReverseWallDistance? Slices: " + round(reverseWallDistSlices?[0], 2)); for (int z = 1; z < reverseWallDistSlices?.length - 1; z++) { System.out.print(" / " + round(reverseWallDistSlices?[z], 2)); } System.out.println(); System.out.print("VChangeTime? Slices: " + round(vchangeSlices[0], 2)); for (int z = 1; z < vchangeSlices.length - 1; z++) { System.out.print(" / " + round(vchangeSlices[z], 2)); } System.out.println(); System.out.println("Final entropy: " + vchangeData.entropy); } |
public DataRecordTwo? parseWaveReverseWallDistance?(Wave w, int gfSlices) { DataRecordTwo? drt = new DataRecordTwo?(); drt.attr1 = w.reverseWallDistance; drt.output = (int) limit(0, Math.round(w.guessFactor * ((gfSlices - 1) / 2) + (gfSlices - 1)), gfSlices - 1); return drt; } |
int timeSinceVChange?; float velocity, distance, latVel, wallDistance, relativeHeading; |
int timeSinceVChange?, timeSinceZeroVelocity?, timeSinceMaxVelocity?; float velocity, distance, latVel, reverseWallDistance, wallDistance, relativeHeading; float distanceLastEightTicks?, distanceLastFifteenTicks?, distanceLastTwentyFiveTicks?; |