|
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.
|