/*********************************************************************** 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; /** * <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 Condicion { private Atributo valor; //Valor para un tipo de atributo private int operador; //Operador que relaciona ese atributo con la regla //0(=), 1(<), 2(>) private static ComparadorCondicion c; /** * Constructor */ public Condicion() { valor = new Atributo(); operador = 0; //Operador por defecto c = new ComparadorCondicion(); } /** * Constructor * @param at Atributo * @param op Operador */ public Condicion(Atributo at, int op) { valor = at; operador = op; c = new ComparadorCondicion(); } /** * Constructor de copia * @param co Condicion a copiar */ public Condicion(Condicion co) { valor = co.valor; operador = co.operador; c = co.c; } /** * Modulo que inicializa el valor de la condicion * @param at Atributo con el valor */ public void setValor(Atributo at) { valor = at; } /** * Modulo que inicializa el valor de la condicion * @param at Valor */ public void setValor(float at) { valor.setValor(at); } /** * Modulo que inicializa el operador de la condicion * @param op Operador */ public void setOperador(int op) { operador = op; } /** * Funcion que devuelve el valor de la condicion * @return Valor */ public Atributo getValor() { return valor; } /** * Funcion que devuelve el operador de la condicion * @return Operador de la condicion */ public int getOperador() { return operador; } /** * Funcion que devuelve el indice del atributo de la condicion * @return Indice */ public int getIndice() { return valor.getAtributo(); } /** * Funcion que indica si la condicion cubre un atributo o no * @param at Atributo * @return True en caso de que lo cubra, False en caso contrario */ public boolean cubre(Atributo at) { boolean devolver = false; double valor1; double valor2; //Si el atributo esta vacio(perdido) o la condicion es vacia(todos) if (valor.getValor() == -1 || at.getValor() == -1) { return true; } switch (operador) { case 0: //= devolver = valor.getValor() == at.getValor(); break; case 1: //< valor1 = valor.getValor(); valor2 = at.getValor(); if (valor2 <= valor1) { devolver = true; } else { devolver = false; } break; case 2: //> valor1 = valor.getValor(); valor2 = at.getValor(); if (valor2 >= valor1) { devolver = true; } else { devolver = false; } break; } return devolver; } /** * Funcion que indica si la condicion tiene valor * @param indice Posicion de la condicion * @param op Operador * @return True en caso verdader, False en caso contrario */ public boolean tieneValor(int indice, int op) { if (operador == op && valor.getAtributo() == indice) { return true; } else { return false; } } /** * Funcion que devuelve un comparador de condiciones * @return Comparador de condiciones */ public static ComparadorCondicion getComparadorCondiciones() { return c; } /** * Funcion que suma un valor al valor de la condicion * @param v Valor a sumar a la condicion */ public void sumarValor(float v) { valor.sumarValor(v); } /** * Funcion que imprime la condicion */ public void imprime() { valor.imprime("Condicion: "); } }