00001 #include "BooleanVariable.h" 00002 #include "VariableValue.h" 00003 #include <exception> 00004 00005 00006 BooleanVariable::BooleanVariable(string name, double initProbTrue, double initProbFalse) 00007 { 00008 this->variableName = name; 00009 addValue("true", initProbTrue); 00010 addValue("false", initProbFalse); 00011 } 00012 00013 BooleanVariable::~BooleanVariable(void) 00014 { 00015 } 00016 vector<SharedPointer<IVariableValue> > BooleanVariable::getValues() 00017 { 00018 vector<SharedPointer<IVariableValue> > result; 00019 for(int i = 0; i < values.size(); i++) 00020 { 00021 result.push_back(values[i]); 00022 } 00023 return result; 00024 } 00025 00026 void BooleanVariable::addValue(SharedPointer<VariableValue> value) 00027 { 00028 values.push_back(value); 00029 } 00030 void BooleanVariable::addValue(string value, double initialProb) 00031 { 00032 SharedPointer<VariableValue> newValue (new VariableValue(this->getVariableName(), value, values.size(), initialProb)); 00033 addValue(newValue); 00034 } 00035 int BooleanVariable::getNumValues() 00036 { 00037 return values.size(); 00038 } 00039 string BooleanVariable::getVariableName() 00040 { 00041 return variableName; 00042 } 00043 00044 vector<SharedPointer<IVariableValue> > BooleanVariable::getInitialValues() 00045 { 00046 vector<SharedPointer<IVariableValue> > result; 00047 for(int i = 0; i < values.size(); i++) 00048 { 00049 if(values[i]->getProb() > 0.0001) 00050 { 00051 result.push_back(values[i]); 00052 } 00053 } 00054 return result; 00055 } 00056 00057 SharedPointer<IVariableValue> BooleanVariable::getTrueValue() 00058 { 00059 return values[0]; 00060 } 00061 00062 SharedPointer<IVariableValue> BooleanVariable::getFalseValue() 00063 { 00064 return values[1]; 00065 } 00066 SharedPointer<IVariableValue> BooleanVariable::getValueByName(string valName) 00067 { 00068 for(int i = 0; i < values.size(); i++) 00069 { 00070 if(values[i]->getValueName().compare(valName) == 0) 00071 { 00072 return values[i]; 00073 } 00074 } 00075 00076 throw runtime_error("Cannot find value : " + valName + " in variable : " + this->getVariableName()); 00077 } 00078