Changeset 369


Ignore:
Timestamp:
04/16/2010 05:37:14 PM (11 years ago)
Author:
michael.kriegel
Message:

added the processing of failed actions to the world simulator remote agent

File:
1 edited

Legend:

Unmodified
Added
Removed
  • AgentMind/trunk/AgentMind/FAtiMA/src/FAtiMA/sensorEffector/WorldSimulatorRemoteAgent.java

    r326 r369  
    262262 
    263263        protected void ActionFailedPerception(String perc) { 
     264                String subject; 
     265                String symbol; 
     266                String action; 
     267                String target=null; 
     268                SpeechAct speechAct; 
     269                Event event; 
    264270                StringTokenizer st = new StringTokenizer(perc," "); 
    265                 String subject = st.nextToken(); 
    266                 //TODO o agente tb tem de perceber quando a acção falhou.. 
    267                 //the agent last action failed 
     271 
     272/* 
     273                subject = st.nextToken(); 
     274                symbol = new String(st.nextToken()); 
     275                if(st.hasMoreTokens()) { 
     276                        target = st.nextToken(); 
     277                } 
     278                if(st.hasMoreTokens()){ 
     279                        symbol += "("; 
     280                        while(st.hasMoreTokens()){ 
     281                                symbol += st.nextToken(); 
     282                                if(st.hasMoreTokens()){ 
     283                                        symbol += ","; 
     284                                } 
     285                        } 
     286                         
     287                        symbol += ")"; 
     288                }*/ 
     289 
     290                 
     291                subject = st.nextToken(); 
     292                symbol = st.nextToken(); 
     293 
     294                action = SymbolTranslator.GetInstance().translateSymbolToAction(symbol); 
     295 
     296                if(st.hasMoreTokens()) { 
     297                        target = st.nextToken(); 
     298                } 
     299                if(action.equals("UserSpeech")) { 
     300                        try { 
     301                                String aux=""; 
     302                                _userName = subject; 
     303                                while(st.hasMoreTokens()) { 
     304                                        aux = aux + " " + st.nextToken(); 
     305                                } 
     306 
     307                                speechAct = (SpeechAct) SpeechAct.ParseFromXml(aux); 
     308                                speechAct.setSender("User"); 
     309                                speechAct.setActionType(SpeechAct.UserSpeech); 
     310                                if(speechAct.getMeaning().equals("suggestcopingstrategy") ||  
     311                                                speechAct.getMeaning().equals("yes")) 
     312                                { 
     313                                        ArrayList<Parameter> context = speechAct.getContextVariables(); 
     314                                        Parameter p; 
     315                                        for(ListIterator<Parameter> li = context.listIterator();li.hasNext();) 
     316                                        { 
     317                                                p = li.next(); 
     318                                                if(p.GetName().equals("copingstrategy")) 
     319                                                { 
     320                                                        speechAct.AddParameter(p.GetValue().toString()); 
     321                                                } 
     322                                        } 
     323 
     324 
     325                                } 
     326                                event = speechAct.toEvent(ActionEvent.FAILURE); 
     327                        } 
     328                        catch (Exception e) { 
     329                                AgentLogger.GetInstance().log("Error converting a speechAct"); 
     330                                e.printStackTrace(); 
     331                                return; 
     332                        } 
     333                } 
     334                else if(action.equals("say")) { 
     335                        while(st.hasMoreTokens()) { 
     336                                target = target + " " + st.nextToken(); 
     337                        } 
     338                        speechAct = (SpeechAct) SpeechAct.ParseFromXml(target); 
     339                        //_agent.UpdateDialogState(speechAct); 
     340 
     341                        event = speechAct.toEvent(ActionEvent.FAILURE); 
     342 
     343                        //TODO change this test 
     344                        if(speechAct.getSender().equals(_agent.getName()) && 
     345                                        speechAct.getMeaning().equals("acceptreason")) 
     346                        { 
     347                                //the agent accepts the coping strategy 
     348                                Object coping = _agent.getMemory().getSemanticMemory().AskProperty( 
     349                                                Name.ParseName(_agent.getName()+"(copingStrategy)")); 
     350                                if(coping != null) 
     351                                { 
     352                                        _agent.EnforceCopingStrategy(coping.toString()); 
     353                                } 
     354                        } 
     355 
     356                } 
     357                else { 
     358                        /*event = new Event(subject,actionName,target); 
     359                        Iterator it = action.GetLiteralList().iterator(); 
     360                        it.next(); 
     361                        while(it.hasNext()) { 
     362                                Name param = (Name) it.next(); 
     363                                event.AddParameter(new Parameter("param",param.toString())); 
     364                        }*/ 
     365                        event = new Event(subject,action,target,EventType.ACTION,ActionEvent.FAILURE); 
     366                        String aux; 
     367                        while(st.hasMoreTokens()) { 
     368                                aux = st.nextToken(); 
     369                                event.AddParameter(new Parameter("param",aux)); 
     370                        } 
     371                } 
     372 
     373                /*try { 
     374            _fileWriter.write(event.toString() + "\n"); 
     375            _fileWriter.flush(); 
     376                } 
     377                catch(Exception e) { 
     378                e.printStackTrace(); 
     379                }*/ 
     380                 
    268381                if(subject.equals(_agent.getName())) 
    269382                { 
     383                        // we need to change the event subject to SELF, before we can appraise it 
     384                        event.SetSubject(Constants.SELF); 
     385                        _agent.AppraiseSelfActionFailed(event); 
    270386                        _canAct = true; 
    271387                }        
Note: See TracChangeset for help on using the changeset viewer.