void TestsPnlHigh::TestCondGaussianGetMPE() { printf("TestCondGaussianGetMPE\n"); BayesNet *net = SimpleCGM1(); //Cont0(3) Tab0(0) // | | // \/ \/ // Cont1(1) // | // \/ // Cont2(2) net->SetPGaussian("Cont0", "1.5 -0.5", "1.0 0.3 0.3 2.0", TokArr(), TokArr()); net->SetPGaussian("Cont1", "0.0", "2.5", "1.0 3.0", "Tab0^State0"); net->SetPGaussian("Cont1", "-1.5", "0.75", "0.5 2.5", "Tab0^State1"); net->SetProperty("Inference", "naive"); net->EditEvidence("Tab0^State1"); #ifndef PRINT_TestCondGaussianGetMPE net->GetMPE("Cont0"); net->GetMPE("Cont1"); net->GetMPE("Cont2"); #else std::cout << String(net->GetMPE("Cont0")) << "\n"; std::cout << String(net->GetMPE("Cont1")) << "\n"; std::cout << String(net->GetMPE("Cont2")) << "\n"; #endif net->ClearEvid(); net->EditEvidence("Cont0^Dim0^0.0 Cont0^Dim1^1.0"); net->EditEvidence("Cont1^Dim0^0.0"); net->EditEvidence("Cont2^Dim0^0.0"); #ifndef PRINT_TestCondGaussianGetMPE net->GetMPE("Tab0"); #else std::cout << String(net->GetMPE("Tab0")) << "\n"; #endif delete net; std::cout << "TestCondGaussianGetMPE is completed successfully" << std::endl; };
int main(int arg,char * argv[]) { int a=1,b=2; int c=a+b; cout<<c<<endl; //creating bayes net //BayesNet net; BayesNet net; //adding node net.AddNode("discrete^Cloudy","true false"); net.AddNode(discrete^"Sprinkler Rain WetGrass","true false"); //adding edges net.AddArc("Cloudy","Sprinkler Rain"); net.AddArc("Sprinkler Rain","WetGrass"); //sopecfify the CPD //cloudy net.SetPTabular("Cloudy^true","0.6"); net.SetPTabular("Cloudy^false","0.4"); //spprinkler net.SetPTabular("Sprinkler^true Sprinkler^false","0.1 0.9","Cloudy^true"); net.SetPTabular("Sprinkler^true Sprinkler^false","0.5 0.5","Cloudy^false"); //rain net.SetPTabular("Rain^true Rain^false","0.8 0.2","Cloudy^true"); net.SetPTabular("Rain^true Rain^false","0.2 0.8","Cloudy^false"); //WetGrass net.SetPTabular("WetGrass^true WetGrass^false","0.99 0.01","Sprinkler^true Rain^true"); net.SetPTabular("WetGrass^true WetGrass^false","0.9 0.1","Sprinkler^true Rain^false"); net.SetPTabular("WetGrass^true WetGrass^false","0.9 0.1","Sprinkler^false Rain^true"); net.SetPTabular("WetGrass^true WetGrass^false","0.0 1.0","Sprinkler^false Rain^false"); //get the cpd TokArr PCloudy=net.GetPTabular("Cloudy"); String PCloudyStr=String(PCloudy); float PCloudyTrueF=PCloudy[0].FltValue(); float PCloudyFalseF=PCloudy[1].FltValue(); cout<<endl<<"Cloudy"<<endl; cout<<PCloudyStr<<endl; cout<<PCloudyTrueF<<endl; cout<<PCloudyFalseF<<endl; /* //adding evidence //net.AddEvidToBuf("Rain^true WetGrass^true"); net.EditEvidence("Rain^true WetGrass^true"); net.CurEvidToBuf(); net.LearnParameters(); cout<<endl<<"evidence Rain^true WetGrass^true"<<endl; //get the jpd TokArr WetGrassMarg=net.GetJPD("WetGrass"); String WetGrassMargStr=String(WetGrassMarg); cout<<endl<<"WetGrass JPD"<<endl<<WetGrassMargStr<<endl; TokArr WetGrassAndSprinklerMarg=net.GetJPD("WetGrass Sprinkler Rain"); String WetGrassAndSprinklerMargStr=String(WetGrassAndSprinklerMarg); cout<<endl<<"WetGrass and Sprinkler JPD"<<endl<<WetGrassAndSprinklerMargStr<<endl; TokArr WetGrassMPE=net.GetMPE("WetGrass"); String WetGrassMPEStr=String(WetGrassMPE); cout<<endl<<"WetGrass MPE"<<endl<<WetGrassMPEStr<<endl; TokArr WetGrassAndSprinklerMPE=net.GetMPE("WetGrass Sprinkler Rain"); String WetGrassAndSprinklerMPEStr=String(WetGrassAndSprinklerMPE); cout<<endl<<"WetGrass and Spinkler MPE"<<endl<<WetGrassAndSprinklerMPEStr<<endl; //delete evidence net.ClearEvid(); cout<<"ok"<<endl;*/ //net.AddEvidToBuf("Sprinkler^true WetGrass^true"); net.EditEvidence("Sprinkler^true WetGrass^true"); net.CurEvidToBuf(); net.LearnParameters(); cout<<endl<<"evidence Sprinkler^true WetGrass^true"<<endl; //get jpd TokArr WetGrassMarg=net.GetJPD("WetGrass"); String WetGrassMargStr=String(WetGrassMarg); cout<<endl<<"WetGrass JPD"<<endl<<WetGrassMargStr<<endl; TokArr WetGrassAndSprinklerMarg=net.GetJPD("WetGrass Sprinkler Rain"); String WetGrassAndSprinklerMargStr=String(WetGrassAndSprinklerMarg); cout<<endl<<"WetGrass and Sprinkler JPD"<<endl<<WetGrassAndSprinklerMargStr<<endl; TokArr WetGrassMPE=net.GetMPE("WetGrass"); String WetGrassMPEStr=String(WetGrassMPE); cout<<endl<<"WetGrass MPE"<<endl<<WetGrassMPEStr<<endl; TokArr WetGrassAndSprinklerMPE=net.GetMPE("WetGrass Sprinkler Rain Cloudy"); String WetGrassAndSprinklerMPEStr=String(WetGrassAndSprinklerMPE); cout<<endl<<"WetGrass and Spinkler MPE"<<endl<<WetGrassAndSprinklerMPEStr<<endl; cout<<endl<<"moonsea"<<endl; return 0; }