From 947ee034bdc4e25c4244a723941a8c7e54018ab9 Mon Sep 17 00:00:00 2001 From: Marcel Kronfeld Date: Thu, 14 May 2009 07:39:34 +0000 Subject: [PATCH] Updating GP - mk branch merge 287:292 --- .../codings/gp/AbstractGPNode.java | 174 +++++++++++++++++- .../go/individuals/codings/gp/GPNodeAdd.java | 12 +- .../individuals/codings/gp/GPNodeConst.java | 74 ++++++++ .../go/individuals/codings/gp/GPNodeCos.java | 13 +- .../go/individuals/codings/gp/GPNodeDiv.java | 20 +- .../go/individuals/codings/gp/GPNodeExp.java | 20 +- .../codings/gp/GPNodeFlowExec2.java | 21 ++- .../codings/gp/GPNodeFlowExec3.java | 20 +- .../individuals/codings/gp/GPNodeInput.java | 16 +- .../go/individuals/codings/gp/GPNodeMult.java | 17 +- .../go/individuals/codings/gp/GPNodeOne.java | 18 ++ .../individuals/codings/gp/GPNodeOutput.java | 20 +- .../go/individuals/codings/gp/GPNodePi.java | 25 +++ .../go/individuals/codings/gp/GPNodePow2.java | 19 +- .../go/individuals/codings/gp/GPNodePow3.java | 20 +- .../go/individuals/codings/gp/GPNodeSin.java | 20 +- .../go/individuals/codings/gp/GPNodeSqrt.java | 21 ++- .../go/individuals/codings/gp/GPNodeSub.java | 17 +- 18 files changed, 438 insertions(+), 109 deletions(-) create mode 100644 src/eva2/server/go/individuals/codings/gp/GPNodeConst.java create mode 100644 src/eva2/server/go/individuals/codings/gp/GPNodeOne.java create mode 100644 src/eva2/server/go/individuals/codings/gp/GPNodePi.java diff --git a/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java b/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java index 10d6372e..6a4e7302 100644 --- a/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java +++ b/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java @@ -2,8 +2,12 @@ package eva2.server.go.individuals.codings.gp; import java.util.ArrayList; +import java.util.Vector; +import eva2.gui.BeanInspector; +import eva2.gui.GenericObjectEditor; import eva2.server.go.problems.InterfaceProgramProblem; +import eva2.tools.Pair; /** This gives an abstract node, with default functionality for get and set methods. @@ -41,8 +45,175 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial /** This method returns a string representation * @return string */ - public abstract String getStringRepresentation(); + public String getStringRepresentation() { + StringBuffer sb = new StringBuffer(); + AbstractGPNode.appendStringRepresentation(this, sb); + return sb.toString(); + } + + private static void appendStringRepresentation(AbstractGPNode node, StringBuffer sbuf) { + String op = node.getOpIdentifier(); + sbuf.append(op); + if (node.getArity()>0) { + sbuf.append("("); + for (int i = 0; i < node.m_Nodes.length; i++) { + sbuf.append(node.m_Nodes[i].getStringRepresentation()); + if (i parseFromString(String str, Vector nodeTypes) { + if (nodeTypes == null) { + ArrayListcls = GenericObjectEditor.getClassesFromClassPath(AbstractGPNode.class.getCanonicalName()); + nodeTypes = new Vector(cls.size()); + for (int i=0; i0) { + Vector matchSet=AbstractGPNode.match(nodeTypes, str, true, true); + if (matchSet.size()==0) { + // try to read constant + Pair nextState=readDouble(str, true); + if (nextState != null) { + return new Pair(new GPNodeConst(nextState.head().doubleValue()), nextState.tail()); + } else { + System.err.println("String has unknown prefix: " + str); + } + } + else if (matchSet.size()>1) System.err.println("String has ambiguous prefix: " + str + " -- " + BeanInspector.toString(matchSet)); + else { // exactly one match: + AbstractGPNode currentNode = (AbstractGPNode)matchSet.get(0).clone(); +// System.out.println("Found match: " + currentNode.getOpIdentifier() + "/" + currentNode.getArity()); + int cutFront=currentNode.getOpIdentifier().length(); + String restStr; + if (currentNode.getArity()==0) { + restStr = str.substring(cutFront).trim(); + if (currentNode instanceof GPNodeInput) { + Pair nextState=readDouble(restStr, false); + if (nextState!=null) { + ((GPNodeInput)currentNode).setIdentifier("X"+((int)nextState.head().doubleValue())); + restStr = nextState.tail(); + } else { + ((GPNodeInput)currentNode).setIdentifier("X"); + } + } + return new Pair(currentNode,restStr); + } else { + restStr = str.substring(cutFront+1).trim(); // cut this op and front brace + currentNode.m_Nodes = new AbstractGPNode[currentNode.getArity()]; + for (int i=0; i nextState = parseFromString(restStr, nodeTypes); + currentNode.m_Nodes[i]=nextState.head(); + restStr=nextState.tail().substring(1).trim(); // cut comma or brace + } +// System.out.println("lacking rest: " + restStr); + return new Pair(currentNode, restStr); + } + } + } return null; + } + + private static Pair readDouble(String str, boolean expect) { + String firstArg; + int argLen = str.indexOf(','); + if (argLen<0) argLen = str.indexOf(')'); + else { + int firstBrace = str.indexOf(')'); + if ((firstBrace >= 0) && (firstBrace(d, str.substring(firstArg.length())); + } catch(NumberFormatException e) { + if (expect) System.err.println("String has unknown prefix: " + str); + return null; + } + } + /** + * This method returns a string representation + * @return string + */ + public static String makeStringRepresentation(AbstractGPNode[] nodes, String op) { + if (nodes.length==0) return op; + else if (nodes.length==1) return op+"(" + nodes[0].getStringRepresentation()+")"; + else { + String result = "( "+nodes[0].getStringRepresentation(); + for (int i = 1; i < nodes.length; i++) result += " " + op + " " + nodes[i].getStringRepresentation(); + result += ")"; + return result; + } + } + + /** + * Match available nodes by their operator identifier string. Allows the option "first longest match" only + * for ambiguous situations where several operators match. + * + * @param nodeTypes + * @param str + * @param firstLongestOnly + * @return + */ + private static Vector match( + Vector nodeTypes, String str, boolean firstLongestOnly, boolean ignoreCase) { + Vector matching = new Vector(); + for (int i=0; i1 && firstLongestOnly) { // allow only the longest match (or first longest) + int maxLen = matching.get(0).getOpIdentifier().length(); + AbstractGPNode longest=matching.get(0); + for (int i=1; imaxLen) { + longest = matching.get(i); + maxLen = longest.getOpIdentifier().length(); + } + } + matching.clear(); + matching.add(longest); + } + return matching; + } + + public static AbstractGPNode parseFromString(String str) { +// System.out.println("Parsing " + str); + Pair result = AbstractGPNode.parseFromString(str, null); + return result.head(); + } + + public static void main(String[] args) { +// Double d = Double.parseDouble("2.58923 + 3"); + AbstractGPNode node = AbstractGPNode.parseFromString("+(x,cOs(*(pI,x1)))"); +// System.out.println("Parsed GPNode: " + node.getStringRepresentation()); + node = AbstractGPNode.parseFromString(node.getStringRepresentation()); + } + /** This method returns the depth of the current node * @return The depth. */ @@ -216,4 +387,5 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial * @return boolean if equal true else false. */ public abstract boolean equals(Object obj); + } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java b/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java index f4d0041a..cd0d7bd9 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java @@ -15,7 +15,6 @@ import eva2.server.go.problems.InterfaceProgramProblem; public class GPNodeAdd extends AbstractGPNode implements java.io.Serializable { public GPNodeAdd() { - } public GPNodeAdd(GPNodeAdd node) { @@ -78,13 +77,8 @@ public class GPNodeAdd extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "+( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "+"; } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeConst.java b/src/eva2/server/go/individuals/codings/gp/GPNodeConst.java new file mode 100644 index 00000000..05d74da2 --- /dev/null +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeConst.java @@ -0,0 +1,74 @@ +package eva2.server.go.individuals.codings.gp; + +import eva2.server.go.problems.InterfaceProgramProblem; + +/** + * A simple constant node with the value 1. + */ +public class GPNodeConst extends AbstractGPNode implements java.io.Serializable { + double value = 1.; + + public GPNodeConst() { } + + public GPNodeConst(double val) { + value = val; + } + + public GPNodeConst(GPNodeConst node) { + value = node.value; + this.m_Depth = node.m_Depth; + this.m_Parent = node.m_Parent; + this.m_Nodes = new AbstractGPNode[node.m_Nodes.length]; + for (int i = 0; i < node.m_Nodes.length; i++) this.m_Nodes[i] = (AbstractGPNode) node.m_Nodes[i].clone(); + } + + /** This method allows you to determine wehter or not two subtrees + * are actually the same. + * @param obj The other subtree. + * @return boolean if equal true else false. + */ + public boolean equals(Object obj) { + if (obj instanceof GPNodeConst) { + return true; + } else { + return false; + } + } + + /** This method will be used to identify the node in the GPAreaEditor + * @return The name. + */ + public String getName() { + return ""+value; + } + + /** This method will return the current arity + * @return Arity. + */ + public int getArity() { + return 0; + } + + /** This method will evaluate a given node + * @param environment + */ + public Object evaluate(InterfaceProgramProblem environment) { + return new Double(value); + } + + @Override + public String getOpIdentifier() { + return getName(); + } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// return getName(); +// } + + @Override + public Object clone() { + return new GPNodeConst(this); + } +} diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java b/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java index 53d70e16..fd118ac0 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java @@ -70,14 +70,9 @@ public class GPNodeCos extends AbstractGPNode implements java.io.Serializable { if (tmpObj instanceof Double) result = Math.sin(((Double)tmpObj).doubleValue()); return new Double(result); } - - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "cos( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + + @Override + public String getOpIdentifier() { + return "cos"; } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java b/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java index 4ccda857..588eca6d 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java @@ -89,14 +89,16 @@ public class GPNodeDiv extends AbstractGPNode implements java.io.Serializable { } return new Double(result); } - - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "/( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + + @Override + public String getOpIdentifier() { + return "/"; } + +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// return AbstractGPNode.makeStringRepresentation(m_Nodes, "/"); +// } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java b/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java index aa4f3168..bf0052b5 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java @@ -71,13 +71,17 @@ public class GPNodeExp extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "exp( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "exp"; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// String result = "exp( "; +// for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; +// result += ")"; +// return result; +// } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java index 4d229c8e..e98aacb1 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java @@ -72,13 +72,18 @@ public class GPNodeFlowExec2 extends AbstractGPNode implements java.io.Serializa return result; } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "Exec2( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "Exec2"; } + +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// String result = "Exec2( "; +// for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; +// result += ")"; +// return result; +// } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java index fb61bc23..d835e692 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java @@ -72,13 +72,17 @@ public class GPNodeFlowExec3 extends AbstractGPNode implements java.io.Serializa return result; } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "Exec3( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "Exec3"; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// String result = "Exec3( "; +// for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; +// result += ")"; +// return result; +// } } \ No newline at end of file diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java b/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java index 30ec843f..0f73fbc4 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java @@ -14,6 +14,12 @@ import eva2.server.go.problems.InterfaceProgramProblem; public class GPNodeInput extends AbstractGPNode implements java.io.Serializable { private String m_Identifier; private Object lastValue; + + /** This method creates a new GPNodeInput + */ + public GPNodeInput() { + this.m_Identifier = "X"; + } /** This method creates a new GPNodeInput * @param identifier The name of the sensor requested. @@ -29,6 +35,10 @@ public class GPNodeInput extends AbstractGPNode implements java.io.Serializable this.m_Nodes = new AbstractGPNode[node.m_Nodes.length]; for (int i = 0; i < node.m_Nodes.length; i++) this.m_Nodes[i] = (AbstractGPNode) node.m_Nodes[i].clone(); } + + public void setIdentifier(String str) { + m_Identifier=str; + } /** This method allows you to determine wehter or not two subtrees * are actually the same. @@ -76,14 +86,14 @@ public class GPNodeInput extends AbstractGPNode implements java.io.Serializable /** This method returns a string representation * @return string */ - public String getStringRepresentation() { + public String getOpIdentifier() { if (this.lastValue == null) return this.m_Identifier; else { if (this.lastValue instanceof Double) { double tmpD = ((Double)this.lastValue).doubleValue(); tmpD = ((long)(tmpD*10000.0 + ((tmpD>=0.0)?0.5:-0.5)))/10000.0; - return ("( S:" +this.m_Identifier + " = " + tmpD + " )"); - } else return ("( S:" +this.m_Identifier + " = " + this.lastValue.toString() + " )"); + return ("S:" +this.m_Identifier + " = " + tmpD); + } else return ("S:" +this.m_Identifier + " = " + this.lastValue.toString()); } } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java b/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java index 403c545a..5a28a922 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java @@ -74,13 +74,14 @@ public class GPNodeMult extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "*( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "*"; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// return AbstractGPNode.makeStringRepresentation(m_Nodes, "*"); +// } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeOne.java b/src/eva2/server/go/individuals/codings/gp/GPNodeOne.java new file mode 100644 index 00000000..3b144d13 --- /dev/null +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeOne.java @@ -0,0 +1,18 @@ +package eva2.server.go.individuals.codings.gp; + + +/** + * A simple constant node with the value 1. + */ +public class GPNodeOne extends GPNodeConst implements java.io.Serializable { + public GPNodeOne() { + super(1.); + } + + /** This method allows you to clone the Nodes + * @return the clone + */ + public Object clone() { + return (Object) new GPNodeOne(); + } +} diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java b/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java index 999f49e2..e1ddbbaa 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java @@ -15,7 +15,11 @@ import eva2.server.go.problems.InterfaceProgramProblem; public class GPNodeOutput extends AbstractGPNode implements java.io.Serializable { private String m_Identifier; - + + public GPNodeOutput() { + this.m_Identifier = "Y"; + } + /** This method creates a new GPNodeInput * @param identifier The name of the sensor requested. */ @@ -75,10 +79,14 @@ public class GPNodeOutput extends AbstractGPNode implements java.io.Serializable return null; } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - return ("( A:" +this.m_Identifier + " )"); + @Override + public String getOpIdentifier() { + return "OUT:"+m_Identifier; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// return ("( A:" +this.m_Identifier + " )"); +// } } \ No newline at end of file diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodePi.java b/src/eva2/server/go/individuals/codings/gp/GPNodePi.java new file mode 100644 index 00000000..1c4a6eb9 --- /dev/null +++ b/src/eva2/server/go/individuals/codings/gp/GPNodePi.java @@ -0,0 +1,25 @@ +package eva2.server.go.individuals.codings.gp; + + +/** + * A simple constant node with the value 1. + */ +public class GPNodePi extends GPNodeConst implements java.io.Serializable { + public GPNodePi() { + super(Math.PI); + } + + /** This method allows you to clone the Nodes + * @return the clone + */ + public Object clone() { + return (Object) new GPNodePi(); + } + + /** This method will be used to identify the node in the GPAreaEditor + * @return The name. + */ + public String getName() { + return "pi"; + } +} diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java b/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java index cb7faa05..8e0680d0 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java @@ -71,13 +71,16 @@ public class GPNodePow2 extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "pow( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ", 2)"; - return result; + @Override + public String getOpIdentifier() { + return "pow2"; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// String result = ""; +// for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; +// return "("+result+")^2"; +// } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java b/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java index 2cc59fc0..8b2843c2 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java @@ -71,13 +71,17 @@ public class GPNodePow3 extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "pow( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ", 3)"; - return result; + @Override + public String getOpIdentifier() { + return "pow3"; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// String result = "pow( "; +// for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; +// result += ", 3)"; +// return result; +// } } \ No newline at end of file diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java b/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java index e0418a47..ddc62607 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java @@ -71,13 +71,17 @@ public class GPNodeSin extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "sin( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "sin"; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// String result = "sin( "; +// for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; +// result += ")"; +// return result; +// } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java b/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java index 74aff88c..cb30353c 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java @@ -72,13 +72,18 @@ public class GPNodeSqrt extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "sqrt( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "sqrt"; } + +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// String result = "sqrt( "; +// for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; +// result += ")"; +// return result; +// } } \ No newline at end of file diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java b/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java index c836aafa..a9d47321 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java @@ -76,13 +76,14 @@ public class GPNodeSub extends AbstractGPNode implements java.io.Serializable { return new Double(result); } - /** This method returns a string representation - * @return string - */ - public String getStringRepresentation() { - String result = "-( "; - for (int i = 0; i < this.m_Nodes.length; i++) result += this.m_Nodes[i].getStringRepresentation() +" "; - result += ")"; - return result; + @Override + public String getOpIdentifier() { + return "-"; } +// /** This method returns a string representation +// * @return string +// */ +// public String getStringRepresentation() { +// return AbstractGPNode.makeStringRepresentation(m_Nodes, "-"); +// } }