Ignore:
Timestamp:
03/13/2009 01:57:36 PM (11 years ago)
Author:
myl
Message:

Added FAtiMA.memory package that holds common classes to both AutobiographicalMemory and ShortTermMemory. Refactoring of FAtiMA.AutobiographicalMemory and FAtiMA.ShortTermMemory. Operations that involve data from both AM and STM is now performed in Memory.java

Location:
AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory
Files:
1 added
1 edited
2 copied
5 moved

Legend:

Unmodified
Added
Removed
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory/ActionDetail.java

    r3 r5  
    3636 * João Dias: 24/03/2008 - Added time to individual actions stored in AM 
    3737 * Meiyii Lim: 11/03/2009 - Added location to individual actions  
     38 * Meiyii Lim: 13/03/2009 - Moved the class from FAtiMA.autobiographicalMemory package 
    3839 */ 
    39 package FAtiMA.autobiographicalMemory; 
     40package FAtiMA.memory; 
    4041 
    4142import java.io.Serializable; 
     
    4748import FAtiMA.knowledgeBase.KnowledgeBase; 
    4849import FAtiMA.knowledgeBase.KnowledgeSlot; 
     50import FAtiMA.memory.Memory; 
    4951import FAtiMA.sensorEffector.Event; 
    5052import FAtiMA.sensorEffector.Parameter; 
     
    5254import FAtiMA.socialRelations.RespectRelation; 
    5355import FAtiMA.util.enumerables.EmotionType; 
    54 import FAtiMA.shortTermMemory.ShortTermMemory;; 
    5556 
    5657 
     
    203204                        case EmotionType.ADMIRATION: 
    204205                        { 
    205                                 String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
    206                                 RespectRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
     206                                String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
     207                                RespectRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
    207208                                this._evaluation.add(aux); 
    208209                                break; 
     
    210211                        case EmotionType.REPROACH: 
    211212                        { 
    212                                 String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
    213                                 RespectRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
     213                                String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
     214                                RespectRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
    214215                                this._evaluation.add(aux); 
    215216                                break; 
     
    217218                        case EmotionType.HAPPYFOR: 
    218219                        { 
    219                                 String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
     220                                String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
    220221                                this._evaluation.add(aux); 
    221222                                break; 
     
    223224                        case EmotionType.GLOATING: 
    224225                        { 
    225                                 String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
     226                                String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
    226227                                this._evaluation.add(aux); 
    227228                                break; 
     
    229230                        case EmotionType.PITTY: 
    230231                        { 
    231                                 String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
     232                                String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).increment(em.GetIntensity()); 
    232233                                this._evaluation.add(aux); 
    233234                                break; 
     
    235236                        case EmotionType.RESENTMENT: 
    236237                        { 
    237                                 String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
     238                                String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),em.GetDirection().toString()).decrement(em.GetIntensity()); 
    238239                                this._evaluation.add(aux); 
    239240                                break; 
     
    242243                        case EmotionType.JOY: 
    243244                        { 
    244                                 if(_target != null && _target.equals(AutobiographicalMemory.GetInstance().getSelf())) 
    245                                 { 
    246                                         String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),_subject).increment(em.GetIntensity()); 
     245                                if(_target != null && _target.equals(Memory.GetInstance().getSelf())) 
     246                                { 
     247                                        String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),_subject).increment(em.GetIntensity()); 
    247248                                        this._evaluation.add(aux); 
    248249                                } 
     
    251252                        case EmotionType.DISTRESS: 
    252253                        { 
    253                                 if(_target != null && _target.equals(AutobiographicalMemory.GetInstance().getSelf())) 
    254                                 { 
    255                                         String aux = LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(),_subject).decrement(em.GetIntensity()); 
     254                                if(_target != null && _target.equals(Memory.GetInstance().getSelf())) 
     255                                { 
     256                                        String aux = LikeRelation.getRelation(Memory.GetInstance().getSelf(),_subject).decrement(em.GetIntensity()); 
    256257                                        this._evaluation.add(aux); 
    257258                                } 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory/ActionDetailComparator.java

    r2 r5  
    2626 * History:  
    2727 * João Dias: 27/08/2006 - File created 
     28 * Meiyii Lim: 13/03/2009 - Moved the class from FAtiMA.autobiographicalMemory package 
    2829 */ 
    2930 
    30 package FAtiMA.autobiographicalMemory; 
     31package FAtiMA.memory; 
    3132 
    3233import java.util.Comparator; 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory/SearchKey.java

    r2 r5  
    2828 * João Dias: 02/10/2006 - Now its possible to have SearchKeys with objects instead 
    2929 *                                                 of Strings 
     30 * Meiyii Lim: 13/03/2009 - Moved the class from FAtiMA.autobiographicalMemory package 
    3031 * **/ 
    3132 
    32 package FAtiMA.autobiographicalMemory; 
     33package FAtiMA.memory; 
    3334 
    3435public class SearchKey { 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory/Time.java

    r2 r5  
    2626 * History:  
    2727 * João Dias: 18/Jul/2006 - File created 
     28 * Meiyii Lim: 13/03/2009 - Moved the class from FAtiMA.autobiographicalMemory package 
    2829 * **/ 
    2930 
    30 package FAtiMA.autobiographicalMemory; 
     31package FAtiMA.memory; 
    3132 
    3233import java.io.Serializable; 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory/autobiographicalMemory/AutobiographicalMemory.java

    r3 r5  
    3737 *                                                 provides a method that verifies if new data was added since last time it 
    3838 *                                                 was verified 
     39 * Meiyii Lim: 12/03/2009 - remove the search for recent event in AM, it is now performed in STM, 
     40 *                                                      AM now stores only external events that have an emotional impact on the agent 
     41 *                                                      and internal events (ie. goal activation, success and failure)  
    3942 * **/ 
    4043 
    41 package FAtiMA.autobiographicalMemory; 
     44package FAtiMA.memory.autobiographicalMemory; 
    4245 
    4346import java.io.FileInputStream; 
     
    5154import FAtiMA.AgentSimulationTime; 
    5255import FAtiMA.deliberativeLayer.goals.Goal; 
    53 import FAtiMA.emotionalState.ActiveEmotion; 
    54 import FAtiMA.knowledgeBase.KnowledgeBase; 
     56import FAtiMA.memory.ActionDetail; 
    5557import FAtiMA.sensorEffector.Event; 
    56 import FAtiMA.sensorEffector.Parameter; 
    5758import FAtiMA.util.AgentLogger; 
    58 import FAtiMA.wellFormedNames.Name; 
    59 import FAtiMA.wellFormedNames.Symbol; 
    60 import FAtiMA.shortTermMemory.ShortTermMemory; 
    61  
    6259 
    6360public class AutobiographicalMemory implements Serializable { 
     
    130127        } 
    131128         
    132         private String _self; 
    133129        private ArrayList _memoryEvents; 
    134         private boolean _newData; 
    135130         
    136131        private AutobiographicalMemory() 
    137132        { 
    138133                this._memoryEvents = new ArrayList(); 
    139                 this._newData = false; 
    140         } 
    141          
    142         public void setSelf(String selfName) 
    143         { 
    144                 this._self = selfName; 
    145         } 
    146          
    147         public String getSelf() 
    148         { 
    149                 return this._self;  
    150         } 
    151          
    152         public static ArrayList GenerateSearchKeys(Event e) 
    153         {        
    154                 ArrayList keys = new ArrayList(); 
    155                 ArrayList params = new ArrayList(); 
    156                 Parameter param; 
    157                  
    158                 keys.add(new SearchKey(SearchKey.SUBJECT,e.GetSubject())); 
    159                  
    160                 keys.add(new SearchKey(SearchKey.ACTION,e.GetAction())); 
    161                  
    162                 if(e.GetTarget() != null) 
    163                 { 
    164                         keys.add(new SearchKey(SearchKey.TARGET, e.GetTarget())); 
    165                 } 
    166                  
    167                 if(e.GetParameters().size() > 0) 
    168                 { 
    169                         for(ListIterator li = e.GetParameters().listIterator();li.hasNext();) 
    170                         { 
    171                                 param = (Parameter) li.next(); 
    172                                 params.add(param.GetValue().toString()); 
    173                         } 
    174                         keys.add(new SearchKey(SearchKey.PARAMETERS, params)); 
    175                 } 
    176                  
    177                 return keys; 
    178134        } 
    179135         
     
    205161                        event.AddActionDetail(action); 
    206162                } 
    207                 /*MemoryEpisode event; 
    208                 String oldLocation; 
    209                 Name locationKey = Name.ParseName(_self + "(location)"); 
    210                  
    211                  
    212                 String newLocation = (String) KnowledgeBase.GetInstance().AskProperty(locationKey); 
    213                  
    214                 synchronized (this) { 
    215                         if(this._memoryEvents.size() == 0) 
    216                         { 
    217                                 event = new MemoryEpisode(newLocation); 
    218                                 this._memoryEvents.add(event); 
    219                         } 
    220                         else 
    221                         { 
    222                                 event = (MemoryEpisode) this._memoryEvents.get(this._memoryEvents.size()-1); 
    223                                 oldLocation = event.getLocation(); 
    224                                 if(oldLocation == null) { 
    225                                         event.setLocation(newLocation); 
    226                                 } 
    227                                 else if(!event.getLocation().equals(newLocation) || 
    228                                                 (AgentSimulationTime.GetInstance().Time() - event.getTime().getNarrativeTime()) > 900000) 
    229                                 { 
    230                                         event = new MemoryEpisode(newLocation); 
    231                                         this._memoryEvents.add(event); 
    232                                 } 
    233                         }        
    234                         event.AddActionDetail(e); 
    235                         //System.out.println("Memory Events size: " + _memoryEvents.size()); 
    236                         //System.out.println("Event: " + e.toString()); 
    237                          
    238                         this._newData = true; 
    239                 }*/ 
    240         } 
    241          
    242         /** 
    243          * This methods verifies if any new data was added to the AutobiographicalMemory since 
    244          * the last time this method was called.  
    245          * @return 
    246          */ 
    247         public boolean HasNewData() 
    248         { 
    249                 boolean aux = this._newData; 
    250                 this._newData = false; 
    251                 return aux; 
    252163        } 
    253164         
     
    279190        } 
    280191         
    281         public Float AssessGoalProbability(Goal g) 
    282         { 
    283                 int numberOfSuccess; 
    284                 int numberOfTries; 
    285                 numberOfTries = CountEvent(AutobiographicalMemory.GenerateSearchKeys(g.GetActivationEvent()));                                           
    286                 if(numberOfTries == 0) 
    287                 { 
    288                         return null; 
    289                 } 
    290                  
    291                 numberOfSuccess = CountEvent(AutobiographicalMemory.GenerateSearchKeys(g.GetSuccessEvent()));                                    
    292                 return new Float(numberOfSuccess/numberOfTries); 
    293         } 
    294          
    295192        public float AssessGoalFamiliarity(Goal g) 
     193        { 
     194                MemoryEpisode episode; 
     195                float similarEvents = 0; 
     196                 
     197                synchronized(this) 
     198                { 
     199                        for(int i=0; i<this._memoryEvents.size(); i++) 
     200                        { 
     201                                episode = (MemoryEpisode) this._memoryEvents.get(i); 
     202                                similarEvents += episode.AssessGoalFamiliarity(g); 
     203                        } 
     204                }                
     205                return similarEvents; 
     206        } 
     207         
     208         
     209        // currently not used 
     210        public float AssessFamiliarity(Event e) 
    296211        { 
    297212                MemoryEpisode episode; 
     
    304219                        { 
    305220                                episode = (MemoryEpisode) this._memoryEvents.get(i); 
    306                                 similarEvents += episode.AssessGoalFamiliarity(g); 
     221                                similarEvents += episode.AssessFamiliarity(e); 
    307222                        } 
    308223                } 
     
    315230        } 
    316231         
    317          
    318         public float AssessFamiliarity(Event e) 
    319         { 
    320                 MemoryEpisode episode; 
    321                 float similarEvents = 0; 
    322                 float familiarity = 0; 
    323                  
    324                 synchronized(this) 
    325                 { 
    326                         for(int i=0; i<this._memoryEvents.size(); i++) 
    327                         { 
    328                                 episode = (MemoryEpisode) this._memoryEvents.get(i); 
    329                                 similarEvents += episode.AssessFamiliarity(e); 
    330                         } 
    331                 } 
    332                  
    333                 //familiarity function f(x) = 1 - 1/(x/2 +1) 
    334                 // where x represents the number of similar events founds 
    335                 familiarity = 1 - (1 / (similarEvents/2 + 1)); 
    336                  
    337                 return familiarity; 
    338         } 
    339          
    340232        public int CountEvent(ArrayList searchKeys) 
    341233        { 
     
    359251                } 
    360252        } 
    361          
    362         /*public ArrayList SearchForRecentEvents(ArrayList searchKeys) 
    363         { 
    364                 MemoryEpisode currentEpisode; 
    365                  
    366                 synchronized (this) { 
    367                         if(this._memoryEvents.size() > 0) 
    368                         { 
    369                                 currentEpisode = (MemoryEpisode) this._memoryEvents.get(this._memoryEvents.size()-1); 
    370                                 return currentEpisode.GetDetailsByKeys(searchKeys); 
    371                         } 
    372                         return new ArrayList(); 
    373                 } 
    374         }*/ 
    375253         
    376254        public ArrayList SearchForPastEvents(ArrayList keys)  
     
    405283                } 
    406284        } 
    407          
    408         /*public boolean ContainsRecentEvent(ArrayList searchKeys) 
    409         { 
    410                 MemoryEpisode currentEpisode; 
    411                  
    412                 synchronized (this) { 
    413                         if(this._memoryEvents.size() > 0) 
    414                         { 
    415                                 currentEpisode = (MemoryEpisode) this._memoryEvents.get(this._memoryEvents.size()-1); 
    416                                  
    417                                 return currentEpisode.VerifiesKeys(searchKeys); 
    418                         } 
    419                         return false; 
    420                 } 
    421         }*/ 
    422285         
    423286        public boolean ContainsPastEvent(ArrayList searchKeys) 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory/autobiographicalMemory/MemoryEpisode.java

    r3 r5  
    3333 * **/ 
    3434 
    35 package FAtiMA.autobiographicalMemory; 
     35package FAtiMA.memory.autobiographicalMemory; 
    3636 
    3737import java.io.Serializable; 
     
    4343 
    4444import FAtiMA.deliberativeLayer.goals.Goal; 
    45 import FAtiMA.emotionalState.ActiveEmotion; 
    4645import FAtiMA.emotionalState.BaseEmotion; 
     46import FAtiMA.memory.ActionDetail; 
     47import FAtiMA.memory.ActionDetailComparator; 
     48import FAtiMA.memory.SearchKey; 
     49import FAtiMA.memory.Time; 
    4750import FAtiMA.sensorEffector.Event; 
    4851import FAtiMA.util.enumerables.EmotionValence; 
     52import FAtiMA.memory.Memory; 
    4953 
    5054 
     
    498502                                familiarity += 0.2; 
    499503                                 
    500                                 if(action.getSubject().equals(AutobiographicalMemory.GetInstance().getSelf())) 
     504                                if(action.getSubject().equals(Memory.GetInstance().getSelf())) 
    501505                                { 
    502506                                        //if the event was performed by me, I'm more familiar with it 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/memory/autobiographicalMemory/SummaryGenerator.java

    r1 r5  
    2929 * **/ 
    3030 
    31 package FAtiMA.autobiographicalMemory; 
     31package FAtiMA.memory.autobiographicalMemory; 
    3232 
    3333import java.util.ArrayList; 
     
    3535import FAtiMA.emotionalState.BaseEmotion; 
    3636import FAtiMA.knowledgeBase.KnowledgeBase; 
     37import FAtiMA.memory.ActionDetail; 
    3738import FAtiMA.sensorEffector.SpeechAct; 
    3839import FAtiMA.util.enumerables.EmotionType; 
    3940import FAtiMA.wellFormedNames.Name; 
     41import FAtiMA.memory.Memory; 
    4042 
    4143/** 
     
    5254                String actionSummary = "<Subject>"; 
    5355                 
    54                 if(action.getSubject().equals(AutobiographicalMemory.GetInstance().getSelf())) 
     56                if(action.getSubject().equals(Memory.GetInstance().getSelf())) 
    5557                { 
    5658                        actionSummary += "I"; 
     
    99101                        actionSummary += "<Target>"; 
    100102                         
    101                         if(action.getTarget().equals(AutobiographicalMemory.GetInstance().getSelf())) 
     103                        if(action.getTarget().equals(Memory.GetInstance().getSelf())) 
    102104                        { 
    103105                                actionSummary += "me"; 
     
    113115                                                if(aux2 != null) 
    114116                                                { 
    115                                                         if(AutobiographicalMemory.GetInstance().getSelf().equals(aux2)) 
     117                                                        if(Memory.GetInstance().getSelf().equals(aux2)) 
    116118                                                        { 
    117119                                                                actionSummary += "my "; 
Note: See TracChangeset for help on using the changeset viewer.