2012-05-04 5 views
1

Я хотел бы сделать следующее:Как отменить или построить веру в Джейсон (агенты)?

У меня есть первоначальная цель с аргументом в качестве веры, и я бы хотел отменить его, чтобы аргумент веры стал новым убеждением, и аргумент становится верой ,

Что-то вроде этого:

//Agent asker in project Test.mas2j 
!translate(barks(dog)). //I would like to have the belief: dog(barks) 
+!translate(T)<- 
    T =.. [A,[B],C]; 
    .print("functor: ",A); 
    .print("argument: ",B); 
    //.print("source: ",C); 
    +B(A);//<- I want something like this, but it gives a syntax error. 
    +B. //<-this works, but it doesn't give the argument to it 

Итак, мой вопрос, hogy к constract убеждения таким образом?

ответ

1

Построить термин, как вы делаете для T:

... 
X =.. [B,[A]]; // constructs the belief 
+X; // adds the belief to the current belief base 
... 

Из книги Programming Multi-Agent Systems in AgentSpeak using Jason:

Один оператора также доступна в Прологе, что работает немного по-другому здесь (из-за предикат аннотации не доступно в Prolog) является «=..», который используется для деконструирования литерала в список. Полученный список имеет формат [functor, list of arguments, list of annotations], например: p(b,c)[a1,a2] =.. [p, [b,c], [a1,a2]].

+0

В то же время, я понял это. Ваше решение синтаксически неверно, но оно довольно близко. Если вы не возражаете, я отредактирую его, а затем примите его. – Adamsan

+0

Хорошо! Я пробовал следующий код, который работал очень хорошо! ! Перевод (лай (собака)). +! translate (T) <- T = .. [A, [B], C]; X = .. [B, [A]]; + X. –