package jadex.bdi.testcases.plans;
import jadex.bdi.runtime.ICandidateInfo;
import jadex.bdi.runtime.Plan;
/**
* The meta-level reasoning plan for deciding between
*/
public class MetaLevelReasoningPlan extends Plan
{
//-------- methods --------
/**
* The plan body.
*/
public void body()
{
ICandidateInfo[] apps = (ICandidateInfo[])getParameterSet("applicables").getValues();
getLogger().info("Meta-level reasoning chooses between: ");
for(int i=0; i<apps.length; i++)
getLogger().info(" "+apps[i]);
if(apps.length==0)
throw new RuntimeException("No applicable candidates. "+this);
ICandidateInfo sel = null;
double selval = -1;
for(int i=0; i<apps.length; i++)
{
double tmpval = ((Double)apps[i].getPlan().getParameter("importance").getValue()).doubleValue();
if(tmpval>selval)
{
sel = apps[i];
selval = tmpval;
}
}
getParameterSet("result").addValue(sel);
}
}