Changeset 190


Ignore:
Timestamp:
10/29/2009 04:53:16 PM (10 years ago)
Author:
joao.dias
Message:

Major restructuration of the code. Removal of Singletons. Separation of the appraisal process from the emotional state. Preparation of most structures and processes so that they can be used in models of others. Created AgentModel? concept. Internal notion of SELF.

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

Legend:

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

    r1 r190  
    137137        } 
    138138         
    139         public void LoadActionsFile(String xmlFile, String self) throws ActionsParsingException 
     139        public void LoadActionsFile(String xmlFile, AgentModel am) throws ActionsParsingException 
    140140        { 
    141                 StripsOperatorsLoaderHandler op = LoadOperators(xmlFile, self); 
     141                StripsOperatorsLoaderHandler op = LoadOperators(xmlFile, am); 
    142142                _actions = op.getOperators(); 
    143143        } 
    144144         
    145         private StripsOperatorsLoaderHandler LoadOperators(String xmlFile, String self) throws ActionsParsingException { 
     145        private StripsOperatorsLoaderHandler LoadOperators(String xmlFile, AgentModel am) throws ActionsParsingException { 
    146146                AgentLogger.GetInstance().logAndPrint("LOAD: " + xmlFile); 
    147147                 
    148                 StripsOperatorsLoaderHandler op = new StripsOperatorsLoaderHandler(self); 
     148                StripsOperatorsLoaderHandler op = new StripsOperatorsLoaderHandler(am); 
    149149                 
    150150                try { 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Agent.java

    r139 r190  
    2121 
    2222import FAtiMA.Display.AgentDisplay; 
     23import FAtiMA.conditions.Condition; 
    2324import FAtiMA.culture.CulturalDimensions; 
    2425import FAtiMA.culture.Ritual; 
     
    2627import FAtiMA.deliberativeLayer.EmotionalPlanner; 
    2728import FAtiMA.deliberativeLayer.goals.GoalLibrary; 
     29import FAtiMA.deliberativeLayer.plan.Effect; 
     30import FAtiMA.deliberativeLayer.plan.Step; 
    2831import FAtiMA.emotionalState.ActiveEmotion; 
     32import FAtiMA.emotionalState.Appraisal; 
     33import FAtiMA.emotionalState.AppraisalVector; 
    2934import FAtiMA.emotionalState.BaseEmotion; 
    3035import FAtiMA.emotionalState.EmotionalState; 
     
    3338import FAtiMA.memory.KnowledgeSlot; 
    3439import FAtiMA.memory.Memory; 
    35 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    36 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    3740import FAtiMA.motivationalSystem.MotivationalState; 
     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 { 
     58import FAtiMA.wellFormedNames.SubstitutionSet; 
     59 
     60public class Agent implements AgentModel { 
    5661         
    5762         /** 
     
    7681                        SAXParserFactory factory = SAXParserFactory.newInstance(); 
    7782                        SAXParser parser = factory.newSAXParser(); 
    78                         //parser.parse(new File(MIND_PATH + "Scenarios.xml"), scenHandler); 
    79                         parser.parse(new File(MIND_PATH + "LIRECScenarios.xml"), scenHandler); 
     83                        parser.parse(new File(MIND_PATH + "scenarios.xml"), scenHandler); 
    8084                        args = scenHandler.getAgentArguments(); 
    8185                } 
     
    110114                                 
    111115                        case AgentPlatform.WORLDSIM: 
    112                                 String saveDirectory = "data/log/"; 
     116                                String saveDirectory = ""; 
    113117                                if (args.length == 4){ 
    114118                                        new Agent(agentPlatform, args[1],Integer.parseInt(args[2]),saveDirectory,args[3]); 
     
    140144        } 
    141145         
     146        protected EmotionalState _emotionalState; 
     147        protected MotivationalState _motivationalState; 
     148        protected Memory _memory; 
    142149         
    143150         
     
    152159        protected RemoteAgent _remoteAgent; 
    153160        protected String _role; 
    154         protected String _self; //the agent's name 
     161        protected String _name; //the agent's name 
    155162        protected String _sex; 
    156163        protected String _displayName;  
     
    167174        public static final String MIND_PATH = "data/characters/minds/"; 
    168175        private static final Name ACTION_CONTEXT = Name.ParseName("ActionContext()"); 
    169          
    170         private boolean _readyForNextStep = false; 
    171176 
    172177        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) { 
    173178 
     179                _emotionalState = new EmotionalState(); 
     180                _memory = new Memory(); 
     181                _motivationalState = new MotivationalState(); 
     182                 
    174183                _saveDirectory = saveDirectory; 
    175184                _shutdown = false; 
    176185                _numberOfCycles = 0; 
    177                 _self = name; 
     186                _name = name; 
    178187                _role = role; 
    179188                _sex = sex; 
     
    186195 
    187196                if(agentPlatform == AgentPlatform.WORLDSIM){ 
    188                         properties.put("name", _self); 
     197                        properties.put("name", _name); 
    189198                        properties.put("role", _role); 
    190199                        properties.put("sex", _sex);     
    191200                } 
    192                  
    193                 Memory.GetInstance().setSelf(_self); 
     201 
    194202 
    195203                try{ 
     
    197205 
    198206                        // Load Plan Operators 
    199                         ActionLibrary.GetInstance().LoadActionsFile("" + MIND_PATH + actionsFile + ".xml", _self); 
     207                        ActionLibrary.GetInstance().LoadActionsFile("" + MIND_PATH + actionsFile + ".xml", this); 
    200208                        EmotionalPlanner planner = new EmotionalPlanner(ActionLibrary.GetInstance().GetActions()); 
    201209 
    202210                        // Load GoalLibrary 
    203                         GoalLibrary goalLibrary = new GoalLibrary(MIND_PATH + goalsFile + ".xml", _self); 
     211                        GoalLibrary goalLibrary = new GoalLibrary(MIND_PATH + goalsFile + ".xml", _name); 
    204212 
    205213 
    206214                        //For efficiency reasons these two are not real processes 
    207                         _reactiveLayer = new ReactiveProcess(_self); 
    208  
    209                         _deliberativeLayer = new DeliberativeProcess(_self,goalLibrary,planner); 
     215                        _reactiveLayer = new ReactiveProcess(_name); 
     216 
     217                        _deliberativeLayer = new DeliberativeProcess(_name,goalLibrary,planner); 
    210218         
    211219                        String personalityFile = MIND_PATH + "roles/" + role + "/" + role + ".xml"; 
    212220                        loadPersonality(personalityFile,agentPlatform, goalList); 
     221                         
    213222                         
    214223                        loadCulture(cultureName); 
     
    219228                                _remoteAgent = new IONRemoteAgent(host, port, this);     
    220229                        } 
    221                                          
     230                          
    222231                        /* 
    223232                         * This call will initialize the timer for the agent's 
     
    245254        { 
    246255                try{ 
    247                         _self = fileName; 
    248                         Memory.GetInstance().setSelf(_self); 
    249                         AgentLogger.GetInstance().initialize(fileName); 
    250                          
    251256                        _shutdown = false; 
    252257                        _numberOfCycles = 0; 
     
    281286                 
    282287                AgentLogger.GetInstance().log("LOADING Personality: " + personalityFile); 
    283                 AgentLoaderHandler c = new AgentLoaderHandler(_self,_reactiveLayer,_deliberativeLayer); 
     288                AgentLoaderHandler c = new AgentLoaderHandler(this,_reactiveLayer,_deliberativeLayer,_emotionalState); 
    284289 
    285290                SAXParserFactory factory = SAXParserFactory.newInstance(); 
     
    308313                                impOfFailure = Float.parseFloat(st.nextToken()); 
    309314 
    310                                 _deliberativeLayer.AddGoal(goalName, impOfSuccess, impOfFailure);    
     315                                _deliberativeLayer.AddGoal(this, goalName, impOfSuccess, impOfFailure);    
    311316                        }        
    312317                } 
     
    318323                AgentLogger.GetInstance().log("LOADING Culture: " + cultureName); 
    319324                 
    320                 CultureLoaderHandler culture = new CultureLoaderHandler(_self, _reactiveLayer,_deliberativeLayer); 
     325                CultureLoaderHandler culture = new CultureLoaderHandler(this, _reactiveLayer,_deliberativeLayer); 
    321326                SAXParserFactory factory = SAXParserFactory.newInstance(); 
    322327                SAXParser parser = factory.newSAXParser(); 
     
    324329                 
    325330                Ritual r; 
    326                 ListIterator li = culture.GetRituals().listIterator(); 
     331                ListIterator li = culture.GetRituals(this).listIterator(); 
    327332                while(li.hasNext()) 
    328333                { 
     
    333338                } 
    334339                 
    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         }*/ 
     340                CulturalDimensions.GetInstance().changeNeedsWeightsAndDecays(this); 
     341        } 
     342         
    348343         
    349344 
     
    353348 
    354349                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"); 
    361350                ActionLibrary.SaveState(fileName+"-ActionLibrary.dat"); 
    362351                _remoteAgent.SaveState(fileName+"-RemoteAgent.dat"); 
     
    364353                try 
    365354                { 
    366                         FileOutputStream out = new FileOutputStream(fileName,false); 
     355                        FileOutputStream out = new FileOutputStream(fileName); 
    367356                        ObjectOutputStream s = new ObjectOutputStream(out); 
    368357 
    369358                        s.writeObject(_deliberativeLayer); 
    370359                        s.writeObject(_reactiveLayer); 
     360                        s.writeObject(_emotionalState); 
     361                        s.writeObject(_memory); 
     362                        s.writeObject(_motivationalState); 
    371363                        s.writeObject(_dialogManager); 
    372364                        s.writeObject(_role); 
    373                         s.writeObject(_self); 
     365                        s.writeObject(_name); 
    374366                        s.writeObject(_sex); 
    375367                        s.writeObject(_speechAct); 
     
    389381                } 
    390382        } 
    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(); 
    401                          
    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         } 
    440383         
    441384        public void LoadAgentState(String fileName)  
    442385                throws IOException, ClassNotFoundException{ 
    443386                 
    444                 //FileInputStream in = new FileInputStream("C:\\Meiyii\\LIREC\\AgentMind\\data\\log\\Greta"); 
    445387                FileInputStream in = new FileInputStream(fileName); 
    446388                ObjectInputStream s = new ObjectInputStream(in); 
    447389                this._deliberativeLayer = (DeliberativeProcess) s.readObject(); 
    448390                this._reactiveLayer = (ReactiveProcess) s.readObject(); 
     391                this._emotionalState = (EmotionalState) s.readObject(); 
     392                this._memory = (Memory) s.readObject(); 
     393                this._motivationalState = (MotivationalState) s.readObject(); 
    449394                this._dialogManager = (DialogManager) s.readObject(); 
    450395                this._role = (String) s.readObject(); 
    451                 this._self = (String) s.readObject(); 
     396                this._name = (String) s.readObject(); 
    452397                this._sex = (String) s.readObject(); 
    453398                this._speechAct = (SpeechAct) s.readObject(); 
     
    461406                in.close(); 
    462407 
    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()); 
    469408                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()); 
     409                ActionLibrary.LoadState(fileName+"-ActionLibrary.dat"); 
     410                 
    478411                _remoteAgent.LoadState(fileName+"-RemoteAgent.dat"); 
    479412        } 
     
    490423         * @return the agent's name 
    491424         */ 
    492         public String name() { 
    493                 return _self; 
     425        public String getName() { 
     426                return _name; 
    494427        } 
    495428         
     
    509442        public String displayName() { 
    510443            return _displayName; 
     444        } 
     445         
     446        public EmotionalState getEmotionalState() 
     447        { 
     448                return _emotionalState; 
     449        } 
     450         
     451        public Memory getMemory() 
     452        { 
     453                return _memory; 
     454        } 
     455         
     456        public MotivationalState getMotivationalState() 
     457        { 
     458                return _motivationalState; 
    511459        } 
    512460         
     
    575523 
    576524        /** 
    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         /** 
    585525         * Runs the agent, endless loop until there is a shutdown 
    586526         */ 
     
    589529                long updateTime = System.currentTimeMillis(); 
    590530                 
    591                 while (!_shutdown) {                     
    592                         if(_readyForNextStep) 
    593                         { 
    594                                 try { 
     531                while (!_shutdown) { 
     532                        try { 
     533                                 
     534                            if(_remoteAgent.isShutDown()) { 
     535                                    _shutdown = true; 
     536                            } 
     537                                 
     538                            //updates the agent's simulation timer 
     539                            AgentSimulationTime.GetInstance().Tick(); 
     540                             
     541                            _numberOfCycles++; 
     542                            long startCycleTime = System.currentTimeMillis(); 
     543                             
     544                                if (_remoteAgent.isRunning()) { 
     545                                        //decay the agent's emotional state 
     546                                        _emotionalState.Decay(); 
     547                                        _motivationalState.Decay(); 
     548                                        _dialogManager.DecayCauseIDontHaveABetterName(_memory.getKB()); 
    595549                                         
    596                                         //Thread.sleep(2000); 
     550                                        Name locationKey = Name.ParseName(Constants.SELF + "(location)"); 
     551                                        String location = (String) _memory.AskProperty(locationKey); 
    597552                                         
    598                                     if(_remoteAgent.isShutDown()) { 
    599                                             _shutdown = true; 
    600                                     } 
     553                                        //perceives and appraises new events 
     554                                        synchronized (this) 
     555                                        { 
     556                                                for(ListIterator li = this._perceivedEvents.listIterator(); li.hasNext();) 
     557                                                { 
     558                                                        Event e = (Event) li.next(); 
     559                                                        e = e.ApplyPerspective(_name); 
     560                                                        AgentLogger.GetInstance().log("Perceiving event: " + e.toName()); 
     561                                                        //inserting the event in AM 
     562                                                         
     563                                                    _memory.getSTM().StoreAction(_memory, e, location); 
     564                                                    //registering an Action Context property in the KB 
     565                                                        _memory.getWM().Tell(_memory, ACTION_CONTEXT,e.toName().toString()); 
     566                                                         
     567                                                        if(SpeechAct.isSpeechAct(e.GetAction())) 
     568                                                        { 
     569                                                                _dialogManager.UpdateDialogState(e, _memory.getKB()); 
     570                                                        } 
     571                                                                         
     572                                                        //adds the event to the deliberative and reactive layers so that they can appraise 
     573                                                        //the events 
     574                                                         
     575                                                        _reactiveLayer.AddEvent(e); 
     576                                                        _deliberativeLayer.AddEvent(e); 
     577                                                } 
     578                                                this._perceivedEvents.clear(); 
     579                                        } 
    601580                                         
    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(); 
     581                                        //if there was new data or knowledge added we must apply inference operators 
     582                                        //update any inferred property to the outside and appraise the events 
     583                                        if(_memory.getSTM().HasNewData() || 
     584                                                        _memory.getWM().HasNewKnowledge()) 
     585                                        { 
    613586                                                 
    614                                                 //perceives and appraises new events 
    615                                                 synchronized (this) 
     587                                                //calling the KnowledgeBase inference process 
     588                                                _memory.getWM().PerformInference(this); 
     589                                                 
     590                                                synchronized (_memory.getWM()) 
    616591                                                { 
    617                                                         for(ListIterator li = this._perceivedEvents.listIterator(); li.hasNext();) 
     592                                                        ArrayList facts = _memory.getWM().GetNewFacts(); 
     593                                                         
     594                                                        for(ListIterator li = facts.listIterator();li.hasNext();) 
    618595                                                        { 
    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())) 
     596                                                                KnowledgeSlot ks = (KnowledgeSlot) li.next(); 
     597                                                                if(ks.getName().startsWith(Constants.SELF)) 
    631598                                                                { 
    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); 
     599                                                                        _remoteAgent.ReportInternalPropertyChange(this._name,Name.ParseName(ks.getName()), 
     600                                                                                        ks.getValue()); 
    697601                                                                } 
    698602                                                        } 
    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(); 
    725603                                                } 
    726604                                        } 
    727605                                         
    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; 
     606                                        //Appraise the events and changes in data 
     607                                        _reactiveLayer.Appraisal(this); 
     608                                    _deliberativeLayer.Appraisal(this);  
     609                                     
    734610                                         
     611                                    _reactiveLayer.Coping(this); 
     612                                        _deliberativeLayer.Coping(this); 
     613                                 
     614                                        if(_remoteAgent.FinishedExecuting() && _remoteAgent.isRunning()) { 
     615                                                 
     616                                                //action = FilterSpeechAction(_reactiveLayer.GetSelectedAction()); 
     617                                                action = _reactiveLayer.GetSelectedAction(); 
     618                                                 
     619                                                if(action != null)  
     620                                                { 
     621                                                        _reactiveLayer.RemoveSelectedAction(); 
     622                                                        _remoteAgent.AddAction(action); 
     623                                                } 
     624                                                else 
     625                                                { 
     626                                                        action = FilterSpeechAction(_deliberativeLayer.GetSelectedAction()); 
     627                                                        if(action != null) 
     628                                                        { 
     629                                                                _deliberativeLayer.RemoveSelectedAction(); 
     630                                                                _remoteAgent.AddAction(action); 
     631                                                        } 
     632                                                } 
     633                 
     634                                                _remoteAgent.ExecuteNextAction(this); 
     635                                        } 
     636                                         
     637                                        if(System.currentTimeMillis() - updateTime > 1000) 
     638                                        { 
     639                                                if(_showStateWindow && _agentDisplay != null)  
     640                                                { 
     641                                                        _agentDisplay.update(); 
     642                                                } 
     643                                                 
     644                                                _remoteAgent.ReportInternalState(_emotionalState); 
     645                                                 
     646                                                /*ActiveEmotion auxEmotion = EmotionalState.GetInstance().GetStrongestEmotion(); 
     647                                                short nextEmotion; 
     648                                                if(auxEmotion != null) { 
     649                                                    nextEmotion = auxEmotion.GetType();  
     650                                                } 
     651                                                else nextEmotion = EmotionType.NEUTRAL; 
     652                                                 
     653                                                if(_currentEmotion != nextEmotion) { 
     654                                                    _currentEmotion = nextEmotion; 
     655                                                    _remoteAgent.ExpressEmotion(EmotionType.GetName(_currentEmotion)); 
     656                                                }*/ 
     657                                                 
     658                                                updateTime = System.currentTimeMillis(); 
     659                                        } 
    735660                                } 
    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         } 
     661                                 
     662                                long cycleExecutionTime = System.currentTimeMillis() - startCycleTime; 
     663                                _totalexecutingtime += cycleExecutionTime; 
     664                                //System.out.println("Cycle execution (in Millis): " + cycleExecutionTime); 
     665                                //System.out.println("Average time per cycle (in Millis): " + _totalexecutingtime / _numberOfCycles); 
     666                                Thread.sleep(10); 
     667                        } 
     668                        catch (Exception ex) { 
     669                            //_shutdown = true; 
     670                            ex.printStackTrace(); 
     671                            //System.out.println(ex); 
     672                        } 
     673                } 
     674        } 
     675         
     676         
    753677         
    754678        private ValuedAction FilterSpeechAction(ValuedAction action) 
     
    788712                if(action.equals("INSERT_CHARACTER")||action.equals("INSERT_OBJECT")) 
    789713                { 
    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); 
     714                        e = new Event(Constants.SELF, "look-at", name); 
     715                        int like = Math.round(LikeRelation.getRelation(Constants.SELF, name).getValue(_memory)); 
     716                        AppraisalVector v = new AppraisalVector(); 
     717                        v.setAppraisalVariable(AppraisalVector.LIKE, like); 
     718                        em = (BaseEmotion) Appraisal.GenerateEmotions(this, e, v, null).get(0); 
     719                        return _emotionalState.DetermineActiveEmotion(em); 
    794720                } 
    795721                else if(action.equals("ACT_FOR_CHARACTER")) 
     
    797723                        if(parameters.size() == 0) 
    798724                        { 
    799                                 e = new Event(Memory.GetInstance().getSelf(),name, null); 
     725                                e = new Event(Constants.SELF,name, null); 
    800726                        } 
    801727                        else 
    802728                        { 
    803                                 e = new Event(Memory.GetInstance().getSelf(),name, (String) parameters.get(0)); 
     729                                e = new Event(Constants.SELF,name, (String) parameters.get(0)); 
    804730                                for(int i = 1; i < parameters.size(); i++) 
    805731                                { 
     
    808734                        } 
    809735                         
    810                         emotions = _reactiveLayer.AppraiseEvent(e); 
     736                        Reaction r = _reactiveLayer.Evaluate(this, e); 
     737                        emotions = Appraisal.GenerateEmotions(this, e, _reactiveLayer.translateEmotionalReaction(r),r.getOther()); 
    811738                        ListIterator li = emotions.listIterator(); 
    812739                         
     
    814741                        { 
    815742                                em = (BaseEmotion) li.next(); 
    816                                 aem = EmotionalState.GetInstance().DetermineActiveEmotion(em); 
     743                                aem = _emotionalState.DetermineActiveEmotion(em); 
    817744                                if(aem != null && (maxEmotion == null || aem.GetIntensity() > maxEmotion.GetIntensity())) 
    818745                                { 
     
    826753        } 
    827754         
    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          
    876755         
    877756        protected ValuedAction SelectBestAction() { 
     
    884763                { 
    885764                        action = (ValuedAction) _actionsForExecution.get(i); 
    886                         if(bestAction == null || action.GetValue() > bestAction.GetValue()) 
     765                        if(bestAction == null || action.GetValue(_emotionalState) > bestAction.GetValue(_emotionalState)) 
    887766                        { 
    888767                                bestAction = action; 
     
    900779        public void EnforceCopingStrategy(String coping) 
    901780        { 
    902                 _deliberativeLayer.EnforceCopingStrategy(coping); 
     781                _deliberativeLayer.EnforceCopingStrategy(this, coping); 
    903782                _reactiveLayer.EnforceCopingStrategy(coping); 
    904783        } 
     784         
     785        public void PerceivePropertyChanged(String subject, String property, String value) 
     786        { 
     787                if(subject.equals(_name)) 
     788                { 
     789                        subject = Constants.SELF; 
     790                } 
     791                 
     792                Name propertyName = Name.ParseName(subject + "(" + property + ")"); 
     793                _memory.getWM().Tell(_memory, propertyName, value); 
     794        } 
     795         
     796        public void PerceivePropertyRemoved(String subject, String property) 
     797        { 
     798                if(subject.equals(_name)) 
     799                { 
     800                        subject = Constants.SELF; 
     801                } 
     802                 
     803                Name propertyName = Name.ParseName(subject + "(" + property + ")"); 
     804                _memory.Retract(propertyName); 
     805                 
     806        } 
    905807 
    906808 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/AgentProcess.java

    r1 r190  
    9393         * runs one round of the Appraisal process.  
    9494         */ 
    95         public abstract void Appraisal(); 
     95        public abstract void Appraisal(AgentModel am); 
    9696         
    9797        /** 
    9898         * runs one round of the Coping process 
    9999         */ 
    100         public abstract void Coping(); 
     100        public abstract void Coping(AgentModel am); 
    101101         
    102102        /** 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/DialogManager.java

    r67 r190  
    3636 
    3737import FAtiMA.knowledgeBase.KnowledgeBase; 
    38 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
    3938import FAtiMA.sensorEffector.Event; 
    4039import FAtiMA.sensorEffector.SpeechAct; 
     
    7271        } 
    7372         
    74         public void UpdateDialogState(Event speechEvent) 
     73        public void UpdateDialogState(Event speechEvent, KnowledgeBase kb) 
    7574        { 
    7675                if(!speechEvent.GetAction().equals(SpeechAct.Reinforce)) 
    7776                { 
    78                         WorkingMemory.GetInstance().Tell(SPEECH_CONTEXT, speechEvent.toName().toString()); 
    79                         //System.out.println("UpdateDialogState"); 
     77                        kb.Tell(SPEECH_CONTEXT, speechEvent.toName().toString()); 
    8078                } 
    8179                this._canSpeak = true; 
     
    9492        } 
    9593         
    96         public void DecayCauseIDontHaveABetterName() 
     94        public void DecayCauseIDontHaveABetterName(KnowledgeBase kb) 
    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                                kb.Tell(SPEECH_CONTEXT, ""); 
    104101                                this._contextExpireTime = 0; 
    105102                                this._andCounting = false; 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/AgentDisplay.java

    r71 r190  
    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(ag.getName(), ag.getName()); 
     72                _displayPane.addTab("Needs",null,panel,"displays the characters needs"); 
     73                 
    7474                 
    7575                panel = new SocialRelationsPanel(); 
     
    8585                _displayPane.addTab("Episodic Memory", null, panel, "displays all the records in the character's episodic memory"); 
    8686         
    87                 panel = new ShortTermMemoryPanel(); 
    88                 _displayPane.addTab("Short Term Memory", null, panel, "displays all the records in the character's short term memory"); 
    8987                 
    9088                JButton teste = new JButton("Save"); 
     
    9997    public void update() { 
    10098        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         } 
     99        if(pnl.Update(_ag)) _frame.setVisible(true); 
    108100    } 
    109101     
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/DrivesDisplay.java

    r5 r190  
    99import javax.swing.JProgressBar; 
    1010 
    11 import FAtiMA.memory.Memory; 
    12 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
     11import FAtiMA.Agent; 
     12import FAtiMA.AgentModel; 
    1313import FAtiMA.motivationalSystem.MotivationalState; 
    1414import FAtiMA.util.enumerables.MotivatorType; 
     
    2727        //TODO: The way that the constructor distinguishes from the agent's needs panel 
    2828        //of the other agents needs panel is getting agentName == null;  
    29         public DrivesDisplay(String agentName) { 
     29        public DrivesDisplay(String agentName, String selfName) { 
    3030 
    3131                super(); 
    3232 
    3333                _agentName = agentName; 
    34                 boolean isSelf = (agentName.equalsIgnoreCase(Memory.GetInstance().getSelf())); 
     34                boolean isSelf = (agentName.equalsIgnoreCase(selfName)); 
    3535 
    3636                _panel = new JPanel(); 
     
    8181         
    8282          
    83     public boolean Update() { 
     83    public boolean Update(AgentModel ag) { 
    8484        Float aux; 
    8585         
    8686         
    8787         
    88         MotivationalState ms = MotivationalState.GetInstance(); 
     88        MotivationalState ms = ag.getMotivationalState(); 
    8989         
    9090        aux = new Float(ms.GetIntensity(_agentName,MotivatorType.ENERGY)); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/EmotionalStatePanel.java

    r1 r190  
    102102        Float aux; 
    103103        ActiveEmotion em; 
    104         EmotionalState es = EmotionalState.GetInstance(); 
     104        EmotionalState es = ag.getEmotionalState(); 
    105105         
    106106        //aux = new Float(es.GetArousal()); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/EpisodicMemoryPanel.java

    r5 r190  
    4141 
    4242import FAtiMA.Agent; 
    43 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    4443import FAtiMA.memory.autobiographicalMemory.MemoryEpisode; 
    4544 
     
    7877        boolean update = false; 
    7978         
    80         if(countMemoryDetails() != AutobiographicalMemory.GetInstance().countMemoryDetails()) { 
     79        if(countMemoryDetails() != ag.getMemory().getAM().countMemoryDetails()) { 
    8180                update = true; 
    8281                _memoryEpisodes.removeAll(); 
     
    8483                 
    8584                 
    86                 synchronized(AutobiographicalMemory.GetInstance().GetSyncRoot()){ 
    87                         Iterator it = AutobiographicalMemory.GetInstance().GetAllEpisodes().iterator(); 
     85                synchronized(ag.getMemory().getAM().GetSyncRoot()){ 
     86                        Iterator it = ag.getMemory().getAM().GetAllEpisodes().iterator(); 
    8887                MemoryEpisodeDisplay mDisplay; 
    8988                MemoryEpisode episode; 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/GoalDisplay.java

    r1 r190  
    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/branches/FAtiMA2/src/FAtiMA/Display/GoalsPanel.java

    r1 r190  
    104104                while(it.hasNext()) { 
    105105                        g = (Goal) it.next(); 
    106                         gDisplay = new GoalDisplay(g); 
     106                        gDisplay = new GoalDisplay(ag, g); 
    107107                         
    108108                        _goals.add(gDisplay.getGoalPanel()); 
     
    122122                 i = (Intention) it.next();      
    123123                 iDisplay = (IntentionDisplay) _intentionDisplays.get(i.getGoal().getName().toString()); 
    124                  iDisplay.Update(i); 
     124                 iDisplay.Update(ag, i); 
    125125             }     
    126126        } 
     
    135135            while(it.hasNext()) { 
    136136                i = (Intention) it.next(); 
    137                 iDisplay = new IntentionDisplay(i); 
     137                iDisplay = new IntentionDisplay(ag, i); 
    138138                 
    139139                _intentions.add(iDisplay.getIntentionPanel()); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/IntentionDisplay.java

    r1 r190  
    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/branches/FAtiMA2/src/FAtiMA/Display/KnowledgeBasePanel.java

    r13 r190  
    7171    
    7272    public boolean Update(Agent ag) { 
    73         KnowledgeBase kb = KnowledgeBase.GetInstance(); 
     73        KnowledgeBase kb = ag.getMemory().getKB(); 
    7474         
    7575        ListIterator li = kb.GetFactList(); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/KnowledgeFactDisplay.java

    r33 r190  
    4444        _panel = new JPanel(); 
    4545        _panel.setBorder(BorderFactory.createTitledBorder(name)); 
    46         _panel.setMinimumSize(new Dimension(300,60)); 
    4746        _panel.setMaximumSize(new Dimension(300,60)); 
    48       
     47 
    4948        _label = new JLabel(value); 
    5049        _panel.add(_label); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/MemoryEpisodeDisplay.java

    r5 r190  
    4545 
    4646 
     47 
    4748public class MemoryEpisodeDisplay { 
    4849 
     
    7778         
    7879        //ABSTRACT  
    79         /*JPanel aux = new JPanel(); 
     80        JPanel aux = new JPanel(); 
    8081        aux.setLayout(new BoxLayout(aux,BoxLayout.Y_AXIS)); 
    8182        aux.setMaximumSize(d2);   
     
    8586        lbl.setMaximumSize(d1); 
    8687        lbl.setMinimumSize(d1); 
    87         aux.add(lbl);*/ 
    88          
     88        aux.add(lbl); 
    8989        //_abstract = new JTextArea(episode.getAbstract()); 
    90         /*_abstract = new JTextArea(""); 
     90        _abstract = new JTextArea(""); 
    9191        _abstract.setLineWrap(true); 
    9292        _abstract.setMaximumSize(d3); 
    9393        _abstract.setMinimumSize(d3); 
    9494        aux.add(_abstract); 
    95         pnl.add(aux);*/ 
     95        pnl.add(aux); 
    9696        
    9797         
    9898         
    9999        //TIME 
    100         JPanel aux = new JPanel(); 
     100        aux = new JPanel(); 
    101101        aux.setLayout(new BoxLayout(aux,BoxLayout.Y_AXIS)); 
    102102        aux.setMaximumSize(d2); 
    103103        aux.setMinimumSize(d2); 
    104104        aux.setBorder(BorderFactory.createLineBorder(new Color(0,0,0))); 
    105         JLabel lbl = new JLabel("Time"); 
     105        lbl = new JLabel("Time"); 
    106106        lbl.setMaximumSize(d1); 
    107107        lbl.setMinimumSize(d1); 
     
    195195        aux.add(lbl);*/ 
    196196         
    197         lbl = new JLabel("Subject"); // Who? 
     197        lbl = new JLabel("Who?"); 
    198198        lbl.setBorder(BorderFactory.createLineBorder(new Color(0,0,0))); 
    199199        lbl.setMinimumSize(new Dimension(50,30)); 
     
    201201        aux.add(lbl); 
    202202         
    203         lbl = new JLabel("Action"); // What? 
     203        lbl = new JLabel("What?"); 
    204204        lbl.setBorder(BorderFactory.createLineBorder(new Color(0,0,0))); 
    205205        lbl.setMinimumSize(new Dimension(80,30)); 
     
    207207        aux.add(lbl); 
    208208         
    209         lbl = new JLabel("Target"); // Whom? 
     209        lbl = new JLabel("Whom?"); 
    210210        lbl.setBorder(BorderFactory.createLineBorder(new Color(0,0,0))); 
    211211        lbl.setMinimumSize(new Dimension(80,30)); 
     
    213213        aux.add(lbl); 
    214214         
    215         lbl = new JLabel("Parameters"); // How? 
     215        lbl = new JLabel("How?"); 
    216216        lbl.setBorder(BorderFactory.createLineBorder(new Color(0,0,0))); 
    217217        lbl.setMinimumSize(new Dimension(100,30)); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/NeedsPanel.java

    r1 r190  
    1212 
    1313import FAtiMA.Agent; 
     14import FAtiMA.AgentModel; 
    1415import FAtiMA.motivationalSystem.MotivationalState; 
    1516 
     
    2223        private int _previousKnownAgents; 
    2324 
    24         public NeedsPanel(String agentName) { 
     25        public NeedsPanel(String agentName, String selfName) { 
    2526                 
    2627                super(); 
     
    4243                this.add(goalsScrool); 
    4344                 
    44                 DrivesDisplay aux = new DrivesDisplay(agentName); 
     45                DrivesDisplay aux = new DrivesDisplay(agentName, selfName); 
    4546                _needs.add(aux.getDrivesPanel()); 
    4647                _drivesDisplays.put(agentName,aux); 
     
    5253        public boolean Update(Agent ag) { 
    5354 
    54                 CheckForOtherAgents(); 
     55                CheckForOtherAgents(ag); 
    5556         
    5657                Collection displays  = _drivesDisplays.values(); 
     
    6162                        DrivesDisplay dd = (DrivesDisplay)it.next(); 
    6263                         
    63                         dd.Update(); 
     64                        dd.Update(ag); 
    6465                } 
    6566                return false; 
     
    6768          
    6869         
    69         private void CheckForOtherAgents(){ 
    70                 int numOfKnownAgents = MotivationalState.GetInstance().getOtherAgentsMotivators().size(); 
     70        private void CheckForOtherAgents(AgentModel am){ 
     71                int numOfKnownAgents = am.getMotivationalState().getOtherAgentsMotivators().size(); 
    7172                 
    7273                if(numOfKnownAgents > _previousKnownAgents){ 
    7374                        _previousKnownAgents = numOfKnownAgents; 
    7475                         
    75                         Collection otherAgentsNames  = MotivationalState.GetInstance().getOtherAgentsMotivators().keySet(); 
     76                        Collection otherAgentsNames  = am.getMotivationalState().getOtherAgentsMotivators().keySet(); 
    7677                 
    7778                        Iterator it = otherAgentsNames.iterator(); 
     
    8182                                 
    8283                                if(_drivesDisplays.get(agentName) == null){ 
    83                                         DrivesDisplay aux = new DrivesDisplay(agentName); 
     84                                        DrivesDisplay aux = new DrivesDisplay(agentName, am.getName()); 
    8485                                        _needs.add(aux.getDrivesPanel()); 
    8586                                        _drivesDisplays.put(agentName,aux); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/RelationDisplay.java

    r1 r190  
    3737import javax.swing.JProgressBar; 
    3838 
     39import FAtiMA.knowledgeBase.KnowledgeBase; 
     40import FAtiMA.memory.Memory; 
    3941import FAtiMA.socialRelations.LikeRelation; 
    4042import FAtiMA.socialRelations.Relation; 
     
    5254    JProgressBar _bar; 
    5355     
    54     public RelationDisplay(Relation rd) { 
     56    public RelationDisplay(Memory m, Relation rd) { 
    5557        _panel = new JPanel(); 
    5658        _panel.setMaximumSize(new Dimension(300,60)); 
     
    6769        } 
    6870         
    69         this.setValue(rd.getValue()); 
     71        this.setValue(rd.getValue(m)); 
    7072        _panel.add(_bar); 
    7173    } 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/STMRecordDisplay.java

    r63 r190  
    4242 
    4343import java.util.ArrayList; 
     44 
     45import FAtiMA.AgentModel; 
    4446import FAtiMA.memory.ActionDetail; 
    4547import FAtiMA.memory.shortTermMemory.STMemoryRecord; 
     
    5456    private static int _previousID = 0; 
    5557     
    56     public STMRecordDisplay(STMemoryRecord records) { 
     58    public STMRecordDisplay(AgentModel am, STMemoryRecord records) { 
    5759 
    5860        _panel = new JPanel(); 
     
    138140                ListIterator li = records.getDetails().listIterator(); 
    139141         
    140                 ArrayList newRecords = ShortTermMemory.GetInstance().GetNewRecords(); 
     142                ArrayList newRecords = am.getMemory().getSTM().GetNewRecords(); 
    141143                 
    142144                while(li.hasNext()) 
     
    150152                        prop.add(recordDetailPanel); 
    151153                } 
    152                 synchronized(ShortTermMemory.GetInstance()) 
     154                synchronized(am.getMemory().getSTM()) 
    153155                { 
    154                         ShortTermMemory.GetInstance().ClearNewRecords(); 
     156                        am.getMemory().getSTM().ClearNewRecords(); 
    155157                } 
    156158         
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/ShortTermMemoryPanel.java

    r71 r190  
    4242 
    4343import FAtiMA.Agent; 
     44import FAtiMA.AgentModel; 
    4445import FAtiMA.memory.KnowledgeSlot; 
    4546import FAtiMA.memory.shortTermMemory.WorkingMemory; 
     
    131132        _memoryRecords.removeAll(); 
    132133                 
    133         synchronized(ShortTermMemory.GetInstance().GetSyncRoot()){ 
    134                 STMemoryRecord records = ShortTermMemory.GetInstance().GetAllRecords(); 
    135                 _stmRecordDisplay = new STMRecordDisplay(records); 
     134        synchronized(ag.getMemory().getSTM().GetSyncRoot()){ 
     135                STMemoryRecord records = ag.getMemory().getSTM().GetAllRecords(); 
     136                _stmRecordDisplay = new STMRecordDisplay(ag, records); 
    136137            _memoryRecords.add(_stmRecordDisplay.getSTMRecordPanel());           
    137138        }      
    138139         
    139         ListIterator li = KnowledgeBase.GetInstance().GetFactList(); 
     140        ListIterator li = ag.getMemory().getKB().GetFactList(); 
    140141         
    141142        KnowledgeSlot slot; 
     
    143144        int index;          
    144145         
    145         if (KnowledgeBase.GetInstance().Count() >= _knowledgeSize) 
     146        if (ag.getMemory().getKB().Count() >= _knowledgeSize) 
    146147        { 
    147148                 _knowledgeFactsPanel.removeAll(); 
    148                  _knowledgeSize = KnowledgeBase.GetInstance().Count(); 
     149                 _knowledgeSize = ag.getMemory().getKB().Count(); 
    149150        } 
    150151         
     
    160161        } 
    161162         
    162         li = WorkingMemory.GetInstance().GetFactList(); 
    163         ArrayList changeList = WorkingMemory.GetInstance().GetChangeList(); 
     163        li = ag.getMemory().getWM().GetFactList(); 
     164        ArrayList changeList = ag.getMemory().getWM().GetChangeList(); 
    164165        _workingFactsSubPanel1.removeAll(); 
    165166        _workingFactsSubPanel2.removeAll(); 
     
    177178                _workingFactsSubPanel1.add(kDisplay.GetPanel()); 
    178179        } 
    179         synchronized(WorkingMemory.GetInstance()) 
     180        synchronized(ag.getMemory().getWM()) 
    180181        { 
    181                 WorkingMemory.GetInstance().ClearChangeList(); 
     182                ag.getMemory().getWM().ClearChangeList(); 
    182183        } 
    183184   
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/SocialRelationsPanel.java

    r13 r190  
    1111 
    1212import FAtiMA.Agent; 
    13 import FAtiMA.memory.Memory; 
    1413import FAtiMA.socialRelations.LikeRelation; 
    1514import FAtiMA.socialRelations.Relation; 
    1615import FAtiMA.socialRelations.RespectRelation; 
     16import FAtiMA.util.Constants; 
    1717 
    1818public class SocialRelationsPanel extends AgentDisplayPanel { 
     
    2222        JPanel _relationsPanel; 
    2323 
    24         protected Hashtable _relationsDisplay; 
     24        protected Hashtable _realationsDisplay; 
    2525 
    2626        public SocialRelationsPanel() { 
     
    2828                this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 
    2929 
    30                 _relationsDisplay = new Hashtable(); 
     30                _realationsDisplay = new Hashtable(); 
    3131 
    3232                _relationsPanel = new JPanel(); 
     
    4242 
    4343        public boolean Update(Agent ag) { 
    44                 ArrayList relations = LikeRelation.getAllRelations(Memory.GetInstance().getSelf()); 
    45                 relations.addAll(RespectRelation.getAllRelations(Memory.GetInstance().getSelf())); 
     44                ArrayList relations = LikeRelation.getAllRelations(ag.getMemory(),Constants.SELF); 
     45                relations.addAll(RespectRelation.getAllRelations(ag.getMemory(), Constants.SELF)); 
    4646                boolean updated = false; 
    4747 
    4848                // in this case, there's a new relation added (it is not usual for 
    49                 // relations to disapear) 
     49                // relations to disappear) 
    5050                // so we have to clear all relations and start displaying them all again 
    51                 if (_relationsDisplay.size() != relations.size()) { 
     51                if (_realationsDisplay.size() != relations.size()) { 
    5252                        _relationsPanel.removeAll(); // removes all displayed emotions 
    5353                                                                                        // from the panel 
    54                         _relationsDisplay.clear(); 
     54                        _realationsDisplay.clear(); 
    5555                        Iterator it = relations.iterator(); 
    5656                        while (it.hasNext()) { 
    5757                                Relation r = (Relation) it.next(); 
    58                                 RelationDisplay display = new RelationDisplay(r); 
     58                                RelationDisplay display = new RelationDisplay(ag.getMemory(), r); 
    5959                                _relationsPanel.add(display.getPanel()); 
    60                                 _relationsDisplay.put(r.getHashKey(), display); 
     60                                _realationsDisplay.put(r.getHashKey(), display); 
    6161                        } 
    6262                        updated = true; 
     
    6666                while (it.hasNext()) { 
    6767                        Relation r = (Relation) it.next(); 
    68                         RelationDisplay display = (RelationDisplay) _relationsDisplay 
     68                        RelationDisplay display = (RelationDisplay) _realationsDisplay 
    6969                                        .get(r.getHashKey()); 
    70                         display.setValue(r.getValue()); 
     70                        display.setValue(r.getValue(ag.getMemory())); 
    7171                } 
    7272 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/Display/TestAction.java

    r34 r190  
    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/branches/FAtiMA2/src/FAtiMA/ValuedAction.java

    r1 r190  
    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/branches/FAtiMA2/src/FAtiMA/conditions/Condition.java

    r13 r190  
    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.knowledgeBase.KnowledgeBase; 
    6968import FAtiMA.wellFormedNames.IGroundable; 
    7069import FAtiMA.wellFormedNames.Name; 
     
    102101         * @see SubstitutionSet 
    103102         */ 
    104         public static ArrayList CheckActivation(ArrayList preconditions) { 
     103        public static ArrayList CheckActivation(AgentModel am, ArrayList preconditions) { 
    105104                ListIterator subsi; 
    106105                Condition cond; 
     
    142141                                        //we test the new condition against memory and receive a list of new SubstitutionsSets 
    143142                                        //that individually can satisfy the new condition 
    144                                         aux = newCond.GetValidBindings(); 
     143                                        aux = newCond.GetValidBindings(am); 
    145144                                        if (aux != null) { 
    146145                                                //if the list is not null, it means that the condition can be verified  
     
    168167                                //in this case there are no previous substitutions that resulted from the 
    169168                                //previous condition tests 
    170                                 aux = cond.GetValidBindings(); 
     169                                aux = cond.GetValidBindings(am); 
    171170                                if (aux != null && aux.size() > 0) { 
    172171                                        newValidSubstitutionsSet.addAll(aux); 
     
    206205         * @see AutobiographicalMemory 
    207206         */ 
    208         public abstract boolean CheckCondition(); 
     207        public abstract boolean CheckCondition(AgentModel am); 
    209208 
    210209        /** 
     
    224223         * @see AutobiographicalMemory 
    225224         */ 
    226         public ArrayList GetValidBindings() { 
     225        public ArrayList GetValidBindings(AgentModel am) { 
    227226                ArrayList validSubstitutionSets = new ArrayList(); 
    228227                ArrayList bindingSets; 
     
    233232 
    234233                if (_name.isGrounded()) { 
    235                         bindings = this.GetValueBindings(); 
     234                        bindings = this.GetValueBindings(am); 
    236235                        if (bindings == null) 
    237236                                return null; 
     
    240239                } 
    241240 
    242                 bindingSets = Memory.GetInstance().GetPossibleBindings(_name); 
     241                bindingSets = am.getMemory().GetPossibleBindings(_name); 
    243242                if (bindingSets == null) 
    244243                        return null; 
     
    249248                        cond = (Condition) this.clone(); 
    250249                        cond.MakeGround(subSet.GetSubstitutions()); 
    251                         aux = cond.GetValueBindings(); 
     250                        aux = cond.GetValueBindings(am); 
    252251                        if (aux != null) {                               
    253252                                subSet.AddSubstitutions(aux); 
     
    298297     * @return returns all set of Substitutions that make the condition valid. 
    299298         */ 
    300         protected abstract ArrayList GetValueBindings(); 
     299        protected abstract ArrayList GetValueBindings(AgentModel am); 
    301300} 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/EmotionCondition.java

    r5 r190  
    3535import org.xml.sax.Attributes; 
    3636 
     37import FAtiMA.AgentModel; 
    3738import FAtiMA.emotionalState.ActiveEmotion; 
    3839import FAtiMA.emotionalState.EmotionalState; 
    3940import FAtiMA.exceptions.InvalidEmotionTypeException; 
    4041import FAtiMA.knowledgeBase.KnowledgeBase; 
    41 import FAtiMA.memory.Memory; 
    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() { 
     164        public ArrayList GetValidBindings(AgentModel am) { 
    165165                ArrayList bindingSets = new ArrayList(); 
    166166                ArrayList 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 SearchEmotion(EmotionalState es) 
    186186        { 
    187187                ActiveEmotion aem; 
     
    189189                ArrayList substitutionSets = new ArrayList(); 
    190190                 
    191                 for(Iterator it = EmotionalState.GetInstance().GetEmotionsIterator();it.hasNext();) 
     191                for(Iterator it = es.GetEmotionsIterator();it.hasNext();) 
    192192                { 
    193193                        aem = (ActiveEmotion) it.next(); 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/MoodCondition.java

    r5 r190  
    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()) 
     199        public ArrayList GetValidBindings(AgentModel am) { 
     200                if(CheckCondition(am)) 
    206201                { 
    207202                        ArrayList bindings = new ArrayList(); 
     
    212207        } 
    213208         
    214         public ArrayList GetValueBindings() 
    215         { 
    216                 if(CheckCondition()) { 
     209        public ArrayList GetValueBindings(AgentModel am) 
     210        { 
     211                if(CheckCondition(am)) { 
    217212                        return new ArrayList(); 
    218213                } 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/MotivatorCondition.java

    r1 r190  
    55import org.xml.sax.Attributes; 
    66 
     7import FAtiMA.AgentModel; 
    78import FAtiMA.util.AgentLogger; 
    89import FAtiMA.wellFormedNames.Name; 
     
    5556         * @return true if the condition is verified, false otherwise 
    5657         */ 
    57         public boolean CheckCondition() { 
     58        public boolean CheckCondition(AgentModel am) { 
    5859                //TODO: implment this based on the motivational system 
    5960                return true; 
     
    213214     * @return returns all set of Substitutions that make the condition valid. 
    214215     */ 
    215         protected ArrayList GetValueBindings() { 
     216        protected ArrayList GetValueBindings(AgentModel am) { 
    216217                return null; 
    217218                //TODO: implement using motivational component 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/NewEventCondition.java

    r13 r190  
    44import java.util.ListIterator; 
    55 
     6import FAtiMA.AgentModel; 
    67import FAtiMA.memory.SearchKey; 
    7 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    8 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    98import FAtiMA.sensorEffector.Event; 
    109import FAtiMA.wellFormedNames.Name; 
     
    4645                        newEvent._parameters.add(((Symbol)li.next()).clone()); 
    4746                } 
    48          
     47                 
    4948                return newEvent; 
    5049        } 
     
    6867         
    6968 
    70         public boolean CheckCondition() { 
     69        public boolean CheckCondition(AgentModel am) { 
    7170                boolean conditionVerified; 
    7271                 
     
    8079                } 
    8180         
    82                 ArrayList searchKeys = GetSearchKeys(); 
    83                 conditionVerified = (_positive == (ShortTermMemory.GetInstance().ContainsRecentEvent(searchKeys) 
    84                                                                 || AutobiographicalMemory.GetInstance().ContainsRecentEvent(searchKeys))); 
     81                conditionVerified = (_positive == am.getMemory().getSTM().ContainsRecentEvent(GetSearchKeys())); 
    8582                 
    8683                if(conditionVerified){ 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PastEventCondition.java

    r13 r190  
    3939import org.xml.sax.Attributes; 
    4040 
     41import FAtiMA.AgentModel; 
    4142import FAtiMA.memory.ActionDetail; 
    4243import FAtiMA.memory.SearchKey; 
    43 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    44 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    4544import FAtiMA.sensorEffector.Event; 
    4645import FAtiMA.sensorEffector.Parameter; 
     
    227226        } 
    228227         
    229         protected ArrayList GetPossibleBindings() 
    230         { 
    231                 return AutobiographicalMemory.GetInstance().SearchForPastEvents(GetSearchKeys());                
     228        protected ArrayList GetPossibleBindings(AgentModel am) 
     229        { 
     230                return am.getMemory().getAM().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 GetValidBindings(AgentModel am) { 
    240240                ActionDetail detail; 
    241241                Substitution sub; 
     
    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, 
     
    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());  
     317                return _positive == am.getMemory().getAM().ContainsPastEvent(GetSearchKeys());  
    318318        } 
    319319         
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PredicateCondition.java

    r13 r190  
    5757import org.xml.sax.Attributes; 
    5858 
    59 import FAtiMA.memory.Memory; 
     59import FAtiMA.AgentModel; 
     60import FAtiMA.knowledgeBase.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().AskPredicate(_name);  
    124125                return _positive == result; 
    125126        } 
     
    262263     * @return returns all set of Substitutions that make the condition valid. 
    263264         */ 
    264         protected ArrayList GetValueBindings() { 
    265                 if(CheckCondition()) { 
     265        protected ArrayList GetValueBindings(AgentModel am) { 
     266                if(CheckCondition(am)) { 
    266267                        return new ArrayList(); 
    267268                } 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PropertyCondition.java

    r13 r190  
    5858import org.xml.sax.Attributes; 
    5959 
     60import FAtiMA.AgentModel; 
    6061import FAtiMA.knowledgeBase.KnowledgeBase; 
    61 import FAtiMA.memory.Memory; 
    6262import FAtiMA.util.AgentLogger; 
    6363import FAtiMA.wellFormedNames.Name; 
     
    159159         * @return true if the condition is verified, false otherwise 
    160160         */ 
    161         public boolean CheckCondition() { 
     161        public boolean CheckCondition(AgentModel am) { 
    162162                if (!_name.isGrounded() && !_value.isGrounded()) 
    163163                        return false; 
     
    279279        } 
    280280         
    281         protected ArrayList GetBindings(Name groundValue, Name value) { 
     281        protected ArrayList GetBindings(AgentModel am, Name groundValue, Name value) { 
    282282                Object val; 
    283283                ArrayList bindings; 
     
    285285                        return null; 
    286286                if (!value.isGrounded()) { 
    287                         val = groundValue.evaluate(Memory.GetInstance()); 
     287                        val = groundValue.evaluate(am.getMemory()); 
    288288                        if (val != null) { 
    289289                                bindings = new ArrayList(); 
     
    294294                        else return null; 
    295295                } 
    296                 else if (this.CheckCondition()) { 
     296                else if (this.CheckCondition(am)) { 
    297297                        return new ArrayList(); 
    298298                } 
     
    309309     * @return returns all set of Substitutions that make the condition valid. 
    310310     */ 
    311         protected ArrayList GetValueBindings() { 
    312                 return GetBindings(_name, _value); 
     311        protected ArrayList GetValueBindings(AgentModel am) { 
     312                return GetBindings(am, _name, _value); 
    313313        } 
    314314} 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PropertyEqual.java

    r13 r190  
    5050package FAtiMA.conditions; 
    5151 
     52import FAtiMA.AgentModel; 
    5253import FAtiMA.knowledgeBase.KnowledgeBase; 
    53 import FAtiMA.memory.Memory; 
    5454import FAtiMA.util.AgentLogger; 
    5555import FAtiMA.wellFormedNames.Name; 
     
    8686     * @return true if the condition is verified, false otherwise 
    8787     */ 
    88     public boolean CheckCondition() 
     88    public boolean CheckCondition(AgentModel am) 
    8989    { 
    9090        Object propertyValue; 
    9191        Object value; 
    92         //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    93         Memory memory = Memory.GetInstance(); 
    9492 
    95         if (!super.CheckCondition()) 
     93        if (!super.CheckCondition(am)) 
    9694            return false; 
    97         propertyValue = this._name.evaluate(memory); 
    98         value = this._value.evaluate(memory); 
     95        propertyValue = this._name.evaluate(am.getMemory()); 
     96        value = this._value.evaluate(am.getMemory()); 
    9997 
    10098        if (propertyValue == null || value == null) 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PropertyGreater.java

    r13 r190  
    5353package FAtiMA.conditions; 
    5454 
     55import FAtiMA.AgentModel; 
    5556import FAtiMA.knowledgeBase.KnowledgeBase; 
    56 import FAtiMA.memory.Memory; 
    5757import FAtiMA.util.AgentLogger; 
    5858import FAtiMA.wellFormedNames.Name; 
     
    8989     * @return true if the condition is verified, false otherwise 
    9090     */ 
    91         public boolean CheckCondition() { 
     91        public boolean CheckCondition(AgentModel am) { 
    9292                Object propertyValue; 
    9393                Object value; 
     
    9595                Float aux2; 
    9696 
    97                 if (!super.CheckCondition()) 
     97                if (!super.CheckCondition(am)) 
    9898                        return false; 
    9999                 
    100                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    101                 Memory memory = Memory.GetInstance(); 
    102                 propertyValue = this._name.evaluate(memory); 
    103                 value = this._value.evaluate(memory); 
     100                propertyValue = this._name.evaluate(am.getMemory()); 
     101                value = this._value.evaluate(am.getMemory()); 
    104102 
    105103                if (propertyValue == null || value == null) 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PropertyGreaterEqual.java

    r13 r190  
    3131package FAtiMA.conditions; 
    3232 
     33import FAtiMA.AgentModel; 
    3334import FAtiMA.knowledgeBase.KnowledgeBase; 
    34 import FAtiMA.memory.Memory; 
    3535import FAtiMA.util.AgentLogger; 
    3636import FAtiMA.wellFormedNames.Name; 
     
    6767     * @return true if the condition is verified, false otherwise 
    6868     */ 
    69         public boolean CheckCondition() { 
     69        public boolean CheckCondition(AgentModel am) { 
    7070                Object propertyValue; 
    7171                Object value; 
     
    7373                Float aux2; 
    7474 
    75                 if (!super.CheckCondition()) 
     75                if (!super.CheckCondition(am)) 
    7676                        return false; 
    7777                 
    78                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    79                 Memory memory = Memory.GetInstance(); 
    80                 propertyValue = this._name.evaluate(memory); 
    81                 value = this._value.evaluate(memory); 
     78                propertyValue = this._name.evaluate(am.getMemory()); 
     79                value = this._value.evaluate(am.getMemory()); 
    8280 
    8381                if (propertyValue == null || value == null) 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PropertyLesser.java

    r13 r190  
    5555import java.util.ArrayList; 
    5656 
     57import FAtiMA.AgentModel; 
    5758import FAtiMA.knowledgeBase.KnowledgeBase; 
    58 import FAtiMA.memory.Memory; 
    5959import FAtiMA.util.AgentLogger; 
    6060import FAtiMA.wellFormedNames.Name; 
     
    9090     * @return true if the condition is verified, false otherwise 
    9191     */ 
    92         public boolean CheckCondition() { 
     92        public boolean CheckCondition(AgentModel am) { 
    9393                Object propertyValue; 
    9494                Object value; 
     
    9696                Float aux2; 
    9797 
    98                 if (!super.CheckCondition()) 
     98                if (!super.CheckCondition(am)) 
    9999                        return false; 
    100                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    101                 Memory memory = Memory.GetInstance(); 
    102                 propertyValue = this._name.evaluate(memory); 
    103                 value = this._value.evaluate(memory); 
     100         
     101                propertyValue = this._name.evaluate(am.getMemory()); 
     102                value = this._value.evaluate(am.getMemory()); 
    104103 
    105104                if (propertyValue == null || value == null || propertyValue =="null" || value == "null") 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PropertyLesserEqual.java

    r13 r190  
    3131package FAtiMA.conditions; 
    3232 
     33import FAtiMA.AgentModel; 
    3334import FAtiMA.knowledgeBase.KnowledgeBase; 
    34 import FAtiMA.memory.Memory; 
    3535import FAtiMA.util.AgentLogger; 
    3636import FAtiMA.wellFormedNames.Name; 
     
    6666     * @return true if the condition is verified, false otherwise 
    6767     */ 
    68         public boolean CheckCondition() { 
     68        public boolean CheckCondition(AgentModel am) { 
    6969                Object propertyValue; 
    7070                Object value; 
     
    7272                Float aux2; 
    7373 
    74                 if (!super.CheckCondition()) 
     74                if (!super.CheckCondition(am)) 
    7575                        return false; 
    76                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    77                 Memory memory = Memory.GetInstance(); 
    78                 propertyValue = this._name.evaluate(memory); 
    79                 value = this._value.evaluate(memory); 
     76                propertyValue = this._name.evaluate(am.getMemory()); 
     77                value = this._value.evaluate(am.getMemory()); 
    8078 
    8179                if (propertyValue == null || value == null || propertyValue =="null" || value == "null") 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/PropertyNotEqual.java

    r13 r190  
    7575import java.util.ListIterator; 
    7676 
     77import FAtiMA.AgentModel; 
    7778import FAtiMA.knowledgeBase.KnowledgeBase; 
    78 import FAtiMA.memory.Memory; 
    7979import FAtiMA.util.AgentLogger; 
    8080import FAtiMA.wellFormedNames.Inequality; 
     
    112112     * @return true if the condition is verified, false otherwise 
    113113     */ 
    114         public boolean CheckCondition() { 
     114        public boolean CheckCondition(AgentModel am) { 
    115115                Object propertyValue; 
    116116                Object value; 
    117117 
    118                 if (!super.CheckCondition()) 
     118                if (!super.CheckCondition(am)) 
    119119                        return false; 
    120                 //KnowledgeBase kb = KnowledgeBase.GetInstance(); 
    121                 Memory memory = Memory.GetInstance(); 
    122                 propertyValue = this._name.evaluate(memory); 
    123                 value = this._value.evaluate(memory); 
     120                 
     121                propertyValue = this._name.evaluate(am.getMemory()); 
     122                value = this._value.evaluate(am.getMemory()); 
    124123 
    125124                if (propertyValue == null || value == null)  
     
    139138     * @return A list with all SubstitutionsSets that make the condition valid 
    140139         */ 
    141         public ArrayList GetValidBindings() { 
     140        public ArrayList GetValidBindings(AgentModel am) { 
    142141                ArrayList validSubstitutionSets = new ArrayList(); 
    143142                ArrayList bindingSets; 
     
    155154                        //if the name is ground, both name and value are grounded and we 
    156155                        //just need to call the checkcondition function 
    157                         if(CheckCondition()) 
     156                        if(CheckCondition(am)) 
    158157                        { 
    159158                                validSubstitutionSets.add(new SubstitutionSet()); 
     
    164163                 
    165164                //if the name is not grounded we try to get all possible bindings for it 
    166                 bindingSets = Memory.GetInstance().GetPossibleBindings(_name); 
     165                bindingSets = am.getMemory().GetPossibleBindings(_name); 
    167166                if (bindingSets == null) 
    168167                        return null; 
     
    173172                        cond = (Condition) this.clone(); 
    174173                        cond.MakeGround(subSet.GetSubstitutions()); 
    175                         if(cond.CheckCondition()) 
     174                        if(cond.CheckCondition(am)) 
    176175                        { 
    177176                                validSubstitutionSets.add(subSet); 
     
    195194     * that if they are verified, the NotEqualCondition is also verified 
    196195         */ 
    197         public ArrayList GetValidInequalities() { 
     196        public ArrayList GetValidInequalities(AgentModel am) { 
    198197                ArrayList validSubstitutionSets = new ArrayList(); 
    199198                ListIterator li; 
     
    206205                // [X] != [Y] 
    207206                if (_name.isGrounded()) { 
    208                         bindings = this.GetBindings(_name,_value); 
     207                        bindings = this.GetBindings(am,_name,_value); 
    209208                        if (bindings == null) 
    210209                                return null; 
    211210                } 
    212211                else if(_value.isGrounded()) { 
    213                         bindings = this.GetBindings(_value,_name); 
     212                        bindings = this.GetBindings(am,_value,_name); 
    214213                        if (bindings == null) 
    215214                                return null; 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/RecentEventCondition.java

    r40 r190  
    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; 
    4541import FAtiMA.sensorEffector.Event; 
    4642import FAtiMA.wellFormedNames.Name; 
     
    188184         * @see AutobiographicalMemory 
    189185         */ 
    190         public boolean CheckCondition() { 
     186        public boolean CheckCondition(AgentModel am) { 
    191187                 
    192188                if(!_name.isGrounded()) return false; 
    193189                 
    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; 
     190                return _positive == am.getMemory().getSTM().ContainsRecentEvent(GetSearchKeys());  
     191        } 
     192         
     193        protected ArrayList GetPossibleBindings(AgentModel am) 
     194        { 
     195                return am.getMemory().getSTM(). 
     196                                SearchForRecentEvents(GetSearchKeys()); 
    209197        } 
    210198         
  • AgentMind/branches/FAtiMA2/src/FAtiMA/conditions/RitualCondition.java

    r13 r190  
    3636import org.xml.sax.Attributes; 
    3737 
     38import FAtiMA.AgentModel; 
    3839import FAtiMA.memory.SearchKey; 
    39 import FAtiMA.memory.Memory; 
    40 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    41 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    4240import FAtiMA.sensorEffector.Event; 
    4341import FAtiMA.wellFormedNames.Name; 
     
    193191         * @see AutobiographicalMemory 
    194192         */ 
    195         public boolean CheckCondition() { 
     193        public boolean CheckCondition(AgentModel am) { 
    196194                 
    197195                if(!_name.isGrounded()) return false; 
     
    199197                ArrayList keys = new ArrayList(); 
    200198                 
    201                 keys.add(new SearchKey(SearchKey.SUBJECT,Memory.GetInstance().getSelf())); 
     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() 
     215                 
     216                return am.getMemory().getSTM().ContainsRecentEvent(keys); 
     217                 
     218        } 
     219         
     220        protected ArrayList GetPossibleBindings(AgentModel am) 
    223221        { 
    224222                return null; 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/culture/CulturalDimensions.java

    r13 r190  
    55import java.util.Random; 
    66 
    7 import FAtiMA.memory.KnowledgeSlot; 
    8 import FAtiMA.memory.Memory; 
     7import FAtiMA.AgentModel; 
    98import FAtiMA.deliberativeLayer.goals.ActivePursuitGoal; 
    109import FAtiMA.knowledgeBase.KnowledgeBase; 
     
    8281         
    8382        // 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);            
     83        public void changeNeedsWeightsAndDecays(AgentModel am) { 
     84 
     85                float collectivismCoefficient = _dimensionalValues[CulturalDimensionType.COLLECTIVISM] * 0.01f; 
     86                Motivator affiliationMotivator = am.getMotivationalState().GetSelfMotivator(MotivatorType.AFFILIATION);          
    8887                float personalityAffiliationWeight = affiliationMotivator.GetWeight(); 
    8988                float personalityAffiliationDecayFactor = affiliationMotivator.GetDecayFactor(); 
     
    101100        } 
    102101 
    103         public float determineCulturalUtility(ActivePursuitGoal goal, float selfContrib, float otherContrib){ 
     102        public float determineCulturalUtility(AgentModel am, ActivePursuitGoal goal, float selfContrib, float otherContrib){ 
    104103 
    105104                 
     
    111110                String target = goal.getName().GetLiteralList().get(1).toString(); 
    112111                 
    113                 float likeValue = this.obtainLikeRelationshipFromKB(target); 
    114                 float differenceInPower = this.obtainDifferenceInPowerFromKB(target); 
     112                float likeValue = this.obtainLikeRelationshipFromKB(am, target); 
     113                float differenceInPower = this.obtainDifferenceInPowerFromKB(am, target); 
    115114                         
    116115                float result = selfContrib + //(otherContrib * Math.pow(POWER_DISTANCE_K, differenceInPower) +  
     
    121120        } 
    122121 
    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); 
     122        private float obtainLikeRelationshipFromKB(AgentModel am, String targetAgent){ 
     123                Name likeProperty = Name.ParseName("Like("+ am.getName() + "," + targetAgent +")"); 
     124                Float likeValue = (Float) am.getMemory().AskProperty(likeProperty); 
    127125 
    128126                if(likeValue == null){   
     
    133131        } 
    134132 
    135         private int obtainDifferenceInPowerFromKB(String targetAgent){ 
    136  
    137                 String agentName = Memory.GetInstance().getSelf(); 
     133        private int obtainDifferenceInPowerFromKB(AgentModel am, String targetAgent){ 
     134 
     135                String agentName = am.getName(); 
    138136 
    139137                Name selfPowerPropertyName = Name.ParseName(agentName+"(power)"); 
    140                 String selfPowerProperty = (String)Memory.GetInstance().AskProperty(selfPowerPropertyName); 
     138                String selfPowerProperty = (String)am.getMemory().AskProperty(selfPowerPropertyName); 
    141139                Name targetPowerPropertyName = Name.ParseName(targetAgent+"(power)"); 
    142                 String targetPowerProperty = (String)Memory.GetInstance().AskProperty(targetPowerPropertyName); 
     140                String targetPowerProperty = (String)am.getMemory().AskProperty(targetPowerPropertyName); 
    143141 
    144142                if(selfPowerProperty == null || targetPowerProperty == null){ 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/culture/Ritual.java

    r1 r190  
    3838 
    3939import FAtiMA.ActionLibrary; 
     40import FAtiMA.AgentModel; 
    4041import FAtiMA.conditions.Condition; 
    4142import FAtiMA.conditions.NewEventCondition; 
     
    6263         */ 
    6364         
     65        private static final float EXPECTED_AFFILIATION_ONIGNORE_VALUE = -10f; 
    6466        private static final long serialVersionUID = 1L; 
    6567         
     
    152154        } 
    153155         
    154         public void BuildPlan() 
     156        public void BuildPlan(AgentModel am) 
    155157        { 
    156158                Step s; 
     
    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() 
     210        public ArrayList getPlans(AgentModel am) 
    209211        { 
    210212                ArrayList plans = new ArrayList(); 
    211                 this._plan.UpdatePlan(); 
     213                this._plan.UpdatePlan(am); 
    212214                plans.add(this._plan); 
    213215                return plans; 
     
    538540        //IPlanningOperator methods 
    539541         
    540         public float getProbability() 
    541         { 
    542                 Float f = this.GetProbability(); 
     542        public float getProbability(AgentModel am) 
     543        { 
     544                Float f = this.GetProbability(am); 
    543545                if(f != null) 
    544546                { 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/DeliberativeProcess.java

    r5 r190  
    124124import java.util.Set; 
    125125 
     126import FAtiMA.AgentModel; 
    126127import FAtiMA.AgentProcess; 
    127128import FAtiMA.ValuedAction; 
     
    137138import FAtiMA.deliberativeLayer.plan.Step; 
    138139import FAtiMA.emotionalState.ActiveEmotion; 
     140import FAtiMA.emotionalState.EmotionalState; 
    139141import FAtiMA.exceptions.InvalidMotivatorTypeException; 
    140142import FAtiMA.exceptions.UnknownGoalException; 
    141 import FAtiMA.memory.Memory; 
    142143import FAtiMA.motivationalSystem.MotivationalState; 
    143144import FAtiMA.sensorEffector.Event; 
     
    259260         * it updates all plans of all current active intentions 
    260261         */ 
    261         public void CheckLinks() { 
     262        public void CheckLinks(AgentModel am) { 
    262263                Iterator it; 
    263264                 
     
    266267                        it = _intentions.values().iterator(); 
    267268                        while (it.hasNext()) { 
    268                                 ((Intention) it.next()).CheckLinks(); 
     269                                ((Intention) it.next()).CheckLinks(am); 
    269270                        } 
    270271                } 
     
    296297         *                                                 the String "CIF" changes the importance of failure 
    297298         */ 
    298         public void ChangeGoalImportance(String goalName, float importance, String importanceType) { 
     299        public void ChangeGoalImportance(AgentModel am, String goalName, float importance, String importanceType) { 
    299300                ListIterator li; 
    300301                 
     
    307308                                if(goalName.equals(g.getName().toString())) { 
    308309                                        if(importanceType.equals("CIS")) { 
    309                                                 g.SetImportanceOfSuccess(importance); 
     310                                                g.SetImportanceOfSuccess(am, importance); 
    310311                                        } 
    311312                                        else { 
    312                                                 g.SetImportanceOfFailure(importance); 
     313                                                g.SetImportanceOfFailure(am, importance); 
    313314                                        } 
    314315                                        break; 
     
    360361         *                                                                goals defined in the GoalLibrary. 
    361362         */ 
    362         public void AddGoal(String goalName, float importanceOfSuccess, float importanceOfFailure)  throws UnknownGoalException { 
     363        public void AddGoal(AgentModel am, String goalName, float importanceOfSuccess, float importanceOfFailure)  throws UnknownGoalException { 
    363364            Goal g = _goalLibrary.GetGoal(Name.ParseName(goalName)); 
    364365            if (g != null) { 
    365               g.SetImportanceOfSuccess(importanceOfSuccess); 
    366               g.SetImportanceOfFailure(importanceOfFailure); 
     366              g.SetImportanceOfSuccess(am, importanceOfSuccess); 
     367              g.SetImportanceOfFailure(am, importanceOfFailure); 
    367368              AddGoal(g); 
    368369            } 
     
    382383         *                                                                goals defined in the GoalLibrary. 
    383384         */ 
    384         public void AddGoal(String goalName)  throws UnknownGoalException { 
     385        public void AddGoal(AgentModel am, String goalName)  throws UnknownGoalException { 
    385386            Goal g = _goalLibrary.GetGoal(Name.ParseName(goalName)); 
    386387            if (g != null) { 
    387               g.SetImportanceOfSuccess(1); 
    388               g.SetImportanceOfFailure(1); 
     388              g.SetImportanceOfSuccess(am, 1); 
     389              g.SetImportanceOfFailure(am, 1); 
    389390              AddGoal(g); 
    390391            } 
     
    403404         * @param goal - the goal that we want to add 
    404405         */ 
    405         public void AddIntention(ActivePursuitGoal goal) { 
     406        public void AddIntention(AgentModel am, ActivePursuitGoal goal) { 
    406407                ArrayList plans; 
    407408                Plan newPlan; 
     
    414415                        intention = new Intention(goal); 
    415416                         
    416                         plans = goal.getPlans(); 
     417                        plans = goal.getPlans(am); 
    417418                        if(plans == null) 
    418419                        { 
     
    429430        } 
    430431         
    431         public void AddSubIntention(Intention mainIntention, ActivePursuitGoal goal) 
     432        public void AddSubIntention(AgentModel am, Intention mainIntention, ActivePursuitGoal goal) 
    432433        { 
    433434                ArrayList plans; 
     
    437438                 
    438439                subIntention = new Intention(goal); 
    439                 plans = goal.getPlans(); 
     440                plans = goal.getPlans(am); 
    440441                if(plans == null) 
    441442                { 
     
    496497        } 
    497498         
    498         public void EnforceCopingStrategy(String coping) 
     499        public void EnforceCopingStrategy(AgentModel am, String coping) 
    499500        { 
    500501                Goal g; 
     
    509510                                AgentLogger.GetInstance().logAndPrint("Enforcing coping strategy: " + g.getName()); 
    510511                                AgentLogger.GetInstance().logAndPrint(""); 
    511                                 g.IncreaseImportanceOfFailure(2); 
    512                                 g.IncreaseImportanceOfSuccess(2); 
     512                                g.IncreaseImportanceOfFailure(am, 2); 
     513                                g.IncreaseImportanceOfSuccess(am, 2); 
    513514                        } 
    514515                } 
     
    601602         * @throws InvalidMotivatorTypeException  
    602603         */ 
    603         public void Appraisal() { 
     604        public void Appraisal(AgentModel am) { 
    604605                ListIterator li; 
    605606                Event event; 
     
    610611                        //If the action expired we must check the plan links (continuous planning) 
    611612                        //just to make sure 
    612                         CheckLinks(); 
     613                        CheckLinks(am); 
    613614                        /*if(_actionMonitor.GetStep().getName().toString().startsWith("WaitFor")) 
    614615                        { 
     
    617618                         
    618619                        //System.out.println("Calling UpdateCertainty (action monitor expired)"); 
    619                         MotivationalState.GetInstance().UpdateCertainty(-_actionMonitor.GetStep().getProbability()); 
    620                         _actionMonitor.GetStep().DecreaseProbability(); 
     620                        am.getMotivationalState().UpdateCertainty(-_actionMonitor.GetStep().getProbability(am)); 
     621                        _actionMonitor.GetStep().DecreaseProbability(am); 
    621622                         
    622623                        UpdateProbabilities(); 
     
    630631                        while (li.hasNext()) { 
    631632                                        event = (Event) li.next(); 
    632                                         MotivationalState.GetInstance().UpdateMotivators(event, _planner.GetOperators()); 
     633                                         
     634                                        am.getMotivationalState().UpdateMotivators(am, event, _planner.GetOperators()); 
     635                                         
     636                                        if(_actionMonitor != null) 
     637                                        { 
     638                                                int t = 1; 
     639                                                t = t+1; 
     640                                        } 
    633641                                                 
    634642                                        if(_actionMonitor != null && _actionMonitor.MatchEvent(event)) { 
    635                                             if(_actionMonitor.GetStep().getAgent().isGrounded() &&  
    636                                                         !_actionMonitor.GetStep().getAgent().toString().equals( 
    637                                                                         Memory.GetInstance().getSelf())) 
     643                                            if(_actionMonitor.GetStep().getAgent().isGrounded() &&   
     644                                                        !_actionMonitor.GetStep().getAgent().toString().equals("SELF")) 
    638645                                            { 
    639646                                                //the agent was waiting for an action of other agent to be complete 
     
    643650                                                                _actionMonitor.GetStep().getName()) != null) 
    644651                                                { 
    645                                                         _actionMonitor.GetStep().IncreaseProbability(); 
     652                                                        _actionMonitor.GetStep().IncreaseProbability(am); 
    646653                                                        //System.out.println("Calling updateEffectsProbability (other's action: step completed)"); 
    647                                                         _actionMonitor.GetStep().updateEffectsProbability(); 
     654                                                        _actionMonitor.GetStep().updateEffectsProbability(am); 
    648655                                                } 
    649656                                                else 
    650657                                                { 
    651658                                                        //System.out.println("Calling UpdateCertainty (other's action: step completed)"); 
    652                                                         MotivationalState.GetInstance().UpdateCertainty(-_actionMonitor.GetStep().getProbability()); 
    653                                                         _actionMonitor.GetStep().DecreaseProbability(); 
     659                                                        am.getMotivationalState().UpdateCertainty(-_actionMonitor.GetStep().getProbability(am)); 
     660                                                        _actionMonitor.GetStep().DecreaseProbability(am); 
    654661                                                } 
    655662                                            } 
     
    657664                                            { 
    658665                                                //System.out.println("Calling updateEffectsProbability (self: step completed)"); 
    659                                                 _actionMonitor.GetStep().updateEffectsProbability(); 
     666                                                _actionMonitor.GetStep().updateEffectsProbability(am); 
    660667                                            } 
    661668                                                         
    662669                                                UpdateProbabilities(); 
    663670                                                _actionMonitor = null; 
    664                                                 break; 
    665671                                        } 
    666672                                } 
     
    668674                                //according to the continuous planning techniques 
    669675                                //TODO GARANTIR QUE SEMPRE QUE UM PLANO É ACTUALIZADO a EMOÇÃO É ACTUALIZADA 
    670                                 CheckLinks(); 
    671                         } 
    672                 } 
    673                  
    674                 Options(); 
     676                                CheckLinks(am); 
     677                        } 
     678                } 
     679                 
     680                Options(am); 
    675681                 
    676682                 
     
    679685        } 
    680686         
    681         public void Options() 
     687        public void Options(AgentModel am) 
    682688        { 
    683689                Goal g; 
     
    706712                 
    707713                        //this section detects if a ritual has started with another agent's action 
    708                         if(!event.GetSubject().equals(Memory.GetInstance().getSelf())) 
     714                        if(!event.GetSubject().equals("SELF")) 
    709715                        { 
    710716                                for(ListIterator rIterator = this._rituals.listIterator(); rIterator.hasNext();) 
     
    722728                                                 
    723729                                                //we must check the ritual preconditions 
    724                                                 substitutions2 = Condition.CheckActivation(r2.GetPreconditions()); 
     730                                                substitutions2 = Condition.CheckActivation(am,r2.GetPreconditions()); 
    725731                                                if(substitutions2 != null) 
    726732                                                { 
     
    734740                                                                //the last thing we need to check is if the agent is included in the ritual's 
    735741                                                                //roles and if the ritual has not succeeded, because if not there is no sense in including the ritual as a goal 
    736                                                                 if(r3.GetRoles().contains(new Symbol(Memory.GetInstance().getSelf())) 
    737                                                                                 && !r3.CheckSucess()) 
     742                                                                if(r3.GetRoles().contains(new Symbol(_self)) 
     743                                                                                && !r3.CheckSucess(am)) 
    738744                                                                { 
    739745                                                                        ritualName = r3.getNameWithCharactersOrdered(); 
     
    762768                                         
    763769                                         
    764                                         substitutionSets = Condition.CheckActivation(aGoal.GetPreconditions());  
     770                                        substitutionSets = Condition.CheckActivation(am, aGoal.GetPreconditions());  
    765771                                        if(substitutionSets != null) { 
    766772                                                li2 = substitutionSets.listIterator(); 
     
    775781                                                        // as a desire if it's successconditions are not satisfied 
    776782                                                         
    777                                                         if(!desire.CheckSucess()) 
     783                                                        if(!desire.CheckSucess(am)) 
    778784                                                        { 
    779785 
     
    792798        } 
    793799         
    794         public ActivePursuitGoal Filter(ArrayList options) { 
     800        public ActivePursuitGoal Filter(AgentModel am, ArrayList options) { 
    795801                ActivePursuitGoal g;  
    796802                Intention currentIntention = null; 
     
    811817                        if(!ContainsIntention(g)) 
    812818                        {                
    813                                 EU = g.GetExpectedUtility(); 
     819                                EU = g.GetExpectedUtility(am); 
    814820                                 
    815821                                if(EU > maxUtility) 
     
    826832                        { 
    827833                                if(_currentIntention == null || 
    828                                                 maxUtility > _currentIntention.getGoal().GetExpectedUtility()*SELECTIONTHRESHOLD) 
     834                                                maxUtility > _currentIntention.getGoal().GetExpectedUtility(am)*SELECTIONTHRESHOLD) 
    829835                                { 
    830836                                        return maxGoal; 
     
    842848         * @return - the most relevant intention (the one with highest expected utility) 
    843849         */ 
    844         public Intention Filter2ndLevel() { 
     850        public Intention Filter2ndLevel(AgentModel am) { 
    845851                Iterator it; 
    846852                Intention intention; 
     
    853859                        maxIntention = _currentIntention; 
    854860                        //TODO selection threshold here! 
    855                         highestUtility = _currentIntention.getGoal().GetExpectedUtility(); 
     861                        highestUtility = _currentIntention.getGoal().GetExpectedUtility(am); 
    856862                } 
    857863                else 
     
    872878                                if(intention != _currentIntention)  
    873879                                { 
    874                                         EU = intention.GetExpectedUtility(); 
     880                                        EU = intention.GetExpectedUtility(am); 
    875881                                         
    876882                                        if(EU > highestUtility) 
     
    883889                } 
    884890                 
     891                if(this._currentIntention != maxIntention) 
     892                { 
     893                        AgentLogger.GetInstance().logAndPrint("Switching 2nd level intention from " + this._currentIntention + " to " + maxIntention); 
     894                } 
     895                 
    885896                this._currentIntention = maxIntention; 
    886897                 
     
    893904         * execution. 
    894905         */ 
    895         public void Coping() { 
     906        public void Coping(AgentModel am) { 
    896907                Intention i = null; 
    897908                ActiveEmotion fear; 
     
    907918                 
    908919                //deliberation; 
    909                 ActivePursuitGoal g = Filter(this._options); 
     920                ActivePursuitGoal g = Filter(am, this._options); 
    910921                 
    911922                if(g != null) 
    912923                { 
    913                         AddIntention(g); 
     924                        AddIntention(am, g); 
    914925                        if(_ritualOptions.containsKey(g.getNameWithCharactersOrdered())) 
    915926                        { 
     
    919930                 
    920931                //means-end reasoning 
    921                 _currentIntention = Filter2ndLevel(); 
     932                _currentIntention = Filter2ndLevel(am); 
    922933                if(_currentIntention != null) { 
    923934                        i = _currentIntention.GetSubIntention(); 
     
    928939                                 
    929940                                RemoveIntention(i); 
    930                                 i.ProcessIntentionFailure(); 
    931                         } 
    932                         else if(i.IsStrongCommitment() && i.getGoal().CheckSucess()) 
     941                                i.ProcessIntentionFailure(am); 
     942                        } 
     943                        else if(i.IsStrongCommitment() && i.getGoal().CheckSucess(am)) 
    933944                        {        
    934945                                RemoveIntention(i); 
    935                                 i.ProcessIntentionSuccess(); 
     946                                i.ProcessIntentionSuccess(am); 
    936947                        } 
    937948                        else 
    938949                        { 
    939                                 _selectedPlan = _planner.ThinkAbout(i); 
     950                                _selectedPlan = _planner.ThinkAbout(am, i); 
    940951                        } 
    941952                } 
    942953                 
    943954                if(_actionMonitor == null && _selectedPlan != null) { 
    944                         copingAction = _selectedPlan.UnexecutedAction(); 
     955                        copingAction = _selectedPlan.UnexecutedAction(am); 
    945956                         
    946957                        if(copingAction != null) { 
    947                                 i.SetStrongCommitment(); 
     958                                i.SetStrongCommitment(am); 
    948959                                 
    949960                                if(copingAction instanceof ActivePursuitGoal) 
    950961                                { 
    951                                         AddSubIntention(_currentIntention, (ActivePursuitGoal) copingAction);    
     962                                        AddSubIntention(am, _currentIntention, (ActivePursuitGoal) copingAction);        
    952963                                } 
    953964                                else if(!copingAction.getName().GetFirstLiteral().toString().startsWith("Inference")) 
    954965                                { 
    955                                         fear = i.GetFear(); 
    956                                         hope = i.GetHope(); 
     966                                        fear = i.GetFear(am.getEmotionalState()); 
     967                                        hope = i.GetHope(am.getEmotionalState()); 
    957968                                        if(hope != null) 
    958969                                        { 
     
    10361047                 
    10371048                Substitution sub = new Substitution(_selectedAction.getAgent(), 
    1038                                 new Symbol(_self)); 
     1049                                new Symbol("SELF")); 
    10391050                 
    10401051                Plan clonedPlan = (Plan) _selectedPlan.clone(); 
     
    10621073                } 
    10631074            } 
    1064             else if(!_selectedAction.getAgent().toString().equals(_self)) 
     1075            else if(!_selectedAction.getAgent().toString().equals("SELF")) 
    10651076            { 
    10661077                //we have to wait for another agent to act 
    10671078                AgentLogger.GetInstance().logAndPrint("Waiting for agent " + _selectedAction.getAgent().toString() + " to do:" + _selectedAction.getName().toString()); 
    1068                 AgentLogger.GetInstance().log("Probability: " + _selectedAction.getProbability()); 
     1079                 
    10691080                e = new Event(_selectedAction.getAgent().toString(),null,null); 
    10701081                _actionMonitor = new ExpirableActionMonitor(waitingTime,_selectedAction,e); 
     
    10961107            } 
    10971108             
    1098             e = new Event(_self,action,target); 
     1109            e = new Event("SELF",action,target); 
    10991110        _actionMonitor = new ActionMonitor(_selectedAction,e); 
    11001111         
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/EmotionalPlanner.java

    r5 r190  
    116116import java.util.Set; 
    117117 
     118import FAtiMA.AgentModel; 
    118119import FAtiMA.IntegrityValidator; 
    119120import FAtiMA.conditions.Condition; 
     
    131132import FAtiMA.deliberativeLayer.plan.Step; 
    132133import FAtiMA.emotionalState.ActiveEmotion; 
     134import FAtiMA.emotionalState.Appraisal; 
     135import FAtiMA.emotionalState.BaseEmotion; 
    133136import FAtiMA.emotionalState.EmotionalState; 
    134137import FAtiMA.exceptions.UnknownSpeechActException; 
    135138import FAtiMA.exceptions.UnspecifiedVariableException; 
    136 import FAtiMA.memory.autobiographicalMemory.AutobiographicalMemory; 
    137139import FAtiMA.motivationalSystem.MotivationalState; 
    138140import FAtiMA.sensorEffector.Event; 
     
    399401         *                       returns null 
    400402         */ 
    401         public Plan ThinkAbout(Intention intention) { 
     403        public Plan ThinkAbout(AgentModel am, Intention intention) { 
    402404                Plan p; 
    403405                Plan newPlan; 
     
    422424                 
    423425                 
    424                  
    425                 p = intention.GetBestPlan(); //gets the best plan so far to achieve the intention 
     426                p = intention.GetBestPlan(am); //gets the best plan so far to achieve the intention 
    426427                //System.out.println("BEST PLAN: " + p); 
    427428 
     
    434435                    //There aren't open conditions left and no steps in the plan, it means that the goal has been achieved 
    435436                         
    436                          
    437437                        return null; 
    438438                } 
     
    440440                //APPRAISAL/REAPPRAISAL - the plan brought into the agent's mind will generate/update 
    441441                //hope and fear emotions according to the plan probability 
    442                 hopeEmotion = EmotionalState.GetInstance().AppraiseGoalSucessProbability(intention.getGoal(),p.getProbability()); 
    443                 fearEmotion = EmotionalState.GetInstance().AppraiseGoalFailureProbability(intention.getGoal(),1-p.getProbability()); 
     442                BaseEmotion auxEmotion = Appraisal.AppraiseGoalSuccessProbability(am, intention.getGoal(),p.getProbability(am)); 
     443                hopeEmotion = am.getEmotionalState().UpdateProspectEmotion(auxEmotion, am); 
     444                 
     445                auxEmotion = Appraisal.AppraiseGoalFailureProbability(am, intention.getGoal(),1-p.getProbability(am)); 
     446                fearEmotion = am.getEmotionalState().UpdateProspectEmotion(auxEmotion, am); 
     447                 
    444448                intention.SetHope(hopeEmotion); 
    445449                intention.SetFear(fearEmotion); 
     
    451455                //goals more easily and thus the threshold is higher, character on negative moods will have a lower 
    452456                //threshold. This threshold is ranged between 5% and 15%, it is 10% for characters in a neutral mood 
    453                 float threshold = 0.1f + EmotionalState.GetInstance().GetMood()*0.0167f; 
    454                 if(p.getProbability() < threshold) { 
     457                float threshold = 0.1f + am.getEmotionalState().GetMood()*0.0167f; 
     458                if(p.getProbability(am) < threshold) { 
    455459                        //this coping strategy is used in tandem with mental disengagement... 
    456460                    //that consists in lowering the goal importance 
    457                         intention.getGoal().DecreaseImportanceOfFailure(0.5f); 
     461                        intention.getGoal().DecreaseImportanceOfFailure(am, 0.5f); 
    458462                        intention.RemovePlan(p); 
    459463                        AgentLogger.GetInstance().log("ACCEPTANCE - Plan prob to low - " + intention.getGoal().getName().toString()); 
     
    468472                         
    469473                        goalThreat = (GoalThreat) li.next(); 
    470                         prob = goalThreat.getEffect().GetProbability(); 
    471                         threatImportance = goalThreat.getCond().getGoal().GetImportanceOfFailure(); 
     474                        prob = goalThreat.getEffect().GetProbability(am); 
     475                        threatImportance = goalThreat.getCond().getGoal().GetImportanceOfFailure(am); 
    472476                        aux = prob * threatImportance; 
    473                         failureImportance = intention.getGoal().GetImportanceOfFailure(); 
    474                          
    475                         threatEmotion = EmotionalState.GetInstance().AppraiseGoalFailureProbability(goalThreat.getCond().getGoal(),prob); 
     477                        failureImportance = intention.getGoal().GetImportanceOfFailure(am); 
     478                         
     479                        auxEmotion = Appraisal.AppraiseGoalFailureProbability(am, goalThreat.getCond().getGoal(),prob);  
     480                        threatEmotion = am.getEmotionalState().UpdateProspectEmotion(auxEmotion, am); 
    476481                        if(threatEmotion != null) { //if does not exist a fear caused by the threat, emotion coping is not necessary 
    477482                                threatIntensity = threatEmotion.GetIntensity(); 
     
    511516                         */ 
    512517                         
    513                         if(failureImportance*p.getProbability() <= threatIntensity - hopeIntensity) { 
     518                        if(failureImportance*p.getProbability(am) <= threatIntensity - hopeIntensity) { 
    514519                        //if(threatIntensity >= hopeIntensity && aux >= failureImportance) { 
    515520                                 
     
    517522                                //this coping strategy is used in tandem with mental disengagement... 
    518523                            //that consists in lowering the goal importance 
    519                                 intention.getGoal().DecreaseImportanceOfFailure(0.5f); 
     524                                intention.getGoal().DecreaseImportanceOfFailure(am, 0.5f); 
    520525                                //coping strategy: Acceptance. This plan is rejected by the agent 
    521526                                intention.RemovePlan(p); 
     
    529534                                        //will fail 
    530535                                        li.remove(); 
    531                                         goalThreat.getCond().getGoal().DecreaseImportanceOfFailure(0.5f); 
     536                                        goalThreat.getCond().getGoal().DecreaseImportanceOfFailure(am, 0.5f); 
    532537                                        AgentLogger.GetInstance().log("ACCEPTANCE - Interest goal droped - " + goalThreat.getCond().getGoal().getName()); 
    533538                                } 
     
    550555                                while(li.hasNext()) { 
    551556                                        flaw = (CausalConflictFlaw) li.next(); 
    552                                         flaw.GetEffect().DecreaseProbability(); 
     557                                        flaw.GetEffect().DecreaseProbability(am); 
    553558                                        AgentLogger.GetInstance().log("DENIAL - Effect probability lowered - " + intention.getGoal().getName().toString()); 
    554559                                } 
     
    598603                        //TODO I've just realized a PROBLEM, even if the condition is grounded and verified  
    599604                        // in the start step, we must check whether adding a new operator is a better move! 
    600                         if (cond.isGrounded() && cond.CheckCondition()) { 
     605                        if (cond.isGrounded() && cond.CheckCondition(am)) { 
    601606                                //in this case, we don't have to do much, just add a causal link from start 
    602607                                newPlan = (Plan) p.clone(); 
     
    623628                                { 
    624629                                        //System.out.println("Testing != operator: " + cond); 
    625                                         substitutionSets = ((PropertyNotEqual) cond).GetValidInequalities(); 
     630                                        substitutionSets = ((PropertyNotEqual) cond).GetValidInequalities(am); 
    626631                                } 
    627632                                else 
    628633                                { 
    629                                         substitutionSets = cond.GetValidBindings(); 
     634                                        substitutionSets = cond.GetValidBindings(am); 
    630635                                } 
    631636                                 
     
    676681         *                   specified order will achieve the goal 
    677682         */ 
    678         public Plan DevelopPlan(ActivePursuitGoal goal) 
     683        public Plan DevelopPlan(AgentModel am, ActivePursuitGoal goal) 
    679684    { 
    680685            Plan p = new Plan(new ArrayList(),goal.GetSuccessConditions()); 
     
    685690        while (i.NumberOfAlternativePlans() > 0) 
    686691        { 
    687             completePlan = ThinkAbout(i); 
     692            completePlan = ThinkAbout(am, i); 
    688693            if(completePlan != null) 
    689694            { 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/Intention.java

    r5 r190  
    3939import java.util.ListIterator; 
    4040 
    41 //import FAtiMA.autobiographicalMemory.AutobiographicalMemory; 
     41import FAtiMA.AgentModel; 
    4242import FAtiMA.culture.Ritual; 
    4343import FAtiMA.deliberativeLayer.goals.ActivePursuitGoal; 
     
    4545import FAtiMA.deliberativeLayer.plan.Plan; 
    4646import FAtiMA.emotionalState.ActiveEmotion; 
     47import FAtiMA.emotionalState.Appraisal; 
     48import FAtiMA.emotionalState.BaseEmotion; 
    4749import FAtiMA.emotionalState.EmotionalState; 
    48 import FAtiMA.memory.shortTermMemory.ShortTermMemory; 
    4950import FAtiMA.motivationalSystem.MotivationalState; 
    5051import FAtiMA.sensorEffector.Event; 
    5152import FAtiMA.util.AgentLogger; 
     53import FAtiMA.wellFormedNames.Name; 
    5254 
    5355 
     
    177179        /** 
    178180         * Gets the Fear emotion associated with the intention. 
    179          * This fear is caused by the prospect of failling to achieve the goal   
     181         * This fear is caused by the prospect of failing to achieve the goal   
    180182         * @return - the Fear emotion 
    181183         */ 
    182         public ActiveEmotion GetFear() { 
     184        public ActiveEmotion GetFear(EmotionalState es) { 
    183185                if(_fearEmotionID == null) return null; 
    184                 return EmotionalState.GetInstance().GetEmotion(_fearEmotionID); 
     186                return es.GetEmotion(_fearEmotionID); 
    185187        } 
    186188 
     
    199201         * @return - the Hope emotion 
    200202         */ 
    201         public ActiveEmotion GetHope() { 
     203        public ActiveEmotion GetHope(EmotionalState es) { 
    202204                if(_hopeEmotionID == null) return null; 
    203                 return EmotionalState.GetInstance().GetEmotion(_hopeEmotionID); 
     205                return es.GetEmotion(_hopeEmotionID); 
    204206        } 
    205207 
     
    208210         * @return the best plan 
    209211         */ 
    210         public Plan GetBestPlan() { 
     212        public Plan GetBestPlan(AgentModel am) { 
    211213                ListIterator li; 
    212214                Plan p; 
     
    217219                while (li.hasNext()) { 
    218220                        p = (Plan) li.next(); 
    219                         if (p.h() < minH) { 
     221                        if (p.h(am) < minH) { 
    220222                                bestPlan = p; 
    221                                 minH = p.h(); 
     223                                minH = p.h(am); 
    222224                        } 
    223225                } 
     
    229231         * @return a float value representing the probability [0;1] 
    230232         */ 
    231         public float GetProbability() { 
     233        public float GetProbability(AgentModel am) { 
    232234                ListIterator li; 
    233235                float p; 
     
    235237                li = _planConstruction.listIterator(); 
    236238                while (li.hasNext()) { 
    237                         p = ((Plan) li.next()).getProbability(); 
     239                        p = ((Plan) li.next()).getProbability(am); 
    238240                        if (p > bestProb) bestProb = p;  
    239241                } 
     
    241243        } 
    242244         
    243         public float GetExpectedUtility() 
    244         { 
    245                 _goal.SetProbability(new Float(GetProbability())); 
    246                 return _goal.GetExpectedUtility(); 
     245        public float GetExpectedUtility(AgentModel am) 
     246        { 
     247                _goal.SetProbability(new Float(GetProbability(am))); 
     248                return _goal.GetExpectedUtility(am); 
    247249        } 
    248250         
     
    296298        } 
    297299         
    298         public void SetStrongCommitment() 
     300        public void SetStrongCommitment(AgentModel am) 
    299301        { 
    300302                if(!_strongCommitment) 
    301303                { 
    302304                        _strongCommitment = true; 
    303                         ProcessIntentionActivation(); 
     305                        ProcessIntentionActivation(am); 
    304306                } 
    305307        } 
     
    317319         * state of the world. Supports continuous planning. 
    318320         */ 
    319         public void CheckLinks() { 
     321        public void CheckLinks(AgentModel am) { 
    320322            ListIterator li; 
    321323            li = _planConstruction.listIterator(); 
    322324             
    323325            while(li.hasNext()) { 
    324                 ((Plan) li.next()).UpdatePlan(); 
     326                ((Plan) li.next()).UpdatePlan(am); 
    325327            } 
    326328             
    327329            if(this._subIntention != null) 
    328330            { 
    329                 this._subIntention.CheckLinks(); 
     331                this._subIntention.CheckLinks(am); 
    330332            } 
    331333        } 
     
    353355         * @param intention - the intention that was activated 
    354356         */ 
    355         private void ProcessIntentionActivation()  
     357        private void ProcessIntentionActivation(AgentModel am)  
    356358        { 
    357359            Event e = _goal.GetActivationEvent(); 
     360             
     361            Name locationKey = Name.ParseName(am.getName() + "(location)"); 
     362                String location = (String) am.getMemory().AskProperty(locationKey); 
    358363             
    359364            AgentLogger.GetInstance().logAndPrint("Adding a new Strong Intention: " + _goal.getName().toString()); 
    360365           
    361             // AutobiographicalMemory.GetInstance().StoreAction(e); 
    362             // Meiyii 11/03/09 
    363             ShortTermMemory.GetInstance().StoreAction(e); 
    364              
    365             float probability = GetProbability(); 
    366                 ActiveEmotion hope = EmotionalState.GetInstance().AppraiseGoalSucessProbability(_goal, probability); 
    367                 ActiveEmotion fear = EmotionalState.GetInstance().AppraiseGoalFailureProbability(_goal, 1 - probability); 
     366            am.getMemory().getSTM().StoreAction(am.getMemory(), e, location); 
     367             
     368            float probability = GetProbability(am); 
     369            BaseEmotion aux = Appraisal.AppraiseGoalSuccessProbability(am, _goal, probability); 
     370            ActiveEmotion hope = am.getEmotionalState().UpdateProspectEmotion(aux, am); 
     371             
     372            aux = Appraisal.AppraiseGoalFailureProbability(am, _goal, 1- probability); 
     373                ActiveEmotion fear = am.getEmotionalState().UpdateProspectEmotion(aux, am); 
    368374                 
    369375                SetHope(hope); 
     
    374380         * Registers and appraises the failure of this intention 
    375381         */ 
    376         public void ProcessIntentionFailure()  
     382        public void ProcessIntentionFailure(AgentModel am)  
    377383        {        
     384                 Name locationKey = Name.ParseName(am.getName() + "(location)"); 
     385                 String location = (String) am.getMemory().AskProperty(locationKey); 
     386                         
    378387                //mental disengagement consists in lowering the goal's importance 
    379                 _goal.DecreaseImportanceOfFailure(0.5f); 
     388                _goal.DecreaseImportanceOfFailure(am, 0.5f); 
    380389                 
    381390                //_numberOfGoalsTried++; 
    382                 MotivationalState.GetInstance().UpdateCompetence(false); 
     391                am.getMotivationalState().UpdateCompetence(false); 
    383392                 
    384393                 
    385394            Event e = _goal.GetFailureEvent(); 
    386395             
    387             float observedError = _goal.getProbability(); 
    388             float previousExpectedError = _goal.getUncertainty(); 
     396            //observed error = |estimation of success - realsuccess| 
     397            //given that the goal failed, the real success is none and the formula resumes to 
     398            //observed error = estimation of success - 0 (=) estimation of success 
     399            float observedError = _goal.getProbability(am); 
     400            float previousExpectedError = _goal.getUncertainty(am); 
    389401             
    390402            float newExpectedError = ActivePursuitGoal.alfa * observedError + (1 - ActivePursuitGoal.alfa) * previousExpectedError; 
    391403            float deltaError = newExpectedError - previousExpectedError; 
    392             MotivationalState.GetInstance().UpdateCertainty(-deltaError); 
    393             _goal.setUncertainty(newExpectedError); 
    394              
    395             //AutobiographicalMemory.GetInstance().StoreAction(e); 
    396             // Meiyii 11/03/09 
    397             ShortTermMemory.GetInstance().StoreAction(e); 
    398             EmotionalState.GetInstance().AppraiseGoalFailure(GetHope(),GetFear(), _goal); 
     404            am.getMotivationalState().UpdateCertainty(-deltaError); 
     405            _goal.setUncertainty(am, newExpectedError); 
     406             
     407            am.getMemory().getSTM().StoreAction(am.getMemory(), e, location); 
     408             
     409            ActiveEmotion hope = GetHope(am.getEmotionalState()); 
     410            ActiveEmotion fear = GetFear(am.getEmotionalState()); 
     411            BaseEmotion em = Appraisal.AppraiseGoalFailure(am, hope,fear, _goal); 
     412            am.getEmotionalState().RemoveEmotion(hope); 
     413            am.getEmotionalState().RemoveEmotion(fear); 
     414            am.getEmotionalState().AddEmotion(em, am); 
    399415             
    400416            if(!isRootIntention()) 
    401417            { 
    402418                AgentLogger.GetInstance().logAndPrint("Removing Parent Intention!: " + this.getParentIntention()); 
    403                 getParentIntention().ProcessIntentionFailure(); 
     419                getParentIntention().ProcessIntentionFailure(am); 
    404420                //getParentIntention().CheckLinks(); 
    405421            } 
     
    411427         * Registers and appraises the success of the intention 
    412428         */ 
    413         public void ProcessIntentionSuccess()  
    414         { 
    415          
     429        public void ProcessIntentionSuccess(AgentModel am)  
     430        { 
     431                Name locationKey = Name.ParseName(am.getName() + "(location)"); 
     432                String location = (String) am.getMemory().AskProperty(locationKey); 
     433                 
     434                EmotionalState es = am.getEmotionalState(); 
    416435                //_numberOfGoalsAchieved++; 
    417436                //_numberOfGoalsTried++; 
    418                 MotivationalState.GetInstance().UpdateCompetence(true); 
     437                am.getMotivationalState().UpdateCompetence(true); 
    419438            Event e = _goal.GetSuccessEvent(); 
    420439             
    421             float observedError = 1 - _goal.getProbability(); 
    422             float previousExpectedError = _goal.getUncertainty(); 
     440            //observed error = |realsuccess - estimation of success| 
     441            //given that the goal succeeded, the real success is 1 and the formula resumes to 
     442            //observed error = 1 - estimation of success  
     443            float observedError = 1 - _goal.getProbability(am); 
     444            float previousExpectedError = _goal.getUncertainty(am); 
    423445             
    424446            float newExpectedError = ActivePursuitGoal.alfa * observedError + (1 - ActivePursuitGoal.alfa) * previousExpectedError; 
    425447            float deltaError = newExpectedError - previousExpectedError; 
    426             MotivationalState.GetInstance().UpdateCertainty(-deltaError); 
    427             _goal.setUncertainty(newExpectedError); 
    428                      
    429             //AutobiographicalMemory.GetInstance().StoreAction(e); 
    430             // Meiyii 11/03/09 
    431             ShortTermMemory.GetInstance().StoreAction(e); 
    432             EmotionalState.GetInstance().AppraiseGoalSuccess(GetHope(), GetFear(), _goal); 
     448            am.getMotivationalState().UpdateCertainty(-deltaError); 
     449            _goal.setUncertainty(am,newExpectedError); 
     450             
     451             
     452            am.getMemory().getSTM().StoreAction(am.getMemory(), e, location); 
     453             
     454            ActiveEmotion hope = GetHope(es); 
     455            ActiveEmotion fear = GetFear(es); 
     456            BaseEmotion em = Appraisal.AppraiseGoalSuccess(am, hope,fear, _goal); 
     457            es.RemoveEmotion(hope); 
     458            es.RemoveEmotion(fear); 
     459            if(em != null) 
     460            { 
     461                es.AddEmotion(em, am); 
     462            } 
     463             
     464             
    433465             
    434466            if(!isRootIntention()) 
    435467            { 
    436                 getParentIntention().CheckLinks(); 
     468                getParentIntention().CheckLinks(am); 
    437469            } 
    438470                                 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/goals/ActivePursuitGoal.java

    r67 r190  
    7777import java.util.ListIterator; 
    7878 
     79import FAtiMA.AgentModel; 
    7980import FAtiMA.IntegrityValidator; 
    8081import FAtiMA.conditions.Condition; 
     
    8788import FAtiMA.exceptions.UnreachableGoalException; 
    8889import FAtiMA.knowledgeBase.KnowledgeBase; 
    89 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
    90 import FAtiMA.memory.Memory; 
    9190import FAtiMA.motivationalSystem.MotivationalState; 
    9291import FAtiMA.util.AgentLogger; 
     
    147146                 
    148147                //IPlanningOperator 
    149                 _agent = new Symbol(Memory.GetInstance().getSelf()); 
     148                _agent = new Symbol("SELF"); 
    150149                _effects = new ArrayList(); 
    151150                 
     
    179178         * @return true if the goal failed, false otherwise 
    180179         */ 
    181         public boolean CheckFailure() { 
     180        public boolean CheckFailure(AgentModel am) { 
    182181            ListIterator li; 
    183182                Condition cond; 
     
    186185                while (li.hasNext()) { 
    187186                        cond = (Condition) li.next(); 
    188                         if (cond.GetValidBindings() != null) 
     187                        if (cond.GetValidBindings(am) != null) 
    189188                                return true; 
    190189                } 
     
    213212         * @return true if the goal succeeded, false otherwise 
    214213         */ 
    215         public boolean CheckSucess() { 
     214        public boolean CheckSucess(AgentModel am) { 
    216215            ListIterator li; 
    217216                Condition cond; 
     
    220219                while (li.hasNext()) { 
    221220                        cond = (Condition) li.next(); 
    222                         if(cond.GetValidBindings() == null) 
     221                        if(cond.GetValidBindings(am) == null) 
    223222                        { 
    224223                                return false; 
     
    237236                        if(cond.isGrounded()) 
    238237                        { 
    239                                 if(cond.getName().toString().contains(Memory.GetInstance().getSelf())) 
     238                                if(cond.getName().toString().contains("SELF")) 
    240239                                { 
    241240                                        return true; 
     
    345344        } 
    346345         
    347         private float GetGoalFamiliarity() 
     346        private float GetGoalFamiliarity(AgentModel am) 
    348347        { 
    349348                if (_familiarity == null) 
    350349                { 
    351                         _familiarity = new Float(Memory.GetInstance().AssessGoalFamiliarity(this)); 
     350                        _familiarity = new Float(am.getMemory().AssessGoalFamiliarity(this)); 
    352351                } 
    353352                 
     
    355354        } 
    356355         
    357         public Float GetProbability() 
     356        public Float GetProbability(AgentModel am) 
    358357        { 
    359358                if(!_probabilityDetermined) 
    360359                { 
    361360                        _probabilityDetermined = true; 
    362                         _probability = Memory.GetInstance().AssessGoalProbability(this); 
     361                        _probability = am.getMemory().AssessGoalProbability(this); 
    363362                } 
    364363                 
     
    371370        } 
    372371         
    373         public float getUncertainty() 
    374         { 
    375                 Float aux = (Float) Memory.GetInstance().AskProperty(this.getName()); 
     372        public float getUncertainty(AgentModel am) 
     373        { 
     374                Float aux = (Float) am.getMemory().AskProperty(this.getName()); 
    376375                if(aux != null) return aux.floatValue(); 
    377376                else return 0.0f; 
    378377        } 
    379378         
    380         public void setUncertainty(float uncertainty) 
     379        public void setUncertainty(AgentModel am, float uncertainty) 
    381380        {        
    382                 WorkingMemory.GetInstance().Tell(this.getName(), new Float(uncertainty)); 
    383                 //System.out.println("Set uncertainty"); 
    384         } 
    385          
    386          
    387         public float getContributionToTargetNeeds() 
     381                am.getMemory().getWM().Tell(am.getMemory(),this.getName(), new Float(uncertainty)); 
     382        } 
     383         
     384         
     385        public float getContributionToTargetNeeds(AgentModel am) 
    388386        { 
    389387                float result = 0;                
     
    395393                while(it.hasNext()){ 
    396394                        String target = ((Symbol)it.next()).toString(); 
    397                         result += this.getContributionToNeeds(target);                   
     395                        result += this.getContributionToNeeds(am, target);                       
    398396                } 
    399397                return result; 
     
    401399 
    402400         
    403         public float getContributionToPersonalNeeds() 
    404         { 
    405                 return this.getContributionToNeeds("[SELF]"); 
     401        public float getContributionToPersonalNeeds(AgentModel am) 
     402        { 
     403                return this.getContributionToNeeds(am, "SELF"); 
    406404        } 
    407405         
     
    427425         
    428426         
    429         private float getContributionToNeeds(String target){ 
     427        private float getContributionToNeeds(AgentModel am, String target){ 
    430428                float result = 0; 
    431429                String[] effectTypes = {"OnSelect","OnIgnore"}; 
     
    447445                                 
    448446                        // If target is SELF 
    449                         if(target.equalsIgnoreCase("[SELF]")){ 
     447                        if(target.equalsIgnoreCase("SELF")){ 
    450448                                auxMultiplier = 1; 
    451449                                //Calculate the effect on Non-Cognitive Needs 
     
    454452                                        for(int i = 0; i < nonCognitiveDrives.length; i++){ 
    455453                                                expectedContribution = this.GetExpectedEffectOnDrive(effectTypes[c], nonCognitiveDrives[i], "[SELF]").floatValue(); 
    456                                                 currentIntensity =  MotivationalState.GetInstance().GetIntensity(_agent.getName(),MotivatorType.ParseType(nonCognitiveDrives[i])); 
     454                                                currentIntensity =  am.getMotivationalState().GetIntensity(_agent.getName(),MotivatorType.ParseType(nonCognitiveDrives[i])); 
    457455                                                result +=  auxMultiplier * this.determineQuadraticNeedVariation(currentIntensity, expectedContribution);  
    458456                                        } 
     
    461459                                } 
    462460                                 
    463                                 float currentCompetenceIntensity = MotivationalState.GetInstance().GetIntensity(_agent.getName(),MotivatorType.COMPETENCE); 
    464                                 float expectedCompetenceContribution = MotivationalState.GetInstance().PredictCompetenceChange(true); 
     461                                float currentCompetenceIntensity = am.getMotivationalState().GetIntensity(_agent.getName(),MotivatorType.COMPETENCE); 
     462                                float expectedCompetenceContribution = am.getMotivationalState().PredictCompetenceChange(true); 
    465463                                result += this.determineQuadraticNeedVariation(currentCompetenceIntensity, expectedCompetenceContribution); 
    466464                                 
    467                                 float currentUncertaintyIntensity = MotivationalState.GetInstance().GetIntensity(_agent.getName(), MotivatorType.CERTAINTY); 
     465                                float currentUncertaintyIntensity = am.getMotivationalState().GetIntensity(_agent.getName(), MotivatorType.CERTAINTY); 
    468466                                //expected error assuming that the goal is successfull 
    469                                 float expectedError = 1 - getProbability(); 
    470                                 float currentError = getUncertainty(); 
     467                                float expectedError = 1 - getProbability(am); 
     468                                float currentError = getUncertainty(am); 
    471469                                float expectedUncertaintyContribution = 10*(currentError - expectedError);  
    472470                                result += this.determineQuadraticNeedVariation(currentUncertaintyIntensity,expectedUncertaintyContribution);     
     
    483481                                        for(int i = 0; i < nonCognitiveDrives.length; i++){ 
    484482                                                expectedContribution = this.GetExpectedEffectOnDrive(effectTypes[c], nonCognitiveDrives[i], "[target]").floatValue(); 
    485                                                 currentIntensity =  MotivationalState.GetInstance().GetIntensity(target,MotivatorType.ParseType(nonCognitiveDrives[i])); 
     483                                                currentIntensity =  am.getMotivationalState().GetIntensity(target,MotivatorType.ParseType(nonCognitiveDrives[i])); 
    486484                                                result += auxMultiplier * this.determineQuadraticNeedVariation(currentIntensity, expectedContribution);                  
    487485                                        } 
     
    529527        }*/ 
    530528         
    531         private float getCompetence(){ 
    532                 float generalCompetence = MotivationalState.GetInstance().GetIntensity(_agent.getName(),MotivatorType.COMPETENCE)/10; 
    533                 Float probability = GetProbability(); 
     529        private float getCompetence(AgentModel am){ 
     530                float generalCompetence = am.getMotivationalState().GetIntensity(_agent.getName(),MotivatorType.COMPETENCE)/10; 
     531                Float probability = GetProbability(am); 
    534532                 
    535533                if(probability != null){ 
     
    543541         
    544542         
    545         public float GetExpectedUtility() 
     543        public float GetExpectedUtility(AgentModel am) 
    546544        {                
    547                 float contributionToSelf = getContributionToPersonalNeeds(); 
    548                 float contributionOthers = getContributionToTargetNeeds(); 
    549                  
    550                 float culturalGoalUtility = CulturalDimensions.GetInstance().determineCulturalUtility(this,contributionToSelf,contributionOthers);               
    551                  
    552                 float EU = culturalGoalUtility * getCompetence() + (1 + this.GetGoalUrgency()); 
    553                  
    554                  
    555                 AgentLogger.GetInstance().intermittentLog("Goal: " + this.getName() + " CulturalUtilitity: " + culturalGoalUtility + " Competence: " + this.getCompetence() + 
     545                float contributionToSelf = getContributionToPersonalNeeds(am); 
     546                float contributionOthers = getContributionToTargetNeeds(am); 
     547                 
     548                float culturalGoalUtility = CulturalDimensions.GetInstance().determineCulturalUtility(am, this,contributionToSelf,contributionOthers);           
     549                 
     550                float EU = culturalGoalUtility * getCompetence(am) + (1 + this.GetGoalUrgency()); 
     551                 
     552                 
     553                AgentLogger.GetInstance().intermittentLog("Goal: " + this.getName() + " CulturalUtilitity: " + culturalGoalUtility + " Competence: " + this.getCompetence(am) + 
    556554                                " Urgency: "+ this.GetGoalUrgency() + " Total: " + EU); 
    557555                return EU; 
     
    867865        } 
    868866         
    869         public ArrayList getPlans() 
     867        public ArrayList getPlans(AgentModel am) 
    870868        { 
    871869                return null; 
     
    887885        } 
    888886 
    889         public boolean checkPreconditions() { 
     887        public boolean checkPreconditions(AgentModel am) { 
    890888                ListIterator li; 
    891889                li = this._preConditions.listIterator(); 
    892890                 
    893891                while(li.hasNext()) { 
    894                         if (!((Condition) li.next()).CheckCondition()) return false; 
     892                        if (!((Condition) li.next()).CheckCondition(am)) return false; 
    895893                } 
    896894                return true; 
    897895        } 
    898896         
    899         public float getProbability() 
    900         { 
    901                 Float f = this.GetProbability(); 
     897        public float getProbability(AgentModel am) 
     898        { 
     899                Float f = this.GetProbability(am); 
    902900                if(f != null) 
    903901                { 
     
    944942        } 
    945943 
    946         public void updateEffectsProbability() { 
     944        public void updateEffectsProbability(AgentModel am) { 
    947945                //this method is not applied to Goals! 
    948946        } 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/goals/Goal.java

    r67 r190  
    5959import java.util.ListIterator; 
    6060 
     61import FAtiMA.AgentModel; 
    6162import FAtiMA.IntegrityValidator; 
    6263import FAtiMA.conditions.Condition; 
    6364import FAtiMA.exceptions.UnreachableGoalException; 
    6465import FAtiMA.knowledgeBase.KnowledgeBase; 
    65 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
    66 import FAtiMA.memory.Memory; 
    6766import FAtiMA.sensorEffector.Event; 
    6867import FAtiMA.sensorEffector.Parameter; 
     
    167166         * Used for emotion-focused coping strategies like disengagement 
    168167         */ 
    169         public void DecreaseImportanceOfFailure(float decr) { 
     168        public void DecreaseImportanceOfFailure(AgentModel am, float decr) { 
    170169                if(decr <= 0) return; 
    171170                 
    172                 Float iof = (Float) Memory.GetInstance().AskProperty(_dynamicIOF); 
     171                Float iof = (Float) am.getMemory().AskProperty(_dynamicIOF); 
    173172                if(iof == null) 
    174173                { 
     
    181180                else iof = new Float(0 - _baseIOF); 
    182181                 
    183                 WorkingMemory.GetInstance().Tell(_dynamicIOF,iof); 
    184                 //System.out.println("Decrease importance of failure"); 
     182                am.getMemory().getWM().Tell(am.getMemory(),_dynamicIOF,iof); 
    185183        } 
    186184         
     
    189187         * Used for emotion-focused coping strategies 
    190188         */ 
    191         public void IncreaseImportanceOfFailure(float incr) { 
     189        public void IncreaseImportanceOfFailure(AgentModel am, float incr) { 
    192190                if(incr <= 0) return; 
    193191                 
    194                 Float iof = (Float) Memory.GetInstance().AskProperty(_dynamicIOF); 
     192                Float iof = (Float) am.getMemory().AskProperty(_dynamicIOF); 
    195193                if(iof == null) 
    196194                { 
     
    202200                } 
    203201                 
    204                 WorkingMemory.GetInstance().Tell(_dynamicIOF,iof); 
    205                 //System.out.println("Increase importance of failure"); 
     202                am.getMemory().getWM().Tell(am.getMemory(),_dynamicIOF,iof); 
    206203        } 
    207204         
     
    210207         * Used for emotion-focused coping strategies like disengagement 
    211208         */ 
    212         public void DecreaseImportanceOfSuccess(float decr) { 
     209        public void DecreaseImportanceOfSuccess(AgentModel am, float decr) { 
    213210                if(decr <= 0) return; 
    214211                 
    215                 Float ios = (Float) Memory.GetInstance().AskProperty(_dynamicIOS); 
     212                Float ios = (Float) am.getMemory().AskProperty(_dynamicIOS); 
    216213                if(ios == null) 
    217214                { 
     
    225222                else ios = new Float(0 - _baseIOS); 
    226223                 
    227                 WorkingMemory.GetInstance().Tell(_dynamicIOS,ios); 
    228                 //System.out.println("Decrease importance of success"); 
     224                am.getMemory().getWM().Tell(am.getMemory(),_dynamicIOS,ios); 
    229225        } 
    230226         
     
    233229         * Used for emotion-focused coping strategies 
    234230         */ 
    235         public void IncreaseImportanceOfSuccess(float incr) { 
     231        public void IncreaseImportanceOfSuccess(AgentModel am, float incr) { 
    236232                if(incr <= 0) return; 
    237233                 
    238                 Float ios = (Float) Memory.GetInstance().AskProperty(_dynamicIOS); 
     234                Float ios = (Float) am.getMemory().AskProperty(_dynamicIOS); 
    239235                if(ios == null) 
    240236                { 
     
    246242                } 
    247243                 
    248                 WorkingMemory.GetInstance().Tell(_dynamicIOS,ios); 
    249                 //System.out.println("Increase importance of success"); 
     244                am.getMemory().getWM().Tell(am.getMemory(),_dynamicIOS,ios); 
    250245        } 
    251246         
     
    254249         * @return the importance of failure ranged [0;10] 
    255250         */ 
    256         public float GetImportanceOfFailure() { 
    257                 Float aux = (Float) Memory.GetInstance().AskProperty(this._dynamicIOF); 
     251        public float GetImportanceOfFailure(AgentModel am) { 
     252                Float aux = (Float) am.getMemory().AskProperty(this._dynamicIOF); 
    258253                if(aux != null) return aux.floatValue() + _baseIOF; 
    259254                else return _baseIOF; 
     
    264259         * @return the importance of success ranged [0;10] 
    265260         */ 
    266         public float GetImportanceOfSuccess() { 
    267                 Float aux = (Float) Memory.GetInstance().AskProperty(this._dynamicIOS); 
     261        public float GetImportanceOfSuccess(AgentModel am) { 
     262                Float aux = (Float) am.getMemory().AskProperty(this._dynamicIOS); 
    268263                if(aux != null) return aux.floatValue() + _baseIOS; 
    269264                else return _baseIOS; 
     
    311306        } 
    312307         
    313         /*private Event generateEventDescription(String action) 
     308        private Event generateEventDescription(String action) 
    314309        { 
    315                 Event e = new Event(AutobiographicalMemory.GetInstance().getSelf(),action,this._name.GetFirstLiteral().toString()); 
     310                Event e = new Event("SELF",action,this._name.GetFirstLiteral().toString()); 
    316311                ListIterator li = this._name.GetLiteralList().listIterator(); 
    317312            li.next(); 
     
    321316            } 
    322317             
    323             return e; 
    324         }*/ 
    325          
    326         private Event generateEventDescription(String action) 
    327         { 
    328                 Event e = new Event(Memory.GetInstance().getSelf(),action,this._name.GetFirstLiteral().toString()); 
    329                 ListIterator li = this._name.GetLiteralList().listIterator(); 
    330             li.next(); 
    331             while(li.hasNext()) 
    332             { 
    333                 e.AddParameter(new Parameter("param",li.next().toString())); 
    334             } 
    335318            return e; 
    336319        } 
     
    413396         * @param imp - the new importance of failure (ranged [0;10]) 
    414397         */ 
    415         public void SetImportanceOfFailure(float imp) { 
     398        public void SetImportanceOfFailure(AgentModel am, float imp) { 
    416399                 
    417400                if(imp < 0) { 
     
    425408                _baseIOF = Math.round(imp); 
    426409                 
    427                 Float iof = (Float) Memory.GetInstance().AskProperty(_dynamicIOF); 
    428                 //System.out.println("Set importance of failure"); 
     410                Float iof = (Float) am.getMemory().AskProperty(_dynamicIOF); 
    429411                if(iof != null) 
    430412                { 
     
    432414                        if(aux < 0) { 
    433415                                iof = new Float(0 - _baseIOF); 
    434                                 KnowledgeBase.GetInstance().Tell(this._dynamicIOF,iof); 
     416                                am.getMemory().getWM().Tell(am.getMemory(),this._dynamicIOF,iof); 
    435417                        } 
    436418                } 
     
    441423         * @param imp - the new importance of success (ranged [0;10]) 
    442424         */ 
    443         public void SetImportanceOfSuccess(float imp) { 
     425        public void SetImportanceOfSuccess(AgentModel am, float imp) { 
    444426                 
    445427                if(imp < 0) { 
     
    453435                _baseIOS = Math.round(imp); 
    454436                 
    455                 Float ios = (Float) Memory.GetInstance().AskProperty(_dynamicIOS); 
    456                 //System.out.println("Set importance of success"); 
     437                Float ios = (Float) am.getMemory().AskProperty(_dynamicIOS); 
    457438                if(ios != null) 
    458439                { 
     
    460441                        if(aux < 0) { 
    461442                                ios = new Float(0 - _baseIOS); 
    462                                 KnowledgeBase.GetInstance().Tell(this._dynamicIOS,ios); 
     443                                am.getMemory().getWM().Tell(am.getMemory(),this._dynamicIOS,ios); 
    463444                        } 
    464445                } 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/plan/Effect.java

    r67 r190  
    4242import java.util.ArrayList; 
    4343 
     44import FAtiMA.AgentModel; 
    4445import FAtiMA.conditions.Condition; 
    4546import FAtiMA.knowledgeBase.KnowledgeBase; 
    46 import FAtiMA.memory.Memory; 
    47 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
    4847import FAtiMA.wellFormedNames.IGroundable; 
    4948import FAtiMA.wellFormedNames.Name; 
     
    7675         * @param effect - the condition that represents the effect 
    7776         */ 
    78         public Effect(String stepName, float prob, Condition effect) { 
     77        public Effect(AgentModel am, String stepName, float prob, Condition effect) { 
    7978                this._baseprob = prob; 
    8079                this._effect = effect; 
     
    8281                { 
    8382                        this._biasName = Name.ParseName("ProbBias(" + stepName + idCounter++ + ")"); 
    84                         KnowledgeBase.GetInstance().Tell(this._biasName, new Float(0)); 
    85                         //System.out.println("Effect "); 
     83                        if(am != null) 
     84                        { 
     85                                am.getMemory().getWM().Tell(am.getMemory(),this._biasName, new Float(0)); 
     86                        } 
    8687                } 
    8788        } 
     
    9596         * emotion-focused coping strategies 
    9697         */ 
    97         public void DecreaseProbability() { 
     98        public void DecreaseProbability(AgentModel am) { 
    9899                float bias; 
    99100                float prob; 
     
    101102                float newbias; 
    102103                 
    103                 bias = ((Float) Memory.GetInstance().AskProperty(_biasName)).floatValue(); 
     104                bias = ((Float) am.getMemory().AskProperty(_biasName)).floatValue(); 
    104105                prob = bias + _baseprob; 
    105106                newprob = 0.6f * prob; 
    106107                newbias = newprob - _baseprob; 
    107                 WorkingMemory.GetInstance().Tell(_biasName,new Float(newbias));    
    108                 //System.out.println("Decrease probability effect"); 
     108                am.getMemory().getWM().Tell(am.getMemory(),_biasName,new Float(newbias));    
    109109        } 
    110110         
     
    121121         * @return the effect's probability 
    122122         */ 
    123         public float GetProbability() { 
    124                 return _baseprob + ((Float) Memory.GetInstance().AskProperty(_biasName)).floatValue(); 
     123        public float GetProbability(AgentModel am) { 
     124                if(am == null) return _baseprob; 
     125                return _baseprob + ((Float) am.getMemory().AskProperty(_biasName)).floatValue(); 
    125126        } 
    126127         
     
    223224         * emotion-focused coping strategies 
    224225         */ 
    225         public void IncreaseProbability() { 
     226        public void IncreaseProbability(AgentModel am) { 
    226227                float bias; 
    227228                float prob; 
     
    229230                float newbias; 
    230231                 
    231                 bias = ((Float) Memory.GetInstance().AskProperty(_biasName)).floatValue();  
     232                bias = ((Float) am.getMemory().AskProperty(_biasName)).floatValue();  
    232233                prob = bias + _baseprob; 
    233234                newprob = 0.6f * prob + 0.4f; 
    234235                newbias = newprob - _baseprob; 
    235                 WorkingMemory.GetInstance().Tell(_biasName,new Float(newbias));    
    236                 //System.out.println("Increase probability effect"); 
     236                am.getMemory().getWM().Tell(am.getMemory(),_biasName,new Float(newbias));    
    237237        } 
    238238         
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/plan/IPlanningOperator.java

    r1 r190  
    3333import java.util.ArrayList; 
    3434 
     35import FAtiMA.AgentModel; 
    3536import FAtiMA.conditions.Condition; 
    3637import FAtiMA.wellFormedNames.IGroundable; 
     
    4445         * @return the operators's probability 
    4546         */ 
    46         public float getProbability(); 
     47        public float getProbability(AgentModel am); 
    4748         
    4849         
     
    5051         * Updates the probabilities of the operators's effects  
    5152         */ 
    52         public void updateEffectsProbability(); 
     53        public void updateEffectsProbability(AgentModel am); 
    5354         
    5455        /** 
     
    5758         *         false otherwise 
    5859         */ 
    59         public boolean checkPreconditions(); 
     60        public boolean checkPreconditions(AgentModel am); 
    6061         
    6162        /** 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/plan/Plan.java

    r5 r190  
    111111import java.util.ListIterator; 
    112112 
     113import FAtiMA.AgentModel; 
    113114import FAtiMA.conditions.Condition; 
    114 import FAtiMA.memory.Memory; 
    115115import FAtiMA.util.AgentLogger; 
    116116import FAtiMA.wellFormedNames.Inequality; 
     
    241241 
    242242        _start = new Step( 
    243                         new Symbol(Memory.GetInstance().getSelf()), 
     243                        new Symbol("SELF"), 
    244244                        new Symbol("Start"), 
    245245                        1, 
     
    249249        _start.setID(new Integer(_stepCounter++)); 
    250250        _finish = new Step( 
    251                         new Symbol(Memory.GetInstance().getSelf()), 
     251                        new Symbol("SELF"), 
    252252                        new Symbol("Finish"), 
    253253                        1, 
     
    575575     * such continuous planning flaws. This method should be called whenever the world changes.  
    576576     */ 
    577     public void UpdatePlan() 
     577    public void UpdatePlan(AgentModel am) 
    578578    { 
    579579        CausalLink link; 
     
    616616                if(cond.isGrounded()) 
    617617                { 
    618                         if(cond.CheckCondition()) 
     618                        if(cond.CheckCondition(am)) 
    619619                        { 
    620620                                linksToAdd.add(new CausalLink(this._start.getID(), 
     
    630630                        //this piece of code is causing big problems! 
    631631                        //System.out.println("Segue o caminho BBB"); 
    632                         if(cond.GetValidBindings() != null)  
     632                        if(cond.GetValidBindings(am) != null)  
    633633                        { 
    634634                             
     
    705705                //OpenPrecondition that must again be satisfied by  
    706706                //the plan 
    707                 if(!cond.CheckCondition()) 
     707                if(!cond.CheckCondition(am)) 
    708708                { 
    709709                        _openPreconditions.add(new OpenPrecondition(link 
     
    877877     * @return the plan's probability 
    878878     */ 
    879     public float getProbability() 
     879    public float getProbability(AgentModel am) 
    880880    { 
    881881        if (_probabilityChanged) 
    882882        { 
    883             UpdatePlanProbability(); 
     883            UpdatePlanProbability(am); 
    884884            _probabilityChanged = false; 
    885885        } 
     
    962962     * @return the value H 
    963963     */ 
    964     public float h() 
     964    public float h(AgentModel am) 
    965965    { 
    966966        return (1 + _steps.size() + _openPreconditions.size() + _protectionThreats 
    967967                .size() * 2) 
    968                 / this.getProbability(); 
     968                / this.getProbability(am); 
    969969    } 
    970970 
     
    974974     * @param flaw - the CausalConflictFlaw to ignore 
    975975     */ 
    976     public void IgnoreConflict(CausalConflictFlaw flaw) 
     976    public void IgnoreConflict(AgentModel am, CausalConflictFlaw flaw) 
    977977    { 
    978978        _ignoredConflicts.add(flaw); 
    979         this.UpdatePlanProbability(); 
     979        this.UpdatePlanProbability(am); 
    980980        _probabilityChanged = false; 
    981981    } 
     
    12241224     * @return the next action to execute 
    12251225     */ 
    1226     public IPlanningOperator UnexecutedAction() 
     1226    public IPlanningOperator UnexecutedAction(AgentModel am) 
    12271227    { 
    12281228        ListIterator li; 
     
    12381238                //possible next action detected 
    12391239                //additional restrictions, if the next action correspond to an action performed 
    1240                 //by self, it must necessarely be grounded 
     1240                //by self, it must necessarily be grounded 
    12411241                if(!op.getAgent().isGrounded() || 
    1242                                 op.getAgent().toString().equals(Memory.GetInstance().getSelf())) 
     1242                                op.getAgent().toString().equals("SELF")) 
    12431243                { 
    12441244                        if(!op.getName().isGrounded()) 
     
    12501250                                         
    12511251                //the next action must have the preconditions verified 
    1252                 if(!op.checkPreconditions()) 
     1252                if(!op.checkPreconditions(am)) 
    12531253                { 
    12541254                        AgentLogger.GetInstance().logAndPrint("The next action does not have the preconditions verified: " + op.getName()); 
     
    12571257                  
    12581258                //we give priority to actions that are executed by the agent itself 
    1259                 //AgentLogger.GetInstance().logAndPrint("Possible action for execution: " + op+ " - Agent: " + op.getAgent()); 
    1260                 if(op.getAgent().toString().equals(Memory.GetInstance().getSelf())) 
     1259                if(op.getAgent().toString().equals("SELF")) 
    12611260                { 
    12621261                        return op; 
     
    12741273     * Gets a list with the first actions in a plan - DO NOT USE this method 
    12751274     * if you want to execute the actions. Use it only to know which ones should be executed 
    1276      * first. This is a simpler method that does not garantee that you can indeed execute 
     1275     * first. This is a simpler method that does not guarantee that you can indeed execute 
    12771276     * the action. If you want to execute an action, use the GetNextAction method instead  
    12781277     * @return a list with steps that are the first to be executed in a plan 
     
    15011500    } 
    15021501 
    1503     private void UpdatePlanProbability() 
     1502    private void UpdatePlanProbability(AgentModel am) 
    15041503    { 
    15051504        ListIterator li; 
     
    15161515                                !op.getID().equals(_finish.getID())) 
    15171516                { 
    1518                         prob = prob * op.getProbability(); 
     1517                        prob = prob * op.getProbability(am); 
    15191518                } 
    15201519        } 
     
    15281527            { 
    15291528                e = getOperator(l.getSource()).getEffect(l.getEffect()); 
    1530                 prob = prob * e.GetProbability(); 
     1529                prob = prob * e.GetProbability(am); 
    15311530            }    
    15321531        } 
     
    15371536        { 
    15381537            conflict = (CausalConflictFlaw) li.next(); 
    1539             prob = prob * (1 - conflict.GetEffect().GetProbability()); 
     1538            prob = prob * (1 - conflict.GetEffect().GetProbability(am)); 
    15401539        } 
    15411540 
  • AgentMind/branches/FAtiMA2/src/FAtiMA/deliberativeLayer/plan/Step.java

    r34 r190  
    6060import java.util.ListIterator; 
    6161 
     62import FAtiMA.AgentModel; 
    6263import FAtiMA.IntegrityValidator; 
    6364import FAtiMA.conditions.Condition; 
    6465import FAtiMA.exceptions.UnknownSpeechActException; 
    6566import FAtiMA.exceptions.UnspecifiedVariableException; 
    66 //import FAtiMA.knowledgeBase.KnowledgeBase; 
    67 import FAtiMA.memory.shortTermMemory.WorkingMemory; 
    68 import FAtiMA.memory.Memory; 
     67import FAtiMA.knowledgeBase.KnowledgeBase; 
    6968import FAtiMA.motivationalSystem.MotivationalState; 
    7069import FAtiMA.wellFormedNames.Name; 
     
    115114                 
    116115                _selfExecutable = (!_agent.isGrounded()) ||  
    117                                 _agent.toString().equals(Memory.GetInstance().getSelf()); 
     116                                _agent.toString().equals("SELF"); 
    118117                 
    119118                _baseprob = probability; 
     
    138137                 
    139138                _selfExecutable = !_agent.isGrounded() ||  
    140                 _agent.toString().equals(Memory.GetInstance().getSelf()); 
     139                _agent.toString().equals("SELF"); 
    141140        } 
    142141 
     
    189188         * ammount.  
    190189         */ 
    191         public void DecreaseProbability() { 
     190        public void DecreaseProbability(AgentModel am) { 
    192191                Float bias; 
    193192                float prob; 
     
    195194                float newbias; 
    196195                 
    197                 bias = (Float) Memory.GetInstance().AskProperty(GetBiasName()); 
     196                bias = (Float) am.getMemory().AskProperty(GetBiasName()); 
    198197                if(bias != null) 
    199198                { 
     
    208207                newbias = newprob - _baseprob; 
    209208                 
    210                 WorkingMemory.GetInstance().Tell(GetBiasName(),new Float(newbias));   
     209                am.getMemory().getWM().Tell(am.getMemory(),GetBiasName(),new Float(newbias));    
    211210        } 
    212211         
     
    214213         * Increases a Step's probability of execution by a fixed ammount. 
    215214         */ 
    216         public void IncreaseProbability() { 
     215        public void IncreaseProbability(AgentModel am) { 
    217216                Float bias; 
    218217                float prob; 
     
    220219                float newbias; 
    221220                 
    222                 bias = (Float) Memory.GetInstance().AskProperty(GetBiasName()); 
     221                bias = (Float) am.getMemory().AskProperty(GetBiasName()); 
    223222                if(bias != null) 
    224223                { 
     
    232231                newprob = 0.6f * prob + 0.4f; 
    233232                newbias = newprob - _baseprob; 
    234                 WorkingMemory.GetInstance().Tell(GetBiasName(),new Float(newbias));    
     233                am.getMemory().getWM().Tell(am.getMemory(),GetBiasName(),new Float(newbias));    
    235234        } 
    236235         
     
    239238         * @return the steps's probability 
    240239         */ 
    241         public float getProbability() { 
     240        public float getProbability(AgentModel am) { 
    242241                 
    243242                if(!_selfExecutable) 
    244243                { 
    245                         Float aux = (Float) Memory.GetInstance().AskProperty(GetBiasName()); 
     244                        Float aux = (Float) am.getMemory().AskProperty(GetBiasName()); 
    246245                        if(aux != null) 
    247246                        { 
     
    270269         * if the effects did happen or not after the execution of the step 
    271270         */ 
    272         public void updateEffectsProbability() 
     271        public void updateEffectsProbability(AgentModel am) 
    273272        { 
    274273                Effect e; 
     
    280279                        if(e.GetEffect().isGrounded()) 
    281280                        { 
    282                                 if (e.GetEffect().CheckCondition()) { 
    283                                         e.IncreaseProbability(); 
     281                                if (e.GetEffect().CheckCondition(am)) { 
     282                                        e.IncreaseProbability(am); 
    284283                                } 
    285284                                else { 
    286285                                        //System.out.println("In updateEffectsProbability" + e.toString()); 
    287286                                        //MotivationalState.GetInstance().UpdateCertainty((-e.GetProbability())*0.2f); 
    288                                         e.DecreaseProbability(); 
     287                                        e.DecreaseProbability(am); 
    289288                                } 
    290289                        } 
     
    367366         *                 in the KnowledgeBase, false otherwise 
    368367         */ 
    369         public boolean checkPreconditions() { 
     368        public boolean checkPreconditions(AgentModel am) { 
    370369                ListIterator li; 
    371370                li = _preconditions.listIterator(); 
    372371                 
    373372                while(li.hasNext()) { 
    374                         if (!((Condition) li.next()).CheckCondition()) return false;