diff --git a/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java b/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java index ce7b8763..73eadb2f 100644 --- a/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java +++ b/src/eva2/server/go/individuals/codings/gp/AbstractGPNode.java @@ -276,6 +276,13 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial test("+(sum(x),abs(sin(*(x0,x3))))", solG5); test("-(abs(sum(x)),*(abs(-7.5),n))", solG5); + GPNodeConst n1 = new GPNodeConst(3.); + GPNodeConst n2 = new GPNodeConst(7.); + GPNodeAdd n3 = new GPNodeAdd(); + System.out.println(n1.equals(n2)); + System.out.println(n2.equals(n1)); + System.out.println(n1.equals(n3)); + System.out.println(createNodeList()); } @@ -478,11 +485,29 @@ public abstract class AbstractGPNode implements InterfaceProgram, java.io.Serial } + /** This method allows you to determine whether or not two subtrees + * are actually the same. + * @param obj The other subtree. + * @return boolean if equal true else false. + */ +// public abstract boolean equals(Object obj); /** 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 abstract boolean equals(Object obj); + public boolean equals(Object obj) { + if (obj.getClass().equals(this.getClass())) { + AbstractGPNode node = (AbstractGPNode)obj; + if (this.getArity()!=node.getArity()) return false; + if (this.m_Nodes.length != node.m_Nodes.length) return false; + for (int i = 0; i < this.m_Nodes.length; i++) { + if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; + } + return true; + } else { + return false; + } + } } diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeAbs.java b/src/eva2/server/go/individuals/codings/gp/GPNodeAbs.java index d3d8a7f4..b734502a 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeAbs.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeAbs.java @@ -18,24 +18,6 @@ public class GPNodeAbs extends AbstractGPNode implements java.io.Serializable { 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 GPNodeAbs) { - GPNodeAbs node = (GPNodeAbs)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java b/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java index cd0d7bd9..e24c6809 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeAdd.java @@ -24,24 +24,6 @@ public class GPNodeAdd extends AbstractGPNode implements java.io.Serializable { 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 GPNodeAdd) { - GPNodeAdd node = (GPNodeAdd)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeConst.java b/src/eva2/server/go/individuals/codings/gp/GPNodeConst.java index 05d74da2..19b4b754 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeConst.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeConst.java @@ -21,21 +21,16 @@ public class GPNodeConst 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(); } - - /** 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 + @Override + public boolean equals(Object obj) { + if (obj instanceof GPNodeConst) { + GPNodeConst node = (GPNodeConst)obj; + return (node.value==this.value); + } else return false; + } + + /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ public String getName() { diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java b/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java index fd118ac0..8f4a5e35 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeCos.java @@ -20,24 +20,6 @@ public class GPNodeCos extends AbstractGPNode implements java.io.Serializable { 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 GPNodeCos) { - GPNodeCos node = (GPNodeCos)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java b/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java index 588eca6d..d292d3bd 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeDiv.java @@ -28,24 +28,6 @@ public class GPNodeDiv extends AbstractGPNode implements java.io.Serializable { 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 GPNodeDiv) { - GPNodeDiv node = (GPNodeDiv)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java b/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java index bf0052b5..c4d18bf2 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeExp.java @@ -20,24 +20,6 @@ public class GPNodeExp extends AbstractGPNode implements java.io.Serializable { 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 GPNodeExp) { - GPNodeExp node = (GPNodeExp)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java index e98aacb1..a9ddf539 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec2.java @@ -21,24 +21,6 @@ public class GPNodeFlowExec2 extends AbstractGPNode implements java.io.Serializa 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 GPNodeFlowExec2) { - GPNodeFlowExec2 node = (GPNodeFlowExec2)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java index d835e692..fb6bd0b5 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeFlowExec3.java @@ -21,24 +21,6 @@ public class GPNodeFlowExec3 extends AbstractGPNode implements java.io.Serializa 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 GPNodeFlowExec3) { - GPNodeFlowExec3 node = (GPNodeFlowExec3)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java b/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java index 0f73fbc4..e29e6515 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeInput.java @@ -40,11 +40,7 @@ public class GPNodeInput extends AbstractGPNode implements java.io.Serializable m_Identifier=str; } - /** 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. - */ + @Override public boolean equals(Object obj) { if (obj instanceof GPNodeInput) { GPNodeInput node = (GPNodeInput)obj; diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java b/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java index 8efade81..5bf492e1 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeMult.java @@ -21,24 +21,6 @@ public class GPNodeMult extends AbstractGPNode implements java.io.Serializable { 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 GPNodeMult) { - GPNodeMult node = (GPNodeMult)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeNeg.java b/src/eva2/server/go/individuals/codings/gp/GPNodeNeg.java index f7f38fbd..064a35a6 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeNeg.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeNeg.java @@ -21,24 +21,6 @@ public class GPNodeNeg extends AbstractGPNode implements java.io.Serializable { 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 GPNodeNeg) { - GPNodeNeg node = (GPNodeNeg)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java b/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java index e1ddbbaa..94594d48 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeOutput.java @@ -35,11 +35,7 @@ public class GPNodeOutput extends AbstractGPNode implements java.io.Serializable 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. - */ + @Override public boolean equals(Object obj) { if (obj instanceof GPNodeOutput) { GPNodeOutput node = (GPNodeOutput)obj; diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java b/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java index 8e0680d0..37f4e315 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodePow2.java @@ -20,24 +20,6 @@ public class GPNodePow2 extends AbstractGPNode implements java.io.Serializable { 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 GPNodePow2) { - GPNodePow2 node = (GPNodePow2)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java b/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java index 8b2843c2..85bacbae 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodePow3.java @@ -20,24 +20,6 @@ public class GPNodePow3 extends AbstractGPNode implements java.io.Serializable { 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 GPNodePow3) { - GPNodePow3 node = (GPNodePow3)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeProd.java b/src/eva2/server/go/individuals/codings/gp/GPNodeProd.java index 61532614..fadf425a 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeProd.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeProd.java @@ -20,24 +20,6 @@ public class GPNodeProd extends AbstractGPNode implements java.io.Serializable { 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 GPNodeProd) { - GPNodeProd node = (GPNodeProd)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java b/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java index ddc62607..69e8a7ec 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeSin.java @@ -20,24 +20,6 @@ public class GPNodeSin extends AbstractGPNode implements java.io.Serializable { 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 GPNodeSin) { - GPNodeSin node = (GPNodeSin)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java b/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java index cb30353c..37d15bf0 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeSqrt.java @@ -21,24 +21,6 @@ public class GPNodeSqrt extends AbstractGPNode implements java.io.Serializable { 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 GPNodeSqrt) { - GPNodeSqrt node = (GPNodeSqrt)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java b/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java index a9d47321..8828f145 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeSub.java @@ -21,24 +21,6 @@ public class GPNodeSub extends AbstractGPNode implements java.io.Serializable { 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 GPNodeSub) { - GPNodeSub node = (GPNodeSub)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */ diff --git a/src/eva2/server/go/individuals/codings/gp/GPNodeSum.java b/src/eva2/server/go/individuals/codings/gp/GPNodeSum.java index 2529aa81..4124443e 100644 --- a/src/eva2/server/go/individuals/codings/gp/GPNodeSum.java +++ b/src/eva2/server/go/individuals/codings/gp/GPNodeSum.java @@ -20,24 +20,6 @@ public class GPNodeSum extends AbstractGPNode implements java.io.Serializable { 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 GPNodeSum) { - GPNodeSum node = (GPNodeSum)obj; - if (this.m_Nodes.length != node.m_Nodes.length) return false; - for (int i = 0; i < this.m_Nodes.length; i++) { - if (!this.m_Nodes[i].equals(node.m_Nodes[i])) return false; - } - return true; - } else { - return false; - } - } - /** This method will be used to identify the node in the GPAreaEditor * @return The name. */