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 }