001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Dec 1, 2002 005 * Time: 2:09:10 AM 006 */ 007 008 package EVolve.util.Painters; 009 010 import EVolve.visualization.AutoImage; 011 import EVolve.visualization.Predictor; 012 013 public class MissRatePainter extends PredictionPainter{ 014 private int predictCounter, hitCounter, lastX; 015 private float maxMiss = 0; 016 017 public MissRatePainter(Predictor[] predictor) { 018 super(predictor); 019 predictCounter = 0; 020 hitCounter = 0; 021 lastX = 0; 022 maxMiss = 0; 023 } 024 025 public void paint(AutoImage image, int x, int y, int z) { 026 predictor[y].newTarget2(z); 027 028 if (x>=miss.length) { 029 int [] newmetrics = new int[miss.length+200]; 030 for (int i =0; i< newmetrics.length; i++) 031 if (i<miss.length) 032 newmetrics[i] = miss[i]; 033 else newmetrics[i] = 0; 034 miss = newmetrics; 035 } 036 037 if (x != lastX) { 038 if (predictCounter != 0) 039 miss[lastX] = 300*(predictCounter - hitCounter)/predictCounter; 040 if (maxMiss < (float)miss[lastX]/300) { 041 maxMiss = (float)miss[lastX]/300; 042 } 043 for (int i=lastX; i<x; i++) 044 { 045 miss[i] = miss[lastX]; 046 if (miss[lastX] != 0) 047 image.setColor(i,miss[lastX],colorRed); 048 } 049 lastX = x; 050 } 051 predictCounter++; 052 053 if (predictor[y].isCorrect()) { 054 hitCounter ++; 055 } 056 } 057 058 public float getMaxMiss() { 059 return maxMiss; 060 } 061 062 public float getMissrate(int X) { 063 return ((float)miss[X])/10; 064 } 065 }