Changeset 1573


Ignore:
Timestamp:
03/14/2012 10:14:21 AM (6 years ago)
Author:
myl
Message:

Updating memory files

Location:
AgentMind/branches/FAtiMA-Modular
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.AdvancedMemory/src/FAtiMA/AdvancedMemory/AdvancedMemoryComponent.java

    r1518 r1573  
    3535import java.io.Serializable; 
    3636import java.util.ArrayList; 
     37import java.util.Calendar; 
     38import java.util.Date; 
    3739import java.util.StringTokenizer; 
     40import java.util.Timer; 
    3841 
    3942import javax.xml.parsers.SAXParser; 
     
    5356import FAtiMA.Core.memory.Memory; 
    5457import FAtiMA.Core.memory.episodicMemory.ActionDetail; 
     58import FAtiMA.Core.memory.episodicMemory.EpisodicMemoryTask; 
    5559import FAtiMA.Core.memory.episodicMemory.MemoryEpisode; 
    5660import FAtiMA.Core.sensorEffector.Event; 
     
    7781 
    7882        private String locationOntologyFilename; 
     83        private TreeOntology locationOntology; 
    7984        private boolean resultStorage; 
    8085 
     
    8590        public AdvancedMemoryComponent() { 
    8691                results = new ArrayList<Object>(); 
     92                locationOntology = null; 
    8793        } 
    8894 
     
    9096                this(); 
    9197                this.locationOntologyFilename = locationOntologyFilename; 
     98                try { 
     99                        // create location ontology 
     100                        locationOntology = new TreeOntology(locationOntologyFilename); 
     101                } catch (Exception e) { 
     102                        System.err.println("Error while parsing Location Ontology!"); 
     103                } 
    92104        } 
    93105 
     
    135147                        load(memory.getSaveDirectory() + FILENAME); 
    136148                } 
     149                /*AdvancedMemoryTask advancedMemoryTask = new AdvancedMemoryTask(this, memory); 
     150                Calendar calendar = Calendar.getInstance(); 
     151                calendar.setTimeInMillis(calendar.getTimeInMillis() + 2 * 60 * 1000); 
     152                calendar.set(Calendar.HOUR_OF_DAY, 6); // 6 am 
     153                calendar.set(Calendar.MINUTE, 0); 
     154                calendar.set(Calendar.SECOND, 0); 
     155                calendar.set(Calendar.MILLISECOND, 0); 
     156                Date firstTime = calendar.getTime(); 
     157                long period = 2 * 60 * 1000; 
     158                Timer timer = new Timer(); 
     159                timer.schedule(advancedMemoryTask, firstTime, period);*/ 
    137160        } 
    138161 
     
    340363 
    341364                        // parse location ontology 
    342                         TreeOntology locationOntology = null; 
     365                        //TreeOntology locationOntology = null; 
    343366                        if (locationDepthMaxStr != null) { 
    344                                 // parse location ontology maximum depth 
    345                                 try { 
    346                                         Integer depthMax = Integer.valueOf(locationDepthMaxStr); 
    347                                         // create location ontology 
    348                                         locationOntology = new TreeOntology(locationOntologyFilename); 
    349                                         locationOntology.setDepthMax(depthMax); 
    350                                 } catch (Exception e) { 
    351                                         System.err.println("Error while parsing Location Ontology Maximum Depth!"); 
    352                                 } 
     367                                Integer depthMax = Integer.valueOf(locationDepthMaxStr); 
     368                                // create location ontology 
     369                                //locationOntology = new TreeOntology(locationOntologyFilename); 
     370                                locationOntology.setDepthMax(depthMax); 
     371                         
     372                        } else { 
     373                                locationOntology.setDepthMax(0); 
    353374                        } 
    354375 
     
    409430                        // 
    410431 
    411                         System.out.println(perception); 
     432                        //System.out.println(perception); 
    412433                        SpreadingActivation spreadingActivation = new SpreadingActivation();             
    413434 
    414                         this.processSAPerception(perception, spreadingActivation); 
     435                        this.processSAPerception(am, perception, spreadingActivation); 
    415436                         
    416                         if (resultStorage) { 
    417                                 // add to results 
    418                                 results.add(spreadingActivation); 
    419                                 setResultsUpdated(true); 
    420                         } 
    421                          
    422                         // return result 
    423                         String result = AdvancedMemoryWriter.getUnformattedXML(spreadingActivation); 
    424                         am.getRemoteAgent().ReportMemoryResult(result); 
    425  
    426437                } else if (msgType.equals(G_MEMORY)) { 
    427438 
     
    465476                        // G-MEMORY target$1$*$*$*$*$*$true 
    466477 
    467                         //  
    468  
     478                        //System.out.println("Perception " + perception); 
    469479                        // parse perception 
    470480                        StringTokenizer stringTokenizer = new StringTokenizer(perception, "$"); 
     
    574584 
    575585                        // parse location ontology 
    576                         TreeOntology locationOntology = null; 
     586                        //TreeOntology locationOntology = null; 
    577587                        if (locationDepthMaxStr != null) { 
    578                                 // parse location ontology maximum depth 
    579                                 try { 
    580                                         Integer depthMax = Integer.valueOf(locationDepthMaxStr); 
    581                                         // create location ontology 
    582                                         locationOntology = new TreeOntology(locationOntologyFilename); 
    583                                         locationOntology.setDepthMax(depthMax); 
    584                                 } catch (Exception e) { 
    585                                         System.err.println("Error while parsing Location Ontology Maximum Depth!"); 
    586                                 } 
     588                                Integer depthMax = Integer.valueOf(locationDepthMaxStr); 
     589                                // create location ontology 
     590                                //locationOntology = new TreeOntology(locationOntologyFilename); 
     591                                locationOntology.setDepthMax(depthMax); 
     592                         
     593                        } else { 
     594                                locationOntology.setDepthMax(0); 
    587595                        } 
    588596 
     
    602610                        // return result 
    603611                        String result = AdvancedMemoryWriter.getUnformattedXML(generalisation); 
    604                         am.getRemoteAgent().ReportMemoryResult(result); 
     612                        //am.getRemoteAgent().ReportMemoryResult(result); 
     613                        am.getRemoteAgent().ReportGeneralisationResult(result); 
     614                        /*ArrayList<GER> gers = generalisation.getGers(); 
     615                        for(GER ger: gers) { 
     616                                for(int i = 0; i < ger.getAttributeItemSet().size(); i++) { 
     617                                        System.out.println("Attribute item " + i + " " + ger.getAttributeItem(i)); 
     618                                        //System.out.println("Coverage " + ger.); 
     619                                }                                
     620                        }*/                      
    605621 
    606622                } else if (msgType.equals(SAVE_ADV_MEMORY)) { 
    607623 
    608624                        save(memory.getSaveDirectory() + FILENAME); 
     625                        save(memory.getSaveDirectory() + FILENAME + ".bak"); 
    609626 
    610627                } else if (msgType.equals(LOAD_ADV_MEMORY)) { 
    611628 
    612629                        load(memory.getSaveDirectory() + FILENAME); 
    613  
    614                 } 
    615  
     630                } 
    616631        } 
    617632 
     
    670685        } 
    671686 
    672         public Object processSAPerception(String perception, SpreadingActivation sa){ 
     687        public Object processSAPerception(AgentModel am, String perception, SpreadingActivation sa){ 
    673688                // parse perception 
    674689                StringTokenizer stringTokenizer = new StringTokenizer(perception, "$"); 
     
    762777 
    763778                // parse location ontology 
    764                 TreeOntology locationOntology = null; 
     779                //TreeOntology locationOntology = null; 
    765780                if (locationDepthMaxStr != null) { 
    766                         // parse location ontology maximum depth 
    767                         try { 
    768                                 Integer depthMax = Integer.valueOf(locationDepthMaxStr); 
    769                                 // create location ontology 
    770                                 locationOntology = new TreeOntology(locationOntologyFilename); 
    771                                 locationOntology.setDepthMax(depthMax); 
    772                         } catch (Exception e) { 
    773                                 System.err.println("Error while parsing Location Ontology Maximum Depth!"); 
    774                         } 
    775                 } 
    776  
     781                        Integer depthMax = Integer.valueOf(locationDepthMaxStr); 
     782                        // create location ontology 
     783                        //locationOntology = new TreeOntology(locationOntologyFilename); 
     784                        locationOntology.setDepthMax(depthMax); 
     785                 
     786                } else { 
     787                        locationOntology.setDepthMax(0); 
     788                } 
     789 
     790                Object saObject = sa.spreadActivation(memory.getEpisodicMemory(), filterAttributesStr, targetAttributeName, timeOntology, targetOntology, objectOntology, locationOntology); 
     791                 
    777792                // parse result storage 
    778793                resultStorage = Boolean.valueOf(resultStorageStr); 
    779794                 
     795                if (resultStorage) { 
     796                        // add to results 
     797                        results.add(sa); 
     798                        setResultsUpdated(true); 
     799                } 
     800 
     801                // return result 
     802                String result = AdvancedMemoryWriter.getUnformattedXML(sa); 
     803                am.getRemoteAgent().ReportMemoryResult(result);          
     804                 
    780805                // execute Spreading Activation mechanism 
    781                 return sa.spreadActivation(memory.getEpisodicMemory(), filterAttributesStr, targetAttributeName, timeOntology, targetOntology, objectOntology, locationOntology); 
     806                return saObject; 
    782807        } 
    783808} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.AdvancedMemory/src/FAtiMA/AdvancedMemory/AdvancedMemoryTask.java

    r1418 r1573  
    4949 
    5050                // initialise 
    51                 String attributeNamesStr; 
     51                /*String attributeNamesStr; 
    5252                int minimumCoverage; 
    5353 
     
    6060 
    6161                // add to results 
    62                 advancedMemoryComponent.getResults().add(generalisation); 
     62                advancedMemoryComponent.getResults().add(generalisation);*/ 
    6363 
    6464                // write to XML 
    65                 String fileName = advancedMemoryComponent.getMemory().getSaveDirectory() + AdvancedMemoryComponent.FILENAME + strTime; 
     65                String fileName = advancedMemoryComponent.getMemory().getSaveDirectory() + AdvancedMemoryComponent.FILENAME + "_" + strTime; 
    6666                advancedMemoryComponent.save(fileName); 
    6767 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.AdvancedMemory/src/FAtiMA/AdvancedMemory/SACondition.java

    r1518 r1573  
    22 
    33import java.util.ArrayList; 
    4 import java.util.HashMap; 
    54import java.util.Hashtable; 
    65import java.util.Iterator; 
     
    87import org.xml.sax.Attributes; 
    98 
    10 import FAtiMA.AdvancedMemory.ontology.NounOntology; 
    11 import FAtiMA.AdvancedMemory.ontology.TimeOntology; 
    12 import FAtiMA.AdvancedMemory.ontology.TreeOntology; 
    13 import FAtiMA.AdvancedMemory.writers.AdvancedMemoryWriter; 
    149import FAtiMA.Core.AgentModel; 
    1510import FAtiMA.Core.componentTypes.IComponent; 
     
    2823 */ 
    2924 
    30 public class SACondition extends Condition{ 
     25public class SACondition extends Condition { 
    3126 
    3227        /** 
     
    3833        public static final String OBJECT_ONTOLOGY = "objectOntology"; 
    3934        public static final String LOCATION_ONTOLOGY = "locationOntology"; 
     35        public static int TIME_DIFFERENCE = 9; 
    4036         
    4137        /** 
     
    5046                query = attributes.getValue("query");            
    5147                value = new Symbol(attributes.getValue("value")); 
    52                 System.out.println("query " + query + " " + value); 
     48                //System.out.println("query " + query + " " + value); 
    5349                return new SACondition(query,value); 
    5450        } 
     
    107103        @Override 
    108104        public float CheckCondition(AgentModel am) { 
    109                 if(this._value.isGrounded()) 
     105                 
     106                if(!this._value.isGrounded()) return 0; 
     107                 
     108                String resultStr = this.SpreadActivate(am); 
     109                 
     110                if(resultStr!=null && resultStr.equalsIgnoreCase(this._value.toString())) 
    110111                { 
    111112                        return 1; 
    112113                } 
    113114                else return 0; 
     115                         
    114116        } 
    115117 
     
    135137                SubstitutionSet sset; 
    136138                ArrayList<SubstitutionSet> subs = new ArrayList<SubstitutionSet>(); 
    137                 int timeDiff = 0; 
     139                 
     140                String resultStr = this.SpreadActivate(am); 
     141                if(resultStr != null) 
     142                {        
     143                        sset = new SubstitutionSet(); 
     144                        sset.AddSubstitution(new Substitution(this._value, new Symbol(resultStr))); 
     145                        subs.add(sset); 
     146                }        
     147                 
     148                return subs; 
     149        } 
     150         
     151        private String SpreadActivate(AgentModel am) 
     152        { 
     153                int timeDifference = 0; 
    138154                 
    139155                String saPerception = ""; 
     
    161177                        { 
    162178                                if(value.toString().equals("Exit")){ 
    163                                         timeDiff = 8; 
     179                                        timeDifference = TIME_DIFFERENCE; 
    164180                                } 
    165181                                saPerception += key.trim() + " " + value.toString().trim(); 
     
    168184                                else 
    169185                                        saPerception +="$"; 
    170                                 System.out.println("SAKnown " + key + " " + value.toString()); 
     186                                //System.out.println("SAKnown " + key + " " + value.toString()); 
    171187                        } 
    172188                } 
     
    196212                // execute Spreading Activation mechanism 
    197213                SpreadingActivation spreadingActivation = new SpreadingActivation(); 
    198                 Object saResult = mc.processSAPerception(saPerception, spreadingActivation); 
     214                Object saResult = mc.processSAPerception(am, saPerception, spreadingActivation); 
    199215                if (saResult  != null) 
    200216                { 
     
    202218                        if (_query.equals("time")){ 
    203219                                        int resultValue = Integer.valueOf(resultStr); 
    204                                         if (resultValue < timeDiff) 
     220                                        if (resultValue < timeDifference) 
    205221                                                resultValue += 24; 
    206                                         //resultValue -= timeDiff; 
     222                                        resultValue -= timeDifference; 
    207223                                resultStr = String.valueOf(resultValue); 
    208224                        } 
    209                         System.out.println("saPerception " + saPerception); 
    210                         System.out.println("saResult " + resultStr); 
    211                          
    212                         sset = new SubstitutionSet(); 
    213                         sset.AddSubstitution(new Substitution(this._value, new Symbol(resultStr))); 
    214                         subs.add(sset); 
    215                 }        
    216                  
    217                 return subs; 
     225                        //System.out.println("saPerception " + saPerception); 
     226                        //System.out.println("saResult " + resultStr); 
     227                         
     228                        return resultStr; 
     229                }                
     230                return null; 
    218231        } 
    219232 
     
    265278                return true; 
    266279        } 
    267  
    268280} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.AdvancedMemory/src/FAtiMA/AdvancedMemory/SpreadingActivation.java

    r1518 r1573  
    7676        // hypernyms successfully applied for generalising while calculating frequencies 
    7777        private HashMap<String, HashSet<String>> targetAttributeHypernyms; 
     78        // the attribute value with maximum frequency 
    7879 
    7980        // If an ontology is used for target/object and target/object is the target attribute, 
     
    490491                this.frequencies = frequencies; 
    491492 
    492                 System.out.println("ValueMax " + valueMax); 
     493                //System.out.println("ValueMax " + valueMax); 
    493494                return valueMax; 
    494495        } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.AdvancedMemory/src/FAtiMA/AdvancedMemory/writers/AdvancedMemoryWriter.java

    r1458 r1573  
    6767                        xmlOutputter.endTag(); //AdvancedMemory                  
    6868                        xmlOutputter.endDocument(); 
    69                         xmlOutputter.getWriter().close(); 
    70  
     69                        xmlOutputter.getWriter().flush(); 
     70                        xmlOutputter.getWriter().close();        
    7171                } catch (IOException e) { 
    7272                        e.printStackTrace(); 
     
    329329 
    330330                                xmlOutputter.endTag(); //Generalisation 
    331  
    332331                        } 
    333332 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/AutobiographicalMemory.java

    r1505 r1573  
    6565                this._memoryEpisodes = new ArrayList<MemoryEpisode>(); 
    6666        } 
     67         
     68        public AutobiographicalMemory(AutobiographicalMemory am) { 
     69                if (am._memoryEpisodes != null) { 
     70                        this._memoryEpisodes = (ArrayList<MemoryEpisode>) am._memoryEpisodes.clone(); 
     71                } else { 
     72                        this._memoryEpisodes = new ArrayList<MemoryEpisode>(); 
     73                } 
     74        } 
    6775 
    6876        public void applySubstitution(Substitution s) { 
     
    320328        } 
    321329 
     330        @Override 
     331        public Object clone() { 
     332                return new AutobiographicalMemory(this); 
     333        } 
     334         
    322335        /*public ArrayList Reconstruct(ArrayList searchKeys) 
    323336        { 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/EpisodicMemoryTask.java

    r1493 r1573  
    4040 
    4141        private Memory memory; 
     42        private boolean start = true; 
    4243 
    4344        public EpisodicMemoryTask(Memory memory) { 
     
    4647 
    4748        public void run() { 
    48  
    49                 // move events to LTM 
    50                 memory.getEpisodicMemory().MoveSTEMtoAM(); 
    51  
    52                 // set date format 
    53                 Calendar cal = Calendar.getInstance(); 
    54                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); 
    55                 String strTime = sdf.format(cal.getTime()); 
    56  
    57                 // XML Memory export 
    58                 MemoryWriter memoryWriter = new MemoryWriter(memory); 
    59                 System.out.println(strTime + ": saving XML Memory"); 
    60                 memoryWriter.outputMemorytoXML(filepath + "XMLMemory_" + strTime + ".xml"); 
    61  
    62                 /* 
    63                 // Activation-Based Forgetting 
    64                 System.out.println(strTime + ": performing AB Forgetting (20%)"); 
    65                 memory.getEpisodicMemory().calculateActivationValues(); 
    66                 // TODO: 
    67                 // decide about forgetting method (count, ratio or threshold; which parameters settings?) 
    68                 ArrayList<ActionDetail> forget = memory.getEpisodicMemory().activationBasedForgettingByAmount(0.2); 
    69                 memory.getEpisodicMemory().applyActivationBasedForgetting(forget); 
    70                 // TODO: 
    71                 // log/write details of forgotten events (for forgetting experiment) 
    72                 // -> ArrayList<ActionDetail> forget (see above) 
    73  
    74                 // XML Memory export 
    75                 System.out.println(strTime + ": saving XML Memory"); 
    76                 memoryWriter.outputMemorytoXML(filepath + "XMLMemory_" + strTime + "_AfterABForgetting" + ".xml"); 
    77                 */ 
    78  
    79                 // start a new episode 
    80                 memory.getEpisodicMemory().StartEpisode(memory); 
    81  
     49                 
     50                if(!start) { 
     51                        // set date format 
     52                        Calendar cal = Calendar.getInstance(); 
     53                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); 
     54                        String strTime = sdf.format(cal.getTime());              
     55                         
     56                        if (cal.get(Calendar.HOUR_OF_DAY) == 16){ 
     57                                // move events to LTM 
     58                                memory.getEpisodicMemory().MoveSTEMtoAM(); 
     59                                //System.out.println(Calendar.HOUR_OF_DAY + " Moved memory"); 
     60                                 
     61                                //EpisodicMemory tempEM = (EpisodicMemory) memory.getEpisodicMemory().clone();                           
     62                                // Activation-Based Forgetting 
     63                                //System.out.println(strTime + ": performing AB Forgetting (20%)"); 
     64                                memory.getEpisodicMemory().calculateActivationValues(); 
     65                                // forgetting based on threshold 
     66                                ArrayList<ActionDetail> forget = memory.getEpisodicMemory().activationBasedForgettingByThreshold(-8); 
     67                                 
     68                                // log/write details of forgotten events (for forgetting experiment) 
     69                                // -> ArrayList<ActionDetail> forget (see above) 
     70                                // XML Memory export 
     71                                MemoryWriter adWriter = new MemoryWriter(forget); 
     72                                System.out.println(strTime + ": saving XML Forgotten Events"); 
     73                                adWriter.outputForgottenADtoXML(filepath + "XML_" + strTime + "_ForgettingByThreshold" + ".xml"); 
     74                                 
     75                                forget = memory.getEpisodicMemory().activationBasedForgettingByAmount(0.2); 
     76                                adWriter.outputForgottenADtoXML(filepath + "XML_" + strTime + "_ForgettingByAmount " + ".xml"); 
     77                                 
     78                                forget = memory.getEpisodicMemory().activationBasedForgettingByCount(20); 
     79                                adWriter.outputForgottenADtoXML(filepath + "XML_" + strTime + "_ForgettingByAmount " + ".xml"); 
     80                        }  
     81                        // XML Memory export             
     82                        MemoryWriter memoryWriter = new MemoryWriter(memory); 
     83                        System.out.println(strTime + ": saving XML Memory"); 
     84                        memoryWriter.outputMemorytoXML(filepath + "XMLMemory_" + strTime + ".xml"); 
     85                                 
     86                        /* 
     87                        // Activation-Based Forgetting 
     88                        System.out.println(strTime + ": performing AB Forgetting (20%)"); 
     89                        memory.getEpisodicMemory().calculateActivationValues(); 
     90                        // TODO: 
     91                        // decide about forgetting method (count, ratio or threshold; which parameters settings?) 
     92                        ArrayList<ActionDetail> forget = memory.getEpisodicMemory().activationBasedForgettingByAmount(0.2); 
     93                        memory.getEpisodicMemory().applyActivationBasedForgetting(forget); 
     94                        // TODO: 
     95                        // log/write details of forgotten events (for forgetting experiment) 
     96                        // -> ArrayList<ActionDetail> forget (see above) 
     97         
     98                        // XML Memory export 
     99                        System.out.println(strTime + ": saving XML Memory"); 
     100                        memoryWriter.outputMemorytoXML(filepath + "XMLMemory_" + strTime + "_AfterABForgetting" + ".xml"); 
     101                        */ 
     102         
     103                        if (cal.get(Calendar.HOUR_OF_DAY) == 16){ 
     104                                // start a new episode 
     105                                memory.getEpisodicMemory().StartEpisode(memory); 
     106                        } 
     107                } 
     108                start = false; 
    82109        } 
    83110 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/SearchCache.java

    r1372 r1573  
    7878                        cachedSearches.remove(searchKeysStrOldest); 
    7979                } 
    80  
    8180        } 
    8281 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/ShortTermEpisodicMemory.java

    r1327 r1573  
    7070        } 
    7171 
     72        public ShortTermEpisodicMemory(ShortTermEpisodicMemory stem) { 
     73                if (stem._details != null) { 
     74                        this._details = (ArrayList<ActionDetail>) stem._details.clone(); 
     75                } else { 
     76                        this._details = new ArrayList<ActionDetail>(MAXRECORDS); 
     77                } 
     78        } 
     79         
    7280        public ArrayList<ActionDetail> getDetails() { 
    7381                return this._details; 
     
    406414                return record; 
    407415        } 
     416         
     417        //Meiyii 12/02/27 
     418        @Override 
     419        public Object clone() { 
     420                return new ShortTermEpisodicMemory(this); 
     421        } 
    408422} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/util/parsers/MemoryLoaderHandler.java

    r1382 r1573  
    148148                        } 
    149149                                                 
    150                         _currentWM.Tell(persistent, _currentKB, Name.ParseName(name), value);  
     150                        _currentWM.Tell(persistent, _currentKB, Name.ParseName(name), value); 
     151                        //System.out.println(displayName + " " + value); 
    151152                } 
    152153                 
    153154                //System.out.println("WMSlot"); 
    154             //System.out.println(name + " " + value); 
     155            //System.out.println(displayName + " " + value); 
    155156        } 
    156157         
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/util/writers/MemoryWriter.java

    r1382 r1573  
    4040import java.io.Serializable; 
    4141import java.io.Writer; 
     42import java.util.ArrayList; 
    4243 
    4344import org.znerd.xmlenc.LineBreak; 
     
    4748import FAtiMA.Core.memory.Memory; 
    4849import FAtiMA.Core.memory.episodicMemory.ActionDetail; 
     50import FAtiMA.Core.memory.episodicMemory.EpisodicMemory; 
    4951import FAtiMA.Core.memory.episodicMemory.MemoryEpisode; 
    5052import FAtiMA.Core.memory.episodicMemory.Time; 
     
    6365        private XMLOutputter _outputter; 
    6466        private Memory _memory; 
     67        private ArrayList<ActionDetail> _ads; 
    6568         
    6669        public MemoryWriter(Memory memory) 
     
    6871                _outputter = new XMLOutputter();         
    6972                _memory = memory; 
     73        } 
     74         
     75        public MemoryWriter(ArrayList<ActionDetail> ads) 
     76        { 
     77                _outputter = new XMLOutputter();         
     78                _ads = ads; 
    7079        } 
    7180         
     
    166175                         
    167176                        _outputter.endTag(); //Memory 
     177                        _outputter.endDocument();  
     178                    _outputter.getWriter().flush(); 
     179            _outputter.getWriter().close();             
     180                } 
     181                catch(IOException e) 
     182                { 
     183                        e.printStackTrace(); 
     184                } 
     185        } 
     186         
     187        public void outputForgottenADtoXML(String file) 
     188        { 
     189                try{ 
     190                        _writer = new FileWriter(file); // new BufferedWriter(new FileWriter(file)); 
     191                        //_writer = new OutputStreamWriter(System.out, encoding); 
     192                    _outputter = new XMLOutputter(_writer, encoding); 
     193                     
     194                    _outputter.startTag("ForgottenEvents");      
     195                    _outputter.setLineBreak(LineBreak.DOS); 
     196                        _outputter.setIndentation("   "); 
     197                                 
     198                        // episode events 
     199                        for (ActionDetail ad: _ads) 
     200                        { 
     201                                _outputter.startTag("Event"); 
     202                                _outputter.attribute("eventID", Integer.toString(ad.getID()));   
     203                                _outputter.endTag();    //Event 
     204                        } 
     205                         
     206                        _outputter.endTag(); //Events 
    168207                        _outputter.endDocument();  
    169208                    _outputter.getWriter().flush(); 
Note: See TracChangeset for help on using the changeset viewer.