Changeset 779


Ignore:
Timestamp:
12/21/2010 01:51:30 PM (10 years ago)
Author:
myl
Message:

Testing the save function - NonSerialisableException? still occurs

Location:
AgentMind/branches/FAtiMA-Modular
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/branches/FAtiMA-Modular/AgentLauncher/src/AgentLauncher.java

    r772 r779  
    3434                //String cultureFile = ConfigurationManager.getMindPath() + ConfigurationManager.getAgentProperties().get("cultureName") + ".xml";  
    3535                 
    36                 if (!aG.getLoaded()) 
     36                /*if (!aG.getLoaded()) 
    3737                { 
    3838                        //extraFiles.add(cultureFile); 
     
    4242                        aG.addComponent(new ToMComponent(ConfigurationManager.getName())); 
    4343                        aG.addComponent(new AdvancedMemoryComponent()); 
    44                 } 
     44                }*/ 
    4545                aG.StartAgent(); 
    4646        } 
  • AgentMind/branches/FAtiMA-Modular/Amy.txt

    r392 r779  
    44possibleLocation,Afternoon unknown 
    55knowPossibleLocation,Afternoon False 
     6type character 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/.classpath

    r256 r779  
    33        <classpathentry kind="src" path="src"/> 
    44        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
     5        <classpathentry kind="lib" path="xmlenc-0.52.jar"/> 
    56        <classpathentry kind="output" path="bin"/> 
    67</classpath> 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/AgentCore.java

    r772 r779  
    5252import FAtiMA.Core.util.parsers.AgentLoaderHandler; 
    5353import FAtiMA.Core.util.parsers.BinaryStringConverter; 
     54import FAtiMA.Core.util.parsers.MemoryLoaderHandler; 
     55import FAtiMA.Core.util.writers.MemoryWriter; 
    5456import FAtiMA.Core.wellFormedNames.Name; 
    5557import FAtiMA.Core.wellFormedNames.Symbol; 
     
    9799        private boolean _saveRequest = false; 
    98100        private boolean _loaded = false; 
    99  
     101        private boolean _saveMemoryRequest = false; 
     102         
     103        private MemoryWriter _memoryWriter; 
    100104        private IGetModelStrategy _strat; 
    101105 
     
    113117                // creating a new episode when the agent starts 13/09/10 
    114118                _memory.getEpisodicMemory().StartEpisode(_memory); 
     119                _memoryWriter = new MemoryWriter(_memory); 
    115120                _strat = this; 
    116121                 
     
    140145                        { 
    141146                                _loaded = true; 
    142                                 AgentCoreLoad(ConfigurationManager.getPlatform(), ConfigurationManager.getHost(), ConfigurationManager.getPort(), ConfigurationManager.getSaveDirectory(), agentName); 
     147                                agentCoreLoad(ConfigurationManager.getPlatform(), ConfigurationManager.getHost(), ConfigurationManager.getPort(), ConfigurationManager.getSaveDirectory(), agentName); 
    143148                        } 
    144149                        else 
     
    201206        } 
    202207         
    203         public void AgentCoreLoad(short agentPlatform, String host, int port, String directory, String fileName) 
     208        public void agentCoreLoad(short agentPlatform, String host, int port, String directory, String fileName) 
    204209        { 
    205210                try{ 
     
    429434                this._saveDirectory = (String) s.readObject(); 
    430435                 
    431                 this._strat = (IGetModelStrategy) s.readObject(); 
     436                Object stratObject = s.readObject(); 
     437                if (stratObject instanceof IGetModelStrategy) 
     438                { 
     439                        this._strat = (IGetModelStrategy) stratObject; 
     440                } 
     441                else  
     442                {        
     443                        if (stratObject instanceof String) 
     444                        { 
     445                                String stratObjectStr = (String) stratObject; 
     446                                if (stratObjectStr.equals("SELF")) this._strat = this; 
     447                        } 
     448                } 
     449                  
    432450                this._generalComponents = (HashMap<String,IComponent>) s.readObject(); 
    433451                this._processEmotionComponents = (ArrayList<IProcessEmotionComponent>) s.readObject(); 
     
    745763                                                SaveAgentState(this.getName()); 
    746764                                        } 
     765                                        if(_saveMemoryRequest) 
     766                                        { 
     767                                                _saveMemoryRequest = false; 
     768                                                SaveAgentMemory(); 
     769                                        } 
    747770                                } 
    748771 
     
    766789        } 
    767790 
    768  
     791        public void RequestMemorySave() 
     792        { 
     793                this._saveMemoryRequest = true; 
     794        } 
     795 
     796        private void SaveAgentMemory() throws   ParserConfigurationException, SAXException, IOException 
     797        { 
     798                _memoryWriter.outputMemoryInXML(_saveDirectory + "XMLMemory"); 
     799                //this.loadAgentMemory(_saveDirectory + "XMLMemory"); 
     800        } 
     801         
     802        private void loadAgentMemory(String memoryFile) throws  ParserConfigurationException, SAXException, IOException 
     803        { 
     804                AgentLogger.GetInstance().log("LOADING Memory: " + memoryFile); 
     805                MemoryLoaderHandler ml = new MemoryLoaderHandler(); 
     806         
     807                SAXParserFactory factory = SAXParserFactory.newInstance(); 
     808                SAXParser parser = factory.newSAXParser(); 
     809                parser.parse(new File(memoryFile), ml); 
     810        } 
     811         
    769812        private void SaveAgentState(String agentName) 
    770813        { 
     
    776819                // Meiyii 13/09/10 
    777820                _memory.getEpisodicMemory().MoveSTEMtoAM(); 
    778                 //_memory.getMemoryWriter().xmlMemoryOutput(_saveDirectory + "XMLMemory"); 
    779821 
    780822                AgentSimulationTime.SaveState(fileName+"-Timer.dat"); 
     
    786828                        FileOutputStream out = new FileOutputStream(fileName); 
    787829                        ObjectOutputStream s = new ObjectOutputStream(out); 
    788  
    789830                         
    790831                        s.writeObject(_deliberativeLayer); 
     
    804845                        s.writeObject(_saveDirectory); 
    805846                         
    806                         s.writeObject(_strat); 
     847                        // prevent saving of the whole AgentCore which contains _agentDisplay as this would  
     848                        // lead to NonSerializableException 
     849                        if (_strat != this) 
     850                        { 
     851                                s.writeObject(_strat); 
     852                        } 
     853                        else 
     854                        { 
     855                                s.writeObject(new String("SELF")); 
     856                        } 
    807857                        s.writeObject(_generalComponents); 
    808858                        s.writeObject(_processEmotionComponents); 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/Display/AgentDisplay.java

    r747 r779  
    8282                teste.setEnabled(true); 
    8383                _frame.getContentPane().add(teste); 
    84                 _frame.setVisible(true); 
    8584                 
     85                JButton sMemory = new JButton("Save Memory"); 
     86                sMemory.addActionListener(new SaveMemory(ag)); 
     87                sMemory.setText("Save Memory"); 
     88                sMemory.setEnabled(true); 
     89                _frame.getContentPane().add(sMemory); 
     90                _frame.setVisible(true);                 
    8691    } 
    8792     
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/Memory.java

    r773 r779  
    3232package FAtiMA.Core.memory; 
    3333 
     34import java.io.BufferedWriter; 
     35import java.io.FileWriter; 
     36import java.io.IOException; 
     37import java.io.Serializable; 
     38import java.io.Writer; 
     39import java.io.OutputStreamWriter; 
    3440 
    35 import java.io.Serializable; 
     41import org.znerd.xmlenc.LineBreak; 
     42import org.znerd.xmlenc.XMLOutputter; 
    3643 
     44import FAtiMA.Core.memory.episodicMemory.ActionDetail; 
    3745import FAtiMA.Core.memory.episodicMemory.EpisodicMemory; 
     46import FAtiMA.Core.memory.episodicMemory.MemoryEpisode; 
    3847import FAtiMA.Core.memory.semanticMemory.SemanticMemory; 
    39  
    40  
    41  
     48import FAtiMA.Core.util.writers.MemoryWriter; 
    4249 
    4350/** 
     
    5764        private SemanticMemory _sm; 
    5865        private EpisodicMemory _em; 
    59         //private MemoryWriter _mw; 
    6066         
    6167        public Memory() 
     
    6369                _sm = new SemanticMemory(); 
    6470                _em = new EpisodicMemory(); 
    65                 //_mw = new MemoryWriter(); 
    6671        } 
    6772         
     
    7580                return _em; 
    7681        } 
    77          
    78         /*public MemoryWriter getMemoryWriter() 
    79         { 
    80                 return _mw; 
    81         }*/ 
    8282} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/ActionDetail.java

    r772 r779  
    9393        private String _multimediaPath; 
    9494        private String _object; 
     95        private KnowledgeSlot _objectDetails = null; 
    9596         
    9697        private float _desirability; 
     
    105106                 
    106107                this._subject = e.GetSubject(); 
     108                this._subjectDetails = m.getSemanticMemory().GetObjectDetails(_subject); 
    107109                 
    108110                // Meiyii 07/01/10 separate events into intention and action 
     
    119121                 
    120122                this._target = e.GetTarget(); 
     123                this._targetDetails = m.getSemanticMemory().GetObjectDetails(_target); 
    121124                this._location = location; 
    122125                this._time = new Time(); 
    123                  
    124                 if(this._subject != null) 
    125                 { 
    126                         _subjectDetails = m.getSemanticMemory().GetObjectDetails(this._subject); 
    127                 } 
    128                  
    129                 if(this._target != null) 
    130                 { 
    131                         _targetDetails = m.getSemanticMemory().GetObjectDetails(this._target); 
    132                 } 
    133126                 
    134127                if(e.GetParameters() != null) 
     
    151144                                { 
    152145                                        this._object = p.GetValue().toString(); 
     146                                        this._objectDetails = m.getSemanticMemory().GetObjectDetails(_object); 
    153147                                } 
    154148                        } 
     
    246240                { 
    247241                        aux = this._targetDetails.get(property); 
     242                        if(aux != null) 
     243                        { 
     244                                return aux.getValue(); 
     245                        } 
     246                } 
     247                return null; 
     248        } 
     249         
     250        public Object getObjectDetails(String property) 
     251        { 
     252                KnowledgeSlot aux; 
     253                if(this._objectDetails != null) 
     254                { 
     255                        aux = this._objectDetails.get(property); 
    248256                        if(aux != null) 
    249257                        { 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/AutobiographicalMemory.java

    r768 r779  
    371371        } 
    372372         
     373        /* 
     374         * Put an episode to the AM - used when reloading in the memory 
     375         * Meiyii - 17/12/10 
     376         */ 
     377        public void putEpisode(MemoryEpisode me) 
     378        { 
     379                _memoryEvents.add(me); 
     380        } 
     381 
    373382        public String toXML() 
    374383        { 
     
    379388                        am += episode.toXML(); 
    380389                } 
    381                 am += "</AutobiographicMemory>"; 
     390                am += "</AutobiographicMemory>\n"; 
    382391                return am;  
    383392        } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/EpisodicMemory.java

    r772 r779  
    323323        } 
    324324         
     325        public AutobiographicalMemory getAM() 
     326        { 
     327                return _am; 
     328        } 
     329 
     330        public ShortTermEpisodicMemory getSTEM() 
     331        { 
     332                return _stm; 
     333        } 
     334         
    325335        public String SummarizeEpisode(Memory m, int episode) 
    326336        { 
     
    330340        public String toXML() 
    331341        { 
    332                 String emStr =""; 
    333                  
     342                String emStr ="<EpisodicMemory>"; 
     343                emStr += _am.toXML(); 
     344                emStr += _stm.toXML(); 
     345                emStr += "</EpisodeMemory>"; 
    334346                return emStr; 
    335347        } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/MemoryEpisode.java

    r768 r779  
    7171        { 
    7272                this._location = new ArrayList<String>(); 
    73                 this._location.add(location); 
     73                if (!location.equals("")) 
     74                        this._location.add(location); 
    7475                this._time = time; 
    7576                this._people = new ArrayList<String>(); 
     
    7980                this._numberOfDominantActions = 3; 
    8081                //this._dominantActions = new ArrayList(this._numberOfDominantActions);  
     82        } 
     83         
     84        public MemoryEpisode(ArrayList<String> location, ArrayList<String> people, ArrayList<String> objects) 
     85        { 
     86                this._location = location; 
     87                this._people = people; 
     88                this._objects = objects; 
    8189        } 
    8290         
     
    159167                 
    160168                Object aux = action.getTargetDetails("type"); 
     169                if(new String("object").equals(aux)) 
     170                { 
     171                        AddObject(action.getTarget()); 
     172                } 
     173                else if(new String("character").equals(aux)) 
     174                { 
     175                        AddPeople(action.getTarget()); 
     176                } 
     177                 
     178                aux = action.getObjectDetails("type"); 
    161179                if(new String("object").equals(aux)) 
    162180                { 
     
    474492        public void AddLocation(String location) 
    475493        { 
    476                 if(location != null) 
     494                if(!location.equals("")) 
    477495                { 
    478496                        if(!this._location.contains(location)) 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/memory/episodicMemory/Time.java

    r667 r779  
    5757                GregorianCalendar gcal = new GregorianCalendar(); 
    5858                this._realTime = gcal.get(Calendar.HOUR_OF_DAY); 
     59                setStrRealTime(); 
     60                this._eventSequence = _eventCounter; 
     61                _eventCounter++; 
     62        } 
     63         
     64        public Time(Long narrativeTime, Long realTime, int eventSequence) 
     65        { 
     66                this._narrativeTime = narrativeTime; 
     67                this._realTime = realTime; 
     68                setStrRealTime(); 
     69                this._eventSequence = eventSequence; 
     70        } 
     71         
     72        private void setStrRealTime() 
     73        { 
    5974                if(this._realTime >= 0 && this._realTime < 12) 
    6075                        this._strRealTime = "Morning"; 
    6176                else 
    6277                        this._strRealTime = "Afternoon"; 
    63                 this._eventSequence = _eventCounter; 
    64                 _eventCounter++; 
    6578        } 
    6679         
     
    8093        } 
    8194         
    82         public long getEventSequence() 
     95        public int getEventSequence() 
    8396        { 
    8497                return this._eventSequence; 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA/src/FAtiMA/Core/sensorEffector/Event.java

    r667 r779  
    391391         
    392392        /** 
     393         * Gets the event's time 
     394         * @return the event's time 
     395         */ 
     396        public long GetTime() { 
     397                return _time; 
     398        } 
     399         
     400        /** 
    393401         * Sets the event's action (what happened) 
    394402         * @param action - the action to store in the event 
  • AgentMind/branches/FAtiMA-Modular/data/characters/minds/LIRECScenarios.xml

    r772 r779  
    7171                           port="46874" displayMode="True" sex="F" actionsFile="LIRECActions"  
    7272                           goalsFile="LIRECGoalLibrary" cultureName="NoCulture"  
    73                            saveDirectory="data/characters/minds/state/" load="True"> 
     73                           saveDirectory="data/characters/minds/state/" load="False"> 
    7474                        <Properties>                             
    7575                                <Property name="time" value="Morning"/> 
Note: See TracChangeset for help on using the changeset viewer.