Changeset 781


Ignore:
Timestamp:
12/22/2010 05:48:11 PM (10 years ago)
Author:
myl
Message:

Added a writer and loader for episodic memory

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

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/AgentCore.java

    r779 r781  
    797797        { 
    798798                _memoryWriter.outputMemoryInXML(_saveDirectory + "XMLMemory"); 
    799                 //this.loadAgentMemory(_saveDirectory + "XMLMemory"); 
     799                this.loadAgentMemory(_saveDirectory + "XMLMemory"); 
    800800        } 
    801801         
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/emotionalState/BaseEmotion.java

    r756 r781  
    3737 
    3838import FAtiMA.Core.sensorEffector.Event; 
     39import FAtiMA.Core.sensorEffector.Parameter; 
    3940import FAtiMA.Core.util.enumerables.EmotionType; 
    4041import FAtiMA.Core.util.enumerables.EmotionValence; 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/Memory.java

    r779 r781  
    3939import java.io.OutputStreamWriter; 
    4040 
    41 import org.znerd.xmlenc.LineBreak; 
    42 import org.znerd.xmlenc.XMLOutputter; 
    43  
    4441import FAtiMA.Core.memory.episodicMemory.ActionDetail; 
    4542import FAtiMA.Core.memory.episodicMemory.EpisodicMemory; 
    4643import FAtiMA.Core.memory.episodicMemory.MemoryEpisode; 
    4744import FAtiMA.Core.memory.semanticMemory.SemanticMemory; 
    48 import FAtiMA.Core.util.writers.MemoryWriter; 
    4945 
    5046/** 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/ActionDetail.java

    r779 r781  
    7575        private String _action; 
    7676        private String _target;  
    77          
    78         private KnowledgeSlot _subjectDetails = null; 
    79         private KnowledgeSlot _targetDetails = null; 
    8077        private Time _time; 
    8178        private String _location; 
    82  
    8379         
    8480        private BaseEmotion _emotion; 
    85          
    86         private ArrayList<String> _evaluation; 
    8781        private ArrayList<Parameter> _parameters = null; 
    8882         
     
    9286        private String _speechActMeaning; 
    9387        private String _multimediaPath; 
    94         private String _object; 
    95         private KnowledgeSlot _objectDetails = null; 
    96          
     88        private String _object;  
    9789        private float _desirability; 
    9890        private float _praiseworthiness; 
     91         
     92        private Memory _memory; 
    9993         
    10094                 
     
    10397                Parameter p; 
    10498                 
     99                this._memory = m; 
     100                 
    105101                this._id = ID; 
    106102                 
    107103                this._subject = e.GetSubject(); 
    108                 this._subjectDetails = m.getSemanticMemory().GetObjectDetails(_subject); 
    109                  
     104         
    110105                // Meiyii 07/01/10 separate events into intention and action 
    111106                if(e.GetType() == EventType.GOAL) 
     
    121116                 
    122117                this._target = e.GetTarget(); 
    123                 this._targetDetails = m.getSemanticMemory().GetObjectDetails(_target); 
    124118                this._location = location; 
    125                 this._time = new Time(); 
     119                this._time = new Time();  
    126120                 
    127121                if(e.GetParameters() != null) 
     
    129123                        // Meiyii 07/01/10 separate the parameters into individual fields 
    130124                        this._parameters = new ArrayList<Parameter>(e.GetParameters()); 
    131                         ListIterator<Parameter> li = this._parameters.listIterator(); 
    132                         while(li.hasNext()) 
    133                         { 
    134                                 p = li.next(); 
    135                                 if(p.GetName().equals("type")) 
    136                                 { 
    137                                         this._speechActMeaning = p.GetValue().toString(); 
    138                                 }                                
    139                                 else if(p.GetName().equals("link")) 
    140                                 { 
    141                                         this._multimediaPath = p.GetValue().toString(); 
    142                                 } 
    143                                 else if(p.GetName().equals("param")) 
    144                                 { 
    145                                         this._object = p.GetValue().toString(); 
    146                                         this._objectDetails = m.getSemanticMemory().GetObjectDetails(_object); 
    147                                 } 
    148                         } 
     125                        separateParameters(); 
    149126                } 
    150127                 
    151128                this._emotion = new BaseEmotion(EmotionType.NEUTRAL,0,new ArrayList<String>(),e,null); 
    152                  
    153                 this._evaluation = new ArrayList<String>(); 
    154         } 
    155          
    156         // not used currently 
    157         public ActionDetail(int ID, String subject, String action, String target, ArrayList<Parameter> parameters, ArrayList<String> evaluation, Time time, String location, BaseEmotion emotion) 
     129        } 
     130 
     131        public ActionDetail(int ID, String subject, Short eType, String event, String status,  
     132                        String target, String location, float desirability, float praiseworthiness) 
    158133        { 
    159134                this._id = ID; 
    160135                 
    161136                this._subject = subject; 
    162                 this._action = action; 
     137                if (eType == EventType.GOAL) 
     138                        this._intention = event; 
     139                else 
     140                        this._action = event; 
     141                this._status = status; 
    163142                this._target = target; 
    164143                this._location = location; 
    165144                 
     145                this._desirability = desirability; 
     146                this._praiseworthiness = praiseworthiness; 
     147        } 
     148         
     149        public void setParameters(ArrayList<Parameter> parameters) 
     150        {                
     151                this._parameters = parameters; 
     152                separateParameters(); 
     153                 
     154        } 
     155         
     156        private void separateParameters() 
     157        { 
     158                Parameter p; 
     159                ListIterator<Parameter> li = this._parameters.listIterator(); 
     160                while(li.hasNext()) 
     161                { 
     162                        p = li.next(); 
     163                        if(p.GetName().equals("type")) 
     164                        { 
     165                                this._speechActMeaning = p.GetValue().toString(); 
     166                        }                                
     167                        else if(p.GetName().equals("link")) 
     168                        { 
     169                                this._multimediaPath = p.GetValue().toString(); 
     170                        } 
     171                        else if(p.GetName().equals("param")) 
     172                        { 
     173                                String value = p.GetValue().toString(); 
     174                                if (!value.equals("SELF")) 
     175                                { 
     176                                        this._object = value; 
     177                                } 
     178                        } 
     179                } 
     180        } 
     181         
     182        public void setEmotion(BaseEmotion emotion) 
     183        { 
     184                this._emotion = emotion; 
     185        } 
     186         
     187        public void setTime(Time time) 
     188        { 
    166189                this._time = time; 
    167                 this._emotion = emotion; 
    168                  
    169                 this._evaluation = evaluation; 
    170190        } 
    171191         
     
    223243        { 
    224244                KnowledgeSlot aux; 
    225                 if(this._subjectDetails != null) 
    226                 { 
    227                         aux = this._subjectDetails.get(property); 
     245                if(this._subject != null) 
     246                { 
     247                        aux = _memory.getSemanticMemory().GetObjectDetails(_subject, property); 
    228248                        if(aux != null) 
    229249                        { 
     
    237257        { 
    238258                KnowledgeSlot aux; 
    239                 if(this._targetDetails != null) 
    240                 { 
    241                         aux = this._targetDetails.get(property); 
     259                if(this._target != null) 
     260                { 
     261                        aux = _memory.getSemanticMemory().GetObjectDetails(_target, property); 
    242262                        if(aux != null) 
    243263                        { 
     
    251271        { 
    252272                KnowledgeSlot aux; 
    253                 if(this._objectDetails != null) 
    254                 { 
    255                         aux = this._objectDetails.get(property); 
     273                if(this._object != null) 
     274                { 
     275                        aux = _memory.getSemanticMemory().GetObjectDetails(_object, property);; 
    256276                        if(aux != null) 
    257277                        { 
     
    267287        } 
    268288         
    269         public ArrayList<String> getEvaluation() 
     289        /*public ArrayList<String> getEvaluation() 
    270290        { 
    271291                return this._evaluation; 
    272         } 
     292        }*/ 
    273293         
    274294        //Meiyii 07/01/10 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/AutobiographicalMemory.java

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

    r779 r781  
    6262        private ArrayList<String> _location; // changed from String to arraylist - Meiyii 13/09/10 
    6363        private ArrayList<String> _objects; 
    64         //private HashMap _detailsByKey; 
    65         private ArrayList<ActionDetail> _details; 
    66          
     64        private ArrayList<ActionDetail> _details;        
    6765        private int _numberOfDominantActions; 
    68         //private ArrayList _dominantActions; 
    6966         
    7067        public MemoryEpisode(String location, Time time) 
     
    7673                this._people = new ArrayList<String>(); 
    7774                this._objects = new ArrayList<String>(); 
    78                 //this._detailsByKey = new HashMap(); 
    7975                this._details = new ArrayList<ActionDetail>(); 
    8076                this._numberOfDominantActions = 3; 
    81                 //this._dominantActions = new ArrayList(this._numberOfDominantActions);  
    8277        } 
    8378         
     
    8782                this._people = people; 
    8883                this._objects = objects; 
    89         } 
    90          
    91         /*public MemoryEpisode(String location) 
    92         { 
    93                 this._location = location; 
    94                 this._time = null; 
    95                 this._people = new ArrayList(); 
    96                 this._objects = new ArrayList(); 
    97                 //this._detailsByKey = new HashMap(); 
    98                 this._details = new ArrayList(); 
    99                 this._numberOfDominantActions = 3; 
    100                 //this._dominantActions = new ArrayList(this._numberOfDominantActions);  
    101         }*/ 
    102          
    103          
    104         /*public String getAbstract()  
    105         { 
    106                 return this._abstract; 
    107         }*/ 
     84                this._time = new Time(); 
     85                this._details = new ArrayList<ActionDetail>(); 
     86        } 
    10887         
    10988        public void applySubstitution(Substitution s) 
     
    155134        } 
    156135         
    157         public void AddActionDetail(ActionDetail action) 
     136        public void AddActionDetail(ActionDetail ad) 
    158137        {                
    159                 _details.add(action); 
    160                          
    161                 UpdateMemoryFields(action); 
    162         } 
    163          
    164         private void UpdateMemoryFields(ActionDetail action) 
    165         { 
    166                 AddPeople(action.getSubject()); 
    167                  
    168                 Object aux = action.getTargetDetails("type"); 
     138                _details.add(ad); 
     139        } 
     140         
     141        public void UpdateMemoryFields(ActionDetail ad) 
     142        { 
     143                AddPeople(ad.getSubject()); 
     144                 
     145                //check target type 
     146                Object aux = ad.getTargetDetails("type"); 
    169147                if(new String("object").equals(aux)) 
    170148                { 
    171                         AddObject(action.getTarget()); 
     149                        AddObject(ad.getTarget()); 
    172150                } 
    173151                else if(new String("character").equals(aux)) 
    174152                { 
    175                         AddPeople(action.getTarget()); 
    176                 } 
    177                  
    178                 aux = action.getObjectDetails("type"); 
     153                        AddPeople(ad.getTarget()); 
     154                } 
     155                 
     156                // check object type 
     157                aux = ad.getObjectDetails("type"); 
    179158                if(new String("object").equals(aux)) 
    180159                { 
    181                         AddObject(action.getTarget()); 
     160                        AddObject(ad.getObject()); 
    182161                } 
    183162                else if(new String("character").equals(aux)) 
    184163                { 
    185                         AddPeople(action.getTarget()); 
     164                        AddPeople(ad.getObject()); 
    186165                } 
    187166        } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/ShortTermEpisodicMemory.java

    r772 r781  
    7272        { 
    7373                ActionDetail action; 
    74                 //System.out.println("EventID: " + eventID); 
    75                  
     74                         
    7675                action = new ActionDetail(m, ShortTermEpisodicMemory.eventID++, e, location); 
    77                                  
    78                 //System.out.println("Action added: " + action.toXML()); 
    79                  
    8076                _details.add(action); 
    81                          
    82                 //UpdateMemoryFields(action); 
     77        } 
     78         
     79        public void AddActionDetail(ActionDetail ad) 
     80        { 
     81                _details.add(ad); 
    8382        } 
    8483         
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/semanticMemory/KnowledgeBase.java

    r772 r781  
    292292        } 
    293293         
    294         public KnowledgeSlot GetObjectDetails(String objectName) 
     294        public KnowledgeSlot GetObjectDetails(String objectName, String property) 
    295295        { 
    296                 return _kB.get(objectName); 
     296                return _kB.get(objectName).get(property); 
    297297        } 
    298298 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/semanticMemory/SemanticMemory.java

    r768 r781  
    134134    } 
    135135         
    136         public KnowledgeSlot GetObjectDetails(String objectName) 
    137         { 
    138                 synchronized(this) 
    139                 { 
    140                         KnowledgeSlot object = _stm.GetObjectDetails(objectName); 
     136        public KnowledgeSlot GetObjectDetails(String objectName, String property) 
     137        { 
     138                synchronized(this) 
     139                { 
     140                        KnowledgeSlot object = _stm.GetObjectDetails(objectName, property); 
    141141                        if(object == null) 
    142                                 object = _kb.GetObjectDetails(objectName); 
     142                                object = _kb.GetObjectDetails(objectName, property); 
    143143                        return object; 
    144144                } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/semanticMemory/WorkingMemory.java

    r772 r781  
    345345        } 
    346346         
    347         public KnowledgeSlot GetObjectDetails(String objectName) 
     347        public KnowledgeSlot GetObjectDetails(String objectName, String property) 
    348348        { 
    349                 return _wM.get(objectName); 
     349                return _wM.get(objectName).get(property); 
    350350        } 
    351351         
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/sensorEffector/Event.java

    r779 r781  
    5858 
    5959import FAtiMA.Core.AgentSimulationTime; 
     60import FAtiMA.Core.memory.episodicMemory.Time; 
    6061import FAtiMA.Core.util.Constants; 
    6162import FAtiMA.Core.wellFormedNames.Name; 
     
    317318         * @param action - the action specified by the event 
    318319         * @param target - the target of the action 
     320         * @param type - the type of event 
    319321         * @param status - the status of the goal/action 
    320322         */ 
     
    329331        } 
    330332         
     333        public Event(String subject, String action, String target, short type, short status, Long time) { 
     334                _parameters = new ArrayList<Parameter>(); 
     335                _subject = subject; 
     336                _action = action; 
     337                _target = target; 
     338                _type = type; 
     339                _status = status; 
     340                _time = time; 
     341        } 
     342         
    331343        /** 
    332344         * Adds a Parameter to the event (usually arguments or parameters of the action) 
     
    416428        /** 
    417429         * Meiyii 07/01/10 
    418          * Sets the event's type (goal or action) 
     430         * Sets the event's status  
    419431         * (activation, success, failure for goal and success, failure for action) 
    420432         * @param status - the status of the event 
     
    426438        /** 
    427439         * Meiyii 07/01/10 
    428          * Sets the event's status  
     440         * Sets the event's type (goal or action) 
    429441         * @param type - the type of the event 
    430442         */ 
Note: See TracChangeset for help on using the changeset viewer.