001 /** 002 * Test7.java 003 * jCOLIBRI2 framework. 004 * @author Lisa Cummins 005 * GAIA - Group for Artificial Intelligence Applications 006 * http://gaia.fdi.ucm.es 007 * 03/05/2007 008 */ 009 package jcolibri.test.test7; 010 011 import java.util.Collection; 012 013 import jcolibri.casebase.LinealCaseBase; 014 import jcolibri.cbraplications.StandardCBRApplication; 015 import jcolibri.cbrcore.Attribute; 016 import jcolibri.cbrcore.CBRCase; 017 import jcolibri.cbrcore.CBRCaseBase; 018 import jcolibri.cbrcore.CBRQuery; 019 import jcolibri.cbrcore.Connector; 020 import jcolibri.connector.PlainTextConnector; 021 import jcolibri.exception.ExecutionException; 022 import jcolibri.method.maintenance.TwoStepCaseBaseEditMethod; 023 import jcolibri.method.maintenance.algorithms.ICFFull; 024 import jcolibri.method.maintenance.algorithms.ICFRedundancyRemoval; 025 import jcolibri.method.maintenance.algorithms.RENNNoiseReduction; 026 import jcolibri.method.retrieve.NNretrieval.similarity.global.Average; 027 import jcolibri.method.retrieve.NNretrieval.similarity.local.Interval; 028 import jcolibri.method.reuse.classification.KNNClassificationConfig; 029 import jcolibri.method.reuse.classification.SimilarityWeightedVotingMethod; 030 import jcolibri.test.main.SwingProgressBar; 031 032 /** 033 * This example shows how to run maintenance algorithms over the case base. 034 * The "class" of the case is defined by the id attribute of the solution. 035 * @author Lisa Cummins 036 * @version 1.0 037 */ 038 public class Test7 implements StandardCBRApplication { 039 040 Connector _connector; 041 CBRCaseBase _caseBase; 042 043 044 /* (non-Javadoc) 045 * @see jcolibri.cbraplications.StandardCBRApplication#configure() 046 */ 047 public void configure() throws ExecutionException { 048 try{ 049 _connector = new PlainTextConnector(); 050 _connector.initFromXMLfile(jcolibri.util.FileIO.findFile("jcolibri/test/test7/plaintextconfig.xml")); 051 _caseBase = new LinealCaseBase(); 052 } catch (Exception e){ 053 throw new ExecutionException(e); 054 } 055 056 } 057 058 /* (non-Javadoc) 059 * @see jcolibri.cbraplications.StandardCBRApplication#preCycle() 060 */ 061 public CBRCaseBase preCycle() throws ExecutionException { 062 _caseBase.init(_connector); 063 return _caseBase; 064 } 065 066 /* (non-Javadoc) 067 * @see jcolibri.cbraplications.StandardCBRApplication#cycle() 068 */ 069 public void cycle(CBRQuery q) throws ExecutionException { 070 071 // Configure KNN 072 KNNClassificationConfig irisSimConfig = new KNNClassificationConfig(); 073 074 irisSimConfig.setDescriptionSimFunction(new Average()); 075 irisSimConfig.addMapping(new Attribute("sepalLength",IrisDescription.class), new Interval(3.6)); 076 irisSimConfig.addMapping(new Attribute("sepalWidth",IrisDescription.class), new Interval(2.4)); 077 irisSimConfig.addMapping(new Attribute("petalLength",IrisDescription.class), new Interval(5.9)); 078 irisSimConfig.addMapping(new Attribute("petalWidth", IrisDescription.class), new Interval(2.4)); 079 irisSimConfig.setClassificationMethod(new SimilarityWeightedVotingMethod()); 080 irisSimConfig.setK(3); 081 082 // Run a 2 step Maintenance method 083 TwoStepCaseBaseEditMethod edit = new ICFFull(new RENNNoiseReduction(), new ICFRedundancyRemoval()); 084 Collection<CBRCase> deleted = edit.retrieveCasesToDelete(_caseBase.getCases(), irisSimConfig); 085 086 System.out.println(); 087 System.out.println("Num Cases deleted by Alg: " + deleted.size()); 088 System.out.println("Cases deleted by Alg: "); 089 for(CBRCase c: deleted) 090 { System.out.println(c.getID()); 091 } 092 } 093 094 /* (non-Javadoc) 095 * @see jcolibri.cbraplications.StandardCBRApplication#postCycle() 096 */ 097 public void postCycle() throws ExecutionException { 098 _connector.close(); 099 } 100 101 102 /** 103 * @param args 104 */ 105 public static void main(String[] args) { 106 Test7 test = new Test7(); 107 108 //SwingProgressBar shows the progress 109 jcolibri.util.ProgressController.clear(); 110 jcolibri.util.ProgressController.register(new SwingProgressBar(),RENNNoiseReduction.class); 111 jcolibri.util.ProgressController.register(new SwingProgressBar(),ICFRedundancyRemoval.class); 112 113 114 try { 115 test.configure(); 116 test.preCycle(); 117 test.cycle(null); 118 } catch (ExecutionException e) { 119 org.apache.commons.logging.LogFactory.getLog(Test7.class).error(e); 120 } 121 122 } 123 124 }