/*********************************************************************** 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.OCEC; /** * <p>Title: </p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2007</p> * * <p>Company: </p> * * @author not attributable * @version 1.0 */ import java.util.*; public class Poblacion { ArrayList<Organizacion> organizaciones; public Poblacion() { organizaciones = new ArrayList<Organizacion>(); } public Poblacion(int clase, Attribute a, myDataset train) { organizaciones = new ArrayList<Organizacion> (); for (int i = 0; i < train.size(); i++) { if (train.getOutputAsInteger(i) == clase) { Organizacion o = new Organizacion(i, a, train); organizaciones.add(o); } } } public int size() { return organizaciones.size(); } public Organizacion dameOrganizacion(int pos) { return organizaciones.get(pos); //referencia } public String printString() { String cadena = new String(""); for (int i = 0; i < this.size(); i++) { cadena += "Organization[" + i + "]: "; cadena += organizaciones.get(i).printString(); } return cadena; } public void print() { System.out.println(this.printString()); } /** * eliminar organizaciones sin atributos �tiles */ public void eliminarNoUtiles() { for (int i = 0; i < organizaciones.size(); ) { if (organizaciones.get(i).nUtiles == 0) { organizaciones.remove(i); } /*else if (organizaciones.get(i).nUtiles == organizaciones.get(i).Uorg.length) { organizaciones.remove(i); }*/ else { i++; } } } /** * junta dos organizaciones si los atributos �tiles de una estan contenidos en la otra (y tienen * lo mismos valores, obviamente. */ public void mezclar() { for (int i = 0; i < organizaciones.size() - 1; i++) { Organizacion org1 = organizaciones.get(i); boolean salir = false; for (int j = i + 1; (j < organizaciones.size()) && (!salir); ) { if (organizaciones.get(j).contenido(org1)) { organizaciones.remove(i); i--; salir = true; }else if (org1.contenido(organizaciones.get(j))){ organizaciones.remove(j); } else { j++; } } } } public void limpia(){ organizaciones.clear(); } public void actualiza(Poblacion p){ for (int i = 0; i < p.size(); i++){ this.organizaciones.add(p.dameOrganizacion(i).copia()); } } }