/***********************************************************************
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.PSO_ACO;
import java.util.*;
import keel.Dataset.*;
/**
* <p>T�tulo: Hibridaci�n Pso Aco</p>
* <p>Descripci�n: Hibridacion entre los dos algoritmos Pso y Aco</p>
* <p>Copyright: Copyright (c) 2008</p>
* <p>Empresa: </p>
* @author Vicente Rub�n del Pino
* @version 1.0
*/
public class Muestra {
private Vector condiciones; //Atributos de la regla
private Atributo clase; //Clase de la regla
private int posicion; //Posicion en el fichero de donde se ha extraido
private boolean cubierta; //Indica si la muestra esta cubierta por alguna regla
/**
* Constructor por defecto
* Crea una muestra vacia
*/
public Muestra() {
condiciones = new Vector();
clase = new Atributo();
posicion = -1;
cubierta = false;
}
/**
* Constructor
* Crea una regla a partir de los atributos y la clase que se le pasan
* por parametro.
*
* @param conjuntoAtributos Vector
* @param claseOriginal String
* @param posicionFichero int
*/
public Muestra(Vector conjuntoAtributos, Atributo claseOriginal,
int posicionFichero) {
condiciones = new Vector(conjuntoAtributos);
clase = new Atributo(claseOriginal);
posicion = posicionFichero;
cubierta = false;
}
/**
* Modulo que inserta un atributo junto con su valor en la regla
*
* @param original Atributo Atributo que se inserta en la regla.
*/
public void insertarAtributo(Atributo original) {
condiciones.addElement(original);
}
/**
* Modulo que inserta la clase a la que identifica la regla con todos
* sus atributos
*
* @param original Atributo Clase que se inserta en la regla
*/
public void insertarClase(Atributo original) {
clase = original;
}
/**
* Inserta la posicion que ocupa la muestra en el fichero de origen
* @param posicionFichero int
*/
public void insertaPosicion(int posicionFichero) {
posicion = posicionFichero;
}
/**
* Modulo que pone a cubierta la muestra
*/
public void siEstaCubierta() {
cubierta = true;
}
/**
* Modulo que pone a no cubierta la muestra
*/
public void noEstaCubierta() {
cubierta = false;
}
/**
* Funcion que indica si la muestra esta cubierta o no
* @return boolean Booleano que indica si esta cubierta la muestra
*/
public boolean estaCubierta() {
return cubierta;
}
/**
* Funcion que avisa si un atributo esta ya junto con su valor en una regla
*
* @param original Atributo Atributo que se busca en la regla
* @return boolean True si el atributo esta en la regla, False en caso contrario
*/
public boolean estaAtributo(Atributo original) {
boolean devolver = condiciones.contains(original);
return devolver;
}
/**
* Funcion que avisa si la clase que tiene la muestra es igual que la pasada por parametro
* @param original Atributo Clase a comparar con la que contiene la muestra
* @return boolean Booleano que indica si la clase es igual (true) o no (false)
*/
public boolean estaClase(Atributo original) {
boolean devolver;
float s1 = clase.getValor();
float s2 = original.getValor();
if (s1 == s2) {
return true;
} else {
return false;
}
}
/**
* Funcion que devuelve el valor de la condicion que esta en la posicion indice
* @param indice int Indice de la condicion
* @return double Valor de la condicion
*/
public Atributo getValor(int indice) {
Atributo actual = (Atributo) condiciones.get(indice);
return actual;
}
/**
* Funcion que devuelve el valor de la clase
* @return double Valor de la clase de la muestra
*/
public Atributo getClase() {
return clase;
}
/**
* Modulo que imprime por pantalla todas las condiciones de la muestra, seguidas de su
* clase correspondiente
*/
public void imprimir() {
float valor;
Atributo at;
int i;
for (i = 0; i < condiciones.size() - 1; i++) {
at = (Atributo) condiciones.get(i);
valor = at.getValor();
System.out.print(valor + " AND ");
}
//La ultima iteracion no se pinta el AND
at = (Atributo) condiciones.get(i);
valor = at.getValor();
System.out.print(valor);
//Ultima iteracion
Attribute actual;
Vector nombres;
String nombre = null;
actual = Attributes.getOutputAttribute(0); //Solo tenemos un atributo de salida en esta clasificacion
nombres = actual.getNominalValuesList();
valor = clase.getValor();
nombre = (String) nombres.get((int) valor);
System.out.print(" ---> " + valor + " \n");
}
}