From: <jom...@us...> - 2010-08-31 14:19:39
|
Revision: 1612 http://jason.svn.sourceforge.net/jason/?rev=1612&view=rev Author: jomifred Date: 2010-08-31 14:19:32 +0000 (Tue, 31 Aug 2010) Log Message: ----------- add StdDev function (form Francisco) Modified Paths: -------------- trunk/src/jason/asSyntax/directives/FunctionRegister.java trunk/src/jason/control/ExecutionControlGUI.java Added Paths: ----------- trunk/src/jason/functions/StdDev.java Modified: trunk/src/jason/asSyntax/directives/FunctionRegister.java =================================================================== --- trunk/src/jason/asSyntax/directives/FunctionRegister.java 2010-08-30 22:23:30 UTC (rev 1611) +++ trunk/src/jason/asSyntax/directives/FunctionRegister.java 2010-08-31 14:19:32 UTC (rev 1612) @@ -13,6 +13,7 @@ import jason.functions.Random; import jason.functions.Round; import jason.functions.Sqrt; +import jason.functions.StdDev; import jason.functions.Sum; import jason.functions.ceil; import jason.functions.e; @@ -42,6 +43,7 @@ addFunction(Max.class); addFunction(Min.class); addFunction(Sum.class); + addFunction(StdDev.class); addFunction(Average.class); addFunction(Length.class); addFunction(Random.class); Modified: trunk/src/jason/control/ExecutionControlGUI.java =================================================================== --- trunk/src/jason/control/ExecutionControlGUI.java 2010-08-30 22:23:30 UTC (rev 1611) +++ trunk/src/jason/control/ExecutionControlGUI.java 2010-08-31 14:19:32 UTC (rev 1612) @@ -189,7 +189,9 @@ jTA.setText("<html><body>Select the agent to inspect.</body></html>"); JPanel spTA = new JPanel(new BorderLayout()); - spTA.add(BorderLayout.CENTER, new JScrollPane(jTA)); + JScrollPane scpTA = new JScrollPane(jTA); + //scpTA.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + spTA.add(BorderLayout.CENTER, scpTA); spTA.setBorder(BorderFactory.createTitledBorder(BorderFactory .createEtchedBorder(), "Agent Inspection", TitledBorder.LEFT, TitledBorder.TOP)); Added: trunk/src/jason/functions/StdDev.java =================================================================== --- trunk/src/jason/functions/StdDev.java (rev 0) +++ trunk/src/jason/functions/StdDev.java 2010-08-31 14:19:32 UTC (rev 1612) @@ -0,0 +1,60 @@ +package jason.functions; + +import jason.JasonException; +import jason.asSemantics.DefaultArithFunction; +import jason.asSemantics.TransitionSystem; +import jason.asSyntax.ListTerm; +import jason.asSyntax.NumberTerm; +import jason.asSyntax.Term; + +/** +<p>Function: <b><code>math.std_dev(L)</code></b>: returns the standard deviation of all values of L. + +<p>Examples:<ul> +<li> <code>math.std_dev([1,2,3])</code>: returns 1.</li> +<li> <code>math.std_dev([])</code>: returns 0.</li> +</ul> + +@author Francisco Grimaldo + +@see jason.functions.Min +@see jason.functions.Max +@see jason.functions.Sum +@see jason.functions.Average + +*/ +public class StdDev extends DefaultArithFunction { + + public String getName() { + return "math.std_dev"; + } + + @Override + public double evaluate(TransitionSystem ts, Term[] args) throws Exception { + if (args[0].isList()) { + double sum = 0, squareSum = 0, num; + int n = 0; + for (Term t: (ListTerm)args[0]) + if (t.isNumeric()) { + if (t.isNumeric()) { + num = ((NumberTerm)t).solve(); + sum += num; + n++; + } + } + double mean = sum / n; + for (Term t: (ListTerm)args[0]) + if (t.isNumeric()) { + num = ((NumberTerm)t).solve(); + squareSum += (num - mean) * (num - mean); + } + return Math.sqrt( squareSum/(n - 1) ); + } + throw new JasonException(getName()+" is not implemented for type '"+args[0]+"'."); + } + + @Override + public boolean checkArity(int a) { + return a == 1; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |