Changeset 209


Ignore:
Timestamp:
11/12/2009 11:40:41 AM (10 years ago)
Author:
joao.dias
Message:

Solved a problem that was causing drives not to be displayed correctly. Introduction of some mechanisms for useful for ToM. For instance, Emotional Reactions and Action Tendencies can now be cloned. Creation of the ModelOfOther? class (will support the ToM).

Location:
AgentMind/branches/FAtiMA2/src/FAtiMA
Files:
2 added
10 edited

Legend:

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

    r199 r209  
    139139        } 
    140140         
     141        protected HashMap<String,ModelOfOther> _ToM; 
     142         
    141143        protected EmotionalState _emotionalState; 
    142144        protected MotivationalState _motivationalState; 
     
    178180                _memory = new Memory(); 
    179181                _motivationalState = new MotivationalState(); 
     182                 
     183                _ToM = new HashMap<String, ModelOfOther>(); 
    180184                 
    181185                _saveDirectory = saveDirectory; 
     
    354358                        ObjectOutputStream s = new ObjectOutputStream(out); 
    355359 
     360                        s.writeObject(_ToM); 
    356361                        s.writeObject(_deliberativeLayer); 
    357362                        s.writeObject(_reactiveLayer); 
     
    387392                FileInputStream in = new FileInputStream(fileName); 
    388393                ObjectInputStream s = new ObjectInputStream(in); 
     394                this._ToM = (HashMap<String, ModelOfOther>) s.readObject(); 
    389395                this._deliberativeLayer = (DeliberativeProcess) s.readObject(); 
    390396                this._reactiveLayer = (ReactiveProcess) s.readObject(); 
     
    671677        } 
    672678         
     679        public void initializeModelOfOther(String name) 
     680        { 
     681                if(!_ToM.containsKey(name)) 
     682                { 
     683                        ModelOfOther model = new ModelOfOther(name, _reactiveLayer.getEmotionalReactions(), _reactiveLayer.getActionTendencies()); 
     684                        _ToM.put(name, model); 
     685                } 
     686        } 
     687         
    673688         
    674689         
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/AgentDisplay.java

    r199 r209  
    6969                _displayPane.addTab("Drives", null, panel, "displays the character's drives.");*/ 
    7070                 
    71                 panel = new NeedsPanel(ag.getName(), ag.getName()); 
     71                panel = new NeedsPanel(); 
    7272                _displayPane.addTab("Needs",null,panel,"displays the characters needs"); 
    7373                 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/DrivesDisplay.java

    r191 r209  
    1111import FAtiMA.AgentModel; 
    1212import FAtiMA.motivationalSystem.MotivationalState; 
     13import FAtiMA.util.Constants; 
    1314import FAtiMA.util.enumerables.MotivatorType; 
    1415 
     
    2627        //TODO: The way that the constructor distinguishes from the agent's needs panel 
    2728        //of the other agents needs panel is getting agentName == null;  
    28         public DrivesDisplay(String agentName, String selfName) { 
     29        public DrivesDisplay(String agentName) { 
    2930 
    3031                super(); 
    3132 
    3233                _agentName = agentName; 
    33                 boolean isSelf = (agentName.equalsIgnoreCase(selfName)); 
     34                boolean isSelf = (agentName.equalsIgnoreCase(Constants.SELF)); 
    3435 
    3536                _panel = new JPanel(); 
    3637                 
    37                  
    38                  
    39                 if(isSelf){ 
    40                         _panel.setBorder(BorderFactory.createTitledBorder("Self"));              
    41                 }else{ 
    42                         _panel.setBorder(BorderFactory.createTitledBorder(agentName)); 
    43                 } 
     38                _panel.setBorder(BorderFactory.createTitledBorder(agentName)); 
    4439             
    4540                 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/NeedsPanel.java

    r191 r209  
    1313import FAtiMA.Agent; 
    1414import FAtiMA.AgentModel; 
     15import FAtiMA.util.Constants; 
    1516 
    1617public class NeedsPanel extends AgentDisplayPanel { 
     
    2223        private int _previousKnownAgents; 
    2324 
    24         public NeedsPanel(String agentName, String selfName) { 
     25        public NeedsPanel() { 
    2526                 
    2627                super(); 
     
    4243                this.add(goalsScrool); 
    4344                 
    44                 DrivesDisplay aux = new DrivesDisplay(agentName, selfName); 
     45                DrivesDisplay aux = new DrivesDisplay(Constants.SELF); 
    4546                _needs.add(aux.getDrivesPanel()); 
    46                 _drivesDisplays.put(agentName,aux); 
     47                _drivesDisplays.put(Constants.SELF,aux); 
    4748                 
    4849                 
     
    7778                                 
    7879                                if(_drivesDisplays.get(agentName) == null){ 
    79                                         DrivesDisplay aux = new DrivesDisplay(agentName, am.getName()); 
     80                                        DrivesDisplay aux = new DrivesDisplay(agentName); 
    8081                                        _needs.add(aux.getDrivesPanel()); 
    8182                                        _drivesDisplays.put(agentName,aux); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/STMRecordDisplay.java

    r198 r209  
    4949        private JPanel _panel; 
    5050    private JPanel _details; 
    51     private static int _lastID = 0; 
    52     private static int _previousID = 0; 
     51 
    5352     
    5453    public STMRecordDisplay(AgentModel am) { 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/memory/episodicMemory/ShortTermEpisodicMemory.java

    r198 r209  
    7373                //System.out.println("EventID: " + eventID); 
    7474                 
    75                 action = new ActionDetail(m, eventID++, e, location); 
     75                action = new ActionDetail(m, ShortTermEpisodicMemory.eventID++, e, location); 
    7676                                 
    7777                //System.out.println("Action added: " + action.toXML()); 
     
    8989        public void SetEventID(int eventID) 
    9090        { 
    91                 this.eventID = eventID; 
     91                ShortTermEpisodicMemory.eventID = eventID; 
    9292        } 
    9393         
    9494        public void ResetEventID() 
    9595        { 
    96                 this.eventID = 0; 
     96                ShortTermEpisodicMemory.eventID = 0; 
    9797        } 
    9898         
  • AgentMind/branches/FAtiMA2/src/FAtiMA/reactiveLayer/ActionTendencies.java

    r191 r209  
    6161 * @author João Dias 
    6262 */ 
    63 public class ActionTendencies implements Serializable { 
     63public class ActionTendencies implements Serializable, Cloneable { 
    6464 
    6565        /** 
     
    113113                Long wakeUpTime = new Long(AgentSimulationTime.GetInstance().Time() + time); 
    114114                _filteredActions.put(va.GetAction().toString(),wakeUpTime); 
     115        } 
     116         
     117        public void ClearFilters() 
     118        { 
     119                _filteredActions.clear(); 
    115120        } 
    116121         
     
    201206                } 
    202207        } 
     208         
     209        public Object clone() 
     210        { 
     211                ActionTendencies at = new ActionTendencies(); 
     212                for(Action a : this._actions) 
     213                { 
     214                        at._actions.add(a); 
     215                } 
     216                 
     217                at._filteredActions = new HashMap<String,Long>(_filteredActions); 
     218                 
     219                return at; 
     220        } 
    203221} 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/reactiveLayer/EmotionalReactionTreeNode.java

    r191 r209  
    4848import java.util.HashMap; 
    4949import java.util.Iterator; 
    50  
    51 import FAtiMA.IIntegrityTester; 
     50import java.util.Map; 
     51 
    5252import FAtiMA.IntegrityValidator; 
    5353import FAtiMA.exceptions.UnknownSpeechActException; 
     
    6464 */ 
    6565 
    66 public class EmotionalReactionTreeNode implements IIntegrityTester, Serializable { 
     66public class EmotionalReactionTreeNode implements Serializable, IReactionNode { 
    6767     
    6868        /** 
     
    7979        private static String nullValue = "null"; 
    8080         
    81         private HashMap<String,Object> _childs; 
     81        private HashMap<String,IReactionNode> _childs; 
    8282 
    8383        private String _type; 
     
    9292         */ 
    9393        public EmotionalReactionTreeNode(String type, String value) { 
    94                 _childs = new HashMap<String,Object>(); 
     94                _childs = new HashMap<String,IReactionNode>(); 
    9595                _type = type; 
    9696        } 
     
    102102        public EmotionalReactionTreeNode(String type) 
    103103        { 
    104             _childs = new HashMap<String,Object>(); 
     104            _childs = new HashMap<String,IReactionNode>(); 
    105105            _type = type; 
    106106        } 
     
    177177         */  
    178178        public void CheckIntegrity(IntegrityValidator val) throws UnknownSpeechActException { 
    179             Iterator<Object> it = _childs.values().iterator(); 
     179            Iterator<IReactionNode> it = _childs.values().iterator(); 
    180180             
    181181            while(it.hasNext()) { 
    182                 ((IIntegrityTester) it.next()).CheckIntegrity(val); 
     182                it.next().CheckIntegrity(val); 
    183183            } 
    184184        } 
     
    268268                else return ((EmotionalReactionTreeNode) obj).MatchEvent(e); 
    269269        } 
     270         
     271        public Object clone() 
     272        { 
     273                EmotionalReactionTreeNode n = new EmotionalReactionTreeNode(_type); 
     274                n._childs = new HashMap<String, IReactionNode>(); 
     275                 
     276                for(Map.Entry<String, IReactionNode> e : _childs.entrySet()) 
     277                { 
     278                        n._childs.put(e.getKey(), (IReactionNode) e.getValue().clone()); 
     279                } 
     280                  
     281                return n; 
     282        } 
     283 
     284        @Override 
     285        public Reaction getReaction(Event e) { 
     286                return MatchEvent(e); 
     287        } 
    270288} 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/reactiveLayer/Reaction.java

    r191 r209  
    4141import java.util.ListIterator; 
    4242 
    43 import FAtiMA.IIntegrityTester; 
    4443import FAtiMA.IntegrityValidator; 
    4544import FAtiMA.exceptions.UnknownSpeechActException; 
     
    5958 * @author João Dias 
    6059 */ 
    61 public class Reaction implements IIntegrityTester, Serializable, IGroundable, Cloneable { 
     60public class Reaction implements Serializable, IGroundable, IReactionNode { 
    6261         
    6362        /** 
     
    348347                return _event + " (" + _desirability + "," + _desirabilityForOther + "," + _praiseworthiness + ")"; 
    349348        } 
     349 
     350        @Override 
     351        public Reaction getReaction(Event e) { 
     352                return this; 
     353        } 
    350354} 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/sensorEffector/RemoteAgent.java

    r198 r209  
    764764                        if(!subject.equalsIgnoreCase(_agent.getName()) &&  
    765765                       properties[0].equalsIgnoreCase("isPerson") || 
    766                        (properties[0].equalsIgnoreCase("type") && properties[1].equalsIgnoreCase("character"))){ 
    767                                  
     766                       (properties[0].equalsIgnoreCase("type") && properties[1].equalsIgnoreCase("character"))) 
     767                        { 
     768                                _agent.initializeModelOfOther(subject); 
    768769                                _agent.getMotivationalState().InitializeOtherAgentMotivators(subject); 
    769770                                 
Note: See TracChangeset for help on using the changeset viewer.