如何调试Jason以检查哪些参数使计划不适用?

问题描述 投票:2回答:1

我在JaCaMo 0.8平台上运行的Jason代理有两个计划。出于某种原因,第一个计划被认为不适用,因此选择了第二个计划。

我的问题是:我怎么知道表达式的哪一部分将上下文变为假?

// get cached Fundamentals if earlier data are younger than 30 minutes
+!opinion(T)[source(Q)] 
    : .term2string(T,S) & fundamentals::preco(S,_)[seconds_of_day(SSS)] & .time(HH,MM,SS) & (SS+MM*60+HH*60*60 - SSS < 30*60)
    & .date(YY,OO,DD) & lastDate(YYY,OOO,DDD) & YY == YYY & OO == OOO & DD == DDD 
    & fundamentals::lpa(S,_) & fundamentals::vpa(S,_) 
    <- 
    .print("Getting cached fundamentals from ",S); 
    !reply(S,Q);
    .

// get Fundamentals again
+!opinion(T)[source(Q)] : .term2string(T,S) & .date(YY,OO,DD) <- 
    .print("Getting fundamentals from ",S); 
    getFundamentals(S);
    -+lastDate(YY,OO,DD);
    !reply(S,Q);
    .

我为fINE调试设置了looging.properties文件,引用代理的部分输出是:

> [greenblatt] Start new reasoning cycle [greenblatt] Selected event
> +!opinion(ALUP11)[source(myPA)] [greenblatt] Selected intention intention 118: 
>     +!opinion(ALUP11)[source(myPA)] <- ... .print("Getting fundamentals from ",S); getFundamentals(S); -+lastDate(YY,OO,DD);
> !reply(S,Q) / {YY=2019, OO=2, DD=23, Q=myPA, S="ALUP11", T=ALUP11}
> [greenblatt] Getting fundamentals from ALUP11 [greenblatt] Start new
> reasoning cycle

我错过了关于这个日志的一些信息,对于instante“。term2string(T,S)&fundamentals :: preco(S,_)[seconds_of_day(SSS)]&.time(HH,MM,SS)&(SS + MM) * 60 + HH * 60 * 60 - SSS <30 * 60)“被认为是真的吗?如何找到这些信息?

agent multi-agent
1个回答
3
投票

您可以在文件中存储每个周期的代理的思维状态,然后检查这些文件以获得有关失败的一些提示。

在JaCaMo中,您可以在代理条目中配置该日志:

agent bob {
     mindinspector="file(cycle,xml,log)"
}

最后一个参数是将存储文件的目录的名称。每个文件对应一个心灵的样本。它们是具有合适样式表的XML文件,可在浏览器中查看。

当然,这个日志需要相当多的空间/时间来生成,并且会影响应用程序的性能。

© www.soinside.com 2019 - 2024. All rights reserved.