/*********************************************************************** This file is part of KEEL-software, the Data Mining tool for regression, classification, clustering, pattern mining and so on. Copyright (C) 2004-2010 F. Herrera (herrera@decsai.ugr.es) L. S�nchez (luciano@uniovi.es) J. Alcal�-Fdez (jalcala@decsai.ugr.es) S. Garc�a (sglopez@ujaen.es) A. Fern�ndez (alberto.fernandez@ujaen.es) J. Luengo (julianlm@decsai.ugr.es) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ **********************************************************************/ package keel.Algorithms.Genetic_Rule_Learning.BioHEL; import keel.Dataset.Instance; public abstract class classifier { int length; // Length of the individual in genes double fitness; double scaledFitness; int modif; int front; double exceptionsLength; //For MDL fitness function double accuracy; double accuracy2; double coverage; int numAttributes; int numAttributesMC; double theoryLength; public classifier() { length = 0; modif = 1; } public int getLength() { return length; } public void fitnessComputation() { modif = 0; fitness = classifierFitness.computeClassifierFitness(this); } public void setScaledFitness(double pFitness) { scaledFitness = pFitness; } public double getFitness() { return fitness; } public void setFitness(double pFit) { fitness=pFit; } public double getScaledFitness() { return scaledFitness; } public void setAccuracy(double acc) { accuracy = acc; } public double getAccuracy() { return accuracy; } public void setAccuracy2(double acc) { accuracy2 = acc; } public double getAccuracy2() { return accuracy2; } public void setCoverage(double cov) { coverage = cov; } public double getCoverage() { return coverage; } public void adjustFitness() { if(Parameters.useMDL) { fitness=exceptionsLength; } } public double getExceptionsLength() { return exceptionsLength; } public void setExceptionsLength(double excep) { exceptionsLength = excep; } public int isModified() { return modif; } public void activateModified() { modif = 1; } public double getTheoryLength() { return theoryLength; } abstract public int getClase(); abstract public boolean doMatch(Instance i); abstract public double computeTheoryLength(); abstract public void crossover(classifier in1, classifier ou1, classifier ou2); abstract public void mutation(); abstract public int numSpecialStages(); abstract public void doSpecialStage(int stage); abstract public void postprocess(); abstract public String dumpPhenotype(); public int compareToIndividual(classifier i2, int maxmin){ if (maxmin == Parameters.MAXIMIZE) { if (fitness>i2.fitness) return +69; if (fitness<i2.fitness) return -69; return 0; } if (fitness<i2.fitness) return +69; if (fitness>i2.fitness) return -69; return 0; } public int compareToIndividual2(classifier i2, int maxmin) { if (maxmin == Parameters.MAXIMIZE) { if (fitness>i2.fitness) return -69; if (fitness<i2.fitness) return +69; return 0; } if (fitness<i2.fitness) return -69; if (fitness>i2.fitness) return +69; return 0; } }