Changeset 782


Ignore:
Timestamp:
12/23/2010 03:23:59 PM (10 years ago)
Author:
myl
Message:

Added functions for writing and loading factlist from the SemanticMemory?

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

Legend:

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

    r772 r782  
    201201                                        e.GetAction(),  
    202202                                        e.GetTarget(), 
    203                                         e.GetParameters(),null,null,null,null); 
     203                                        e.GetParameters(),null,null,null); 
    204204                         
    205205                _compoundCue.Match(ad,am.getMemory().getEpisodicMemory()); 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/AgentCore.java

    r781 r782  
    162162                                } 
    163163         
     164                                //testing - loading agent memory from xml 
     165                                //loadAgentMemory(_saveDirectory + "XMLMemory"); 
     166                                 
    164167                                // Load Plan Operators 
    165168                                ActionLibrary.GetInstance().LoadActionsFile(ConfigurationManager.getActionsFile(), this); 
     
    212215                        _numberOfCycles = 0; 
    213216                        LoadAgentState(directory + fileName); 
     217                                                 
    214218                        AgentLogger.GetInstance().initialize(fileName,_showStateWindow); 
    215219 
     
    803807        { 
    804808                AgentLogger.GetInstance().log("LOADING Memory: " + memoryFile); 
    805                 MemoryLoaderHandler ml = new MemoryLoaderHandler(); 
     809                MemoryLoaderHandler ml = new MemoryLoaderHandler(_memory); 
    806810         
    807811                SAXParserFactory factory = SAXParserFactory.newInstance(); 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/Display/KnowledgeBasePanel.java

    r667 r782  
    7777    
    7878    public boolean Update(AgentModel am) { 
    79          
    80         ListIterator<KnowledgeSlot> li = am.getMemory().getSemanticMemory().GetKnowledgeBaseFacts(); 
     79               
     80        ListIterator<KnowledgeSlot> li = am.getMemory().getSemanticMemory().GetKnowledgeBaseFacts().listIterator();  
    8181         
    8282        KnowledgeSlot slot; 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/Display/ShortTermMemoryPanel.java

    r667 r782  
    140140      
    141141         
    142         ListIterator<KnowledgeSlot> li = sm.GetFactList(); 
     142        ListIterator<KnowledgeSlot> li = sm.GetFactList().listIterator(); 
    143143         
    144144        KnowledgeSlot slot; 
     
    163163        }*/ 
    164164         
    165         li = sm.GetFactList(); 
     165        li = sm.GetFactList().listIterator(); 
    166166        ArrayList<KnowledgeSlot> changeList = sm.GetChangeList(); 
    167167        _workingFactsSubPanel1.removeAll(); 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/ActionDetail.java

    r781 r782  
    5555import FAtiMA.Core.util.enumerables.EventType; 
    5656import FAtiMA.Core.util.enumerables.GoalEvent; 
     57import FAtiMA.Core.wellFormedNames.Name; 
    5758import FAtiMA.Core.wellFormedNames.Substitution; 
    5859 
     
    129130        } 
    130131 
    131         public ActionDetail(int ID, String subject, Short eType, String event, String status,  
     132        /* 
     133         * Meiyii 22/12/10 
     134         * Called during loading  
     135         */ 
     136        public ActionDetail(Memory m, int ID, String subject, Short eType, String event, String status,  
    132137                        String target, String location, float desirability, float praiseworthiness) 
    133138        { 
     139                this._memory = m; 
     140                 
    134141                this._id = ID; 
    135142                 
     
    147154        } 
    148155         
     156        public ActionDetail(int ID, String subject, String action, String target, ArrayList<Parameter> parameters, Time time, String location, BaseEmotion emotion) 
     157        { 
     158                this._id = ID; 
     159                 
     160                this._subject = subject; 
     161                this._action = action; 
     162                this._target = target; 
     163                this._location = location; 
     164                 
     165                this._time = time; 
     166                this._emotion = emotion; 
     167        } 
     168         
    149169        public void setParameters(ArrayList<Parameter> parameters) 
    150170        {                
    151171                this._parameters = parameters; 
    152                 separateParameters(); 
    153                  
     172                separateParameters();            
    154173        } 
    155174         
     
    242261        public Object getSubjectDetails(String property) 
    243262        { 
    244                 KnowledgeSlot aux; 
     263                KnowledgeSlot aux = null; 
    245264                if(this._subject != null) 
    246265                { 
    247                         aux = _memory.getSemanticMemory().GetObjectDetails(_subject, property); 
    248                         if(aux != null) 
    249                         { 
     266                        aux = _memory.getSemanticMemory().GetObjectProperty(_subject, property); 
     267                        if (aux != null) 
    250268                                return aux.getValue(); 
    251                         } 
    252                 } 
    253                 return null; 
     269                } 
     270                return aux; 
    254271        } 
    255272         
    256273        public Object getTargetDetails(String property) 
    257274        { 
    258                 KnowledgeSlot aux; 
     275                KnowledgeSlot aux = null; 
    259276                if(this._target != null) 
    260277                { 
    261                         aux = _memory.getSemanticMemory().GetObjectDetails(_target, property); 
    262                         if(aux != null) 
    263                         { 
     278                        aux = _memory.getSemanticMemory().GetObjectProperty(_target, property); 
     279                        if (aux != null) 
    264280                                return aux.getValue(); 
    265                         } 
    266                 } 
    267                 return null; 
     281                } 
     282                return aux; 
    268283        } 
    269284         
    270285        public Object getObjectDetails(String property) 
    271286        { 
    272                 KnowledgeSlot aux; 
     287                KnowledgeSlot aux = null; 
    273288                if(this._object != null) 
    274289                { 
    275                         aux = _memory.getSemanticMemory().GetObjectDetails(_object, property);; 
    276                         if(aux != null) 
    277                         { 
     290                        aux = _memory.getSemanticMemory().GetObjectProperty(_object, property); 
     291                        if (aux != null) 
    278292                                return aux.getValue(); 
    279                         } 
    280                 } 
    281                 return null; 
     293                } 
     294                return aux; 
    282295        } 
    283296         
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/AutobiographicalMemory.java

    r781 r782  
    124124                                event = this._memoryEvents.get(i); 
    125125                                event.AddActionDetail(action);           
    126                                 event.UpdateMemoryFields(action); 
    127126                                if (!event.getLocation().equals(action.getLocation())) 
    128127                                { 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/EpisodicMemory.java

    r779 r782  
    6565        private ShortTermEpisodicMemory _stm; 
    6666        private AutobiographicalMemory _am; 
    67         private boolean _newData; 
    68          
     67        private boolean _newData;        
    6968         
    7069        private ArrayList<ActionDetail> _newRecords;     
     
    346345                return emStr; 
    347346        } 
     347         
     348        /* 
     349         * Called during loading 
     350         */ 
     351        public void putAutobiographicalMemory(AutobiographicalMemory am) 
     352        { 
     353                _am = am; 
     354        } 
     355         
     356        /* 
     357         * Called during loading 
     358         */ 
     359        public void putSTEpisodicMemory(ShortTermEpisodicMemory stem) 
     360        { 
     361                _stm = stem; 
     362        } 
    348363} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/MemoryEpisode.java

    r781 r782  
    7777        } 
    7878         
     79        /* 
     80         * Meiyii 22/12/10 
     81         * Called during loading 
     82         */ 
    7983        public MemoryEpisode(ArrayList<String> location, ArrayList<String> people, ArrayList<String> objects) 
    8084        { 
     
    134138        } 
    135139         
     140        /* 
     141         * Meiyii 
     142         * Called only during loading - Add event to the details list without further processing  
     143         */ 
     144        public void putActionDetail(ActionDetail ad) 
     145        {                
     146                _details.add(ad); 
     147        } 
     148         
    136149        public void AddActionDetail(ActionDetail ad) 
    137150        {                
    138151                _details.add(ad); 
     152                UpdateMemoryFields(ad); 
    139153        } 
    140154         
     
    491505        } 
    492506         
    493         public void AddObject(String objectName) 
    494         { 
    495                 if(objectName != null) 
    496                 { 
    497                         if(!this._objects.contains(objectName)) 
    498                         { 
    499                                 this._objects.add(objectName); 
     507        public void AddObject(String object) 
     508        { 
     509                if(object != null) 
     510                { 
     511                        if(!this._objects.contains(object)) 
     512                        { 
     513                                this._objects.add(object); 
    500514                        } 
    501515                } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/ShortTermEpisodicMemory.java

    r781 r782  
    7777        } 
    7878         
    79         public void AddActionDetail(ActionDetail ad) 
     79        /* 
     80         * Meiyii 
     81         * Called only during loading - Add event to the details list without further processing  
     82         */ 
     83        public void putActionDetail(ActionDetail ad) 
    8084        { 
    8185                _details.add(ad); 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/semanticMemory/KnowledgeBase.java

    r781 r782  
    163163    } 
    164164 
    165          public ListIterator<KnowledgeSlot> GetFactList() { 
    166             return _factList.listIterator(); 
     165         public ArrayList<KnowledgeSlot> GetFactList() { 
     166            return _factList; 
     167        } 
     168          
     169         /* 
     170          * Called during loading 
     171          */ 
     172        public void putFact(KnowledgeSlot ks) 
     173        { 
     174                _factList.add(ks); 
    167175        } 
    168176         
     
    292300        } 
    293301         
    294         public KnowledgeSlot GetObjectDetails(String objectName, String property) 
     302        public KnowledgeSlot GetObjectDetails(String objectName) 
     303        { 
     304                return _kB.get(objectName); 
     305        } 
     306 
     307        // Meiyii 
     308        public KnowledgeSlot GetObjectProperty(String objectName, String property) 
    295309        { 
    296310                return _kB.get(objectName).get(property); 
    297311        } 
    298  
    299312         
    300313        private ArrayList<SubstitutionSet> MatchLiteralList(ArrayList<Symbol> literals, int index, KnowledgeSlot ks) { 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/semanticMemory/SemanticMemory.java

    r781 r782  
    116116 
    117117         
     118        /* 
     119         * Return changeList from the WorkingMemory 
     120         */ 
    118121        public ArrayList<KnowledgeSlot> GetChangeList() { 
    119122            return _stm.GetChangeList(); 
    120123        } 
    121124         
    122         public ListIterator<KnowledgeSlot> GetFactList() { 
     125        /* 
     126         * Return factList from the WorkingMemory 
     127         */ 
     128        public ArrayList<KnowledgeSlot> GetFactList() { 
    123129            return _stm.GetFactList(); 
    124130        } 
    125131         
    126         public ListIterator<KnowledgeSlot> GetKnowledgeBaseFacts() 
     132        /* 
     133         * Return factList from the KnowledgeBase 
     134         */ 
     135        public ArrayList<KnowledgeSlot> GetKnowledgeBaseFacts() 
    127136        { 
    128137                return _kb.GetFactList(); 
    129138        } 
    130139         
     140        /* 
     141         * Return new facts from the WorkingMemory 
     142         */ 
    131143        public ArrayList<KnowledgeSlot> getNewFacts() 
    132144    { 
     
    134146    } 
    135147         
    136         public KnowledgeSlot GetObjectDetails(String objectName, String property) 
    137         { 
    138                 synchronized(this) 
    139                 { 
    140                         KnowledgeSlot object = _stm.GetObjectDetails(objectName, property); 
     148        public KnowledgeSlot GetObjectDetails(String objectName) 
     149        { 
     150                synchronized(this) 
     151                { 
     152                        KnowledgeSlot object = _stm.GetObjectDetails(objectName); 
    141153                        if(object == null) 
    142                                 object = _kb.GetObjectDetails(objectName, property); 
     154                                object = _kb.GetObjectDetails(objectName); 
     155                        return object; 
     156                } 
     157        } 
     158         
     159        public KnowledgeSlot GetObjectProperty(String objectName, String property) 
     160        { 
     161                synchronized(this) 
     162                { 
     163                        KnowledgeSlot object = _stm.GetObjectProperty(objectName, property); 
     164                        if(object == null) 
     165                                object = _kb.GetObjectProperty(objectName, property); 
    143166                        return object; 
    144167                } 
     
    320343                }        
    321344        } 
     345         
     346        /* 
     347         * Called during loading 
     348         */ 
     349        public void putKnowledgeBase(KnowledgeBase kb) 
     350        { 
     351                _kb = kb; 
     352        } 
     353         
     354        /* 
     355         * Called during loading 
     356         */ 
     357        public void putWorkingMemory(WorkingMemory wm) 
     358        { 
     359                _stm = wm; 
     360        } 
    322361 
    323362} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/semanticMemory/WorkingMemory.java

    r781 r782  
    136136        } 
    137137     
    138     public ListIterator<KnowledgeSlot> GetFactList() { 
    139             return _factList.listIterator(); 
     138    public ArrayList<KnowledgeSlot> GetFactList() { 
     139            return _factList; 
    140140        } 
    141141 
     
    147147    } 
    148148 
     149         /* 
     150          * Called during loading 
     151          */ 
     152        public void putFact(KnowledgeSlot ks) 
     153        { 
     154                _factList.add(ks); 
     155        } 
    149156 
    150157        /** 
     
    345352        } 
    346353         
    347         public KnowledgeSlot GetObjectDetails(String objectName, String property) 
     354        public KnowledgeSlot GetObjectDetails(String objectName) 
     355        { 
     356                return _wM.get(objectName); 
     357        } 
     358         
     359        // Retrieving an object property value 
     360        public KnowledgeSlot GetObjectProperty(String objectName, String property) 
    348361        { 
    349362                return _wM.get(objectName).get(property); 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/util/parsers/MemoryLoaderHandler.java

    r781 r782  
    3939import FAtiMA.Core.memory.Memory; 
    4040import FAtiMA.Core.memory.episodicMemory.ActionDetail; 
     41import FAtiMA.Core.memory.episodicMemory.AutobiographicalMemory; 
     42import FAtiMA.Core.memory.episodicMemory.EpisodicMemory; 
    4143import FAtiMA.Core.memory.episodicMemory.MemoryEpisode; 
    4244import FAtiMA.Core.memory.episodicMemory.ShortTermEpisodicMemory; 
    4345import FAtiMA.Core.memory.episodicMemory.Time; 
     46import FAtiMA.Core.memory.semanticMemory.KnowledgeBase; 
    4447import FAtiMA.Core.memory.semanticMemory.KnowledgeSlot; 
     48import FAtiMA.Core.memory.semanticMemory.WorkingMemory; 
    4549import FAtiMA.Core.util.Constants; 
    4650import FAtiMA.Core.util.enumerables.EventType; 
     
    5458         
    5559        private Memory _memory; 
     60        private KnowledgeBase _currentKB; 
     61        private WorkingMemory _currentWM; 
     62        private KnowledgeSlot _currentKS; 
     63        private AutobiographicalMemory _currentAM; 
    5664        private MemoryEpisode _currentME; 
    5765        private ActionDetail _currentAD; 
     
    5967        private BaseEmotion _currentEmotion; 
    6068        private Event _currentCause; 
    61         private ArrayList<Parameter> _currentEParameters; 
    6269        private ShortTermEpisodicMemory _currentSTEM; 
    6370         
    6471         
    65         public MemoryLoaderHandler() { 
     72        public MemoryLoaderHandler(Memory memory) { 
     73                _memory = memory; 
     74 
     75                _currentKB = new KnowledgeBase(); 
     76                _currentWM = new WorkingMemory(); 
     77                _currentAM = new AutobiographicalMemory(); 
    6678                _currentSTEM = new ShortTermEpisodicMemory(); 
    67              //_memory = new Memory(); 
     79                 
     80                _memory.getSemanticMemory().putKnowledgeBase(_currentKB); 
     81                _memory.getSemanticMemory().putWorkingMemory(_currentWM); 
     82                _memory.getEpisodicMemory().putAutobiographicalMemory(_currentAM); 
     83                _memory.getEpisodicMemory().putSTEpisodicMemory(_currentSTEM); 
     84        } 
     85         
     86        public void KBSlot(Attributes attributes) 
     87        { 
     88                String name = attributes.getValue("name"); 
     89                Object value = attributes.getValue("value"); 
     90                 
     91                _currentKS = new KnowledgeSlot(name); 
     92                _currentKS.setValue(value); 
     93                _currentKB.putFact(_currentKS); 
     94                 
     95                System.out.println("KBSlot"); 
     96            System.out.println(name + " " + value); 
     97        }        
     98         
     99        public void Child(Attributes attributes) 
     100        { 
     101                String name = attributes.getValue("name"); 
     102                Object value = attributes.getValue("value"); 
     103                KnowledgeSlot ks = new KnowledgeSlot(name); 
     104                ks.setValue(value); 
     105                 
     106                System.out.println("Child"); 
     107            System.out.println(name + " " + value); 
     108             
     109                _currentKS.put(name, ks); 
     110        } 
     111         
     112        public void WMSlot(Attributes attributes) 
     113        { 
     114                String name = attributes.getValue("name"); 
     115                Object value = attributes.getValue("value"); 
     116                 
     117                _currentKS = new KnowledgeSlot(name); 
     118                _currentKS.setValue(value); 
     119                _currentWM.putFact(_currentKS); 
     120                 
     121                System.out.println("WMSlot"); 
     122            System.out.println(name + " " + value); 
    68123        } 
    69124         
     
    77132            
    78133            _currentME = new MemoryEpisode(location, people, object); 
    79              
    80             //_memory.getEpisodicMemory().getAM().putEpisode(me); 
     134            _currentAM.putEpisode(_currentME); 
    81135        } 
    82136         
     
    105159            float praiseworthiness = Float.parseFloat(attributes.getValue("praiseworthiness"));  
    106160             
    107             _currentAD = new ActionDetail(eventID, subject, eType, event, status, target, location, desirability, praiseworthiness); 
    108             _currentME.AddActionDetail(_currentAD);      
     161            _currentAD = new ActionDetail(_memory, eventID, subject, eType, event, status, target, location, desirability, praiseworthiness); 
     162            _currentME.putActionDetail(_currentAD);      
    109163            _currentParameters = new ArrayList<Parameter>(); 
    110164            _currentAD.setParameters(_currentParameters); 
     
    173227            Time time = new Time(narrativeTime, realTime, eventSequence);            
    174228 
     229            _currentAD.setParameters(_currentParameters); 
    175230            _currentAD.setTime(time);                 
    176231             
     
    190245            float praiseworthiness = Float.parseFloat(attributes.getValue("praiseworthiness"));      
    191246           
    192             _currentAD = new ActionDetail(eventID, subject, eType, event, status, target, location, desirability, praiseworthiness); 
    193             _currentSTEM.AddActionDetail(_currentAD);      
     247            _currentAD = new ActionDetail(_memory, eventID, subject, eType, event, status, target, location, desirability, praiseworthiness); 
     248            _currentSTEM.putActionDetail(_currentAD);      
    194249            _currentParameters = new ArrayList<Parameter>(); 
    195             _currentAD.setParameters(_currentParameters); 
    196250             
    197251            System.out.println("STEvent"); 
     
    214268                        { 
    215269                                String item = st.nextToken(); 
    216                                 items.add(item); 
     270                                if (!items.contains(item.trim())) 
     271                                        items.add(item.trim()); 
    217272                                System.out.println("Item " + item); 
    218273                        } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/util/writers/MemoryWriter.java

    r781 r782  
    3737import java.io.Writer; 
    3838import java.util.ArrayList; 
     39import java.util.Iterator; 
     40import java.util.ListIterator; 
    3941 
    4042import org.znerd.xmlenc.LineBreak; 
     
    7375                        //_writer = new OutputStreamWriter(System.out, encoding); 
    7476                    _outputter = new XMLOutputter(_writer, encoding); 
     77                     
     78                    _outputter.startTag("Memory");       
     79                    _outputter.setLineBreak(LineBreak.DOS); 
     80                        _outputter.setIndentation("   "); 
     81                         
     82                        // SemanticMemory  
     83                        _outputter.startTag("SemanticMemory");   
     84                        _outputter.startTag("KnowledgeBase"); 
     85                        for (KnowledgeSlot ks: _memory.getSemanticMemory().GetKnowledgeBaseFacts()) 
     86                        { 
     87                                _outputter.startTag("KBSlot"); 
     88                                knowledgeSlottoXML(ks); 
     89                                _outputter.endTag(); 
     90                        }                        
     91                        _outputter.endTag(); //KnowledgeBase 
     92                         
     93                        // WorkingMemory 
     94                        _outputter.startTag("WorkingMemory"); 
     95                        for (KnowledgeSlot ks: _memory.getSemanticMemory().GetFactList()) 
     96                        { 
     97                                _outputter.startTag("WMSlot"); 
     98                                knowledgeSlottoXML(ks); 
     99                                _outputter.endTag(); 
     100                        }        
     101                         
     102                        _outputter.endTag(); // WorkingMemory 
     103                        _outputter.endTag(); //SemanticMemory 
     104                         
     105                        // EpisodicMemory 
    75106                        _outputter.startTag("EpisodicMemory"); 
    76                         _outputter.setLineBreak(LineBreak.DOS); 
    77                         _outputter.setIndentation("   "); 
    78                          
    79107                        // AutobiographicalMemory entries 
    80108                        _outputter.startTag("AutobiographicalMemory");                   
     
    118146                        _outputter.endTag(); //STEpisodicMemory                  
    119147                        _outputter.endTag(); //EpisodicMemory 
     148                         
     149                        _outputter.endTag(); //Memory 
    120150                        _outputter.endDocument();  
    121151                    _outputter.getWriter().flush(); 
     
    217247                } 
    218248        } 
     249         
     250        private void knowledgeSlottoXML(KnowledgeSlot ks) 
     251        { 
     252                try { 
     253                        if(ks.getName() != null) 
     254                                _outputter.attribute("name", ks.getName()); 
     255                        if(ks.getValue() != null) 
     256                                _outputter.attribute("value", ks.getValue().toString()); 
     257                        if(ks.getKeyIterator() != null) 
     258                        { 
     259                                Iterator<String> it = ks.getKeyIterator(); 
     260                                while (it.hasNext()) { 
     261                                        KnowledgeSlot cks = ks.get((String) it.next()); 
     262                                        _outputter.startTag("Child"); 
     263                                        _outputter.attribute("name", cks.getName()); 
     264                                        _outputter.attribute("value", cks.getValue().toString()); 
     265                                        _outputter.endTag(); 
     266                                } 
     267                        } 
     268                } 
     269                catch(IOException e) 
     270                { 
     271                        e.printStackTrace(); 
     272                } 
     273        } 
    219274} 
Note: See TracChangeset for help on using the changeset viewer.