Changeset 239


Ignore:
Timestamp:
11/18/2009 03:32:10 PM (10 years ago)
Author:
joao.dias
Message:

The agent now updates other's semantic memory when perceiving a property change.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Agent.java

    r237 r239  
    520520        public void PerceivePropertyChanged(Name propertyName, String value) 
    521521        { 
    522                 ArrayList<Symbol> symbols; 
    523                 symbols = propertyName.GetLiteralList(); 
     522 
     523                _memory.getSemanticMemory().Tell(applyPerspective(propertyName, _name), value); 
     524                 
     525                for(String other : _nearbyAgents) 
     526                { 
     527                        ModelOfOther m = _ToM.get(other); 
     528                        m.getMemory().getSemanticMemory().Tell(applyPerspective(propertyName,other), value); 
     529                } 
     530        } 
     531         
     532        private Name applyPerspective(Name n, String agentName) 
     533        { 
     534                Name newName = (Name) n.clone(); 
     535                ArrayList<Symbol> symbols = newName.GetLiteralList(); 
    524536                 
    525537                //I'm changing directly the received name; not a good thing to do 
    526538                for(int i = 0; i < symbols.size(); i++) 
    527539                { 
    528                         if(symbols.get(i).getName().equals(_name)) 
     540                        if(symbols.get(i).getName().equals(agentName)) 
    529541                        { 
    530542                                symbols.set(i, new Symbol(Constants.SELF)); 
     
    532544                } 
    533545                 
     546                return newName; 
     547        } 
     548 
     549        public void PerceivePropertyChanged(String subject, String property, String value) 
     550        { 
     551                String newSubject = subject; 
     552                Name propertyName; 
     553                 
     554                if(subject.equals(_name)) 
     555                { 
     556                        newSubject = Constants.SELF; 
     557                } 
     558                 
     559                propertyName = Name.ParseName(newSubject + "(" + property + ")"); 
    534560                _memory.getSemanticMemory().Tell(propertyName, value); 
    535         } 
    536  
    537         public void PerceivePropertyChanged(String subject, String property, String value) 
    538         { 
    539                 if(subject.equals(_name)) 
    540                 { 
    541                         subject = Constants.SELF; 
    542                 } 
    543                  
    544                 Name propertyName = Name.ParseName(subject + "(" + property + ")"); 
    545                 _memory.getSemanticMemory().Tell(propertyName, value); 
     561                 
     562                for(String other : _nearbyAgents) 
     563                { 
     564                        if(subject.equals(other)) 
     565                        { 
     566                                newSubject = Constants.SELF;  
     567                        } 
     568                        else 
     569                        { 
     570                                newSubject = subject; 
     571                        } 
     572                        ModelOfOther m = _ToM.get(other); 
     573                        propertyName = Name.ParseName(newSubject + "(" + property + ")"); 
     574                        m.getMemory().getSemanticMemory().Tell(propertyName, value); 
     575                } 
    546576        } 
    547577         
Note: See TracChangeset for help on using the changeset viewer.