मैं एक सॉफ्टवेयर इंजीनियरिंग कक्षा के लिए एक परियोजना पर काम कर रहा हूं। लक्ष्य एक ऐसा प्रोग्राम तैयार करना है जो आनुवांशिक प्रोग्रामिंग का उपयोग गणितीय अभिव्यक्ति उत्पन्न करने के लिए करेगा जो प्रशिक्षण डेटा प्रदान करता है।जेनेटिक प्रोग्रामिंग प्रयोजनों के लिए जावा में एक बाइनरी पेड़ बनाना
मैंने अभी प्रोजेक्ट पर काम करना शुरू कर दिया है, और मैं अपने सिर को लपेटने की कोशिश कर रहा हूं कि एक बाइनरी पेड़ कैसे बनाया जाए जो उपयोगकर्ता द्वारा परिभाषित वृक्ष की ऊंचाई के लिए अनुमति देगा और क्रॉसओवर और उत्परिवर्तन को सरल बनाने के लिए प्रत्येक नोड को अलग रखेगा जब मैं उन प्रक्रियाओं को लागू करने के लिए मिलता है।
यहां तक कि नोड कक्षाएं हैं जिन्हें मैंने अभी तक बनाया है। कृपया क्षमा करें जो मुझे यकीन है कि मेरा स्पष्ट अनुभवहीनता है।
public class Node
{
Node parent;
Node leftchild;
Node rightchild;
public void setParent(Node p)
{
parent = p;
}
public void setLeftChild(Node lc)
{
lc.setParent(this);
leftchild = lc;
}
public void setRightChild(Node rc)
{
rc.setParent(this);
rightchild = rc;
}
}
public class OperatorNode extends Node
{
char operator;
public OperatorNode()
{
double probability = Math.random();
if (probability <= .25)
{
operator = '+';
}
else if (probability > .25 && probability <= .50)
{
operator = '-';
}
else if (probability > .50 && probability <= .75)
{
operator = '*';
}
else
{
operator = '/';
}
}
public void setOperator(char op)
{
if (op == '+' || op == '-' || op == '*' || op == '/')
{
operator = op;
}
}
/**
* Node that holds x variables.
*/
public class XNode extends Node
{
char x;
public XNode()
{
x = 'x';
}
}
import java.util.Random;
public class OperandNode extends Node
{
int operand;
/**
* Initializes random number generator, sets the value of the node from zero to 9.
*/
public OperandNode()
{
Random rand = new Random();
operand = rand.nextInt(10);
}
/**
* Manually changes operand.
*/
public void setOperand(int o)
{
operand = o;
}
}
यह सब कुछ मैं नोड्स खुद को से बाहर की जरूरत पूरा करता है, लेकिन मैं कैसे एक बड़ा पेड़ में इन चालू करने के लिए यह पता लगाने की कोशिश कर समस्याओं में चल रहा हूँ। मुझे एहसास है कि मुझे किसी प्रकार के संग्रह प्रकार का उपयोग करने की आवश्यकता है, लेकिन ऐसा लगता है कि लाइब्रेरी में ऐसा कोई नहीं लगता है जो मैं करने की कोशिश कर रहा हूं।
यहां तक कि सही दिशा में भी एक झुकाव की सराहना की जाएगी।
वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन क्या आपने jgap को देखा है? http://jgap.sourceforge.net/ –
मैं इसे पार कर दूंगा, लेकिन हमें इसे खरोंच से बनाने के लिए अतिरिक्त क्रेडिट मिलता है, और वास्तव में, यह कुछ है जो मैं अपने व्यक्तिगत लाभ के लिए समझना चाहता हूं। – sitrick2