Changeset 1034


Ignore:
Timestamp:
04/01/2011 11:36:55 AM (9 years ago)
Author:
joao.dias
Message:
 
Location:
AgentMind/branches/FAtiMA-Modular/FAtiMA.culture/src/FAtiMA/culture
Files:
6 deleted
6 edited

Legend:

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

    r980 r1034  
    1818import FAtiMA.Core.sensorEffector.Event; 
    1919import FAtiMA.Core.util.AgentLogger; 
     20import FAtiMA.Core.util.ConfigurationManager; 
    2021import FAtiMA.Core.util.Constants; 
    2122import FAtiMA.Core.wellFormedNames.Name; 
     
    175176                        SAXParser parser = factory.newSAXParser(); 
    176177                                 
    177                                 parser.parse(new File(this.cultureFile), cultureLoader); 
     178                        parser.parse(new File(this.cultureFile), cultureLoader); 
    178179 
    179180                        for(Ritual r : cultureLoader.GetRituals(aM)){ 
     
    181182                                dp.addGoal(r); 
    182183                        } 
     184                        cultureLoader = new CultureLoaderHandler(aM,this); 
     185                        parser.parse(new File(ConfigurationManager.getGoalsFile()), cultureLoader); 
    183186 
    184187                }catch(Exception e){ 
     
    316319                float culturalGoalUtility = determineCulturalUtility(am, g,contributionToSelf,contributionOthers);               
    317320                 
    318                 float EU = culturalGoalUtility * probability + (1 + g.GetGoalUrgency()); 
     321                float EU = (culturalGoalUtility + g.GetGoalUrgency()) * probability; 
    319322                 
    320323                 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.culture/src/FAtiMA/culture/CultureLoaderHandler.java

    r967 r1034  
    7272        DeliberativeComponent _deliberativeLayer; 
    7373         
    74  
    75         private Context _contextBeingParsed; 
    7674        private boolean _beforeRituals; 
    7775 
     
    206204                Symbol role; 
    207205                role = new Symbol(attributes.getValue("name")); 
     206                role.MakeGround(_self); 
    208207                _ritual.AddRole(role); 
    209208        } 
     
    216215                stepName = Name.ParseName(attributes.getValue("name")); 
    217216                role = new Symbol(attributes.getValue("role")); 
     217                role.MakeGround(_self); 
    218218                _ritual.AddStep(_am, stepName, role); 
    219219        } 
     
    260260 
    261261                cond = RitualCondition.ParseRitualCondition(attributes); 
    262  
     262                cond.MakeGround(this._self); 
     263                 
    263264                cond.setRepeat(Boolean.parseBoolean(attributes.getValue("repeat"))); 
    264265                if(_ritual != null) 
     
    349350                } 
    350351        } 
    351  
    352         public void Context( Attributes attributes ){ 
    353                 _contextBeingParsed = new Context(); 
    354                 if(_ritual != null) 
    355                 { 
    356                         _ritual.AddCondition(_conditionType, _contextBeingParsed); 
    357                 } 
    358         } 
    359  
    360         public void Time( Attributes attributes ) throws ContextParsingException{ 
    361                 if( _contextBeingParsed == null ) 
    362                         throw new ContextParsingException("Trying to parse a TimeCondition outside of a Context"); 
    363  
    364                 _contextBeingParsed.SetTimeCondition( TimeCondition.Parse(attributes) ); 
    365         } 
    366  
    367         public void Place(Attributes attributes ) throws ContextParsingException{ 
    368                 if( _contextBeingParsed == null ) 
    369                         throw new ContextParsingException("Trying to parse a PlaceCondition outside of a Context"); 
    370  
    371                 _contextBeingParsed.SetPlaceCondition( PlaceCondition.Parse(attributes) ); 
    372         } 
    373  
    374         public void Social(Attributes attributes ) throws ContextParsingException{ 
    375                 if( _contextBeingParsed == null ) 
    376                         throw new ContextParsingException("Trying to parse a SocialCondition outside of a Context"); 
    377  
    378                 _contextBeingParsed.AddSocialCondition( SocialCondition.Parse(attributes) ); 
    379         } 
    380352} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.culture/src/FAtiMA/culture/CultureProcessActionStrategy.java

    r710 r1034  
    1010        public RemoteAction ProcessActionToWorld(RemoteAction action) { 
    1111                 
    12                 action.setActionType(SymbolTranslator.GetInstance().translateSymbolToAction(action.getActionType())); 
     12                action.setActionType(SymbolTranslator.GetInstance().translateMeaningToSymbol(action.getActionType())); 
    1313                return action; 
    1414        } 
     
    1616        @Override 
    1717        public RemoteAction ProcessActionFromWorld(RemoteAction action) { 
    18                 action.setActionType(SymbolTranslator.GetInstance().translateActionToSymbol(action.getActionType())); 
     18                action.setActionType(SymbolTranslator.GetInstance().translateSymbolToMeaning(action.getActionType())); 
    1919                return action; 
    2020        } 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.culture/src/FAtiMA/culture/Ritual.java

    r957 r1034  
    4848import FAtiMA.Core.plans.Step; 
    4949import FAtiMA.Core.sensorEffector.Event; 
     50import FAtiMA.Core.sensorEffector.Parameter; 
     51import FAtiMA.Core.util.Constants; 
     52import FAtiMA.Core.util.enumerables.EventType; 
    5053import FAtiMA.Core.wellFormedNames.Name; 
    5154import FAtiMA.Core.wellFormedNames.Substitution; 
     
    8184                _links = new ArrayList<OrderingConstraint>(); 
    8285                _roles = new ArrayList<Symbol>(3); 
     86                _appliedSubstitutions = new ArrayList<Substitution>(); 
    8387        } 
    8488         
     
    105109                        // However we cannot make it 100%, because we want to assume that is always better to have  
    106110                        // a ritual where you execute the actions, than a ritual where someone else does the actions. The rational 
    107                         // is that the agent can allways trust his decisions, but not other ones. As such, the probability will  
     111                        // is that the agent can always trust his decisions, but not other ones. As such, the probability will  
    108112                        // be set sligthly smaller than 100% 
    109113                        action.setProbability(0.9f); 
     
    211215                         
    212216                        e = this.GetSuccessEvent(); 
    213                         ritualCondition = new RitualCondition(this._name.GetFirstLiteral(),_roles); 
     217                        ritualCondition = new RitualCondition(this._name.GetFirstLiteral(),_roles, new Symbol("*")); 
    214218                        this.addEffect(new Effect(am, e.GetTarget(),1.0f,ritualCondition)); 
    215219                }  
     
    328332         
    329333        this._name.MakeGround(bindings); 
     334         
     335        this._appliedSubstitutions.addAll(bindings); 
    330336 
    331337        for(Condition c : this._preConditions) 
     
    386392    public void MakeGround(Substitution subst) 
    387393    { 
     394        this._appliedSubstitutions.add(subst); 
     395         
    388396        this._name.MakeGround(subst); 
    389397 
     
    439447                r._key = this._key; 
    440448                 
     449                r._appliedSubstitutions = new ArrayList<Substitution>(this._appliedSubstitutions.size()); 
     450                for(Substitution s : this._appliedSubstitutions) 
     451                { 
     452                        r._appliedSubstitutions.add((Substitution) s.clone()); 
     453                } 
     454                 
    441455                if(this._preConditions != null) 
    442456                { 
     
    538552                else return 1.0f; 
    539553        } 
     554         
     555        @Override 
     556        protected Event generateEventDescription(short goalEventType) 
     557        { 
     558                ListIterator<Symbol> li = this._name.GetLiteralList().listIterator(); 
     559                Event e = new Event(Constants.SELF,li.next().toString(),"",EventType.GOAL,goalEventType); 
     560                 
     561            while(li.hasNext()) 
     562            { 
     563                e.AddParameter(new Parameter("param",li.next().toString())); 
     564            } 
     565             
     566            return e; 
     567        } 
    540568} 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.culture/src/FAtiMA/culture/RitualCondition.java

    r694 r1034  
    3131 
    3232import java.util.ArrayList; 
     33import java.util.Iterator; 
    3334import java.util.ListIterator; 
    3435import java.util.StringTokenizer; 
     
    3839import FAtiMA.Core.AgentModel; 
    3940import FAtiMA.Core.conditions.PredicateCondition; 
     41import FAtiMA.Core.goals.Goal; 
     42import FAtiMA.Core.memory.episodicMemory.ActionDetail; 
     43import FAtiMA.Core.memory.episodicMemory.AutobiographicalMemory; 
    4044import FAtiMA.Core.memory.episodicMemory.SearchKey; 
     45import FAtiMA.Core.sensorEffector.Parameter; 
     46import FAtiMA.Core.util.PermutationGenerator; 
    4147import FAtiMA.Core.wellFormedNames.Name; 
    4248import FAtiMA.Core.wellFormedNames.Substitution; 
     49import FAtiMA.Core.wellFormedNames.SubstitutionSet; 
    4350import FAtiMA.Core.wellFormedNames.Symbol; 
    4451 
     
    7683                        StringTokenizer st = new StringTokenizer(aux, ","); 
    7784                        while(st.hasMoreTokens()) { 
    78                                 roles.add(new Symbol(st.nextToken())); 
     85                                Symbol role = new Symbol(st.nextToken()); 
     86                                roles.add(role); 
    7987                        } 
    8088                } 
    8189                 
    82                 return new RitualCondition(ritualName,roles); 
     90                return new RitualCondition(ritualName,roles,new Symbol("*")); 
    8391        } 
    8492         
     
    9199         
    92100        @SuppressWarnings("unchecked") 
    93         public RitualCondition(Symbol ritualName, ArrayList<Symbol> roles) 
    94         { 
     101        public RitualCondition(Symbol ritualName, ArrayList<Symbol> roles, Symbol ToM) 
     102        { 
     103                this._ToM = ToM; 
    95104                this._ritualName = ritualName; 
    96105                this._positive = true; 
     
    123132                rc._ritualName = (Symbol) this._ritualName.clone(); 
    124133                rc._name = (Name) this._name.clone(); 
     134                rc._ToM = (Symbol) _ToM.clone(); 
    125135                 
    126136                rc._roles = new ArrayList<Symbol>(this._roles.size()); 
     
    196206                if(!_name.isGrounded()) return false; 
    197207                 
     208                ArrayList<SearchKey> searchKeys = getSearchKeys(); 
     209                for(int i = 0; i < _roles.size(); i++) 
     210                { 
     211                        searchKeys.add(new SearchKey(SearchKey.CONTAINSPARAMETER,_roles.get(i).toString())); 
     212                         
     213                } 
     214                 
     215                return am.getMemory().getEpisodicMemory().ContainsRecentEvent(searchKeys); 
     216                 
     217        } 
     218         
     219        private ArrayList<SearchKey> getSearchKeys() 
     220        { 
    198221                ArrayList<SearchKey> keys = new ArrayList<SearchKey>(); 
    199222                 
    200                 keys.add(new SearchKey(SearchKey.SUBJECT,am.getName())); 
    201                  
    202                 keys.add(new SearchKey(SearchKey.ACTION,"succeed")); 
    203                  
    204                 keys.add(new SearchKey(SearchKey.TARGET,this._ritualName.toString())); 
    205                  
    206                 for(int i = 0; i < _roles.size(); i++) 
    207                 { 
    208                         keys.add(new SearchKey(SearchKey.CONTAINSPARAMETER,_roles.get(i).toString())); 
    209                          
    210                 } 
     223                keys.add(new SearchKey(SearchKey.STATUS,Goal.SUCCESSEVENT)); 
     224                 
     225                keys.add(new SearchKey(SearchKey.INTENTION,this._ritualName.toString())); 
     226                 
    211227                 
    212228                if(this._repeat){ 
     
    214230                } 
    215231                 
    216                  
    217                 return am.getMemory().getEpisodicMemory().ContainsRecentEvent(keys); 
    218                  
    219         } 
     232                return keys; 
     233        } 
     234         
     235        public ArrayList<SubstitutionSet> GetValidBindings(AgentModel am) { 
     236                ActionDetail detail; 
     237                Substitution sub; 
     238                SubstitutionSet subSet; 
     239                Symbol param; 
     240                ArrayList<SubstitutionSet> bindingSets = new ArrayList<SubstitutionSet>(); 
     241                ArrayList<ActionDetail> details; 
     242                 
     243                if (_name.isGrounded()) { 
     244                        if(CheckCondition(am)) 
     245                        { 
     246                                bindingSets.add(new SubstitutionSet()); 
     247                                return bindingSets; 
     248                        } 
     249                        else return null; 
     250                } 
     251                 
     252                details = am.getMemory().getEpisodicMemory().SearchForRecentEvents(getSearchKeys()); 
     253                 
     254                if(details.size() == 0) return null; 
     255                 
     256                Iterator<ActionDetail> it = details.iterator(); 
     257                while(it.hasNext()) 
     258                { 
     259                        detail = (ActionDetail) it.next(); 
     260                        subSet = new SubstitutionSet(); 
     261         
     262                        PermutationGenerator pGenerator = new PermutationGenerator(_roles.size()); 
     263                         
     264                        //we are assuming that all roles are not grounded 
     265                        while(pGenerator.hasMore()){ 
     266                                int [] indices = pGenerator.getNext(); 
     267                                subSet = new SubstitutionSet(); 
     268                                for (int i = 0; i < indices.length; i++) { 
     269                                        sub = new Substitution(_roles.get(i),new Symbol(detail.getParameters().get(indices[i]).GetValue().toString())); 
     270                                        subSet.AddSubstitution(sub); 
     271                                } 
     272                                bindingSets.add(subSet); 
     273                        } 
     274                } 
     275         
     276                return bindingSets; 
     277                 
     278        } 
     279         
    220280         
    221281 
  • AgentMind/branches/FAtiMA-Modular/FAtiMA.culture/src/FAtiMA/culture/SymbolTranslator.java

    r967 r1034  
    1010public class SymbolTranslator { 
    1111 
    12         private HashMap<String,String> _symbolToAction; //symbols are Strings 
    13         private HashMap<String,String> _actionToSymbol; //actions are Strings 
     12        private HashMap<String,String> _symbolToMeaning; //symbols are Strings 
     13        private HashMap<String,String> _meaningToSymbol; //actions are Strings 
    1414         
    1515        /** 
     
    2020         
    2121        private SymbolTranslator(){ 
    22                 this._symbolToAction = new HashMap<String,String>(); 
    23                 this._actionToSymbol = new HashMap<String,String>(); 
     22                this._symbolToMeaning = new HashMap<String,String>(); 
     23                this._meaningToSymbol = new HashMap<String,String>(); 
    2424        } 
    2525         
     
    3434        } 
    3535         
    36         public void addEntry(String symbol, String action) throws DuplicateSymbolTranslatorEntry{ 
     36        public void addEntry(String symbol, String meaning) throws DuplicateSymbolTranslatorEntry{ 
    3737                 
    38                 if(this._symbolToAction.containsKey(symbol) || 
    39                                 this._actionToSymbol.containsKey(action)){ 
     38                if(this._symbolToMeaning.containsKey(symbol) || 
     39                                this._meaningToSymbol.containsKey(meaning)){ 
    4040                        throw new DuplicateSymbolTranslatorEntry(); 
    4141                }else{ 
    42                         _symbolToAction.put(symbol, action); 
    43                         _actionToSymbol.put(action, symbol); 
     42                        _symbolToMeaning.put(symbol, meaning); 
     43                        _meaningToSymbol.put(meaning, symbol); 
    4444                } 
    4545        } 
     
    5050         * associated then it returns the parameter symbolName  
    5151         */ 
    52         public String translateSymbolToAction(String symbolName){ 
    53                 String result = (String)_symbolToAction.get(symbolName); 
     52        public String translateSymbolToMeaning(String symbolName){ 
     53                String result = (String)_symbolToMeaning.get(symbolName); 
    5454                 
    5555                if(result == null){ 
     
    6565         * associated then it returns the parameter actionName  
    6666         */ 
    67         public String translateActionToSymbol(String actionName/*RemoteAction ra*/){ 
     67        public String translateMeaningToSymbol(String actionName/*RemoteAction ra*/){ 
    6868                 
    69                 String result = (String)_actionToSymbol.get(actionName); 
     69                String result = (String)_meaningToSymbol.get(actionName); 
    7070                 
    7171                if(result == null){ 
     
    7878         
    7979        public void clearAll(){ 
    80                 this._actionToSymbol.clear(); 
    81                 this._symbolToAction.clear(); 
     80                this._meaningToSymbol.clear(); 
     81                this._symbolToMeaning.clear(); 
    8282        } 
    8383} 
Note: See TracChangeset for help on using the changeset viewer.