00001 #include "XCSParams.h"
00002
00003 void XCSParams::registerParams(RegistryP registry) {
00004
00005
00006
00007 registerParameter(registry, "beta", (voidP) new double(0.15), ECF::DOUBLE);
00008 registerParameter(registry, "alpha", (voidP) new double(0.1), ECF::DOUBLE);
00009 registerParameter(registry, "eps0", (voidP) new double(10), ECF::DOUBLE);
00010 registerParameter(registry, "accExp", (voidP) new double(5), ECF::DOUBLE);
00011 registerParameter(registry, "gama", (voidP) new double(0.71), ECF::DOUBLE);
00012 registerParameter(registry, "thresholdGA", (voidP) new int(30), ECF::UINT);
00013 registerParameter(registry, "thresholdDel", (voidP) new double(20), ECF::DOUBLE);
00014 registerParameter(registry, "delta", (voidP) new double(0.1), ECF::DOUBLE);
00015 registerParameter(registry, "thresholdSub", (voidP) new double(20), ECF::DOUBLE);
00016 registerParameter(registry, "pDontCare", (voidP) new double(0.33), ECF::DOUBLE);
00017 registerParameter(registry, "pExplore", (voidP) new double(0.5), ECF::DOUBLE);
00018 registerParameter(registry, "mna", (voidP) new uint(1), ECF::UINT);
00019 registerParameter(registry, "maxPopSize", (voidP) new uint(1000), ECF::UINT);
00020
00021 registerParameter(registry, "pCrossover", (voidP) new double(0.7), ECF::DOUBLE);
00022 registerParameter(registry, "pMutation", (voidP) new double(0.03), ECF::DOUBLE);
00023 }
00024
00025 void XCSParams::readParams(RegistryP registry) {
00026
00027 voidP vP = getParameterValue(registry, "mna");
00028 mna_ = *((uint*) vP.get());
00029
00030 vP = getParameterValue(registry, "pExplore");
00031 p_explore_ = *((double*) vP.get());
00032 vP = getParameterValue(registry, "beta");
00033 beta_ = *((double*) vP.get());
00034 vP = getParameterValue(registry, "thresholdGA");
00035 thresholdGA_ = *((uint*) vP.get());
00036 vP = getParameterValue(registry, "gama");
00037 gama_ = *((double*) vP.get());
00038
00039 vP = getParameterValue(registry, "eps0");
00040 eps0_ = *((double*) vP.get());
00041 vP = getParameterValue(registry, "alpha");
00042 alpha_ = *((double*) vP.get());
00043 vP = getParameterValue(registry, "accExp");
00044 accExp_ = *((double*) vP.get());
00045 vP = getParameterValue(registry, "pDontCare");
00046 pdc_ = *((double*) vP.get());
00047
00048 vP = getParameterValue(registry, "thresholdDel");
00049 thresholdDel_ = *((double*) vP.get());
00050 vP = getParameterValue(registry, "delta");
00051 delta_ = *((double*) vP.get());
00052 vP = getParameterValue(registry, "thresholdSub");
00053 thresholdSub_ = *((double*) vP.get());
00054 vP = getParameterValue(registry, "maxPopSize");
00055 popSize_ = *((uint*) vP.get());
00056 vP = getParameterValue(registry, "pCrossover");
00057 pCrossover_ = *((double*) vP.get());
00058 vP = getParameterValue(registry, "pMutation");
00059 pMutation_ = *((double*) vP.get());
00060 }
00061
00062 XMLNode XCSParams::getXMLNode() {
00063
00064 XMLNode node = XMLNode::createXMLTopNode(name_.c_str(),0);
00065 XMLNode child = XMLNode::createXMLTopNode(NODE_ENTRY);
00066
00067 std::stringstream ss;
00068 ss << alpha_; child.addAttribute("key", "alpha"); child.addText(ss.str().c_str());
00069 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00070 ss << beta_; child.addAttribute("key", "beta"); child.addText(ss.str().c_str());
00071 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00072 ss << gama_; child.addAttribute("key", "gama"); child.addText(ss.str().c_str());
00073 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00074 ss << delta_; child.addAttribute("key", "delta"); child.addText(ss.str().c_str());
00075 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00076 ss << p_explore_; child.addAttribute("key", "pExplore"); child.addText(ss.str().c_str());
00077 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00078 ss << thresholdGA_; child.addAttribute("key", "thresholdGA"); child.addText(ss.str().c_str());
00079 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00080 ss << thresholdDel_; child.addAttribute("key", "thresholdDel"); child.addText(ss.str().c_str());
00081 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00082 ss << thresholdSub_; child.addAttribute("key", "thresholdSub"); child.addText(ss.str().c_str());
00083 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00084 ss << eps0_; child.addAttribute("key", "eps0"); child.addText(ss.str().c_str());
00085 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00086 ss << accExp_; child.addAttribute("key", "accExp"); child.addText(ss.str().c_str());
00087 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00088 ss << pdc_; child.addAttribute("key", "pDontCare"); child.addText(ss.str().c_str());
00089 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00090 ss << popSize_; child.addAttribute("key", "maxPopSize"); child.addText(ss.str().c_str());
00091 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00092 ss << mna_; child.addAttribute("key", "mna"); child.addText(ss.str().c_str());
00093 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00094
00095 ss << pCrossover_; child.addAttribute("key", "pCrossover"); child.addText(ss.str().c_str());
00096 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00097 ss << pMutation_; child.addAttribute("key", "pMutation"); child.addText(ss.str().c_str());
00098 node.addChild(child); ss.str(""); child = XMLNode::createXMLTopNode(NODE_ENTRY);
00099
00100 return node;
00101 }