Changeset 253


Ignore:
Timestamp:
12/15/2009 02:20:00 PM (11 years ago)
Author:
myl
Message:

Merging the FAtiMA in the branch back to trunk

Location:
AgentMind/trunk/AgentMind/FAtiMA
Files:
10 deleted
95 edited
33 copied

Legend:

Unmodified
Added
Removed
  • AgentMind/trunk/AgentMind/FAtiMA

  • AgentMind/trunk/AgentMind/FAtiMA/.classpath

    r235 r253  
    33        <classpathentry kind="src" path="src"/> 
    44        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    5         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/drools-compiler-5.0.1.jar"/> 
    6         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/drools-core-5.0.1.jar"/> 
    7         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/lib/xstream-1.3.1.jar"/> 
    8         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/lib/core-3.4.2.v_883_R34x.jar"/> 
    9         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/drools-api-5.0.1.jar"/> 
    10         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/drools-jsr94-5.0.1.jar"/> 
    11         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/lib/jsr94-1.1.jar"/> 
    12         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/lib/mvel2-2.0.10.jar"/> 
    13         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/lib/antlr-runtime-3.1.1.jar"/> 
    14         <classpathentry kind="lib" path="C:/Meiyii/LIREC/Ontology/Rule Engine/drools/drools-5.0-bin/lib/joda-time-1.6.jar"/> 
    155        <classpathentry kind="output" path="bin"/> 
    166</classpath> 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/ActionLibrary.java

    r1 r253  
    4747import FAtiMA.util.parsers.StripsOperatorsLoaderHandler; 
    4848import FAtiMA.wellFormedNames.Name; 
     49import FAtiMA.wellFormedNames.Substitution; 
    4950import FAtiMA.wellFormedNames.Unifier; 
    5051 
     
    126127        } 
    127128 
    128         private ArrayList _actions; 
     129        private ArrayList<Step> _actions; 
    129130         
    130131        /** 
     
    134135        private ActionLibrary() 
    135136        { 
    136                 _actions = new ArrayList(); 
     137                _actions = new ArrayList<Step>(); 
    137138        } 
    138139         
    139         public void LoadActionsFile(String xmlFile, String self) throws ActionsParsingException 
     140        public void LoadActionsFile(String xmlFile, AgentModel am) throws ActionsParsingException 
    140141        { 
    141                 StripsOperatorsLoaderHandler op = LoadOperators(xmlFile, self); 
     142                StripsOperatorsLoaderHandler op = LoadOperators(xmlFile, am); 
    142143                _actions = op.getOperators(); 
    143144        } 
    144145         
    145         private StripsOperatorsLoaderHandler LoadOperators(String xmlFile, String self) throws ActionsParsingException { 
     146        private StripsOperatorsLoaderHandler LoadOperators(String xmlFile, AgentModel am) throws ActionsParsingException { 
    146147                AgentLogger.GetInstance().logAndPrint("LOAD: " + xmlFile); 
    147148                 
    148                 StripsOperatorsLoaderHandler op = new StripsOperatorsLoaderHandler(self); 
     149                StripsOperatorsLoaderHandler op = new StripsOperatorsLoaderHandler(am); 
    149150                 
    150151                try { 
     
    159160        } 
    160161         
    161         public ArrayList GetActions() 
     162        public ArrayList<Step> GetActions() 
    162163        { 
    163164                return _actions; 
     
    167168        { 
    168169                Step s; 
    169                 ArrayList subst; 
     170                ArrayList<Substitution> subst; 
    170171                 
    171                 for(ListIterator li = _actions.listIterator(); li.hasNext();) 
     172                for(ListIterator<Step> li = _actions.listIterator(); li.hasNext();) 
    172173                { 
    173174                        s = (Step) li.next(); 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Agent.java

    r139 r253  
    22 
    33import java.io.File; 
     4 
    45import java.io.FileInputStream; 
    56import java.io.FileOutputStream; 
     
    89import java.io.ObjectOutputStream; 
    910import java.util.ArrayList; 
     11import java.util.Collection; 
    1012import java.util.HashMap; 
    1113import java.util.ListIterator; 
     
    2729import FAtiMA.deliberativeLayer.goals.GoalLibrary; 
    2830import FAtiMA.emotionalState.ActiveEmotion; 
     31import FAtiMA.emotionalState.Appraisal; 
     32import FAtiMA.emotionalState.AppraisalVector; 
    2933import FAtiMA.emotionalState.BaseEmotion; 
    3034import FAtiMA.emotionalState.EmotionalState; 
    3135import FAtiMA.exceptions.UnknownGoalException; 
    32 import FAtiMA.knowledgeBase.KnowledgeBase; 
    33 import FAtiMA.memory.KnowledgeSlot; 
    3436import FAtiMA.memory.Memory; 
    35 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    36 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
     37import FAtiMA.memory.semanticMemory.KnowledgeSlot; 
    3738import FAtiMA.motivationalSystem.MotivationalState; 
     39import FAtiMA.reactiveLayer.ActionTendencies; 
     40import FAtiMA.reactiveLayer.EmotionalReactionTreeNode; 
     41import FAtiMA.reactiveLayer.Reaction; 
    3842import FAtiMA.reactiveLayer.ReactiveProcess; 
    3943import FAtiMA.sensorEffector.Event; 
     
    4549import FAtiMA.socialRelations.LikeRelation; 
    4650import FAtiMA.util.AgentLogger; 
     51import FAtiMA.util.Constants; 
    4752import FAtiMA.util.enumerables.AgentPlatform; 
    4853import FAtiMA.util.enumerables.EmotionType; 
     
    5156import FAtiMA.util.parsers.ScenarioLoaderHandler; 
    5257import FAtiMA.wellFormedNames.Name; 
    53 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
    54  
    55 public class Agent { 
    56          
    57          /** 
    58      * The main method 
    59          * @throws SAXException  
    60          * @throws ParserConfigurationException  
    61          * @throws IOException  
    62      */ 
    63          
    64         static public void main(String args[]) throws ParserConfigurationException, SAXException, IOException  { 
    65                 short agentPlatform = 0; 
    66                 String platform; 
    67                                  
    68                 if(args.length == 0){ 
    69                         System.out.println("ERROR: zero arguments."); 
    70                         System.exit(1);  
    71                 } 
    72                  
    73                 //Load the arguments from the scenario definition present in scenarios.xml       
    74                 if(args.length == 2){ 
    75                         ScenarioLoaderHandler scenHandler = new ScenarioLoaderHandler(args[0],args[1]); 
    76                         SAXParserFactory factory = SAXParserFactory.newInstance(); 
    77                         SAXParser parser = factory.newSAXParser(); 
    78                         //parser.parse(new File(MIND_PATH + "Scenarios.xml"), scenHandler); 
    79                         parser.parse(new File(MIND_PATH + "LIRECScenarios.xml"), scenHandler); 
    80                         args = scenHandler.getAgentArguments(); 
    81                 } 
    82                  
    83                 platform = args[0]; 
    84                  
    85                 if(platform.equalsIgnoreCase("ION")){ 
    86                         agentPlatform = AgentPlatform.ION; 
    87                 }else if(platform.equalsIgnoreCase("WORLDSIM")){ 
    88                         agentPlatform = AgentPlatform.WORLDSIM; 
    89                 }else{ 
    90                         System.err.println("ERROR: The first argument should be 'ion' or 'worldsim' according to the platform in use."); 
    91                         System.exit(1); 
    92                 } 
    93                  
    94                 switch(agentPlatform){ 
    95                         case AgentPlatform.ION: 
    96                                 if(args.length == 14){ 
    97                                          
    98                                         new Agent(agentPlatform,args[1], Integer.parseInt(args[2]), args[3],Boolean.parseBoolean(args[10]), args[4], args[5], args[6], args[7], args[8], args[9],args[11],args[12],args[13],null,null); 
    99                                 } 
    100                                 else if(args.length == 5) 
    101                                 { 
    102                                         System.err.println("Creating the agent instance"); 
    103                                         new Agent(agentPlatform,args[1],Integer.parseInt(args[2]), args[3], args[4]); 
    104                                 } 
    105                                 else 
    106                                 { 
    107                                         System.err.println("Wrong number of arguments!"); 
    108                                 } 
    109                                 break; 
    110                                  
    111                         case AgentPlatform.WORLDSIM: 
    112                                 String saveDirectory = "data/log/"; 
    113                                 if (args.length == 4){ 
    114                                         new Agent(agentPlatform, args[1],Integer.parseInt(args[2]),saveDirectory,args[3]); 
    115                                 }else if(args.length >= 11){ 
    116                                         HashMap properties = new HashMap(); 
    117                                         ArrayList goals = new ArrayList(); 
    118                                         readPropertiesAndGoals(args, properties, goals); 
    119                                         new Agent(agentPlatform,args[1], Integer.parseInt(args[2]),saveDirectory,Boolean.parseBoolean(args[3]),args[4],null,null, args[5], args[6], args[7],args[8],args[9],args[10], properties, goals);                
    120                                 }else{ 
    121                                         System.err.println("Wrong number of arguments!"); 
    122                                 } 
    123                                 break; 
    124                 } 
    125  
    126         } 
    127          
    128         static private void readPropertiesAndGoals(String args[],HashMap properties,ArrayList goals){ 
    129                 StringTokenizer st; 
    130                 String left; 
    131                          
    132                 for(int i = 11; i < args.length; i++) { 
    133                         st = new StringTokenizer(args[i], ":"); 
    134                         left = st.nextToken(); 
    135                         if(left.equals("GOAL")) { 
    136                             goals.add(st.nextToken()); 
    137                         } 
    138                         else properties.put(left, st.nextToken()); 
    139                 } 
    140         } 
    141          
     58import FAtiMA.wellFormedNames.Symbol; 
     59 
     60import FAtiMA.memory.ICompoundCue; 
     61import FAtiMA.memory.ISpreadActivate; 
     62 
     63public class Agent implements AgentModel { 
     64         
     65        protected HashMap<String,ModelOfOther> _ToM; 
     66        protected ArrayList<String> _nearbyAgents; 
     67         
     68        protected EmotionalState _emotionalState; 
     69        protected MotivationalState _motivationalState; 
     70        protected Memory _memory; 
    14271         
    14372         
     
    14776        protected DialogManager _dialogManager; 
    14877 
    149         protected ArrayList _actionsForExecution; 
    150         protected ArrayList _perceivedEvents; 
     78        protected ArrayList<ValuedAction> _actionsForExecution; 
     79        protected ArrayList<Event> _perceivedEvents; 
    15180 
    15281        protected RemoteAgent _remoteAgent; 
    15382        protected String _role; 
    154         protected String _self; //the agent's name 
     83        protected String _name; //the agent's name 
    15584        protected String _sex; 
    15685        protected String _displayName;  
     
    16493        protected Logger _logger; 
    16594 
     95        protected ICompoundCue _compoundCue; 
     96        protected ISpreadActivate _spreadActivate; 
     97         
    16698        private String _saveDirectory; 
    16799        public static final String MIND_PATH = "data/characters/minds/"; 
    168100        private static final Name ACTION_CONTEXT = Name.ParseName("ActionContext()"); 
    169          
    170         private boolean _readyForNextStep = false; 
    171  
    172         public Agent(short agentPlatform, String host, int port, String saveDirectory, boolean displayMode, String name,String lActDatabase, String userLActDatabase, String sex, String role, String displayName, String actionsFile, String goalsFile, String cultureName, HashMap properties, ArrayList goalList) { 
    173  
     101 
     102        public Agent(short agentPlatform, String host, int port, String saveDirectory, boolean displayMode, String name,String lActDatabase,  
     103                        String userLActDatabase, String sex, String role,  
     104                        String displayName, String actionsFile,  
     105                        String goalsFile, String cultureName, HashMap<String,String> properties, ArrayList<String> goalList) { 
     106 
     107                _emotionalState = new EmotionalState(); 
     108                _memory = new Memory(); 
     109                _motivationalState = new MotivationalState(); 
     110                 
     111                _ToM = new HashMap<String, ModelOfOther>(); 
     112                _nearbyAgents = new ArrayList<String>(); 
     113                 
    174114                _saveDirectory = saveDirectory; 
    175115                _shutdown = false; 
    176116                _numberOfCycles = 0; 
    177                 _self = name; 
     117                _name = name; 
    178118                _role = role; 
    179119                _sex = sex; 
     
    181121                _showStateWindow = displayMode; 
    182122                _currentEmotion = EmotionType.NEUTRAL;//neutral emotion - no emotion 
    183                 _actionsForExecution = new ArrayList(); 
    184                 _perceivedEvents = new ArrayList(); 
     123                _actionsForExecution = new ArrayList<ValuedAction>(); 
     124                _perceivedEvents = new ArrayList<Event>(); 
    185125                _dialogManager = new DialogManager(); 
    186126 
    187127                if(agentPlatform == AgentPlatform.WORLDSIM){ 
    188                         properties.put("name", _self); 
     128                        properties.put("name", _name); 
    189129                        properties.put("role", _role); 
    190130                        properties.put("sex", _sex);     
    191131                } 
    192                  
    193                 Memory.GetInstance().setSelf(_self); 
     132 
    194133 
    195134                try{ 
     
    197136 
    198137                        // Load Plan Operators 
    199                         ActionLibrary.GetInstance().LoadActionsFile("" + MIND_PATH + actionsFile + ".xml", _self); 
     138                        ActionLibrary.GetInstance().LoadActionsFile("" + MIND_PATH + actionsFile + ".xml", this); 
    200139                        EmotionalPlanner planner = new EmotionalPlanner(ActionLibrary.GetInstance().GetActions()); 
    201140 
    202141                        // Load GoalLibrary 
    203                         GoalLibrary goalLibrary = new GoalLibrary(MIND_PATH + goalsFile + ".xml", _self); 
     142                        GoalLibrary goalLibrary = new GoalLibrary(MIND_PATH + goalsFile + ".xml"); 
    204143 
    205144 
    206145                        //For efficiency reasons these two are not real processes 
    207                         _reactiveLayer = new ReactiveProcess(_self); 
    208  
    209                         _deliberativeLayer = new DeliberativeProcess(_self,goalLibrary,planner); 
     146                        _reactiveLayer = new ReactiveProcess(_name); 
     147 
     148                        _deliberativeLayer = new DeliberativeProcess(_name,goalLibrary,planner); 
    210149         
    211150                        String personalityFile = MIND_PATH + "roles/" + role + "/" + role + ".xml"; 
    212151                        loadPersonality(personalityFile,agentPlatform, goalList); 
     152                         
    213153                         
    214154                        loadCulture(cultureName); 
     
    219159                                _remoteAgent = new IONRemoteAgent(host, port, this);     
    220160                        } 
    221                                          
     161                          
    222162                        /* 
    223163                         * This call will initialize the timer for the agent's 
     
    225165                         */ 
    226166                        AgentSimulationTime.GetInstance(); 
    227  
    228                         _remoteAgent.start(); 
    229  
    230                         if(_showStateWindow){ 
    231                                  _agentDisplay = new AgentDisplay(this); 
    232                         } 
    233  
    234                         this.Run(); 
    235167                } 
    236168                catch (Exception e) { 
     
    245177        { 
    246178                try{ 
    247                         _self = fileName; 
    248                         Memory.GetInstance().setSelf(_self); 
    249                         AgentLogger.GetInstance().initialize(fileName); 
    250                          
    251179                        _shutdown = false; 
    252180                        _numberOfCycles = 0; 
     
    258186                        else if (agentPlatform == AgentPlatform.WORLDSIM) 
    259187                        { 
    260                                 _remoteAgent = new WorldSimulatorRemoteAgent(host,port,this,new HashMap()); 
     188                                _remoteAgent = new WorldSimulatorRemoteAgent(host,port,this,new HashMap<String,String>()); 
    261189                        } 
    262190                          
    263                         LoadAgentState(directory + fileName); 
    264                           
     191                        LoadAgentState(directory + fileName);                     
     192                         
     193                } 
     194                catch (Exception e) { 
     195                        e.printStackTrace(); 
     196                        this.terminateExecution(); 
     197                } 
     198        } 
     199         
     200        /** 
     201         * Starting the agent 
     202         * added by Meiyii 19/11/09 
     203         */ 
     204        public void StartAgent() 
     205        { 
     206                try{ 
    265207                        _remoteAgent.start(); 
    266208                 
     
    277219        } 
    278220         
    279         private void loadPersonality(String personalityFile, short agentPlatform, ArrayList goalList)  
     221        /** 
     222         * Specifies that the agent must give an answer to a received 
     223         * SpeechAct 
     224         * @param speechAct - the SpeechAct that needs an answer  
     225         */ 
     226        public void AnswerToSpeechAct(SpeechAct speechAct) { 
     227            _speechAct = speechAct; 
     228        } 
     229         
     230        public void AppraiseSelfActionFailed(Event e) 
     231        { 
     232                _deliberativeLayer.AppraiseSelfActionFailed(e); 
     233        } 
     234         
     235         
     236 
     237        /** 
     238         * Gets the agent's name that is displayed externally 
     239         * @return the agent's external name 
     240         */ 
     241        public String displayName() { 
     242            return _displayName; 
     243        } 
     244         
     245        public void EnforceCopingStrategy(String coping) 
     246        { 
     247                _deliberativeLayer.EnforceCopingStrategy(this, coping); 
     248                _reactiveLayer.EnforceCopingStrategy(coping); 
     249        } 
     250         
     251        private ValuedAction FilterSpeechAction(ValuedAction action) 
     252        { 
     253                ValuedAction aux=null; 
     254                 
     255                if(action != null) 
     256                { 
     257                        String actionName = action.GetAction().GetFirstLiteral().toString(); 
     258                        if(_dialogManager.CanSpeak() || !SpeechAct.isSpeechAct(actionName)) 
     259                        { 
     260                                aux = action; 
     261                        } 
     262                } 
     263                 
     264                return aux; 
     265        } 
     266 
     267        /** 
     268         * Gets the agent's Deliberative Layer that you can use 
     269         * to get access to Deliberative structures such as  
     270         * the goals and planner 
     271         * @return the agent's Deliberative Layer 
     272         */ 
     273        public DeliberativeProcess getDeliberativeLayer() 
     274        { 
     275                return this._deliberativeLayer; 
     276        } 
     277         
     278        public EmotionalState getEmotionalState() 
     279        { 
     280                return _emotionalState; 
     281        } 
     282         
     283        public Memory getMemory() 
     284        { 
     285                return _memory; 
     286        } 
     287         
     288        public MotivationalState getMotivationalState() 
     289        { 
     290                return _motivationalState; 
     291        } 
     292         
     293        /** 
     294         * Gets the name of the agent 
     295         * @return the agent's name 
     296         */ 
     297        public String getName() { 
     298                return _name; 
     299        } 
     300         
     301        /**  
     302         * Gets the compound cue mechanism of the agent 
     303         * @return the compound cue mechanism 
     304         * added by Meiyii 19/11/09 
     305         */      
     306        public ICompoundCue getCompoundCue() { 
     307                return _compoundCue; 
     308        } 
     309         
     310        /**  
     311         * Gets the spread activate mechanism of the agent 
     312         * @return the spread activate mechanism 
     313         *  added by Meiyii 19/11/09 
     314         */      
     315        public ISpreadActivate getSpreadActivate() { 
     316                return _spreadActivate; 
     317        } 
     318         
     319        /** 
     320         * Gets the agent's Reactive Layer that you can use 
     321         * to get access to reactive structures such as  
     322         * ActionTendencies and  EmotionalReactions 
     323         * @return the agent's Reactive Layer 
     324         */ 
     325        public ReactiveProcess getReactiveLayer() 
     326        { 
     327                return this._reactiveLayer; 
     328        } 
     329         
     330        public HashMap<String,ModelOfOther> getToM() 
     331        { 
     332                return this._ToM; 
     333        } 
     334         
     335        public Collection<String> getNearByAgents() 
     336        { 
     337                return this._nearbyAgents; 
     338        } 
     339         
     340        public void AddNearByAgent(String agent) 
     341        { 
     342                if(!agent.equals(this._name)) 
     343                { 
     344                        this._nearbyAgents.add(agent); 
     345                } 
     346        } 
     347         
     348        public void RemoveNearByAgent(String entity) 
     349        { 
     350                this._nearbyAgents.remove(entity); 
     351        } 
     352         
     353        public void initializeModelOfOther(String name) 
     354        { 
     355                if(!_ToM.containsKey(name)) 
     356                { 
     357                        ModelOfOther model = new ModelOfOther(name, this); 
     358                        _ToM.put(name, model); 
     359                } 
     360        } 
     361         
     362         
     363        /**  
     364         * Set the compound cue mechanism object of the agent 
     365         * @param compoundCue 
     366         *  added by Meiyii 19/11/09 
     367         */      
     368        public void setCompoundCue(ICompoundCue compoundCue) { 
     369                this._compoundCue = compoundCue; 
     370        } 
     371         
     372        /**  
     373         * Set the spread activate mechanism object of the agent 
     374         * @param spreadActivate 
     375         *  added by Meiyii 19/11/09 
     376         */      
     377        public void setSpreadActivate(ISpreadActivate spreadActivate) { 
     378                this._spreadActivate = spreadActivate; 
     379        } 
     380         
     381        @SuppressWarnings("unchecked") 
     382        public void LoadAgentState(String fileName)  
     383                throws IOException, ClassNotFoundException{ 
     384                 
     385                 
     386                FileInputStream in = new FileInputStream(fileName); 
     387                ObjectInputStream s = new ObjectInputStream(in); 
     388                this._ToM = (HashMap<String, ModelOfOther>) s.readObject(); 
     389                this._nearbyAgents = (ArrayList<String>) s.readObject(); 
     390                this._deliberativeLayer = (DeliberativeProcess) s.readObject(); 
     391                this._reactiveLayer = (ReactiveProcess) s.readObject(); 
     392                this._emotionalState = (EmotionalState) s.readObject(); 
     393                this._memory = (Memory) s.readObject(); 
     394                this._motivationalState = (MotivationalState) s.readObject(); 
     395                this._dialogManager = (DialogManager) s.readObject(); 
     396                this._role = (String) s.readObject(); 
     397                this._name = (String) s.readObject(); 
     398                this._sex = (String) s.readObject(); 
     399                this._speechAct = (SpeechAct) s.readObject(); 
     400                this._currentEmotion = ((Short) s.readObject()).shortValue(); 
     401                this._displayName = (String) s.readObject(); 
     402                this._showStateWindow = ((Boolean) s.readObject()).booleanValue(); 
     403                this._actionsForExecution = (ArrayList<ValuedAction>) s.readObject(); 
     404                this._perceivedEvents = (ArrayList<Event>) s.readObject(); 
     405                this._saveDirectory = (String) s.readObject(); 
     406                s.close(); 
     407                in.close(); 
     408 
     409                AgentSimulationTime.LoadState(fileName+"-Timer.dat"); 
     410                ActionLibrary.LoadState(fileName+"-ActionLibrary.dat"); 
     411                 
     412                _remoteAgent.LoadState(fileName+"-RemoteAgent.dat"); 
     413        } 
     414         
     415        private void loadCulture(String cultureName) 
     416                throws ParserConfigurationException, SAXException, IOException{ 
     417 
     418                AgentLogger.GetInstance().log("LOADING Culture: " + cultureName); 
     419                 
     420                CultureLoaderHandler culture = new CultureLoaderHandler(this, _reactiveLayer,_deliberativeLayer); 
     421                SAXParserFactory factory = SAXParserFactory.newInstance(); 
     422                SAXParser parser = factory.newSAXParser(); 
     423                parser.parse(new File(MIND_PATH + cultureName + ".xml"), culture); 
     424                 
     425                Ritual r; 
     426                ListIterator<Ritual> li = culture.GetRituals(this).listIterator(); 
     427                while(li.hasNext()) 
     428                { 
     429                        r = (Ritual) li.next(); 
     430                        _deliberativeLayer.AddRitual(r); 
     431                        _deliberativeLayer.AddGoal(r); 
     432                        AgentLogger.GetInstance().log("Ritual: "+ r.toString()); 
     433                } 
     434                 
     435                CulturalDimensions.GetInstance().changeNeedsWeightsAndDecays(this); 
     436        } 
     437         
     438        private void loadPersonality(String personalityFile, short agentPlatform, ArrayList<String> goalList)  
    280439                throws  ParserConfigurationException, SAXException, IOException, UnknownGoalException{ 
    281440                 
    282441                AgentLogger.GetInstance().log("LOADING Personality: " + personalityFile); 
    283                 AgentLoaderHandler c = new AgentLoaderHandler(_self,_reactiveLayer,_deliberativeLayer); 
     442                AgentLoaderHandler c = new AgentLoaderHandler(this,_reactiveLayer,_deliberativeLayer,_emotionalState); 
    284443 
    285444                SAXParserFactory factory = SAXParserFactory.newInstance(); 
     
    295454                //The WorldSimulator Agent loads additional goals provided in the starting goal list 
    296455                if(agentPlatform == AgentPlatform.WORLDSIM){ 
    297                         ListIterator lt = goalList.listIterator(); 
     456                        ListIterator<String> lt = goalList.listIterator(); 
    298457                        String goal; 
    299458                        String goalName; 
     
    308467                                impOfFailure = Float.parseFloat(st.nextToken()); 
    309468 
    310                                 _deliberativeLayer.AddGoal(goalName, impOfSuccess, impOfFailure);    
     469                                _deliberativeLayer.AddGoal(this, goalName, impOfSuccess, impOfFailure);    
    311470                        }        
    312471                } 
    313472        } 
    314473         
    315         private void loadCulture(String cultureName) 
    316                 throws ParserConfigurationException, SAXException, IOException{ 
    317  
    318                 AgentLogger.GetInstance().log("LOADING Culture: " + cultureName); 
    319                  
    320                 CultureLoaderHandler culture = new CultureLoaderHandler(_self, _reactiveLayer,_deliberativeLayer); 
    321                 SAXParserFactory factory = SAXParserFactory.newInstance(); 
    322                 SAXParser parser = factory.newSAXParser(); 
    323                 parser.parse(new File(MIND_PATH + cultureName + ".xml"), culture); 
    324                  
    325                 Ritual r; 
    326                 ListIterator li = culture.GetRituals().listIterator(); 
    327                 while(li.hasNext()) 
    328                 { 
    329                         r = (Ritual) li.next(); 
    330                         _deliberativeLayer.AddRitual(r); 
    331                         _deliberativeLayer.AddGoal(r); 
    332                         AgentLogger.GetInstance().log("Ritual: "+ r.toString()); 
    333                 } 
    334                  
    335                 CulturalDimensions.GetInstance().changeNeedsWeightsAndDecays(); 
    336         } 
    337          
    338         /*private void loadMemory(String memoryName) 
    339         throws ParserConfigurationException, SAXException, IOException{ 
    340  
    341                 AgentLogger.GetInstance().log("LOADING AM: " + memoryName); 
    342                  
    343                 AMLoaderHandler am = new AMLoaderHandler(); 
    344                 SAXParserFactory factory = SAXParserFactory.newInstance(); 
    345                 SAXParser parser = factory.newSAXParser(); 
    346                 parser.parse(new File(MIND_PATH + memoryName + ".xml"), am); 
    347         }*/ 
    348          
    349  
     474        /** 
     475         * Perceives a given event from the virtual world 
     476         * @param e - the Event to perceive 
     477         */ 
     478        public void PerceiveEvent(Event e)  
     479        {    
     480                synchronized (this) 
     481                { 
     482                        _perceivedEvents.add(e); 
     483                } 
     484        } 
     485         
     486        public void PerceivePropertyChanged(Name propertyName, String value) 
     487        { 
     488 
     489                _memory.getSemanticMemory().Tell(applyPerspective(propertyName, _name), value); 
     490                 
     491                for(String other : _nearbyAgents) 
     492                { 
     493                        ModelOfOther m = _ToM.get(other); 
     494                        m.getMemory().getSemanticMemory().Tell(applyPerspective(propertyName,other), value); 
     495                } 
     496        } 
     497         
     498        private Name applyPerspective(Name n, String agentName) 
     499        { 
     500                Name newName = (Name) n.clone(); 
     501                ArrayList<Symbol> symbols = newName.GetLiteralList(); 
     502                 
     503                //I'm changing directly the received name; not a good thing to do 
     504                for(int i = 0; i < symbols.size(); i++) 
     505                { 
     506                        if(symbols.get(i).getName().equals(agentName)) 
     507                        { 
     508                                symbols.set(i, new Symbol(Constants.SELF)); 
     509                        } 
     510                } 
     511                 
     512                return newName; 
     513        } 
     514 
     515        public void PerceivePropertyChanged(String subject, String property, String value) 
     516        { 
     517                String newSubject = subject; 
     518                Name propertyName; 
     519                 
     520                if(subject.equals(_name)) 
     521                { 
     522                        newSubject = Constants.SELF; 
     523                } 
     524                 
     525                propertyName = Name.ParseName(newSubject + "(" + property + ")"); 
     526                _memory.getSemanticMemory().Tell(propertyName, value); 
     527                 
     528                for(String other : _nearbyAgents) 
     529                { 
     530                        if(subject.equals(other)) 
     531                        { 
     532                                newSubject = Constants.SELF;  
     533                        } 
     534                        else 
     535                        { 
     536                                newSubject = subject; 
     537                        } 
     538                        ModelOfOther m = _ToM.get(other); 
     539                        propertyName = Name.ParseName(newSubject + "(" + property + ")"); 
     540                        m.getMemory().getSemanticMemory().Tell(propertyName, value); 
     541                } 
     542        } 
     543         
     544        public void PerceivePropertyRemoved(String subject, String property) 
     545        { 
     546                if(subject.equals(_name)) 
     547                { 
     548                        subject = Constants.SELF; 
     549                } 
     550                 
     551                Name propertyName = Name.ParseName(subject + "(" + property + ")"); 
     552                _memory.getSemanticMemory().Retract(propertyName); 
     553                 
     554        } 
     555         
     556         
     557         
     558        /** 
     559         * Resets the agent's reasoning layers (deliberative + cognitive) 
     560         * 
     561         */ 
     562        public void Reset() { 
     563                //_emotionalState.Clear(); 
     564                _dialogManager.Reset(); 
     565                _reactiveLayer.Reset(); 
     566                _deliberativeLayer.Reset(); 
     567                _perceivedEvents.clear(); 
     568        } 
     569         
     570        /** 
     571         * Gets the agent's role 
     572         * @return the role of the agent (Victim, Bully, etc) 
     573         */ 
     574        public String role() { 
     575                return _role; 
     576        } 
     577         
     578        /** 
     579         * Runs the agent, endless loop until there is a shutdown 
     580         */ 
     581        public void Run() { 
     582                ValuedAction action; 
     583                long updateTime = System.currentTimeMillis(); 
     584                 
     585                while (!_shutdown) { 
     586                        try { 
     587                                 
     588                            if(_remoteAgent.isShutDown()) { 
     589                                    _shutdown = true; 
     590                            } 
     591                                 
     592                            //updates the agent's simulation timer 
     593                            AgentSimulationTime.GetInstance().Tick(); 
     594                             
     595                            _numberOfCycles++; 
     596                            long startCycleTime = System.currentTimeMillis(); 
     597                             
     598                                if (_remoteAgent.isRunning()) { 
     599                                        //decay the agent's emotional state 
     600                                        //self 
     601                                        _emotionalState.Decay(); 
     602                                        _motivationalState.Decay(); 
     603                                        _dialogManager.DecayCauseIDontHaveABetterName(_memory); 
     604                                         
     605                                        //others 
     606                                        //TODO question: apply decay to all models or only to the agents nearby? 
     607                                        for(String other: _nearbyAgents) 
     608                                        { 
     609                                                ModelOfOther m = _ToM.get(other); 
     610                                                m.getEmotionalState().Decay(); 
     611                                                m.getMotivationalState().Decay(); 
     612                                        } 
     613                                         
     614                                        //perceives and appraises new events 
     615                                        synchronized (this) 
     616                                        { 
     617                                                for(ListIterator<Event> li = this._perceivedEvents.listIterator(); li.hasNext();) 
     618                                                { 
     619                                                        Event e = (Event) li.next(); 
     620                                                        AgentLogger.GetInstance().log("Perceiving event: " + e.toName()); 
     621                                                         
     622                                                         
     623                                                        //ToM of others 
     624                                                        for(String other : _nearbyAgents) 
     625                                                        { 
     626                                                                Event e2 = e.ApplyPerspective(other); 
     627                                                                ModelOfOther m = _ToM.get(other); 
     628                                                                m.getMemory().getEpisodicMemory().StoreAction(m.getMemory(), e2); 
     629                                                                m.getMemory().getSemanticMemory().Tell(ACTION_CONTEXT,e2.toName().toString()); 
     630                                                                m.AddEvent(e2); 
     631                                                                 
     632                                                        } 
     633                                                         
     634                                                        //SELF 
     635                                                        e = e.ApplyPerspective(_name); 
     636                                                         
     637                                                        //inserting the event in AM 
     638                                                         
     639                                                        _memory.getEpisodicMemory().StoreAction(_memory, e); 
     640                                                    //registering an Action Context property in the KB 
     641                                                        _memory.getSemanticMemory().Tell(ACTION_CONTEXT,e.toName().toString()); 
     642                                                         
     643                                                        if(SpeechAct.isSpeechAct(e.GetAction())) 
     644                                                        { 
     645                                                                _dialogManager.UpdateDialogState(e, _memory); 
     646                                                        } 
     647                                                                         
     648                                                        //adds the event to the deliberative and reactive layers so that they can appraise 
     649                                                        //the events 
     650                                                         
     651                                                        _reactiveLayer.AddEvent(e); 
     652                                                        _deliberativeLayer.AddEvent(e); 
     653                                                } 
     654                                                this._perceivedEvents.clear(); 
     655                                        } 
     656                                         
     657                                        //if there was new data or knowledge added we must apply inference operators 
     658                                        //update any inferred property to the outside and appraise the events 
     659                                        if(_memory.getEpisodicMemory().HasNewData() || 
     660                                                        _memory.getSemanticMemory().HasNewKnowledge()) 
     661                                        { 
     662                                                 
     663                                                //calling the KnowledgeBase inference process 
     664                                                _memory.getSemanticMemory().PerformInference(this); 
     665                                                 
     666                                                synchronized (_memory.getSemanticMemory()) 
     667                                                { 
     668                                                        ArrayList<KnowledgeSlot> facts = _memory.getSemanticMemory().getNewFacts(); 
     669                                                         
     670                                                        for(ListIterator<KnowledgeSlot> li = facts.listIterator();li.hasNext();) 
     671                                                        { 
     672                                                                KnowledgeSlot ks = (KnowledgeSlot) li.next(); 
     673                                                                if(ks.getName().startsWith(Constants.SELF)) 
     674                                                                { 
     675                                                                        _remoteAgent.ReportInternalPropertyChange(this._name,Name.ParseName(ks.getName()), 
     676                                                                                        ks.getValue()); 
     677                                                                } 
     678                                                        } 
     679                                                } 
     680                                        } 
     681                                         
     682                                        //Appraise the events and changes in data 
     683                                        _reactiveLayer.Appraisal(this); 
     684                                         
     685                                        for(ModelOfOther m : _ToM.values()) 
     686                                        { 
     687                                                _reactiveLayer.Appraisal(m); 
     688                                        } 
     689                                         
     690                                    _deliberativeLayer.Appraisal(this);  
     691                                     
     692                                         
     693                                    _reactiveLayer.Coping(this); 
     694                                        _deliberativeLayer.Coping(this); 
     695                                 
     696                                        if(_remoteAgent.FinishedExecuting() && _remoteAgent.isRunning()) { 
     697                                                 
     698                                                //action = FilterSpeechAction(_reactiveLayer.GetSelectedAction()); 
     699                                                action = _reactiveLayer.GetSelectedAction(); 
     700                                                 
     701                                                if(action != null)  
     702                                                { 
     703                                                        _reactiveLayer.RemoveSelectedAction(); 
     704                                                        _remoteAgent.AddAction(action); 
     705                                                } 
     706                                                else 
     707                                                { 
     708                                                        action = FilterSpeechAction(_deliberativeLayer.GetSelectedAction()); 
     709                                                        if(action != null) 
     710                                                        { 
     711                                                                _deliberativeLayer.RemoveSelectedAction(); 
     712                                                                _remoteAgent.AddAction(action); 
     713                                                        } 
     714                                                } 
     715                 
     716                                                _remoteAgent.ExecuteNextAction(this); 
     717                                        } 
     718                                         
     719                                        if(System.currentTimeMillis() - updateTime > 1000) 
     720                                        { 
     721                                                if(_showStateWindow && _agentDisplay != null)  
     722                                                { 
     723                                                        _agentDisplay.update(); 
     724                                                } 
     725                                                 
     726                                                _remoteAgent.ReportInternalState(_emotionalState); 
     727                                                 
     728                                                /*ActiveEmotion auxEmotion = EmotionalState.GetInstance().GetStrongestEmotion(); 
     729                                                short nextEmotion; 
     730                                                if(auxEmotion != null) { 
     731                                                    nextEmotion = auxEmotion.GetType();  
     732                                                } 
     733                                                else nextEmotion = EmotionType.NEUTRAL; 
     734                                                 
     735                                                if(_currentEmotion != nextEmotion) { 
     736                                                    _currentEmotion = nextEmotion; 
     737                                                    _remoteAgent.ExpressEmotion(EmotionType.GetName(_currentEmotion)); 
     738                                                }*/ 
     739                                                 
     740                                                updateTime = System.currentTimeMillis(); 
     741                                        } 
     742                                } 
     743                                 
     744                                long cycleExecutionTime = System.currentTimeMillis() - startCycleTime; 
     745                                _totalexecutingtime += cycleExecutionTime; 
     746                                //System.out.println("Cycle execution (in Millis): " + cycleExecutionTime); 
     747                                //System.out.println("Average time per cycle (in Millis): " + _totalexecutingtime / _numberOfCycles); 
     748                                Thread.sleep(10); 
     749                        } 
     750                        catch (Exception ex) { 
     751                            //_shutdown = true; 
     752                            ex.printStackTrace(); 
     753                            //System.out.println(ex); 
     754                        } 
     755                } 
     756        } 
     757         
    350758        public void SaveAgentState(String agentName) 
    351759        { 
     
    353761 
    354762                AgentSimulationTime.SaveState(fileName+"-Timer.dat"); 
    355                 EmotionalState.SaveState(fileName+"-EmotionalState.dat"); 
    356                 MotivationalState.SaveState(fileName+"-MotivationalState.dat"); 
    357                 KnowledgeBase.SaveState(fileName+"-KnowledgeBase.dat"); 
    358                 AutobiographicalMemory.SaveState(fileName+"-AutobiographicalMemory.dat"); 
    359                 ShortTermMemory.SaveState(fileName+"-ShortTermMemory.dat"); 
    360                 WorkingMemory.SaveState(fileName+"-WorkingMemory.dat"); 
    361763                ActionLibrary.SaveState(fileName+"-ActionLibrary.dat"); 
    362764                _remoteAgent.SaveState(fileName+"-RemoteAgent.dat"); 
     
    364766                try 
    365767                { 
    366                         FileOutputStream out = new FileOutputStream(fileName,false); 
     768                        FileOutputStream out = new FileOutputStream(fileName); 
    367769                        ObjectOutputStream s = new ObjectOutputStream(out); 
    368770 
     771                        s.writeObject(_ToM); 
     772                        s.writeObject(_nearbyAgents); 
    369773                        s.writeObject(_deliberativeLayer); 
    370774                        s.writeObject(_reactiveLayer); 
     775                        s.writeObject(_emotionalState); 
     776                        s.writeObject(_memory); 
     777                        s.writeObject(_motivationalState); 
    371778                        s.writeObject(_dialogManager); 
    372779                        s.writeObject(_role); 
    373                         s.writeObject(_self); 
     780                        s.writeObject(_name); 
    374781                        s.writeObject(_sex); 
    375782                        s.writeObject(_speechAct); 
     
    389796                } 
    390797        } 
    391  
    392         public void SaveAM(String agentName) 
    393         { 
    394                 String fileName = _saveDirectory + agentName + "-AM.txt"; 
    395                 try 
    396                 { 
    397                         FileOutputStream out = new FileOutputStream(fileName); 
    398                         out.write(AutobiographicalMemory.GetInstance().toXML().getBytes()); 
    399                         out.flush(); 
    400                         out.close(); 
     798         
     799         
     800        protected ValuedAction SelectBestAction() { 
     801                 
     802                ValuedAction bestAction = null; 
     803                ValuedAction action; 
     804                int removeHere=-1; 
     805                 
     806                for(int i=0; i < _actionsForExecution.size(); i++) 
     807                { 
     808                        action = (ValuedAction) _actionsForExecution.get(i); 
     809                        if(bestAction == null || action.GetValue(_emotionalState) > bestAction.GetValue(_emotionalState)) 
     810                        { 
     811                                bestAction = action; 
     812                                removeHere = i; 
     813                        } 
     814                } 
     815                 
     816                if(bestAction != null) 
     817                { 
     818                        _actionsForExecution.remove(removeHere); 
     819                } 
     820                return bestAction; 
     821        } 
     822         
     823        /** 
     824         * Gets the gender of the agent 
     825         * @return the agent's sex 
     826         */ 
     827        public String sex()  
     828        { 
     829                return _sex; 
     830        } 
     831         
     832        public ActiveEmotion simulateAppraisal(String action, String name, ArrayList<String> parameters) 
     833        { 
     834                ArrayList<BaseEmotion> emotions; 
     835                BaseEmotion em; 
     836                Event e; 
     837                ActiveEmotion aem; 
     838                ActiveEmotion maxEmotion = null; 
     839                 
     840                if(action.equals("INSERT_CHARACTER")||action.equals("INSERT_OBJECT")) 
     841                { 
     842                        e = new Event(Constants.SELF, "look-at", name); 
     843                        int like = Math.round(LikeRelation.getRelation(Constants.SELF, name).getValue(_memory)); 
     844                        AppraisalVector v = new AppraisalVector(); 
     845                        v.setAppraisalVariable(AppraisalVector.LIKE, like); 
     846                        em = (BaseEmotion) Appraisal.GenerateSelfEmotions(this, e, v).get(0); 
     847                        return _emotionalState.DetermineActiveEmotion(em); 
     848                } 
     849                else if(action.equals("ACT_FOR_CHARACTER")) 
     850                { 
     851                        if(parameters.size() == 0) 
     852                        { 
     853                                e = new Event(Constants.SELF,name, null); 
     854                        } 
     855                        else 
     856                        { 
     857                                e = new Event(Constants.SELF,name, (String) parameters.get(0)); 
     858                                for(int i = 1; i < parameters.size(); i++) 
     859                                { 
     860                                        e.AddParameter(new Parameter("param",parameters.get(i))); 
     861                                } 
     862                        } 
    401863                         
    402                 } 
    403                 catch(Exception e) 
    404                 { 
    405                         e.printStackTrace(); 
    406                 } 
    407         } 
    408          
    409         public void SaveSTM(String agentName) 
    410         { 
    411                 String fileName = _saveDirectory + agentName + "-STM.txt"; 
    412                 try 
    413                 { 
    414                         FileOutputStream out = new FileOutputStream(fileName); 
    415                         out.write(ShortTermMemory.GetInstance().toXML().getBytes()); 
    416                         out.flush(); 
    417                         out.close(); 
    418                 } 
    419                 catch(Exception e) 
    420                 { 
    421                         e.printStackTrace(); 
    422                 } 
    423         } 
    424          
    425         public void SaveWM(String agentName) 
    426         { 
    427                 String fileName = _saveDirectory + agentName + "-WM.txt"; 
    428                 try 
    429                 { 
    430                         FileOutputStream out = new FileOutputStream(fileName); 
    431                         out.write(WorkingMemory.GetInstance().toXML().getBytes()); 
    432                         out.flush(); 
    433                         out.close(); 
    434                 } 
    435                 catch(Exception e) 
    436                 { 
    437                         e.printStackTrace(); 
    438                 } 
    439         } 
    440          
    441         public void LoadAgentState(String fileName)  
    442                 throws IOException, ClassNotFoundException{ 
    443                  
    444                 //FileInputStream in = new FileInputStream("C:\\Meiyii\\LIREC\\AgentMind\\data\\log\\Greta"); 
    445                 FileInputStream in = new FileInputStream(fileName); 
    446                 ObjectInputStream s = new ObjectInputStream(in); 
    447                 this._deliberativeLayer = (DeliberativeProcess) s.readObject(); 
    448                 this._reactiveLayer = (ReactiveProcess) s.readObject(); 
    449                 this._dialogManager = (DialogManager) s.readObject(); 
    450                 this._role = (String) s.readObject(); 
    451                 this._self = (String) s.readObject(); 
    452                 this._sex = (String) s.readObject(); 
    453                 this._speechAct = (SpeechAct) s.readObject(); 
    454                 this._currentEmotion = ((Short) s.readObject()).shortValue(); 
    455                 this._displayName = (String) s.readObject(); 
    456                 this._showStateWindow = ((Boolean) s.readObject()).booleanValue(); 
    457                 this._actionsForExecution = (ArrayList) s.readObject(); 
    458                 this._perceivedEvents = (ArrayList) s.readObject(); 
    459                 this._saveDirectory = (String) s.readObject(); 
    460                 s.close(); 
    461                 in.close(); 
    462  
    463                 KnowledgeBase.LoadState(fileName+"-KnowledgeBase.dat"); 
    464                 //System.out.println(KnowledgeBase.GetInstance().toString()); 
    465                 EmotionalState.LoadState(fileName+"-EmotionalState.dat"); 
    466                 //System.out.println(EmotionalState.GetInstance().toXml()); 
    467                 MotivationalState.LoadState(fileName+"-MotivationalState.dat"); 
    468                 //System.out.println(MotivationalState.GetInstance().toXml()); 
    469                 AgentSimulationTime.LoadState(fileName+"-Timer.dat"); 
    470                 AutobiographicalMemory.LoadState(fileName+"-AutobiographicalMemory.dat"); 
    471                 //System.out.println(AutobiographicalMemory.GetInstance().toXML()); 
    472                 ShortTermMemory.LoadState(fileName+"-ShortTermMemory.dat"); 
    473                 //System.out.println(ShortTermMemory.GetInstance().toXML()); 
    474                 WorkingMemory.LoadState(fileName+"-WorkingMemory.dat"); 
    475                 //System.out.println(WorkingMemory.GetInstance().toString()); 
    476                 ActionLibrary.LoadState(fileName+"-ActionLibrary.dat");  
    477                 //System.out.println(ActionLibrary.GetInstance().toString()); 
    478                 _remoteAgent.LoadState(fileName+"-RemoteAgent.dat"); 
    479         } 
     864                        Reaction r = ReactiveProcess.Evaluate(this, e); 
     865                        emotions = Appraisal.GenerateSelfEmotions(this, e, ReactiveProcess.translateEmotionalReaction(r)); 
     866                        ListIterator<BaseEmotion> li = emotions.listIterator(); 
     867                         
     868                        while(li.hasNext()) 
     869                        { 
     870                                em = (BaseEmotion) li.next(); 
     871                                aem = _emotionalState.DetermineActiveEmotion(em); 
     872                                if(aem != null && (maxEmotion == null || aem.GetIntensity() > maxEmotion.GetIntensity())) 
     873                                { 
     874                                        maxEmotion = aem; 
     875                                }        
     876                        } 
     877                         
     878                        return maxEmotion; 
     879                } 
     880                else return null; 
     881        } 
     882         
     883        public void SpeechStarted() 
     884        { 
     885                _dialogManager.SpeechStarted(); 
     886        } 
     887         
     888         
    480889         
    481890        private void terminateExecution(){ 
     
    486895        } 
    487896 
    488         /** 
    489          * Gets the name of the agent 
    490          * @return the agent's name 
    491          */ 
    492         public String name() { 
    493                 return _self; 
    494         } 
    495          
    496         /** 
    497          * Gets the gender of the agent 
    498          * @return the agent's sex 
    499          */ 
    500         public String sex()  
    501         { 
    502                 return _sex; 
    503         } 
    504          
    505         /** 
    506          * Gets the agent's name that is displayed externally 
    507          * @return the agent's external name 
    508          */ 
    509         public String displayName() { 
    510             return _displayName; 
    511         } 
    512          
    513         /** 
    514          * Gets the agent's Reactive Layer that you can use 
    515          * to get access to reactive structures such as  
    516          * ActionTendencies and  EmotionalReactions 
    517          * @return the agent's Reactive Layer 
    518          */ 
    519         public ReactiveProcess getReactiveLayer() 
    520         { 
    521                 return this._reactiveLayer; 
    522         } 
    523          
    524         /** 
    525          * Gets the agent's Deliberative Layer that you can use 
    526          * to get access to Deliberative structures such as  
    527          * the goals and planner 
    528          * @return the agent's Deliberative Layer 
    529          */ 
    530         public DeliberativeProcess getDeliberativeLayer() 
    531         { 
    532                 return this._deliberativeLayer; 
    533         } 
    534          
    535         /** 
    536          * Specifies that the agent must give an answer to a received 
    537          * SpeechAct 
    538          * @param speechAct - the SpeechAct that needs an answer  
    539          */ 
    540         public void AnswerToSpeechAct(SpeechAct speechAct) { 
    541             _speechAct = speechAct; 
    542         } 
    543          
    544         /** 
    545          * Perceives a given event from the virtual world 
    546          * @param e - the Event to perceive 
    547          */ 
    548         public void PerceiveEvent(Event e)  
    549         {    
    550                 synchronized (this) 
    551                 { 
    552                         _perceivedEvents.add(e); 
    553                 } 
    554         } 
    555          
    556         /** 
    557          * Resets the agent's reasoning layers (deliberative + cognitive) 
    558          * 
    559          */ 
    560         public void Reset() { 
    561                 //_emotionalState.Clear(); 
    562                 _dialogManager.Reset(); 
    563                 _reactiveLayer.Reset(); 
    564                 _deliberativeLayer.Reset(); 
    565                 _perceivedEvents.clear(); 
    566         } 
    567          
    568         /** 
    569          * Gets the agent's role 
    570          * @return the role of the agent (Victim, Bully, etc) 
    571          */ 
    572         public String role() { 
    573                 return _role; 
    574         } 
    575  
    576         /** 
    577          * Set the value for readyForNextStep 
    578          * @param boolean value of readyForNextStep 
    579          */ 
    580         public void setReadyForNextStep(boolean readyForNextStep){ 
    581                 this._readyForNextStep = readyForNextStep; 
    582         } 
    583          
    584         /** 
    585          * Runs the agent, endless loop until there is a shutdown 
    586          */ 
    587         public void Run() { 
    588                 ValuedAction action; 
    589                 long updateTime = System.currentTimeMillis(); 
    590                  
    591                 while (!_shutdown) {                     
    592                         if(_readyForNextStep) 
    593                         { 
    594                                 try { 
    595                                          
    596                                         //Thread.sleep(2000); 
    597                                          
    598                                     if(_remoteAgent.isShutDown()) { 
    599                                             _shutdown = true; 
    600                                     } 
    601                                          
    602                                     //updates the agent's simulation timer 
    603                                     AgentSimulationTime.GetInstance().Tick(); 
    604                                      
    605                                     _numberOfCycles++; 
    606                                     long startCycleTime = System.currentTimeMillis(); 
    607                                      
    608                                         if (_remoteAgent.isRunning()) { 
    609                                                 //decay the agent's emotional state 
    610                                                 EmotionalState.GetInstance().Decay(); 
    611                                                 MotivationalState.GetInstance().Decay(); 
    612                                                 _dialogManager.DecayCauseIDontHaveABetterName(); 
    613                                                  
    614                                                 //perceives and appraises new events 
    615                                                 synchronized (this) 
    616                                                 { 
    617                                                         for(ListIterator li = this._perceivedEvents.listIterator(); li.hasNext();) 
    618                                                         { 
    619                                                                 Event e = (Event) li.next(); 
    620                                                                 AgentLogger.GetInstance().log("Perceiving event: " + e.toName()); 
    621                                                                 //inserting the event in AM 
    622                                                             //AutobiographicalMemory.GetInstance().StoreAction(e); 
    623                                                                  
    624                                                                 // Meiyii 11/03/09 
    625                                                                 ShortTermMemory.GetInstance().StoreAction(e); 
    626                                                                  
    627                                                             //registering an Action Context property in the KB 
    628                                                                 WorkingMemory.GetInstance().Tell(ACTION_CONTEXT,e.toName().toString()); 
    629                                                                  
    630                                                                 if(SpeechAct.isSpeechAct(e.GetAction())) 
    631                                                                 { 
    632                                                                         _dialogManager.UpdateDialogState(e); 
    633                                                                 } 
    634                                                                                  
    635                                                                 //adds the event to the deliberative and reactive layers so that they can appraise 
    636                                                                 //the events 
    637                                                                  
    638                                                                 _reactiveLayer.AddEvent(e); 
    639                                                                 _deliberativeLayer.AddEvent(e); 
    640                                                         } 
    641                                                         this._perceivedEvents.clear(); 
    642                                                 } 
    643                                                  
    644                                                 //if there was new data or knowledge added we must apply inference operators 
    645                                                 //update any inferred property to the outside and appraise the events 
    646                                                 if(ShortTermMemory.GetInstance().HasNewData() || 
    647                                                                 WorkingMemory.GetInstance().HasNewKnowledge()) 
    648                                                 { 
    649                                                          
    650                                                         //calling the KnowledgeBase inference process 
    651                                                         WorkingMemory.GetInstance().PerformInference(); 
    652                                                          
    653                                                         synchronized (KnowledgeBase.GetInstance()) 
    654                                                         { 
    655                                                                 ArrayList facts = WorkingMemory.GetInstance().GetNewFacts(); 
    656                                                                  
    657                                                                 for(ListIterator li = facts.listIterator();li.hasNext();) 
    658                                                                 { 
    659                                                                         KnowledgeSlot ks = (KnowledgeSlot) li.next(); 
    660                                                                         if(ks.getName().startsWith(this._self)) 
    661                                                                         { 
    662                                                                                 _remoteAgent.ReportInternalPropertyChange(Name.ParseName(ks.getName()), 
    663                                                                                                 ks.getValue()); 
    664                                                                         } 
    665                                                                 } 
    666                                                                  
    667                                                                  
    668                                                         } 
    669                                                 } 
    670                                                  
    671                                                 //Appraise the events and changes in data 
    672                                                 _reactiveLayer.Appraisal(); 
    673                                             _deliberativeLayer.Appraisal();      
    674                                              
    675                                                  
    676                                             _reactiveLayer.Coping(); 
    677                                                  
    678                                                  
    679                                                 _deliberativeLayer.Coping(); 
    680                                          
    681                                                 if(_remoteAgent.FinishedExecuting() && _remoteAgent.isRunning()) { 
    682                                                          
    683                                                         action = FilterSpeechAction(_reactiveLayer.GetSelectedAction()); 
    684                                                          
    685                                                         if(action != null)  
    686                                                         { 
    687                                                                 _reactiveLayer.RemoveSelectedAction(); 
    688                                                                 _remoteAgent.AddAction(action); 
    689                                                         } 
    690                                                         else 
    691                                                         { 
    692                                                                 action = FilterSpeechAction(_deliberativeLayer.GetSelectedAction()); 
    693                                                                 if(action != null) 
    694                                                                 { 
    695                                                                         _deliberativeLayer.RemoveSelectedAction(); 
    696                                                                         _remoteAgent.AddAction(action); 
    697                                                                 } 
    698                                                         } 
    699                          
    700                                                         _remoteAgent.ExecuteNextAction(); 
    701                                                 } 
    702                                                  
    703                                                 if(System.currentTimeMillis() - updateTime > 1000) 
    704                                                 { 
    705                                                         if(_showStateWindow && _agentDisplay != null)  
    706                                                         { 
    707                                                                 _agentDisplay.update(); 
    708                                                         } 
    709                                                          
    710                                                         _remoteAgent.ReportInternalState(); 
    711                                                          
    712                                                         /*ActiveEmotion auxEmotion = EmotionalState.GetInstance().GetStrongestEmotion(); 
    713                                                         short nextEmotion; 
    714                                                         if(auxEmotion != null) { 
    715                                                             nextEmotion = auxEmotion.GetType();  
    716                                                         } 
    717                                                         else nextEmotion = EmotionType.NEUTRAL; 
    718                                                          
    719                                                         if(_currentEmotion != nextEmotion) { 
    720                                                             _currentEmotion = nextEmotion; 
    721                                                             _remoteAgent.ExpressEmotion(EmotionType.GetName(_currentEmotion)); 
    722                                                         }*/ 
    723                                                          
    724                                                         updateTime = System.currentTimeMillis(); 
    725                                                 } 
    726                                         } 
    727                                          
    728                                         long cycleExecutionTime = System.currentTimeMillis() - startCycleTime; 
    729                                         _totalexecutingtime += cycleExecutionTime; 
    730                                         //System.out.println("Cycle execution (in Millis): " + cycleExecutionTime); 
    731                                         //System.out.println("Average time per cycle (in Millis): " + _totalexecutingtime / _numberOfCycles); 
    732                                         Thread.sleep(10); 
    733                                         //this._readyForNextStep = false; 
    734                                          
    735                                 } 
    736                                 catch (Exception ex) { 
    737                                     //_shutdown = true; 
    738                                     ex.printStackTrace(); 
    739                                     //System.out.println(ex); 
    740                                 } 
    741                         } 
    742                         /*else 
    743                         { 
    744                                 try { 
    745                                         Thread.sleep(10); 
    746                                 } 
    747                                 catch (Exception ex) {                           
    748                                     ex.printStackTrace(); 
    749                                 } 
    750                         }*/ 
    751                 } 
    752         } 
    753          
    754         private ValuedAction FilterSpeechAction(ValuedAction action) 
    755         { 
    756                 ValuedAction aux=null; 
    757                  
    758                 if(action != null) 
    759                 { 
    760                         String actionName = action.GetAction().GetFirstLiteral().toString(); 
    761                         if(_dialogManager.CanSpeak() || !SpeechAct.isSpeechAct(actionName)) 
    762                         { 
    763                                 aux = action; 
    764                         } 
    765                 } 
    766                  
    767                 return aux; 
    768         } 
    769          
    770         public void AppraiseSelfActionFailed(Event e) 
    771         { 
    772                 _deliberativeLayer.AppraiseSelfActionFailed(e); 
    773         } 
    774          
    775         public void SpeechStarted() 
    776         { 
    777                 _dialogManager.SpeechStarted(); 
    778         } 
    779          
    780         public ActiveEmotion simulateAppraisal(String action, String name, ArrayList parameters) 
    781         { 
    782                 ArrayList emotions; 
    783                 BaseEmotion em; 
    784                 Event e; 
    785                 ActiveEmotion aem; 
    786                 ActiveEmotion maxEmotion = null; 
    787                  
    788                 if(action.equals("INSERT_CHARACTER")||action.equals("INSERT_OBJECT")) 
    789                 { 
    790                         e = new Event(Memory.GetInstance().getSelf(), "look-at", name); 
    791                         int like = Math.round(LikeRelation.getRelation(Memory.GetInstance().getSelf(), name).getValue()); 
    792                         em = EmotionalState.GetInstance().OCCAppraiseAttribution(e, like); 
    793                         return EmotionalState.GetInstance().DetermineActiveEmotion(em); 
    794                 } 
    795                 else if(action.equals("ACT_FOR_CHARACTER")) 
    796                 { 
    797                         if(parameters.size() == 0) 
    798                         { 
    799                                 e = new Event(Memory.GetInstance().getSelf(),name, null); 
    800                         } 
    801                         else 
    802                         { 
    803                                 e = new Event(Memory.GetInstance().getSelf(),name, (String) parameters.get(0)); 
    804                                 for(int i = 1; i < parameters.size(); i++) 
    805                                 { 
    806                                         e.AddParameter(new Parameter("param",parameters.get(i))); 
    807                                 } 
    808                         } 
    809                          
    810                         emotions = _reactiveLayer.AppraiseEvent(e); 
    811                         ListIterator li = emotions.listIterator(); 
    812                          
    813                         while(li.hasNext()) 
    814                         { 
    815                                 em = (BaseEmotion) li.next(); 
    816                                 aem = EmotionalState.GetInstance().DetermineActiveEmotion(em); 
    817                                 if(aem != null && (maxEmotion == null || aem.GetIntensity() > maxEmotion.GetIntensity())) 
    818                                 { 
    819                                         maxEmotion = aem; 
    820                                 }        
    821                         } 
    822                          
    823                         return maxEmotion; 
    824                 } 
    825                 else return null; 
    826         } 
    827          
    828         /*public ActiveEmotion simulateAppraisal(String action, String name, ArrayList parameters) 
    829         { 
    830                 ArrayList emotions; 
    831                 BaseEmotion em; 
    832                 Event e; 
    833                 ActiveEmotion aem; 
    834                 ActiveEmotion maxEmotion = null; 
    835                  
    836                 if(action.equals("INSERT_CHARACTER")||action.equals("INSERT_OBJECT")) 
    837                 { 
    838                         e = new Event(AutobiographicalMemory.GetInstance().getSelf(), "look-at", name); 
    839                         int like = Math.round(LikeRelation.getRelation(AutobiographicalMemory.GetInstance().getSelf(), name).getValue()); 
    840                         em = EmotionalState.GetInstance().OCCAppraiseAttribution(e, like); 
    841                         return EmotionalState.GetInstance().DetermineActiveEmotion(em); 
    842                 } 
    843                 else if(action.equals("ACT_FOR_CHARACTER")) 
    844                 { 
    845                         if(parameters.size() == 0) 
    846                         { 
    847                                 e = new Event(AutobiographicalMemory.GetInstance().getSelf(),name, null); 
    848                         } 
    849                         else 
    850                         { 
    851                                 e = new Event(AutobiographicalMemory.GetInstance().getSelf(),name, (String) parameters.get(0)); 
    852                                 for(int i = 1; i < parameters.size(); i++) 
    853                                 { 
    854                                         e.AddParameter(new Parameter("param",parameters.get(i))); 
    855                                 } 
    856                         } 
    857                          
    858                         emotions = _reactiveLayer.AppraiseEvent(e); 
    859                         ListIterator li = emotions.listIterator(); 
    860                          
    861                         while(li.hasNext()) 
    862                         { 
    863                                 em = (BaseEmotion) li.next(); 
    864                                 aem = EmotionalState.GetInstance().DetermineActiveEmotion(em); 
    865                                 if(aem != null && (maxEmotion == null || aem.GetIntensity() > maxEmotion.GetIntensity())) 
    866                                 { 
    867                                         maxEmotion = aem; 
    868                                 }        
    869                         } 
    870                          
    871                         return maxEmotion; 
    872                 } 
    873                 else return null; 
    874         }*/ 
    875          
    876          
    877         protected ValuedAction SelectBestAction() { 
    878                  
    879                 ValuedAction bestAction = null; 
    880                 ValuedAction action; 
    881                 int removeHere=-1; 
    882                  
    883                 for(int i=0; i < _actionsForExecution.size(); i++) 
    884                 { 
    885                         action = (ValuedAction) _actionsForExecution.get(i); 
    886                         if(bestAction == null || action.GetValue() > bestAction.GetValue()) 
    887                         { 
    888                                 bestAction = action; 
    889                                 removeHere = i; 
    890                         } 
    891                 } 
    892                  
    893                 if(bestAction != null) 
    894                 { 
    895                         _actionsForExecution.remove(removeHere); 
    896                 } 
    897                 return bestAction; 
    898         } 
    899          
    900         public void EnforceCopingStrategy(String coping) 
    901         { 
    902                 _deliberativeLayer.EnforceCopingStrategy(coping); 
    903                 _reactiveLayer.EnforceCopingStrategy(coping); 
     897        @Override 
     898        public ActionTendencies getActionTendencies() { 
     899                return _reactiveLayer.getActionTendencies(); 
     900        } 
     901         
     902        public EmotionalReactionTreeNode getEmotionalReactions() 
     903        { 
     904                return _reactiveLayer.getEmotionalReactions(); 
     905        } 
     906 
     907        @Override 
     908        public void clearEvents() { 
     909                _reactiveLayer.clearEvents();    
     910        } 
     911 
     912        @Override 
     913        public Collection<Event> getEvents() { 
     914                return _reactiveLayer.getEvents(); 
    904915        } 
    905916 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/AgentProcess.java

    r1 r253  
    5454public abstract class AgentProcess implements Serializable { 
    5555 
    56         protected ArrayList _eventPool; 
     56        /** 
     57         *  
     58         */ 
     59        private static final long serialVersionUID = 1L; 
     60         
     61        protected ArrayList<Event> _eventPool; 
    5762        protected String _self; 
    5863         
     
    7176        public AgentProcess(String name) { 
    7277                _self = name; 
    73                 _eventPool = new ArrayList(); 
     78                _eventPool = new ArrayList<Event>(); 
    7479        } 
    7580         
     
    9398         * runs one round of the Appraisal process.  
    9499         */ 
    95         public abstract void Appraisal(); 
     100        public abstract void Appraisal(AgentModel am); 
    96101         
    97102        /** 
    98103         * runs one round of the Coping process 
    99104         */ 
    100         public abstract void Coping(); 
     105        public abstract void Coping(AgentModel am); 
    101106         
    102107        /** 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/DialogManager.java

    r67 r253  
    3535import java.io.Serializable; 
    3636 
    37 import FAtiMA.knowledgeBase.KnowledgeBase; 
    38 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
     37import FAtiMA.memory.Memory; 
    3938import FAtiMA.sensorEffector.Event; 
    4039import FAtiMA.sensorEffector.SpeechAct; 
     
    7271        } 
    7372         
    74         public void UpdateDialogState(Event speechEvent) 
     73        public void UpdateDialogState(Event speechEvent, Memory m) 
    7574        { 
    7675                if(!speechEvent.GetAction().equals(SpeechAct.Reinforce)) 
    7776                { 
    78                         WorkingMemory.GetInstance().Tell(SPEECH_CONTEXT, speechEvent.toName().toString()); 
    79                         //System.out.println("UpdateDialogState"); 
     77                        m.getSemanticMemory().Tell(SPEECH_CONTEXT, speechEvent.toName().toString()); 
    8078                } 
    8179                this._canSpeak = true; 
     
    9492        } 
    9593         
    96         public void DecayCauseIDontHaveABetterName() 
     94        public void DecayCauseIDontHaveABetterName(Memory m) 
    9795        { 
    9896                if(_andCounting) 
     
    10098                        if(AgentSimulationTime.GetInstance().Time() > this._contextExpireTime) 
    10199                        { 
    102                                 WorkingMemory.GetInstance().Tell(SPEECH_CONTEXT, ""); 
    103                                 //System.out.println("SpeechContext to KB"); 
     100                                m.getSemanticMemory().Tell(SPEECH_CONTEXT, ""); 
    104101                                this._contextExpireTime = 0; 
    105102                                this._andCounting = false; 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/AgentDisplay.java

    r71 r253  
    2828 * History:  
    2929 * João Dias: 18/10/2005 - File created 
    30  * Meiyii Lim: 12/03/2009 - Added the STM panel 
    3130 */ 
    3231 
     
    4342 
    4443/** 
    45  * @author  bruno, Meiyii 
     44 * @author  bruno 
    4645 */ 
    4746public class AgentDisplay { 
     
    5655        _frame = new JFrame(ag.displayName()); 
    5756        _frame.getContentPane().setLayout(new BoxLayout(_frame.getContentPane(),BoxLayout.Y_AXIS)); 
    58                 _frame.setSize(900,1000); 
     57                _frame.setSize(650,650); 
    5958                _frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    6059                 
     
    7069                _displayPane.addTab("Drives", null, panel, "displays the character's drives.");*/ 
    7170                 
    72                 panel = new NeedsPanel(ag.name()); 
    73                 _displayPane.addTab("Needs",null,panel,"displays the characters needs");                 
     71                panel = new NeedsPanel(); 
     72                _displayPane.addTab("Needs",null,panel,"displays the characters needs"); 
     73                 
    7474                 
    7575                panel = new SocialRelationsPanel(); 
     
    8888                _displayPane.addTab("Short Term Memory", null, panel, "displays all the records in the character's short term memory"); 
    8989                 
     90                panel = new ToMPanel(); 
     91                _displayPane.addTab("Theory of Mind",null, panel, "displays the ToM (memory, emotional state,etc) of the other agent's"); 
     92         
     93                 
    9094                JButton teste = new JButton("Save"); 
    9195                teste.addActionListener(new TestAction(ag)); 
     
    99103    public void update() { 
    100104        AgentDisplayPanel pnl = (AgentDisplayPanel) _displayPane.getSelectedComponent(); 
    101          
    102         for (int i=0; i <_displayPane.getComponentCount(); i++) 
    103         { 
    104                 pnl = (AgentDisplayPanel) _displayPane.getComponentAt(i); 
    105                 //pnl = (AgentDisplayPanel) _displayPane.getSelectedComponent(); 
    106                 if(pnl.Update(_ag)) _frame.setVisible(true); 
    107         } 
     105        if(pnl.Update(_ag)) _frame.setVisible(true); 
    108106    } 
    109107     
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/AgentDisplayPanel.java

    r1 r253  
    3434 
    3535import FAtiMA.Agent; 
     36import FAtiMA.AgentModel; 
    3637 
    3738 
    3839public abstract class AgentDisplayPanel extends JPanel { 
    3940     
    40     public abstract boolean Update(Agent ag);  
     41    /** 
     42         *  
     43         */ 
     44        private static final long serialVersionUID = 1L; 
     45 
     46        public abstract boolean Update(Agent ag); 
     47         
     48        public abstract boolean Update(AgentModel am); 
    4149 
    4250} 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/ConditionsPanel.java

    r1 r253  
    5151        private static final long serialVersionUID = 1L; 
    5252 
    53         public ConditionsPanel(String title, ListIterator conditions) { 
     53        public ConditionsPanel(String title, ListIterator<Condition> conditions) { 
    5454                 
    5555                super(); 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/DrivesDisplay.java

    r5 r253  
    99import javax.swing.JProgressBar; 
    1010 
    11 import FAtiMA.memory.Memory; 
    12 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
     11import FAtiMA.AgentModel; 
    1312import FAtiMA.motivationalSystem.MotivationalState; 
     13import FAtiMA.util.Constants; 
    1414import FAtiMA.util.enumerables.MotivatorType; 
    1515 
     
    2323        JProgressBar _competenceBar; 
    2424 
    25         private String _agentName; 
    26  
    2725        //TODO: The way that the constructor distinguishes from the agent's needs panel 
    2826        //of the other agents needs panel is getting agentName == null;  
     
    3129                super(); 
    3230 
    33                 _agentName = agentName; 
    34                 boolean isSelf = (agentName.equalsIgnoreCase(Memory.GetInstance().getSelf())); 
     31                boolean isSelf = (agentName.equalsIgnoreCase(Constants.SELF)); 
    3532 
    3633                _panel = new JPanel(); 
    3734                 
    38                  
    39                  
    40                 if(isSelf){ 
    41                         _panel.setBorder(BorderFactory.createTitledBorder("Self"));              
    42                 }else{ 
    43                         _panel.setBorder(BorderFactory.createTitledBorder(agentName)); 
    44                 } 
     35                _panel.setBorder(BorderFactory.createTitledBorder(agentName)); 
    4536             
    4637                 
     
    8172         
    8273          
    83     public boolean Update() { 
     74    public boolean Update(AgentModel ag) { 
    8475        Float aux; 
    8576         
    8677         
    8778         
    88         MotivationalState ms = MotivationalState.GetInstance(); 
     79        MotivationalState ms = ag.getMotivationalState(); 
    8980         
    90         aux = new Float(ms.GetIntensity(_agentName,MotivatorType.ENERGY)); 
     81        aux = new Float(ms.GetIntensity(MotivatorType.ENERGY)); 
    9182        _energyBar.setString(aux.toString()); 
    9283        _energyBar.setValue(Math.round(aux.floatValue()*10)); 
    9384         
    94         aux = new Float(ms.GetIntensity(_agentName,MotivatorType.INTEGRITY)); 
     85        aux = new Float(ms.GetIntensity(MotivatorType.INTEGRITY)); 
    9586        _integrityBar.setString(aux.toString()); 
    9687        _integrityBar.setValue(Math.round(aux.floatValue()*10)); 
    9788         
    98         aux = new Float(ms.GetIntensity(_agentName,MotivatorType.AFFILIATION)); 
     89        aux = new Float(ms.GetIntensity(MotivatorType.AFFILIATION)); 
    9990        _affiliationBar.setString(aux.toString()); 
    10091        _affiliationBar.setValue(Math.round(aux.floatValue()*10)); 
    10192         
    102         aux = new Float(ms.GetIntensity(_agentName,MotivatorType.CERTAINTY)); 
     93        aux = new Float(ms.GetIntensity(MotivatorType.CERTAINTY)); 
    10394        _certaintyBar.setString(aux.toString()); 
    10495        _certaintyBar.setValue(Math.round(aux.floatValue()*10)); 
    10596         
    106         aux = new Float(ms.GetIntensity(_agentName,MotivatorType.COMPETENCE)); 
     97        aux = new Float(ms.GetIntensity(MotivatorType.COMPETENCE)); 
    10798        _competenceBar.setString(aux.toString()); 
    10899        _competenceBar.setValue(Math.round(aux.floatValue()*10)); 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/EmotionalStatePanel.java

    r1 r253  
    4343 
    4444import FAtiMA.Agent; 
     45import FAtiMA.AgentModel; 
    4546import FAtiMA.emotionalState.ActiveEmotion; 
    4647import FAtiMA.emotionalState.EmotionalState; 
     
    5859    JPanel _emotionsPanel; 
    5960     
    60     protected Hashtable _emotionDisplays; 
     61    protected Hashtable<String,EmotionDisplay> _emotionDisplays; 
    6162     
    6263    public EmotionalStatePanel() { 
     
    6465        this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 
    6566         
    66         _emotionDisplays = new Hashtable(); 
     67        _emotionDisplays = new Hashtable<String,EmotionDisplay>(); 
    6768 
    6869         
     
    99100    } 
    100101     
    101     public boolean Update(Agent ag) { 
     102    public boolean Update(Agent ag) 
     103    { 
     104        return Update((AgentModel) ag); 
     105    } 
     106     
     107    public boolean Update(AgentModel am) { 
    102108        Float aux; 
    103109        ActiveEmotion em; 
    104         EmotionalState es = EmotionalState.GetInstance(); 
     110        EmotionalState es = am.getEmotionalState(); 
    105111         
    106112        //aux = new Float(es.GetArousal()); 
     
    116122            //since the emotions displayed in the previous update are the same emotions 
    117123            //in the current update 
    118              Iterator it = es.GetEmotionsIterator(); 
     124             Iterator<ActiveEmotion> it = es.GetEmotionsIterator(); 
    119125             EmotionDisplay emotionDisplay; 
    120126             while(it.hasNext()) { 
    121                  em = (ActiveEmotion) it.next();      
     127                 em = it.next();      
    122128                 emotionDisplay = (EmotionDisplay) _emotionDisplays.get(em.GetHashKey()); 
    123129                 emotionDisplay.SetValue(em.GetIntensity()); 
     
    131137            _emotionDisplays.clear(); 
    132138             
    133             Iterator it = es.GetEmotionsIterator(); 
     139            Iterator<ActiveEmotion> it = es.GetEmotionsIterator(); 
    134140            EmotionDisplay emotionDisplay; 
    135141            while(it.hasNext()) { 
    136                 em = (ActiveEmotion) it.next(); 
     142                em = it.next(); 
    137143                emotionDisplay = new EmotionDisplay(em); 
    138144                 
     
    151157         
    152158        if(em != null) { 
    153                 Iterator it = _emotionDisplays.values().iterator(); 
     159                Iterator<EmotionDisplay> it = _emotionDisplays.values().iterator(); 
    154160                EmotionDisplay emotionDisplay; 
    155161                while(it.hasNext()) { 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/EpisodicMemoryPanel.java

    r5 r253  
    4141 
    4242import FAtiMA.Agent; 
    43 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    44 import FAtiMA.memory.autobiographicalMemory.MemoryEpisode; 
     43import FAtiMA.AgentModel; 
     44import FAtiMA.memory.episodicMemory.MemoryEpisode; 
    4545 
    4646 
     
    5151         */ 
    5252        private static final long serialVersionUID = 1L; 
    53         private ArrayList _memoryEpisodeDisplays; 
     53        private ArrayList<MemoryEpisodeDisplay> _memoryEpisodeDisplays; 
    5454    private JPanel _memoryEpisodes; 
    5555     
     
    5959        this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 
    6060         
    61         _memoryEpisodeDisplays = new ArrayList(); 
     61        _memoryEpisodeDisplays = new ArrayList<MemoryEpisodeDisplay>(); 
    6262                 
    6363                _memoryEpisodes = new JPanel(); 
     
    7373    } 
    7474     
     75    public boolean Update(Agent ag) 
     76    { 
     77        return Update((AgentModel) ag); 
     78    } 
    7579     
    76     public boolean Update(Agent ag) { 
     80     
     81    public boolean Update(AgentModel am) { 
    7782         
    7883        boolean update = false; 
    7984         
    80         if(countMemoryDetails() != AutobiographicalMemory.GetInstance().countMemoryDetails()) { 
     85        if(countMemoryDetails() != am.getMemory().getEpisodicMemory().countMemoryDetails()) { 
    8186                update = true; 
    8287                _memoryEpisodes.removeAll(); 
     
    8489                 
    8590                 
    86                 synchronized(AutobiographicalMemory.GetInstance().GetSyncRoot()){ 
    87                         Iterator it = AutobiographicalMemory.GetInstance().GetAllEpisodes().iterator(); 
     91                synchronized(am.getMemory().getEpisodicMemory().GetSyncRoot()){ 
     92                        Iterator<MemoryEpisode> it = am.getMemory().getEpisodicMemory().GetAllEpisodes().iterator(); 
    8893                MemoryEpisodeDisplay mDisplay; 
    8994                MemoryEpisode episode; 
     
    103108        { 
    104109        int aux=0; 
    105         ListIterator li = this._memoryEpisodeDisplays.listIterator(); 
     110        ListIterator<MemoryEpisodeDisplay> li = this._memoryEpisodeDisplays.listIterator(); 
    106111        while(li.hasNext()) 
    107112        { 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/GoalDisplay.java

    r1 r253  
    3737import javax.swing.JPanel; 
    3838 
     39import FAtiMA.AgentModel; 
    3940import FAtiMA.deliberativeLayer.goals.ActivePursuitGoal; 
    4041import FAtiMA.deliberativeLayer.goals.Goal; 
     
    5657     
    5758 
    58     public GoalDisplay(Goal g) { 
     59    public GoalDisplay(AgentModel am, Goal g) { 
    5960        _panel = new JPanel(); 
    6061        _panel.setBorder(BorderFactory.createTitledBorder(g.getName().toString())); 
     
    114115        Float aux; 
    115116         
    116         aux = new Float(g.GetImportanceOfSuccess()); 
     117        aux = new Float(g.GetImportanceOfSuccess(am)); 
    117118        _impOfSuccess.setText(aux.toString()); 
    118119         
    119         aux = new Float(g.GetImportanceOfFailure()); 
     120        aux = new Float(g.GetImportanceOfFailure(am)); 
    120121        _impOfFailure.setText(aux.toString()); 
    121122         
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/GoalsPanel.java

    r1 r253  
    4141 
    4242import FAtiMA.Agent; 
     43import FAtiMA.AgentModel; 
    4344import FAtiMA.deliberativeLayer.DeliberativeProcess; 
    44 import FAtiMA.deliberativeLayer.EmotionalPlanner; 
    4545import FAtiMA.deliberativeLayer.Intention; 
    4646import FAtiMA.deliberativeLayer.goals.Goal; 
     47import FAtiMA.wellFormedNames.Name; 
    4748 
    4849 
     
    5455        private static final long serialVersionUID = 1L; 
    5556         
    56         private HashMap _intentionDisplays; 
    57     private ArrayList _goalDisplays; 
     57        private HashMap<Name,IntentionDisplay> _intentionDisplays; 
     58    private ArrayList<GoalDisplay> _goalDisplays; 
    5859    private JPanel _goals; 
    5960    private JPanel _intentions; 
     
    6465        this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 
    6566         
    66         _intentionDisplays = new HashMap(); 
    67         _goalDisplays = new ArrayList(); 
     67        _intentionDisplays = new HashMap<Name, IntentionDisplay>(); 
     68        _goalDisplays = new ArrayList<GoalDisplay>(); 
    6869                 
    6970                _goals = new JPanel(); 
     
    8788    } 
    8889     
     90    public boolean Update(AgentModel am) 
     91    { 
     92        return false; 
     93    } 
     94     
    8995     
    9096    public boolean Update(Agent ag) { 
     
    99105                _goalDisplays.clear(); 
    100106                 
    101                 Iterator it = deliberative.GetGoals().iterator(); 
     107                Iterator<Goal> it = deliberative.GetGoals().iterator(); 
    102108                GoalDisplay gDisplay; 
    103109                Goal g; 
    104110                while(it.hasNext()) { 
    105                         g = (Goal) it.next(); 
    106                         gDisplay = new GoalDisplay(g); 
     111                        g = it.next(); 
     112                        gDisplay = new GoalDisplay(ag, g); 
    107113                         
    108114                        _goals.add(gDisplay.getGoalPanel()); 
     
    115121            //since the emotions displayed in the previous update are the same emotions 
    116122            //in the current update 
    117              Iterator it = deliberative.GetIntentionsIterator(); 
     123             Iterator<Intention> it = deliberative.GetIntentionsIterator(); 
    118124             IntentionDisplay iDisplay; 
    119125             Intention i; 
    120126             while(it.hasNext()) { 
    121127                  
    122                  i = (Intention) it.next();      
     128                 i = it.next();      
    123129                 iDisplay = (IntentionDisplay) _intentionDisplays.get(i.getGoal().getName().toString()); 
    124                  iDisplay.Update(i); 
     130                 iDisplay.Update(ag, i); 
    125131             }     
    126132        } 
     
    130136            _intentionDisplays.clear(); 
    131137             
    132             Iterator it = deliberative.GetIntentionsIterator(); 
     138            Iterator<Intention> it = deliberative.GetIntentionsIterator(); 
    133139            IntentionDisplay iDisplay; 
    134140            Intention i; 
    135141            while(it.hasNext()) { 
    136                 i = (Intention) it.next(); 
    137                 iDisplay = new IntentionDisplay(i); 
     142                i = it.next(); 
     143                iDisplay = new IntentionDisplay(ag, i); 
    138144                 
    139145                _intentions.add(iDisplay.getIntentionPanel()); 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/IntentionDisplay.java

    r1 r253  
    3838import javax.swing.JPanel; 
    3939 
     40import FAtiMA.AgentModel; 
    4041import FAtiMA.deliberativeLayer.Intention; 
    4142 
     
    5152    EmotionDisplay _fear; 
    5253     
    53     public IntentionDisplay(Intention i) { 
     54    public IntentionDisplay(AgentModel am, Intention i) { 
    5455         
    5556        _panel = new JPanel(); 
     
    108109         
    109110        _panel.add(pnl); 
    110         this.Update(i); 
     111        this.Update(am, i); 
    111112    } 
    112113     
    113     public void Update(Intention i) { 
     114    public void Update(AgentModel am, Intention i) { 
    114115        Float aux; 
    115116        Integer aux2; 
    116117         
    117         aux = new Float(i.getGoal().GetImportanceOfSuccess()); 
     118        aux = new Float(i.getGoal().GetImportanceOfSuccess(am)); 
    118119        _impOfSuccess.setText(aux.toString()); 
    119120         
    120         aux = new Float(i.getGoal().GetImportanceOfFailure()); 
     121        aux = new Float(i.getGoal().GetImportanceOfFailure(am)); 
    121122        _impOfFailure.setText(aux.toString()); 
    122123         
     
    124125        _numberOfPlans.setText(aux2.toString()); 
    125126         
    126         aux = new Float(i.GetProbability()); 
     127        aux = new Float(i.GetProbability(am)); 
    127128        _probability.setText(aux.toString()); 
    128129    } 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/KnowledgeBasePanel.java

    r13 r253  
    3939 
    4040import FAtiMA.Agent; 
    41 import FAtiMA.knowledgeBase.KnowledgeBase; 
    42 import FAtiMA.memory.KnowledgeSlot; 
     41import FAtiMA.AgentModel; 
     42import FAtiMA.memory.semanticMemory.KnowledgeSlot; 
     43 
    4344 
    4445 
     
    5152        private static final long serialVersionUID = 1L; 
    5253 
    53         private ArrayList _knowledgeFactList; 
     54        private ArrayList<KnowledgeFactDisplay> _knowledgeFactList; 
    5455     
    5556    private JPanel _knowledgeFactsPanel; 
     
    5960        this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 
    6061         
    61         _knowledgeFactList = new ArrayList(); 
     62        _knowledgeFactList = new ArrayList<KnowledgeFactDisplay>(); 
    6263         
    6364        _knowledgeFactsPanel = new JPanel(); 
     
    6970                 
    7071    } 
     72     
     73    public boolean Update(Agent ag) 
     74    { 
     75        return Update((AgentModel)ag); 
     76    } 
    7177    
    72     public boolean Update(Agent ag) { 
    73         KnowledgeBase kb = KnowledgeBase.GetInstance(); 
     78    public boolean Update(AgentModel am) { 
    7479         
    75         ListIterator li = kb.GetFactList(); 
     80        ListIterator<KnowledgeSlot> li = am.getMemory().getSemanticMemory().GetFactList(); 
    7681         
    7782        KnowledgeSlot slot; 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/MemoryDetailPanel.java

    r5 r253  
    3838import javax.swing.JTextField; 
    3939 
    40 import FAtiMA.memory.ActionDetail; 
     40import FAtiMA.memory.episodicMemory.ActionDetail; 
    4141import FAtiMA.util.enumerables.EmotionType; 
    4242 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/MemoryEpisodeDisplay.java

    r5 r253  
    4141import javax.swing.JTextArea; 
    4242 
    43 import FAtiMA.memory.ActionDetail; 
    44 import FAtiMA.memory.autobiographicalMemory.MemoryEpisode; 
     43import FAtiMA.memory.episodicMemory.ActionDetail; 
     44import FAtiMA.memory.episodicMemory.MemoryEpisode; 
     45 
    4546 
    4647 
     
    240241                JScrollPane propertiesScroll = new JScrollPane(prop); 
    241242                 
    242                 ListIterator li = episode.getDetails().listIterator(); 
     243                ListIterator<ActionDetail> li = episode.getDetails().listIterator(); 
    243244                while(li.hasNext()) 
    244245                { 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/NeedsPanel.java

    r1 r253  
    22 
    33import java.awt.Dimension; 
    4 import java.util.Collection; 
    54import java.util.Hashtable; 
    6 import java.util.Iterator; 
    75 
    86import javax.swing.BorderFactory; 
     
    1210 
    1311import FAtiMA.Agent; 
    14 import FAtiMA.motivationalSystem.MotivationalState; 
     12import FAtiMA.AgentModel; 
     13import FAtiMA.util.Constants; 
    1514 
    1615public class NeedsPanel extends AgentDisplayPanel { 
    1716        private static final long serialVersionUID = 1L; 
    1817         
    19         private Hashtable _drivesDisplays; 
     18        private Hashtable<String,DrivesDisplay> _drivesDisplays; 
    2019          
    2120        private JPanel _needs; 
    22         private int _previousKnownAgents; 
    2321 
    24         public NeedsPanel(String agentName) { 
     22        public NeedsPanel() { 
    2523                 
    2624                super(); 
    27                 _previousKnownAgents = 0; 
    2825                 
    2926        this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 
    3027       
    31         _drivesDisplays = new Hashtable(); 
     28        _drivesDisplays = new Hashtable<String, DrivesDisplay>(); 
    3229                 
    3330        _needs = new JPanel(); 
     
    4239                this.add(goalsScrool); 
    4340                 
    44                 DrivesDisplay aux = new DrivesDisplay(agentName); 
     41                DrivesDisplay aux = new DrivesDisplay(Constants.SELF); 
    4542                _needs.add(aux.getDrivesPanel()); 
    46                 _drivesDisplays.put(agentName,aux); 
     43                _drivesDisplays.put(Constants.SELF,aux); 
    4744                 
    4845                 
    4946        } 
    5047         
     48        public boolean Update(Agent ag) 
     49        { 
     50                return Update((AgentModel) ag); 
     51        } 
    5152         
    52         public boolean Update(Agent ag) { 
     53         
     54        public boolean Update(AgentModel ag) { 
    5355 
    54                 CheckForOtherAgents(); 
     56                //CheckForOtherAgents(ag); 
     57                 
     58                for(DrivesDisplay dd : _drivesDisplays.values()) 
     59                { 
     60                        dd.Update(ag); 
     61                } 
    5562         
    56                 Collection displays  = _drivesDisplays.values(); 
    57                  
    58                 Iterator it = displays.iterator(); 
    59                  
    60                 while(it.hasNext()){ 
    61                         DrivesDisplay dd = (DrivesDisplay)it.next(); 
    62                          
    63                         dd.Update(); 
    64                 } 
    6563                return false; 
    6664        } 
    6765          
    6866         
    69         private void CheckForOtherAgents(){ 
    70                 int numOfKnownAgents = MotivationalState.GetInstance().getOtherAgentsMotivators().size(); 
     67        /*private void CheckForOtherAgents(AgentModel am){ 
     68                int numOfKnownAgents = am.getMotivationalState().getOtherAgentsMotivators().size(); 
    7169                 
    7270                if(numOfKnownAgents > _previousKnownAgents){ 
    7371                        _previousKnownAgents = numOfKnownAgents; 
    7472                         
    75                         Collection otherAgentsNames  = MotivationalState.GetInstance().getOtherAgentsMotivators().keySet(); 
     73                        Collection<String> otherAgentsNames  = am.getMotivationalState().getOtherAgentsMotivators().keySet(); 
    7674                 
    77                         Iterator it = otherAgentsNames.iterator(); 
     75                        Iterator<String> it = otherAgentsNames.iterator(); 
    7876                         
    7977                        while(it.hasNext()){ 
     
    8785                        }        
    8886                } 
    89         } 
     87        }*/ 
    9088         
    9189         
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/RecordDetailPanel.java

    r63 r253  
    99import javax.swing.JTextField; 
    1010 
    11 import FAtiMA.memory.ActionDetail; 
     11import FAtiMA.memory.episodicMemory.ActionDetail; 
    1212import FAtiMA.util.enumerables.EmotionType; 
    1313 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/RelationDisplay.java

    r1 r253  
    3737import javax.swing.JProgressBar; 
    3838 
     39import FAtiMA.memory.Memory; 
    3940import FAtiMA.socialRelations.LikeRelation; 
    4041import FAtiMA.socialRelations.Relation; 
     
    5253    JProgressBar _bar; 
    5354     
    54     public RelationDisplay(Relation rd) { 
     55    public RelationDisplay(Memory m, Relation rd) { 
    5556        _panel = new JPanel(); 
    5657        _panel.setMaximumSize(new Dimension(300,60)); 
     
    6768        } 
    6869         
    69         this.setValue(rd.getValue()); 
     70        this.setValue(rd.getValue(m)); 
    7071        _panel.add(_bar); 
    7172    } 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/STMRecordDisplay.java

    r63 r253  
    3939import javax.swing.JPanel; 
    4040import javax.swing.JScrollPane; 
    41 import javax.swing.JTextArea; 
    4241 
    4342import java.util.ArrayList; 
    44 import FAtiMA.memory.ActionDetail; 
    45 import FAtiMA.memory.shortTermMemory.STMemoryRecord; 
    46 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    47 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
     43 
     44import FAtiMA.AgentModel; 
     45import FAtiMA.memory.episodicMemory.ActionDetail; 
    4846 
    4947public class STMRecordDisplay { 
     
    5149        private JPanel _panel; 
    5250    private JPanel _details; 
    53     private static int _lastID = 0; 
    54     private static int _previousID = 0; 
     51 
    5552     
    56     public STMRecordDisplay(STMemoryRecord records) { 
     53    public STMRecordDisplay(AgentModel am) { 
    5754 
    5855        _panel = new JPanel(); 
     
    136133                propertiesScroll.setAutoscrolls(true); 
    137134                 
    138                 ListIterator li = records.getDetails().listIterator(); 
     135                ListIterator<ActionDetail> li = am.getMemory().getEpisodicMemory().getDetails().listIterator(); 
    139136         
    140                 ArrayList newRecords = ShortTermMemory.GetInstance().GetNewRecords(); 
     137                ArrayList<FAtiMA.memory.episodicMemory.ActionDetail> newRecords = am.getMemory().getEpisodicMemory().GetNewRecords(); 
    141138                 
    142139                while(li.hasNext()) 
     
    150147                        prop.add(recordDetailPanel); 
    151148                } 
    152                 synchronized(ShortTermMemory.GetInstance()) 
     149                synchronized(am.getMemory().getEpisodicMemory()) 
    153150                { 
    154                         ShortTermMemory.GetInstance().ClearNewRecords(); 
     151                        am.getMemory().getEpisodicMemory().ClearNewRecords(); 
    155152                } 
    156153         
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/ShortTermMemoryPanel.java

    r71 r253  
    3333import java.awt.Dimension; 
    3434import java.util.ArrayList; 
    35 import java.util.Iterator; 
    3635import java.util.ListIterator; 
    3736 
     
    4241 
    4342import FAtiMA.Agent; 
    44 import FAtiMA.memory.KnowledgeSlot; 
    45 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
    46 import FAtiMA.memory.shortTermMemory.STMemoryRecord; 
    47 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    48 import FAtiMA.knowledgeBase.KnowledgeBase; 
     43import FAtiMA.AgentModel; 
     44import FAtiMA.memory.semanticMemory.KnowledgeSlot; 
     45import FAtiMA.memory.semanticMemory.SemanticMemory; 
     46import FAtiMA.memory.semanticMemory.WorkingMemory; 
    4947 
    5048public class ShortTermMemoryPanel extends AgentDisplayPanel { 
     
    5957    //private JPanel _knowledgePanel; 
    6058    private static int _knowledgeSize = 0; 
    61     private ArrayList _knowledgeFactList; 
     59    private ArrayList<KnowledgeFactDisplay> _knowledgeFactList; 
    6260    private JPanel _knowledgeFactsPanel; 
    6361    
     
    8179                this.add(eventsScrool); 
    8280                 
    83                 _knowledgeFactList = new ArrayList(); 
     81                _knowledgeFactList = new ArrayList<KnowledgeFactDisplay>(); 
    8482                
    8583            _knowledgeFactsPanel = new JPanel(); 
     
    126124    } 
    127125     
     126    public boolean Update(Agent ag) 
     127    { 
     128        return Update((AgentModel) ag); 
     129    } 
    128130     
    129     public boolean Update(Agent ag) { 
     131    public boolean Update(AgentModel am) { 
    130132         
    131133        _memoryRecords.removeAll(); 
    132134                 
    133         synchronized(ShortTermMemory.GetInstance().GetSyncRoot()){ 
    134                 STMemoryRecord records = ShortTermMemory.GetInstance().GetAllRecords(); 
    135                 _stmRecordDisplay = new STMRecordDisplay(records); 
    136             _memoryRecords.add(_stmRecordDisplay.getSTMRecordPanel());           
    137         }      
     135        //EpisodicMemory em = ag.getMemory().getEpisodicMemory(); 
     136        SemanticMemory sm = am.getMemory().getSemanticMemory(); 
     137                 
     138        _stmRecordDisplay = new STMRecordDisplay(am); 
     139        _memoryRecords.add(_stmRecordDisplay.getSTMRecordPanel());       
     140      
    138141         
    139         ListIterator li = KnowledgeBase.GetInstance().GetFactList(); 
     142        ListIterator<KnowledgeSlot> li = sm.GetFactList(); 
    140143         
    141144        KnowledgeSlot slot; 
     
    143146        int index;          
    144147         
    145         if (KnowledgeBase.GetInstance().Count() >= _knowledgeSize) 
     148        if (sm.Count() >= _knowledgeSize) 
    146149        { 
    147150                 _knowledgeFactsPanel.removeAll(); 
    148                  _knowledgeSize = KnowledgeBase.GetInstance().Count(); 
     151                 _knowledgeSize = sm.Count(); 
    149152        } 
    150153         
     
    160163        } 
    161164         
    162         li = WorkingMemory.GetInstance().GetFactList(); 
    163         ArrayList changeList = WorkingMemory.GetInstance().GetChangeList(); 
     165        li = sm.GetFactList(); 
     166        ArrayList<KnowledgeSlot> changeList = sm.GetChangeList(); 
    164167        _workingFactsSubPanel1.removeAll(); 
    165168        _workingFactsSubPanel2.removeAll(); 
     
    177180                _workingFactsSubPanel1.add(kDisplay.GetPanel()); 
    178181        } 
    179         synchronized(WorkingMemory.GetInstance()) 
     182        synchronized(sm) 
    180183        { 
    181                 WorkingMemory.GetInstance().ClearChangeList(); 
     184                sm.ClearChangeList(); 
    182185        } 
    183186   
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/SocialRelationsPanel.java

    r13 r253  
    1111 
    1212import FAtiMA.Agent; 
    13 import FAtiMA.memory.Memory; 
     13import FAtiMA.AgentModel; 
    1414import FAtiMA.socialRelations.LikeRelation; 
    1515import FAtiMA.socialRelations.Relation; 
    1616import FAtiMA.socialRelations.RespectRelation; 
     17import FAtiMA.util.Constants; 
    1718 
    1819public class SocialRelationsPanel extends AgentDisplayPanel { 
     
    2223        JPanel _relationsPanel; 
    2324 
    24         protected Hashtable _relationsDisplay; 
     25        protected Hashtable<String, RelationDisplay> _realationsDisplay; 
    2526 
    2627        public SocialRelationsPanel() { 
     
    2829                this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 
    2930 
    30                 _relationsDisplay = new Hashtable(); 
     31                _realationsDisplay = new Hashtable<String, RelationDisplay>(); 
    3132 
    3233                _relationsPanel = new JPanel(); 
     
    4041                this.add(relationsScroll); 
    4142        } 
     43         
     44        public boolean Update(AgentModel am) 
     45        { 
     46                return false; 
     47        } 
    4248 
    4349        public boolean Update(Agent ag) { 
    44                 ArrayList relations = LikeRelation.getAllRelations(Memory.GetInstance().getSelf()); 
    45                 relations.addAll(RespectRelation.getAllRelations(Memory.GetInstance().getSelf())); 
     50                ArrayList<Relation> relations = new ArrayList<Relation>(); 
     51                relations.addAll(LikeRelation.getAllRelations(ag.getMemory(),Constants.SELF)); 
     52                relations.addAll(RespectRelation.getAllRelations(ag.getMemory(), Constants.SELF));  
     53                 
    4654                boolean updated = false; 
    4755 
    4856                // in this case, there's a new relation added (it is not usual for 
    49                 // relations to disapear) 
     57                // relations to disappear) 
    5058                // so we have to clear all relations and start displaying them all again 
    51                 if (_relationsDisplay.size() != relations.size()) { 
     59                if (_realationsDisplay.size() != relations.size()) { 
    5260                        _relationsPanel.removeAll(); // removes all displayed emotions 
    5361                                                                                        // from the panel 
    54                         _relationsDisplay.clear(); 
    55                         Iterator it = relations.iterator(); 
     62                        _realationsDisplay.clear(); 
     63                        Iterator<Relation> it = relations.iterator(); 
    5664                        while (it.hasNext()) { 
    5765                                Relation r = (Relation) it.next(); 
    58                                 RelationDisplay display = new RelationDisplay(r); 
     66                                RelationDisplay display = new RelationDisplay(ag.getMemory(), r); 
    5967                                _relationsPanel.add(display.getPanel()); 
    60                                 _relationsDisplay.put(r.getHashKey(), display); 
     68                                _realationsDisplay.put(r.getHashKey(), display); 
    6169                        } 
    6270                        updated = true; 
    6371                } 
    6472 
    65                 Iterator it = relations.iterator(); 
     73                Iterator<Relation> it = relations.iterator(); 
    6674                while (it.hasNext()) { 
    6775                        Relation r = (Relation) it.next(); 
    68                         RelationDisplay display = (RelationDisplay) _relationsDisplay 
     76                        RelationDisplay display = (RelationDisplay) _realationsDisplay 
    6977                                        .get(r.getHashKey()); 
    70                         display.setValue(r.getValue()); 
     78                        display.setValue(r.getValue(ag.getMemory())); 
    7179                } 
    7280 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/Display/TestAction.java

    r34 r253  
    1717 
    1818        public void actionPerformed(ActionEvent arg0) { 
    19                 _ag.SaveAgentState(_ag.name()); 
    20                 _ag.SaveAM(_ag.name()); 
    21                 _ag.SaveSTM(_ag.name()); 
     19                _ag.SaveAgentState(_ag.getName()); 
    2220        } 
    2321         
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/IntegrityValidator.java

    r1 r253  
    4848 
    4949 
     50import FAtiMA.conditions.Condition; 
    5051import FAtiMA.exceptions.UnknownSpeechActException; 
    5152import FAtiMA.sensorEffector.SpeechAct; 
     
    6263public class IntegrityValidator { 
    6364     
    64     ArrayList _operators; 
     65   // ArrayList _operators; 
    6566    /*LanguageEngine _language; 
    6667    LanguageEngine _user;*/ 
     
    9495     * @return true if any of the conditions received is unreacheable, false otherwise 
    9596     */ 
    96     public boolean FindUnreachableConditions(String objectName, ArrayList conditions) 
     97    public boolean FindUnreachableConditions(String objectName, ArrayList<Condition> conditions) 
    9798        { 
    9899           /* boolean foundUnreachable = false; 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/ValuedAction.java

    r1 r253  
    9595         * @return the Emotion associated with the action 
    9696         */ 
    97         public ActiveEmotion getEmotion() { 
     97        public ActiveEmotion getEmotion(EmotionalState es) { 
    9898                if(_emotionKey == null) return null; 
    99                 return EmotionalState.GetInstance().GetEmotion(_emotionKey); 
     99                return es.GetEmotion(_emotionKey); 
    100100        } 
    101101 
     
    104104         * @return a float representing how emotionally important is the action 
    105105         */ 
    106         public float GetValue() { 
     106        public float GetValue(EmotionalState es) { 
    107107                if(_value == -1) 
    108108                { 
    109                         ActiveEmotion aux = getEmotion(); 
     109                        ActiveEmotion aux = getEmotion(es); 
    110110                        if(aux != null) return aux.GetIntensity(); 
    111111                        else return 0; 
     
    127127         */ 
    128128        public String toString() { 
    129                 return "Action: " + _action + " Value: " + GetValue(); 
     129                return "Action: " + _action + " Emotion: " + _emotionKey; 
    130130        } 
    131131} 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/Condition.java

    r13 r253  
    6464import java.util.ListIterator; 
    6565 
    66 //import FAtiMA.knowledgeBase.KnowledgeBase; 
    67 import FAtiMA.memory.Memory; 
    68 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
     66import FAtiMA.AgentModel; 
     67import FAtiMA.memory.semanticMemory.KnowledgeBase; 
    6968import FAtiMA.wellFormedNames.IGroundable; 
    7069import FAtiMA.wellFormedNames.Name; 
     70import FAtiMA.wellFormedNames.Substitution; 
    7171import FAtiMA.wellFormedNames.SubstitutionSet; 
    7272 
     
    8585 
    8686public abstract class Condition implements IGroundable, Cloneable, Serializable { 
     87 
     88        /** 
     89         *  
     90         */ 
     91        private static final long serialVersionUID = 1L; 
    8792 
    8893        /** 
     
    102107         * @see SubstitutionSet 
    103108         */ 
    104         public static ArrayList CheckActivation(ArrayList preconditions) { 
    105                 ListIterator subsi; 
    106                 Condition cond; 
     109        public static ArrayList<SubstitutionSet> CheckActivation(AgentModel am, ArrayList<Condition> preconditions) { 
     110                ListIterator<SubstitutionSet> subsi; 
    107111                Condition newCond; 
    108112                SubstitutionSet subSet; 
    109                 ArrayList aux; 
    110                 SubstitutionSet newSubSet; 
    111                 ArrayList validSubstitutionsSet = new ArrayList(); 
    112                 ArrayList newValidSubstitutionsSet; 
     113                ArrayList<SubstitutionSet> aux; 
     114                ArrayList<SubstitutionSet> validSubstitutionsSet = new ArrayList<SubstitutionSet>(); 
     115                ArrayList<SubstitutionSet> newValidSubstitutionsSet; 
    113116                 
    114                 for(ListIterator li = preconditions.listIterator(); li.hasNext();) 
     117                for(Condition cond : preconditions) 
    115118                { 
    116119                        //For each condition we need to verify if it is valid 
    117                         cond = (Condition) li.next(); 
     120                         
    118121 
    119122                        //This list contains the SubstitutionSets that correspond to Substitutions  
     
    121124                        //this list is rebuilt from scratch at each condition, because a previous 
    122125                        //valid Substitution may become invalid when testing another condition  
    123                         newValidSubstitutionsSet = new ArrayList(); 
     126                        newValidSubstitutionsSet = new ArrayList<SubstitutionSet>(); 
    124127                         
    125128                        //if there are substitutions that resulted from testing previous conditions 
     
    142145                                        //we test the new condition against memory and receive a list of new SubstitutionsSets 
    143146                                        //that individually can satisfy the new condition 
    144                                         aux = newCond.GetValidBindings(); 
     147                                        aux = newCond.GetValidBindings(am); 
    145148                                        if (aux != null) { 
    146149                                                //if the list is not null, it means that the condition can be verified  
     
    149152                                                //So, for each valid set of substitutions we need to add the substitutions 
    150153                                                //that satisfy the previous conditions, and the result is a valid SubstitutionSet 
    151                                                 for(ListIterator li2 = aux.listIterator();li2.hasNext();) 
    152                                                 { 
    153                                                         newSubSet = (SubstitutionSet) li2.next(); 
     154                                                for(SubstitutionSet newSubSet : aux){ 
    154155                                                        //We're adding the substitutions needed for the previous conditions 
    155156                                                        //to the SubstitutionSet that verifies the current condition  
     
    168169                                //in this case there are no previous substitutions that resulted from the 
    169170                                //previous condition tests 
    170                                 aux = cond.GetValidBindings(); 
     171                                aux = cond.GetValidBindings(am); 
    171172                                if (aux != null && aux.size() > 0) { 
    172173                                        newValidSubstitutionsSet.addAll(aux); 
     
    206207         * @see AutobiographicalMemory 
    207208         */ 
    208         public abstract boolean CheckCondition(); 
     209        public abstract boolean CheckCondition(AgentModel am); 
    209210 
    210211        /** 
     
    224225         * @see AutobiographicalMemory 
    225226         */ 
    226         public ArrayList GetValidBindings() { 
    227                 ArrayList validSubstitutionSets = new ArrayList(); 
    228                 ArrayList bindingSets; 
    229                 ArrayList bindings; 
    230                 ArrayList aux; 
     227        public ArrayList<SubstitutionSet> GetValidBindings(AgentModel am) { 
     228                ArrayList<SubstitutionSet> validSubstitutionSets = new ArrayList<SubstitutionSet>(); 
     229                ArrayList<SubstitutionSet> bindingSets; 
     230                ArrayList<Substitution> bindings; 
     231                ArrayList<Substitution> aux; 
    231232                SubstitutionSet subSet; 
    232233                Condition cond; 
    233234 
    234235                if (_name.isGrounded()) { 
    235                         bindings = this.GetValueBindings(); 
     236                        bindings = this.GetValueBindings(am); 
    236237                        if (bindings == null) 
    237238                                return null; 
     
    240241                } 
    241242 
    242                 bindingSets = Memory.GetInstance().GetPossibleBindings(_name); 
     243                bindingSets = am.getMemory().getSemanticMemory().GetPossibleBindings(_name); 
    243244                if (bindingSets == null) 
    244245                        return null; 
    245246 
    246                 ListIterator li = bindingSets.listIterator(); 
     247                ListIterator<SubstitutionSet> li = bindingSets.listIterator(); 
    247248                while (li.hasNext()) { 
    248249                        subSet = (SubstitutionSet) li.next(); 
    249250                        cond = (Condition) this.clone(); 
    250251                        cond.MakeGround(subSet.GetSubstitutions()); 
    251                         aux = cond.GetValueBindings(); 
     252                        aux = cond.GetValueBindings(am); 
    252253                        if (aux != null) {                               
    253254                                subSet.AddSubstitutions(aux); 
     
    298299     * @return returns all set of Substitutions that make the condition valid. 
    299300         */ 
    300         protected abstract ArrayList GetValueBindings(); 
     301        protected abstract ArrayList<Substitution> GetValueBindings(AgentModel am); 
    301302} 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/EmotionCondition.java

    r5 r253  
    3535import org.xml.sax.Attributes; 
    3636 
     37import FAtiMA.AgentModel; 
    3738import FAtiMA.emotionalState.ActiveEmotion; 
    3839import FAtiMA.emotionalState.EmotionalState; 
    3940import FAtiMA.exceptions.InvalidEmotionTypeException; 
    40 import FAtiMA.knowledgeBase.KnowledgeBase; 
    41 import FAtiMA.memory.Memory; 
     41import FAtiMA.memory.semanticMemory.KnowledgeBase; 
    4242import FAtiMA.util.enumerables.EmotionType; 
    4343import FAtiMA.wellFormedNames.Name; 
     
    124124        private void UpdateName() 
    125125        { 
    126                 String aux = Memory.GetInstance().getSelf() + "(" +  
    127                 EmotionType.GetName(this._emotionType); 
     126                String aux = EmotionType.GetName(this._emotionType) + "(";  
     127                 
    128128                if(this._direction != null) 
    129129                { 
    130                         aux += "," + this._direction; 
     130                        aux += this._direction; 
    131131                } 
    132132                aux+=")"; 
     
    148148         * @see KnowledgeBase 
    149149         */ 
    150         public boolean CheckCondition() { 
     150        public boolean CheckCondition(AgentModel am) { 
    151151                boolean result; 
    152152                if(!_name.isGrounded()) return false; 
    153153                 
    154                 result = SearchEmotion().size() > 0;  
     154                result = SearchEmotion(am.getEmotionalState()).size() > 0;  
    155155                return _positive == result; 
    156156        } 
     
    162162         * @see EmotionalState 
    163163         */ 
    164         public ArrayList GetValidBindings() { 
    165                 ArrayList bindingSets = new ArrayList(); 
    166                 ArrayList subSets; 
     164        public ArrayList<SubstitutionSet> GetValidBindings(AgentModel am) { 
     165                ArrayList<SubstitutionSet> bindingSets = new ArrayList<SubstitutionSet>(); 
     166                ArrayList<SubstitutionSet> subSets; 
    167167                 
    168168                if (_name.isGrounded()) { 
    169                         if(CheckCondition()) 
     169                        if(CheckCondition(am)) 
    170170                        { 
    171171                                bindingSets.add(new SubstitutionSet()); 
     
    178178                //assume false 
    179179                if(!this._positive) return null; 
    180                 subSets = SearchEmotion(); 
     180                subSets = SearchEmotion(am.getEmotionalState()); 
    181181                if(subSets.size() == 0) return null; 
    182182                return subSets; 
    183183        } 
    184184         
    185         private ArrayList SearchEmotion() 
     185        private ArrayList<SubstitutionSet> SearchEmotion(EmotionalState es) 
    186186        { 
    187187                ActiveEmotion aem; 
    188                 ArrayList bindings; 
    189                 ArrayList substitutionSets = new ArrayList(); 
    190                  
    191                 for(Iterator it = EmotionalState.GetInstance().GetEmotionsIterator();it.hasNext();) 
     188                ArrayList<Substitution> bindings; 
     189                ArrayList <SubstitutionSet>substitutionSets = new ArrayList<SubstitutionSet>(); 
     190                 
     191                for(Iterator<ActiveEmotion> it = es.GetEmotionsIterator();it.hasNext();) 
    192192                { 
    193193                        aem = (ActiveEmotion) it.next(); 
     
    255255         * @see Substitution 
    256256         */ 
    257         public Object Ground(ArrayList bindings) { 
     257        public Object Ground(ArrayList<Substitution> bindings) { 
    258258                EmotionCondition aux = (EmotionCondition) this.clone(); 
    259259                aux.MakeGround(bindings); 
     
    269269         * @see Substitution 
    270270         */ 
    271     public void MakeGround(ArrayList bindings) 
     271    public void MakeGround(ArrayList<Substitution> bindings) 
    272272    { 
    273273        this._name.MakeGround(bindings); 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/MoodCondition.java

    r5 r253  
    3333import org.xml.sax.Attributes; 
    3434 
     35import FAtiMA.AgentModel; 
    3536import FAtiMA.emotionalState.EmotionalState; 
    3637import FAtiMA.exceptions.InvalidMoodOperatorException; 
    3738import FAtiMA.exceptions.NoMoodOperatorDefinedException; 
    38 import FAtiMA.memory.Memory; 
    3939import FAtiMA.wellFormedNames.Name; 
    4040import FAtiMA.wellFormedNames.Substitution; 
     
    139139                } 
    140140                 
    141                 UpdateName(); 
    142         } 
    143          
    144         private void UpdateName() 
    145         { 
    146                 String aux = Memory.GetInstance().getSelf() + "(mood," + this._operator + ")"; 
    147                 this._name = Name.ParseName(aux); 
    148         } 
     141                this._name = Name.ParseName("mood(" + this._operator + ")"); 
     142        } 
     143         
    149144         
    150145        /** 
     
    162157         * @see KnowledgeBase 
    163158         */ 
    164         public boolean CheckCondition() { 
    165                  
    166                 float currentMood = EmotionalState.GetInstance().GetMood(); 
     159        public boolean CheckCondition(AgentModel am) { 
     160                 
     161                float currentMood = am.getEmotionalState().GetMood(); 
    167162                 
    168163                switch(this._operator) 
     
    202197         * @see EmotionalState 
    203198         */ 
    204         public ArrayList GetValidBindings() { 
    205                 if(CheckCondition()) 
    206                 { 
    207                         ArrayList bindings = new ArrayList(); 
     199        public ArrayList<SubstitutionSet> GetValidBindings(AgentModel am) { 
     200                if(CheckCondition(am)) 
     201                { 
     202                        ArrayList<SubstitutionSet> bindings = new ArrayList<SubstitutionSet>(); 
    208203                        bindings.add(new SubstitutionSet()); 
    209204                        return bindings; 
     
    212207        } 
    213208         
    214         public ArrayList GetValueBindings() 
    215         { 
    216                 if(CheckCondition()) { 
    217                         return new ArrayList(); 
     209        public ArrayList<Substitution> GetValueBindings(AgentModel am) 
     210        { 
     211                if(CheckCondition(am)) { 
     212                        return new ArrayList<Substitution>(); 
    218213                } 
    219214                else return null; 
     
    259254         * @see Substitution 
    260255         */ 
    261         public Object Ground(ArrayList bindings) { 
     256        public Object Ground(ArrayList<Substitution> bindings) { 
    262257                MoodCondition aux = (MoodCondition) this.clone(); 
    263258                aux.MakeGround(bindings); 
     
    273268         * @see Substitution 
    274269         */ 
    275     public void MakeGround(ArrayList bindings) 
     270    public void MakeGround(ArrayList<Substitution> bindings) 
    276271    { 
    277272    } 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/MotivatorCondition.java

    r1 r253  
    55import org.xml.sax.Attributes; 
    66 
     7import FAtiMA.AgentModel; 
    78import FAtiMA.util.AgentLogger; 
    89import FAtiMA.wellFormedNames.Name; 
    910import FAtiMA.wellFormedNames.Substitution; 
     11import FAtiMA.wellFormedNames.SubstitutionSet; 
    1012import FAtiMA.wellFormedNames.Symbol; 
    1113 
    1214public class MotivatorCondition extends Condition { 
    1315         
     16        /** 
     17         *  
     18         */ 
     19        private static final long serialVersionUID = 1L; 
     20 
    1421        /** 
    1522         * Parses a Motivator given a XML attribute list 
     
    1825         */ 
    1926        public static MotivatorCondition ParseMotivator(Attributes attributes) { 
    20                 MotivatorCondition cond; 
    2127                String drive; 
    2228                Name target; 
     
    5561         * @return true if the condition is verified, false otherwise 
    5662         */ 
    57         public boolean CheckCondition() { 
     63        public boolean CheckCondition(AgentModel am) { 
    5864                //TODO: implment this based on the motivational system 
    5965                return true; 
     
    133139         * @see Substitution 
    134140         */ 
    135         public Object Ground(ArrayList bindingConstraints) 
     141        public Object Ground(ArrayList<Substitution> bindingConstraints) 
    136142        { 
    137143                MotivatorCondition aux = (MotivatorCondition) this.clone(); 
     
    148154         * @see Substitution 
    149155         */ 
    150     public void MakeGround(ArrayList bindings) 
     156    public void MakeGround(ArrayList<Substitution> bindings) 
    151157    { 
    152158        this._target.MakeGround(bindings); 
     
    199205        } 
    200206         
    201         protected ArrayList GetBindings(Name groundValue, Name value) { 
     207        protected ArrayList<SubstitutionSet> GetBindings(Name groundValue, Name value) { 
    202208                return null; 
    203209                //TODO: implement using motivational component 
     
    213219     * @return returns all set of Substitutions that make the condition valid. 
    214220     */ 
    215         protected ArrayList GetValueBindings() { 
     221        protected ArrayList<Substitution> GetValueBindings(AgentModel am) { 
    216222                return null; 
    217223                //TODO: implement using motivational component 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/NewEventCondition.java

    r13 r253  
    44import java.util.ListIterator; 
    55 
    6 import FAtiMA.memory.SearchKey; 
    7 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    8 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    9 import FAtiMA.sensorEffector.Event; 
     6import FAtiMA.AgentModel; 
     7import FAtiMA.memory.episodicMemory.SearchKey; 
    108import FAtiMA.wellFormedNames.Name; 
    119import FAtiMA.wellFormedNames.Symbol; 
     
    3836                } 
    3937                 
    40                 newEvent._parameters = new ArrayList(this._parameters.size()); 
     38                newEvent._parameters = new ArrayList<Symbol>(this._parameters.size()); 
    4139                 
    42                 ListIterator li = this._parameters.listIterator(); 
     40                ListIterator<Symbol> li = this._parameters.listIterator(); 
    4341                 
    4442                while(li.hasNext()) 
    4543                { 
    46                         newEvent._parameters.add(((Symbol)li.next()).clone()); 
     44                        newEvent._parameters.add((Symbol)li.next().clone()); 
    4745                } 
    48          
     46                 
    4947                return newEvent; 
    5048        } 
     
    6866         
    6967 
    70         public boolean CheckCondition() { 
     68        public boolean CheckCondition(AgentModel am) { 
    7169                boolean conditionVerified; 
    7270                 
     
    8078                } 
    8179         
    82                 ArrayList searchKeys = GetSearchKeys(); 
    83                 conditionVerified = (_positive == (ShortTermMemory.GetInstance().ContainsRecentEvent(searchKeys) 
    84                                                                 || AutobiographicalMemory.GetInstance().ContainsRecentEvent(searchKeys))); 
     80                conditionVerified = (_positive == am.getMemory().getEpisodicMemory().ContainsNewEvent(GetSearchKeys())); 
    8581                 
    8682                if(conditionVerified){ 
     
    9288         
    9389         
    94         protected ArrayList GetSearchKeys() 
     90        protected ArrayList<SearchKey> GetSearchKeys() 
    9591        { 
    96                 ArrayList keys = super.GetSearchKeys(); 
     92                ArrayList<SearchKey> keys = super.GetSearchKeys(); 
    9793                 
    9894                //we only want to search for events that happened at most 1 second before 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PastEventCondition.java

    r13 r253  
    3939import org.xml.sax.Attributes; 
    4040 
    41 import FAtiMA.memory.ActionDetail; 
    42 import FAtiMA.memory.SearchKey; 
    43 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    44 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
     41import FAtiMA.AgentModel; 
     42import FAtiMA.memory.episodicMemory.ActionDetail; 
     43import FAtiMA.memory.episodicMemory.SearchKey; 
    4544import FAtiMA.sensorEffector.Event; 
    4645import FAtiMA.sensorEffector.Parameter; 
     
    6766                Symbol action; 
    6867                Symbol target = null; 
    69                 ArrayList parameters = new ArrayList(); 
     68                ArrayList<Symbol> parameters = new ArrayList<Symbol>(); 
    7069                 
    7170                String aux; 
     
    106105        protected Symbol _action; 
    107106        protected Symbol _target; 
    108         protected ArrayList _parameters; 
     107        protected ArrayList<Symbol> _parameters; 
    109108         
    110109         
     
    114113        } 
    115114         
    116         public PastEventCondition(boolean occurred, Symbol subject, Symbol action, Symbol target, ArrayList parameters) 
     115        public PastEventCondition(boolean occurred, Symbol subject, Symbol action, Symbol target, ArrayList<Symbol> parameters) 
    117116        { 
    118117                this._positive = occurred; 
     
    129128                } 
    130129                 
    131                 ListIterator li = this._parameters.listIterator(); 
     130                ListIterator<Symbol> li = this._parameters.listIterator(); 
    132131                while(li.hasNext()) 
    133132                { 
     
    144143                this._action = new Symbol(e.GetAction()); 
    145144                this._target = new Symbol(e.GetTarget()); 
    146                 this._parameters = new ArrayList(e.GetParameters().size()); 
     145                this._parameters = new ArrayList<Symbol>(e.GetParameters().size()); 
    147146                 
    148147                String aux = this._subject + "," + this._action; 
     
    153152                 
    154153                Parameter p; 
    155                 ListIterator li = e.GetParameters().listIterator(); 
     154                ListIterator<Parameter> li = e.GetParameters().listIterator(); 
    156155                while(li.hasNext()) 
    157156                { 
    158                         p = (Parameter) li.next(); 
     157                        p = li.next(); 
    159158                        _parameters.add(new Symbol(p.GetValue().toString())); 
    160159                        aux = aux + "," + p.GetValue(); 
     
    168167                super(occurred, event); 
    169168                 
    170                 ListIterator li = event.GetLiteralList().listIterator(); 
     169                ListIterator<Symbol> li = event.GetLiteralList().listIterator(); 
    171170                li.next(); 
    172171                this._subject = (Symbol) li.next(); 
     
    176175                        this._target = (Symbol) li.next(); 
    177176                } 
    178                 this._parameters = new ArrayList(); 
     177                this._parameters = new ArrayList<Symbol>(); 
    179178                while(li.hasNext()) 
    180179                { 
     
    196195                } 
    197196                 
    198                 newEvent._parameters = new ArrayList(this._parameters.size()); 
    199                  
    200                 ListIterator li = this._parameters.listIterator(); 
     197                newEvent._parameters = new ArrayList<Symbol>(this._parameters.size()); 
     198                 
     199                ListIterator<Symbol> li = this._parameters.listIterator(); 
    201200                 
    202201                while(li.hasNext()) 
    203202                { 
    204                         newEvent._parameters.add(((Symbol)li.next()).clone()); 
     203                        newEvent._parameters.add((Symbol)li.next().clone()); 
    205204                } 
    206205                 
     
    214213        } 
    215214 
    216         public Object Ground(ArrayList bindingConstraints) { 
     215        public Object Ground(ArrayList<Substitution> bindingConstraints) { 
    217216                 
    218217                PastEventCondition event = (PastEventCondition) this.clone(); 
     
    227226        } 
    228227         
    229         protected ArrayList GetPossibleBindings() 
    230         { 
    231                 return AutobiographicalMemory.GetInstance().SearchForPastEvents(GetSearchKeys());                
     228        protected ArrayList<ActionDetail> GetPossibleBindings(AgentModel am) 
     229        { 
     230                return am.getMemory().getEpisodicMemory().SearchForPastEvents(GetSearchKeys()); 
    232231        } 
    233232         
     
    237236     * @return A list with all SubstitutionsSets that make the condition valid 
    238237         * @see AutobiographicalMemory 
    239          */public ArrayList GetValidBindings() { 
     238         */ 
     239        public ArrayList<SubstitutionSet> GetValidBindings(AgentModel am) { 
    240240                ActionDetail detail; 
    241241                Substitution sub; 
    242242                SubstitutionSet subSet; 
    243243                Symbol param; 
    244                 ArrayList bindingSets = new ArrayList(); 
    245                 ArrayList details; 
     244                ArrayList<SubstitutionSet> bindingSets = new ArrayList<SubstitutionSet>(); 
     245                ArrayList<ActionDetail> details; 
    246246                 
    247247                if (_name.isGrounded()) { 
    248                         if(CheckCondition()) 
     248                        if(CheckCondition(am)) 
    249249                        { 
    250250                                bindingSets.add(new SubstitutionSet()); 
     
    254254                } 
    255255                 
    256                 details = GetPossibleBindings(); 
     256                details = GetPossibleBindings(am); 
    257257                 
    258258                //we cannot determine bindings for negative event conditions, 
     
    270270                if(details.size() == 0) return null; 
    271271                 
    272                 Iterator it = details.iterator(); 
     272                Iterator<ActionDetail> it = details.iterator(); 
    273273                while(it.hasNext()) 
    274274                { 
     
    311311         * @see AutobiographicalMemory 
    312312         */ 
    313         public boolean CheckCondition() { 
     313        public boolean CheckCondition(AgentModel am) { 
    314314                 
    315315                if(!_name.isGrounded()) return false; 
    316316                 
    317                 return _positive == AutobiographicalMemory.GetInstance().ContainsPastEvent(GetSearchKeys());  
    318         } 
    319          
    320         protected ArrayList GetSearchKeys() 
     317                return _positive == am.getMemory().getEpisodicMemory().ContainsPastEvent(GetSearchKeys());  
     318        } 
     319         
     320        protected ArrayList<SearchKey> GetSearchKeys() 
    321321        { 
    322322                Symbol param; 
    323323                 
    324                 ArrayList keys = new ArrayList(); 
     324                ArrayList<SearchKey> keys = new ArrayList<SearchKey>(); 
    325325                if(this._subject.isGrounded()) 
    326326                { 
     
    337337                if(this._parameters.size() > 0) 
    338338                { 
    339                         ArrayList params = new ArrayList(); 
    340                         for(ListIterator li = this._parameters.listIterator();li.hasNext();) 
     339                        ArrayList<String> params = new ArrayList<String>(); 
     340                        for(ListIterator<Symbol> li = this._parameters.listIterator();li.hasNext();) 
    341341                        { 
    342342                                param = (Symbol) li.next(); 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PredicateCondition.java

    r13 r253  
    5757import org.xml.sax.Attributes; 
    5858 
    59 import FAtiMA.memory.Memory; 
     59import FAtiMA.AgentModel; 
     60import FAtiMA.memory.semanticMemory.KnowledgeBase; 
    6061import FAtiMA.wellFormedNames.Name; 
    6162import FAtiMA.wellFormedNames.Substitution; 
     
    118119         * @see KnowledgeBase 
    119120         */ 
    120         public boolean CheckCondition() { 
     121        public boolean CheckCondition(AgentModel am) { 
    121122                boolean result; 
    122123                if(!_name.isGrounded()) return false; 
    123                 result = Memory.GetInstance().AskPredicate(_name);  
     124                result = am.getMemory().getSemanticMemory().AskPredicate(_name);  
    124125                return _positive == result; 
    125126        } 
     
    169170         * @see Substitution 
    170171         */ 
    171         public Object Ground(ArrayList bindings) { 
     172        public Object Ground(ArrayList<Substitution> bindings) { 
    172173                PredicateCondition aux = (PredicateCondition) this.clone(); 
    173174                aux.MakeGround(bindings); 
     
    183184         * @see Substitution 
    184185         */ 
    185     public void MakeGround(ArrayList bindings) 
     186    public void MakeGround(ArrayList<Substitution> bindings) 
    186187    { 
    187188        this._name.MakeGround(bindings); 
     
    262263     * @return returns all set of Substitutions that make the condition valid. 
    263264         */ 
    264         protected ArrayList GetValueBindings() { 
    265                 if(CheckCondition()) { 
    266                         return new ArrayList(); 
     265        protected ArrayList<Substitution> GetValueBindings(AgentModel am) { 
     266                if(CheckCondition(am)) { 
     267                        return new ArrayList<Substitution>(); 
    267268                } 
    268269                else return null; 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PropertyCondition.java

    r13 r253  
    5858import org.xml.sax.Attributes; 
    5959 
    60 import FAtiMA.knowledgeBase.KnowledgeBase; 
    61 import FAtiMA.memory.Memory; 
     60import FAtiMA.AgentModel; 
    6261import FAtiMA.util.AgentLogger; 
    6362import FAtiMA.wellFormedNames.Name; 
     
    7877 
    7978    /** 
     79         *  
     80         */ 
     81        private static final long serialVersionUID = 1L; 
     82 
     83        /** 
    8084         * Parses a PropertyTest given a XML attribute list 
    8185         * @param attributes - A list of XMl attributes 
     
    159163         * @return true if the condition is verified, false otherwise 
    160164         */ 
    161         public boolean CheckCondition() { 
     165        public boolean CheckCondition(AgentModel am) { 
    162166                if (!_name.isGrounded() && !_value.isGrounded()) 
    163167                        return false; 
     
    211215         * @see Substitution 
    212216         */ 
    213         public Object Ground(ArrayList bindingConstraints) 
     217        public Object Ground(ArrayList<Substitution> bindingConstraints) 
    214218        { 
    215219                PropertyCondition aux = (PropertyCondition) this.clone(); 
     
    226230         * @see Substitution 
    227231         */ 
    228     public void MakeGround(ArrayList bindings) 
     232    public void MakeGround(ArrayList<Substitution> bindings) 
    229233    { 
    230234        this._name.MakeGround(bindings); 
     
    279283        } 
    280284         
    281         protected ArrayList GetBindings(Name groundValue, Name value) { 
     285        protected ArrayList<Substitution> GetBindings(AgentModel am, Name groundValue, Name value) { 
    282286                Object val; 
    283                 ArrayList bindings; 
     287                ArrayList<Substitution> bindings; 
    284288                if (!groundValue.isGrounded()) 
    285289                        return null; 
    286290                if (!value.isGrounded()) { 
    287                         val = groundValue.evaluate(Memory.GetInstance()); 
     291                        val = groundValue.evaluate(am.getMemory()); 
    288292                        if (val != null) { 
    289                                 bindings = new ArrayList(); 
     293                                bindings = new ArrayList<Substitution>(); 
    290294                                if(Unifier.Unify(value, Name.ParseName((String) val), bindings)) 
    291295                                        return bindings; 
     
    294298                        else return null; 
    295299                } 
    296                 else if (this.CheckCondition()) { 
    297                         return new ArrayList(); 
     300                else if (this.CheckCondition(am)) { 
     301                        return new ArrayList<Substitution>(); 
    298302                } 
    299303                else return null; 
     
    309313     * @return returns all set of Substitutions that make the condition valid. 
    310314     */ 
    311         protected ArrayList GetValueBindings() { 
    312                 return GetBindings(_name, _value); 
     315        protected ArrayList<Substitution> GetValueBindings(AgentModel am) { 
     316                return GetBindings(am, _name, _value); 
    313317        } 
    314318} 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PropertyEqual.java

    r13 r253  
    5050package FAtiMA.conditions; 
    5151 
    52 import FAtiMA.knowledgeBase.KnowledgeBase; 
    53 import FAtiMA.memory.Memory; 
     52import FAtiMA.AgentModel; 
    5453import FAtiMA.util.AgentLogger; 
    5554import FAtiMA.wellFormedNames.Name; 
     
    8685     * @return true if the condition is verified, false otherwise 
    8786     */ 
    88     public boolean CheckCondition() 
     87    public boolean CheckCondition(AgentModel am) 
    8988    { 
    9089        Object propertyValue; 
    9190        Object value; 
    92         //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    93         Memory memory = Memory.GetInstance(); 
    9491 
    95         if (!super.CheckCondition()) 
     92        if (!super.CheckCondition(am)) 
    9693            return false; 
    97         propertyValue = this._name.evaluate(memory); 
    98         value = this._value.evaluate(memory); 
     94        propertyValue = this._name.evaluate(am.getMemory()); 
     95        value = this._value.evaluate(am.getMemory()); 
    9996 
    10097        if (propertyValue == null || value == null) 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PropertyGreater.java

    r13 r253  
    5353package FAtiMA.conditions; 
    5454 
    55 import FAtiMA.knowledgeBase.KnowledgeBase; 
    56 import FAtiMA.memory.Memory; 
     55import FAtiMA.AgentModel; 
    5756import FAtiMA.util.AgentLogger; 
    5857import FAtiMA.wellFormedNames.Name; 
     
    8988     * @return true if the condition is verified, false otherwise 
    9089     */ 
    91         public boolean CheckCondition() { 
     90        public boolean CheckCondition(AgentModel am) { 
    9291                Object propertyValue; 
    9392                Object value; 
     
    9594                Float aux2; 
    9695 
    97                 if (!super.CheckCondition()) 
     96                if (!super.CheckCondition(am)) 
    9897                        return false; 
    9998                 
    100                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    101                 Memory memory = Memory.GetInstance(); 
    102                 propertyValue = this._name.evaluate(memory); 
    103                 value = this._value.evaluate(memory); 
     99                propertyValue = this._name.evaluate(am.getMemory()); 
     100                value = this._value.evaluate(am.getMemory()); 
    104101 
    105102                if (propertyValue == null || value == null) 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PropertyGreaterEqual.java

    r13 r253  
    3131package FAtiMA.conditions; 
    3232 
    33 import FAtiMA.knowledgeBase.KnowledgeBase; 
    34 import FAtiMA.memory.Memory; 
     33import FAtiMA.AgentModel; 
    3534import FAtiMA.util.AgentLogger; 
    3635import FAtiMA.wellFormedNames.Name; 
     
    6766     * @return true if the condition is verified, false otherwise 
    6867     */ 
    69         public boolean CheckCondition() { 
     68        public boolean CheckCondition(AgentModel am) { 
    7069                Object propertyValue; 
    7170                Object value; 
     
    7372                Float aux2; 
    7473 
    75                 if (!super.CheckCondition()) 
     74                if (!super.CheckCondition(am)) 
    7675                        return false; 
    7776                 
    78                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    79                 Memory memory = Memory.GetInstance(); 
    80                 propertyValue = this._name.evaluate(memory); 
    81                 value = this._value.evaluate(memory); 
     77                propertyValue = this._name.evaluate(am.getMemory()); 
     78                value = this._value.evaluate(am.getMemory()); 
    8279 
    8380                if (propertyValue == null || value == null) 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PropertyLesser.java

    r13 r253  
    5353package FAtiMA.conditions; 
    5454 
    55 import java.util.ArrayList; 
    5655 
    57 import FAtiMA.knowledgeBase.KnowledgeBase; 
    58 import FAtiMA.memory.Memory; 
     56import FAtiMA.AgentModel; 
    5957import FAtiMA.util.AgentLogger; 
    6058import FAtiMA.wellFormedNames.Name; 
     
    9088     * @return true if the condition is verified, false otherwise 
    9189     */ 
    92         public boolean CheckCondition() { 
     90        public boolean CheckCondition(AgentModel am) { 
    9391                Object propertyValue; 
    9492                Object value; 
     
    9694                Float aux2; 
    9795 
    98                 if (!super.CheckCondition()) 
     96                if (!super.CheckCondition(am)) 
    9997                        return false; 
    100                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    101                 Memory memory = Memory.GetInstance(); 
    102                 propertyValue = this._name.evaluate(memory); 
    103                 value = this._value.evaluate(memory); 
     98         
     99                propertyValue = this._name.evaluate(am.getMemory()); 
     100                value = this._value.evaluate(am.getMemory()); 
    104101 
    105102                if (propertyValue == null || value == null || propertyValue =="null" || value == "null") 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PropertyLesserEqual.java

    r13 r253  
    3131package FAtiMA.conditions; 
    3232 
    33 import FAtiMA.knowledgeBase.KnowledgeBase; 
    34 import FAtiMA.memory.Memory; 
     33import FAtiMA.AgentModel; 
    3534import FAtiMA.util.AgentLogger; 
    3635import FAtiMA.wellFormedNames.Name; 
     
    6665     * @return true if the condition is verified, false otherwise 
    6766     */ 
    68         public boolean CheckCondition() { 
     67        public boolean CheckCondition(AgentModel am) { 
    6968                Object propertyValue; 
    7069                Object value; 
     
    7271                Float aux2; 
    7372 
    74                 if (!super.CheckCondition()) 
     73                if (!super.CheckCondition(am)) 
    7574                        return false; 
    76                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    77                 Memory memory = Memory.GetInstance(); 
    78                 propertyValue = this._name.evaluate(memory); 
    79                 value = this._value.evaluate(memory); 
     75                propertyValue = this._name.evaluate(am.getMemory()); 
     76                value = this._value.evaluate(am.getMemory()); 
    8077 
    8178                if (propertyValue == null || value == null || propertyValue =="null" || value == "null") 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/PropertyNotEqual.java

    r13 r253  
    7575import java.util.ListIterator; 
    7676 
    77 import FAtiMA.knowledgeBase.KnowledgeBase; 
    78 import FAtiMA.memory.Memory; 
     77import FAtiMA.AgentModel; 
    7978import FAtiMA.util.AgentLogger; 
    8079import FAtiMA.wellFormedNames.Inequality; 
     
    112111     * @return true if the condition is verified, false otherwise 
    113112     */ 
    114         public boolean CheckCondition() { 
     113        public boolean CheckCondition(AgentModel am) { 
    115114                Object propertyValue; 
    116115                Object value; 
    117116 
    118                 if (!super.CheckCondition()) 
     117                if (!super.CheckCondition(am)) 
    119118                        return false; 
    120                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    121                 Memory memory = Memory.GetInstance(); 
    122                 propertyValue = this._name.evaluate(memory); 
    123                 value = this._value.evaluate(memory); 
     119                 
     120                propertyValue = this._name.evaluate(am.getMemory()); 
     121                value = this._value.evaluate(am.getMemory()); 
    124122 
    125123                if (propertyValue == null || value == null)  
     
    139137     * @return A list with all SubstitutionsSets that make the condition valid 
    140138         */ 
    141         public ArrayList GetValidBindings() { 
    142                 ArrayList validSubstitutionSets = new ArrayList(); 
    143                 ArrayList bindingSets; 
    144                 SubstitutionSet subSet; 
     139        public ArrayList<SubstitutionSet> GetValidBindings(AgentModel am) { 
     140                ArrayList<SubstitutionSet> validSubstitutionSets = new ArrayList<SubstitutionSet>(); 
     141                ArrayList<SubstitutionSet> bindingSets; 
    145142                Condition cond; 
    146143                 
     
    155152                        //if the name is ground, both name and value are grounded and we 
    156153                        //just need to call the checkcondition function 
    157                         if(CheckCondition()) 
     154                        if(CheckCondition(am)) 
    158155                        { 
    159156                                validSubstitutionSets.add(new SubstitutionSet()); 
     
    164161                 
    165162                //if the name is not grounded we try to get all possible bindings for it 
    166                 bindingSets = Memory.GetInstance().GetPossibleBindings(_name); 
     163                bindingSets = am.getMemory().getSemanticMemory().GetPossibleBindings(_name); 
    167164                if (bindingSets == null) 
    168165                        return null; 
    169166 
    170                 for(ListIterator li = bindingSets.listIterator(); li.hasNext();) 
    171                 { 
    172                         subSet = (SubstitutionSet) li.next(); 
     167                for(SubstitutionSet subSet : bindingSets) 
     168                { 
    173169                        cond = (Condition) this.clone(); 
    174170                        cond.MakeGround(subSet.GetSubstitutions()); 
    175                         if(cond.CheckCondition()) 
     171                        if(cond.CheckCondition(am)) 
    176172                        { 
    177173                                validSubstitutionSets.add(subSet); 
     
    195191     * that if they are verified, the NotEqualCondition is also verified 
    196192         */ 
    197         public ArrayList GetValidInequalities() { 
    198                 ArrayList validSubstitutionSets = new ArrayList(); 
    199                 ListIterator li; 
    200                 ArrayList bindings; 
     193        public ArrayList<SubstitutionSet> GetValidInequalities(AgentModel am) { 
     194                ArrayList<SubstitutionSet> validSubstitutionSets = new ArrayList<SubstitutionSet>(); 
     195                ListIterator<Substitution> li; 
     196                ArrayList<Substitution> bindings; 
    201197                SubstitutionSet subSet; 
    202198 
     
    206202                // [X] != [Y] 
    207203                if (_name.isGrounded()) { 
    208                         bindings = this.GetBindings(_name,_value); 
     204                        bindings = this.GetBindings(am,_name,_value); 
    209205                        if (bindings == null) 
    210206                                return null; 
    211207                } 
    212208                else if(_value.isGrounded()) { 
    213                         bindings = this.GetBindings(_value,_name); 
     209                        bindings = this.GetBindings(am,_value,_name); 
    214210                        if (bindings == null) 
    215211                                return null; 
     
    221217                li = bindings.listIterator(); 
    222218                while (li.hasNext()) { 
    223                         subSet.AddSubstitution(new Inequality((Substitution)li.next())); 
     219                        subSet.AddSubstitution(new Inequality(li.next())); 
    224220                } 
    225221                validSubstitutionSets.add(subSet); 
     
    228224         
    229225         
    230         protected ArrayList GetValueBindings() 
     226        protected ArrayList<Substitution> GetValueBindings() 
    231227        { 
    232228                //this method should never be called 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/RecentEventCondition.java

    r40 r253  
    3131 * João Dias: 24/03/2008 - Restructure, changed the way EventConditions Hierarchy. Now, PastEventConditions 
    3232 *                                                 is the super class, and RecentEventConditions is the child class 
    33  * Meiyii Lim: 12/03/2009 - Search for recent events in Short Term Memory instead of Autobiographical Memory 
    3433 */ 
    3534 
     
    3938import java.util.ListIterator; 
    4039 
    41 import FAtiMA.memory.ActionDetail; 
    42 import FAtiMA.memory.SearchKey; 
    43 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    44 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
     40import FAtiMA.AgentModel; 
     41import FAtiMA.memory.episodicMemory.ActionDetail; 
     42import FAtiMA.memory.episodicMemory.SearchKey; 
    4543import FAtiMA.sensorEffector.Event; 
    4644import FAtiMA.wellFormedNames.Name; 
     
    8179        } 
    8280         
    83         public RecentEventCondition(boolean occurred, Symbol subject, Symbol action, Symbol target, ArrayList parameters) 
     81        public RecentEventCondition(boolean occurred, Symbol subject, Symbol action, Symbol target, ArrayList<Symbol> parameters) 
    8482        { 
    8583                super(occurred, subject, action, target, parameters); 
     
    104102                } 
    105103                 
    106                 newEvent._parameters = new ArrayList(this._parameters.size()); 
    107                  
    108                 ListIterator li = this._parameters.listIterator(); 
    109                  
    110                 while(li.hasNext()) 
    111                 { 
    112                         newEvent._parameters.add(((Symbol)li.next()).clone()); 
     104                newEvent._parameters = new ArrayList<Symbol>(this._parameters.size()); 
     105                 
     106                ListIterator<Symbol> li = this._parameters.listIterator(); 
     107                 
     108                while(li.hasNext()) 
     109                { 
     110                        newEvent._parameters.add((Symbol)li.next().clone()); 
    113111                } 
    114112                 
     
    131129                } 
    132130                 
    133                 ListIterator li = this._parameters.listIterator(); 
    134                 while(li.hasNext()) 
    135                 { 
    136                         ((Symbol) li.next()).ReplaceUnboundVariables(variableID); 
    137                 } 
    138         } 
    139  
    140         public Object Ground(ArrayList bindingConstraints) { 
     131                ListIterator<Symbol> li = this._parameters.listIterator(); 
     132                while(li.hasNext()) 
     133                { 
     134                        li.next().ReplaceUnboundVariables(variableID); 
     135                } 
     136        } 
     137 
     138        public Object Ground(ArrayList<Substitution> bindingConstraints) { 
    141139                 
    142140                RecentEventCondition event = (RecentEventCondition) this.clone(); 
     
    145143        } 
    146144 
    147         public void MakeGround(ArrayList bindings) { 
     145        public void MakeGround(ArrayList<Substitution> bindings) { 
    148146                this._name.MakeGround(bindings); 
    149147                this._subject.MakeGround(bindings); 
     
    154152                } 
    155153                 
    156                 ListIterator li = this._parameters.listIterator(); 
    157                 while(li.hasNext()) 
    158                 { 
    159                         ((Symbol) li.next()).MakeGround(bindings); 
     154                ListIterator<Symbol> li = this._parameters.listIterator(); 
     155                while(li.hasNext()) 
     156                { 
     157                        li.next().MakeGround(bindings); 
    160158                } 
    161159        } 
     
    176174                } 
    177175                 
    178                 ListIterator li = this._parameters.listIterator(); 
    179                 while(li.hasNext()) 
    180                 { 
    181                         ((Symbol) li.next()).MakeGround(subst); 
     176                ListIterator<Symbol> li = this._parameters.listIterator(); 
     177                while(li.hasNext()) 
     178                { 
     179                        li.next().MakeGround(subst); 
    182180                } 
    183181        } 
     
    188186         * @see AutobiographicalMemory 
    189187         */ 
    190         public boolean CheckCondition() { 
     188        public boolean CheckCondition(AgentModel am) { 
    191189                 
    192190                if(!_name.isGrounded()) return false; 
    193191                 
    194                 //Meiyii 12/03/09 Search for recent events in both STM and AM 
    195                 // If recentEventCondition is tested only against STM, goal will be reset after  
    196                 // the event has been transferred to AM (this is useful if we want goal to decay over time) 
    197                 // If recentEventCondition is tested only against AM, goal will be reset  
    198                 // continuously before the event is being transferred from STM to AM  
    199                 return _positive == ShortTermMemory.GetInstance().ContainsRecentEvent(GetSearchKeys()) 
    200                         || AutobiographicalMemory.GetInstance().ContainsRecentEvent(GetSearchKeys());  
    201         } 
    202          
    203         protected ArrayList GetPossibleBindings() 
    204         { 
    205                 //Meiyii 12/03/09 Search for recent events in both STM and AM 
    206                 ArrayList events = ShortTermMemory.GetInstance().SearchForRecentEvents(GetSearchKeys()); 
    207                 events.addAll(AutobiographicalMemory.GetInstance().SearchForRecentEvents(GetSearchKeys()));      
    208                 return events; 
    209         } 
    210          
    211          
    212         protected ArrayList GetSearchKeys() 
    213         { 
    214                 ArrayList keys = super.GetSearchKeys(); 
     192                return _positive == am.getMemory().getEpisodicMemory().ContainsRecentEvent(GetSearchKeys());  
     193        } 
     194         
     195        protected ArrayList<ActionDetail> GetPossibleBindings(AgentModel am) 
     196        { 
     197                return am.getMemory().getEpisodicMemory(). 
     198                                SearchForRecentEvents(GetSearchKeys()); 
     199        } 
     200         
     201         
     202        protected ArrayList<SearchKey> GetSearchKeys() 
     203        { 
     204                ArrayList<SearchKey> keys = super.GetSearchKeys(); 
    215205                 
    216206                //we only want to search for events that happened at most 1 second before 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/conditions/RitualCondition.java

    r13 r253  
    3636import org.xml.sax.Attributes; 
    3737 
    38 import FAtiMA.memory.SearchKey; 
    39 import FAtiMA.memory.Memory; 
    40 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    41 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    42 import FAtiMA.sensorEffector.Event; 
     38import FAtiMA.AgentModel; 
     39import FAtiMA.memory.episodicMemory.SearchKey; 
    4340import FAtiMA.wellFormedNames.Name; 
    4441import FAtiMA.wellFormedNames.Substitution; 
     
    6360        public static final RitualCondition ParseRitualCondition(Attributes attributes) 
    6461        { 
    65                 ArrayList roles = new ArrayList(); 
     62                ArrayList<Symbol> roles = new ArrayList<Symbol>(); 
    6663        String aux; 
    6764        Symbol ritualName = null; 
     
    8582        } 
    8683         
    87         protected ArrayList _roles; 
     84        protected ArrayList<Symbol> _roles; 
    8885        protected Symbol _ritualName; 
    8986 
     
    9289        } 
    9390         
    94         public RitualCondition(Symbol ritualName, ArrayList roles) 
     91        @SuppressWarnings("unchecked") 
     92        public RitualCondition(Symbol ritualName, ArrayList<Symbol> roles) 
    9593        { 
    9694                this._ritualName = ritualName; 
    9795                this._positive = true; 
    98                 this._roles = (ArrayList) roles.clone(); 
     96                this._roles = (ArrayList<Symbol>) roles.clone(); 
    9997                 
    10098                String name = ritualName + "("; 
     
    125123                rc._name = (Name) this._name.clone(); 
    126124                 
    127                 rc._roles = new ArrayList(this._roles.size()); 
    128                 ListIterator li = this._roles.listIterator(); 
    129                  
    130                 while(li.hasNext()) 
    131                 { 
    132                         rc._roles.add(((Symbol)li.next()).clone()); 
     125                rc._roles = new ArrayList<Symbol>(this._roles.size()); 
     126                ListIterator<Symbol> li = this._roles.listIterator(); 
     127                 
     128                while(li.hasNext()) 
     129                { 
     130                        rc._roles.add((Symbol)li.next().clone()); 
    133131                } 
    134132                 
     
    146144                this._ritualName.ReplaceUnboundVariables(variableID); 
    147145                 
    148                 ListIterator li = this._roles.listIterator(); 
    149                 while(li.hasNext()) 
    150                 { 
    151                         ((Symbol) li.next()).ReplaceUnboundVariables(variableID); 
    152                 } 
    153         } 
    154  
    155         public Object Ground(ArrayList bindingConstraints) { 
     146                ListIterator<Symbol> li = this._roles.listIterator(); 
     147                while(li.hasNext()) 
     148                { 
     149                        li.next().ReplaceUnboundVariables(variableID); 
     150                } 
     151        } 
     152 
     153        public Object Ground(ArrayList<Substitution> bindingConstraints) { 
    156154                 
    157155                RitualCondition rc = (RitualCondition) this.clone(); 
     
    160158        } 
    161159 
    162         public void MakeGround(ArrayList bindings) { 
     160        public void MakeGround(ArrayList<Substitution> bindings) { 
    163161                this._name.MakeGround(bindings); 
    164162                this._ritualName.MakeGround(bindings); 
    165163                                 
    166                 ListIterator li = this._roles.listIterator(); 
    167                 while(li.hasNext()) 
    168                 { 
    169                         ((Symbol) li.next()).MakeGround(bindings); 
     164                ListIterator<Symbol> li = this._roles.listIterator(); 
     165                while(li.hasNext()) 
     166                { 
     167                        li.next().MakeGround(bindings); 
    170168                } 
    171169        } 
     
    181179                this._ritualName.MakeGround(subst); 
    182180                 
    183                 ListIterator li = this._roles.listIterator(); 
    184                 while(li.hasNext()) 
    185                 { 
    186                         ((Symbol) li.next()).MakeGround(subst); 
     181                ListIterator<Symbol> li = this._roles.listIterator(); 
     182                while(li.hasNext()) 
     183                { 
     184                        li.next().MakeGround(subst); 
    187185                } 
    188186        } 
     
    193191         * @see AutobiographicalMemory 
    194192         */ 
    195         public boolean CheckCondition() { 
     193        public boolean CheckCondition(AgentModel am) { 
    196194                 
    197195                if(!_name.isGrounded()) return false; 
    198196                 
    199                 ArrayList keys = new ArrayList(); 
    200                  
    201                 keys.add(new SearchKey(SearchKey.SUBJECT,Memory.GetInstance().getSelf())); 
     197                ArrayList<SearchKey> keys = new ArrayList<SearchKey>(); 
     198                 
     199                keys.add(new SearchKey(SearchKey.SUBJECT,am.getName())); 
    202200                 
    203201                keys.add(new SearchKey(SearchKey.ACTION,"succeed")); 
     
    215213                } 
    216214                 
    217                 return (ShortTermMemory.GetInstance().ContainsRecentEvent(keys)  
    218                         || AutobiographicalMemory.GetInstance().ContainsRecentEvent(keys)); 
    219                  
    220         } 
    221          
    222         protected ArrayList GetPossibleBindings() 
    223         { 
    224                 return null; 
    225         } 
     215                 
     216                return am.getMemory().getEpisodicMemory().ContainsRecentEvent(keys); 
     217                 
     218        } 
     219         
    226220 
    227221        public void setRepeat(boolean repeat) { 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/culture/CulturalDimensions.java

    r13 r253  
    22 
    33import java.util.ArrayList; 
    4 import java.util.Iterator; 
    5 import java.util.Random; 
    6  
    7 import FAtiMA.memory.KnowledgeSlot; 
    8 import FAtiMA.memory.Memory; 
     4 
     5 
     6import FAtiMA.AgentModel; 
    97import FAtiMA.deliberativeLayer.goals.ActivePursuitGoal; 
    10 import FAtiMA.knowledgeBase.KnowledgeBase; 
    11 import FAtiMA.motivationalSystem.MotivationalState; 
    128import FAtiMA.motivationalSystem.Motivator; 
    13 import FAtiMA.util.AgentLogger; 
    149import FAtiMA.util.enumerables.CulturalDimensionType; 
    1510import FAtiMA.util.enumerables.MotivatorType; 
    1611import FAtiMA.wellFormedNames.Name; 
    17 import FAtiMA.wellFormedNames.SubstitutionSet; 
     12 
    1813 
    1914public class CulturalDimensions { 
     
    2217 
    2318        int[] _dimensionalValues; 
    24         ArrayList _positiveLSignals; 
    25         ArrayList _negativeLSignals; 
    26         ArrayList _positiveReplyLSignals; 
    27         ArrayList _negativeReplyLSignals; 
     19        ArrayList<String> _positiveLSignals; 
     20        ArrayList<String> _negativeLSignals; 
     21        ArrayList<String> _positiveReplyLSignals; 
     22        ArrayList<String> _negativeReplyLSignals; 
    2823         
    2924         
     
    4843        private CulturalDimensions() { 
    4944                _dimensionalValues = new int[CulturalDimensionType.numberOfTypes()]; 
    50                 _positiveLSignals = new ArrayList(); 
    51                 _negativeLSignals = new ArrayList(); 
    52                 _positiveReplyLSignals = new ArrayList(); 
    53                 _negativeReplyLSignals = new ArrayList(); 
     45                _positiveLSignals = new ArrayList<String>(); 
     46                _negativeLSignals = new ArrayList<String>(); 
     47                _positiveReplyLSignals = new ArrayList<String>(); 
     48                _negativeReplyLSignals = new ArrayList<String>(); 
    5449        } 
    5550 
     
    8277         
    8378        // Currently only affects affiliation 
    84         public void changeNeedsWeightsAndDecays() { 
    85  
    86                 float collectivismCoefficient = _dimensionalValues[CulturalDimensionType.COLLECTIVISM] * 0.01f; 
    87                 Motivator affiliationMotivator = MotivationalState.GetInstance().GetSelfMotivator(MotivatorType.AFFILIATION);            
     79        public void changeNeedsWeightsAndDecays(AgentModel am) { 
     80 
     81                float collectivismCoefficient = _dimensionalValues[CulturalDimensionType.COLLECTIVISM] * 0.01f; 
     82                Motivator affiliationMotivator = am.getMotivationalState().GetMotivator(MotivatorType.AFFILIATION);              
    8883                float personalityAffiliationWeight = affiliationMotivator.GetWeight(); 
    8984                float personalityAffiliationDecayFactor = affiliationMotivator.GetDecayFactor(); 
     
    10196        } 
    10297 
    103         public float determineCulturalUtility(ActivePursuitGoal goal, float selfContrib, float otherContrib){ 
    104  
    105                  
    106                 float powerDistanceCoefficient = _dimensionalValues[CulturalDimensionType.POWERDISTANCE] * 0.01f; 
     98        public float determineCulturalUtility(AgentModel am, ActivePursuitGoal goal, float selfContrib, float otherContrib){ 
     99 
     100                 
     101                //float powerDistanceCoefficient = _dimensionalValues[CulturalDimensionType.POWERDISTANCE] * 0.01f; 
    107102                float collectivismCoefficient = _dimensionalValues[CulturalDimensionType.COLLECTIVISM] * 0.01f; 
    108103                float individualismCoefficient = 1 - collectivismCoefficient;  
    109104         
    110                 String goalName = goal.getName().GetFirstLiteral().toString();   
     105                //String goalName = goal.getName().GetFirstLiteral().toString();         
    111106                String target = goal.getName().GetLiteralList().get(1).toString(); 
    112107                 
    113                 float likeValue = this.obtainLikeRelationshipFromKB(target); 
    114                 float differenceInPower = this.obtainDifferenceInPowerFromKB(target); 
     108                float likeValue = this.obtainLikeRelationshipFromKB(am, target); 
     109                //float differenceInPower = this.obtainDifferenceInPowerFromKB(am, target); 
    115110                         
    116111                float result = selfContrib + //(otherContrib * Math.pow(POWER_DISTANCE_K, differenceInPower) +  
     
    121116        } 
    122117 
    123         private float obtainLikeRelationshipFromKB(String targetAgent){ 
    124                 String agentName = Memory.GetInstance().getSelf(); 
    125                 Name likeProperty = Name.ParseName("Like("+ agentName + "," + targetAgent +")"); 
    126                 Float likeValue = (Float) Memory.GetInstance().AskProperty(likeProperty); 
     118        private float obtainLikeRelationshipFromKB(AgentModel am, String targetAgent){ 
     119                Name likeProperty = Name.ParseName("Like("+ am.getName() + "," + targetAgent +")"); 
     120                Float likeValue = (Float) am.getMemory().getSemanticMemory().AskProperty(likeProperty); 
    127121 
    128122                if(likeValue == null){   
     
    133127        } 
    134128 
    135         private int obtainDifferenceInPowerFromKB(String targetAgent){ 
    136  
    137                 String agentName = Memory.GetInstance().getSelf(); 
     129        /*private int obtainDifferenceInPowerFromKB(AgentModel am, String targetAgent){ 
     130 
     131                String agentName = am.getName(); 
    138132 
    139133                Name selfPowerPropertyName = Name.ParseName(agentName+"(power)"); 
    140                 String selfPowerProperty = (String)Memory.GetInstance().AskProperty(selfPowerPropertyName); 
     134                String selfPowerProperty = (String)am.getMemory().AskProperty(selfPowerPropertyName); 
    141135                Name targetPowerPropertyName = Name.ParseName(targetAgent+"(power)"); 
    142                 String targetPowerProperty = (String)Memory.GetInstance().AskProperty(targetPowerPropertyName); 
     136                String targetPowerProperty = (String)am.getMemory().AskProperty(targetPowerPropertyName); 
    143137 
    144138                if(selfPowerProperty == null || targetPowerProperty == null){ 
     
    151145                        return targetPowerValue - selfPowerValue; 
    152146                } 
    153         } 
     147        }*/ 
    154148 
    155149        public float determineAffiliationEffectFromLSignal(String subject, String target, String signalName, float signalValue) { 
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/culture/Ritual.java

    r1 r253  
    3838 
    3939import FAtiMA.ActionLibrary; 
     40import FAtiMA.AgentModel; 
    4041import FAtiMA.conditions.Condition; 
    41 import FAtiMA.conditions.NewEventCondition; 
    42 import FAtiMA.conditions.RecentEventCondition; 
    4342import FAtiMA.conditions.RitualCondition; 
    4443import FAtiMA.deliberativeLayer.goals.ActivePursuitGoal; 
    4544import FAtiMA.deliberativeLayer.plan.CausalLink; 
    4645import FAtiMA.deliberativeLayer.plan.Effect; 
     46import FAtiMA.deliberativeLayer.plan.IPlanningOperator; 
    4747import FAtiMA.deliberativeLayer.plan.OrderingConstraint; 
    4848import FAtiMA.deliberativeLayer.plan.Plan; 
     49import FAtiMA.deliberativeLayer.plan.ProtectedCondition; 
    4950import FAtiMA.deliberativeLayer.plan.Step; 
    5051import FAtiMA.exceptions.InvalidReplaceUnboundVariableException; 
     
    6263         */ 
    6364         
     65        //private static final float EXPECTED_AFFILIATION_ONIGNORE_VALUE = -10f; 
    6466        private static final long serialVersionUID = 1L; 
    6567         
    66         private ArrayList _roles; 
     68        private ArrayList<Symbol> _roles; 
    6769        private Plan _plan; 
    68         private ArrayList _steps; 
    69         private ArrayList _links; 
     70        private ArrayList<Step> _steps; 
     71        private ArrayList<OrderingConstraint> _links; 
    7072         
    7173        private Ritual() 
     
    7981                 
    8082                //this.SetExpectedEffectOnDrive("OnIgnore","Affiliation","[SELF]",EXPECTED_AFFILIATION_ONIGNORE_VALUE); 
    81                 _steps = new ArrayList(5); 
    82                 _links = new ArrayList(); 
    83                 _roles = new ArrayList(3); 
     83                _steps = new ArrayList<Step>(5); 
     84                _links = new ArrayList<OrderingConstraint>(); 
     85                _roles = new ArrayList<Symbol>(3); 
    8486        } 
    8587         
    8688        public void AddStep(Name actionName, Name role) 
    8789        { 
    88                 ArrayList subst; 
     90                ArrayList<Substitution> subst; 
    8991                Step action = ActionLibrary.GetInstance().GetAction(_steps.size(), actionName); 
    9092                if(action != null) 
     
    147149        } 
    148150         
    149         public ArrayList GetRoles() 
     151        public ArrayList<Symbol> GetRoles() 
    150152        { 
    151153                return this._roles; 
    152154        } 
    153155         
    154         public void BuildPlan() 
     156        public void BuildPlan(AgentModel am) 
    155157        { 
    156158                Step s; 
    157159                OrderingConstraint o; 
    158                 _plan = new Plan(new ArrayList(),_successConditions); 
     160                _plan = new Plan(new ArrayList<ProtectedCondition>(),_successConditions); 
    159161                 
    160162                for(int i=0; i < _steps.size(); i++) 
     
    202204                        e = this.GetSuccessEvent(); 
    203205                        ritualCondition = new RitualCondition(this._name.GetFirstLiteral(),_roles); 
    204                         this.addEffect(new Effect(e.GetTarget(),1.0f,ritualCondition)); 
     206                        this.addEffect(new Effect(am, e.GetTarget(),1.0f,ritualCondition)); 
    205207                }  
    206208        } 
    207209         
    208         public ArrayList getPlans() 
    209         { 
    210                 ArrayList plans = new ArrayList(); 
    211                 this._plan.UpdatePlan(); 
     210        public ArrayList<Plan> getPlans(AgentModel am) 
     211        { 
     212                ArrayList<Plan> plans = new ArrayList<Plan>(); 
     213                this._plan.UpdatePlan(am); 
    212214                plans.add(this._plan); 
    213215                return plans; 
     
    251253    { 
    252254         
    253         ListIterator li; 
     255        ListIterator<Condition> li; 
    254256     
    255257        this._name.ReplaceUnboundVariables(variableID); 
     
    273275        } 
    274276         
    275         li = this._effects.listIterator(); 
    276         while(li.hasNext()) 
    277         { 
    278                 ((Effect) li.next()).ReplaceUnboundVariables(variableID); 
    279         } 
    280          
    281         li = this._roles.listIterator(); 
    282         while(li.hasNext()) 
    283         { 
    284                 ((Symbol) li.next()).ReplaceUnboundVariables(variableID); 
    285         } 
     277        for(Effect e : this._effects) 
     278        { 
     279                e.ReplaceUnboundVariables(variableID); 
     280        } 
     281         
     282        for(Symbol s : this._roles) 
     283        { 
     284                s.ReplaceUnboundVariables(variableID); 
     285        } 
     286         
    286287         
    287288        this._agent.ReplaceUnboundVariables(variableID); 
     
    300301         * @see Substitution 
    301302         */ 
    302         public Object Ground(ArrayList bindingConstraints)  
     303        public Object Ground(ArrayList<Substitution> bindingConstraints)  
    303304        { 
    304305                Ritual aux = (Ritual) this.clone(); 
     
    315316         * @see Substitution 
    316317         */ 
    317     public void MakeGround(ArrayList bindings) 
     318    public void MakeGround(ArrayList<Substitution> bindings) 
    318319    { 
    319         ListIterator li; 
    320320         
    321321        this._name.MakeGround(bindings); 
    322          
    323         li = this._preConditions.listIterator(); 
    324         while(li.hasNext()) 
    325         { 
    326                 ((Condition) li.next()).MakeGround(bindings); 
    327         } 
    328          
    329         li = this._failureConditions.listIterator(); 
    330         while(li.hasNext()) 
    331         { 
    332                 ((Condition) li.next()).MakeGround(bindings); 
    333         } 
    334          
    335         li = this._successConditions.listIterator(); 
    336         while(li.hasNext()) 
    337         { 
    338                 ((Condition) li.next()).MakeGround(bindings); 
     322 
     323        for(Condition c : this._preConditions) 
     324        { 
     325                c.MakeGround(bindings); 
     326        } 
     327         
     328        for(Condition c : this._failureConditions) 
     329        { 
     330                c.MakeGround(bindings); 
     331        } 
     332         
     333        for(Condition c : this._successConditions) 
     334        { 
     335                c.MakeGround(bindings); 
    339336        } 
    340337         
    341338        this._plan.AddBindingConstraints(bindings); 
    342339         
    343         li = this._roles.listIterator(); 
    344         while(li.hasNext()) 
    345         { 
    346                 ((Symbol) li.next()).MakeGround(bindings); 
     340        for(Symbol s : this._roles) 
     341        { 
     342                s.MakeGround(bindings); 
    347343        } 
    348344         
    349345        this._agent.MakeGround(bindings); 
    350346         
    351         li = this._effects.listIterator(); 
    352         while(li.hasNext()) 
    353         { 
    354                 ((Effect) li.next()).MakeGround(bindings); 
    355         } 
    356  
     347        for(Effect e : this._effects) 
     348        { 
     349                e.MakeGround(bindings); 
     350        } 
    357351    } 
    358352     
     
    384378    public void MakeGround(Substitution subst) 
    385379    { 
    386         ListIterator li; 
    387          
    388380        this._name.MakeGround(subst); 
    389          
    390         li = this._preConditions.listIterator(); 
    391         while(li.hasNext()) 
    392         { 
    393                 ((Condition) li.next()).MakeGround(subst); 
    394         } 
    395          
    396         li = this._failureConditions.listIterator(); 
    397         while(li.hasNext()) 
    398         { 
    399                 ((Condition) li.next()).MakeGround(subst); 
    400         } 
    401          
    402         li = this._successConditions.listIterator(); 
    403         while(li.hasNext()) 
    404         { 
    405                 ((Condition) li.next()).MakeGround(subst); 
     381 
     382        for(Condition c : this._preConditions) 
     383        { 
     384                c.MakeGround(subst); 
     385        } 
     386         
     387        for(Condition c : this._failureConditions) 
     388        { 
     389                c.MakeGround(subst); 
     390        } 
     391         
     392        for(Condition c : this._successConditions) 
     393        { 
     394                c.MakeGround(subst); 
    406395        } 
    407396         
    408397        this._plan.AddBindingCo