📄 factor_graph_test.cc.svn-base
字号:
#ifdef NOTUSED#include <iostream>#include <GraphAlgorithms.h>#include <RandomVariable.h>#include <Potential.h>#include <Node.h>using namespace std;using namespace boost;void create_factor_graph_test(){ cout << "Testing a Factor Graph..." << endl; typedef adjacency_list<vecS, vecS, undirectedS, MessageNode<DiscreteRandomVariable, boost::adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor> *, ConstantPotential > Graph; Graph G; typedef boost::graph_traits<Graph>::vertex_descriptor VertexDescriptor; ConstantPotential * cp = new ConstantPotential(); DiscreteRandomVariable * rv_1 = new DiscreteRandomVariable(1,2); DiscreteRandomVariable * rv_2 = new DiscreteRandomVariable(2,2); DiscreteRandomVariable * rv_3 = new DiscreteRandomVariable(3,2); DiscreteRandomVariable * rv_4 = new DiscreteRandomVariable(4,2); DiscreteRandomVariable * rv_5 = new DiscreteRandomVariable(5,2); VariableMessageNode<DiscreteRandomVariable, ConstantPotential, boost::adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor> * v_1 = new VariableMessageNode<DiscreteRandomVariable, ConstantPotential, boost::adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor>(rv_1, cp); VariableMessageNode<DiscreteRandomVariable, ConstantPotential, boost::adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor> * v_2 = new VariableMessageNode<DiscreteRandomVariable, ConstantPotential, boost::adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor>(rv_2, cp); VariableMessageNode<DiscreteRandomVariable, ConstantPotential, boost::adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor> * v_3 = new VariableMessageNode<DiscreteRandomVariable, ConstantPotential, boost::adjacency_list_traits<vecS, vecS, undirectedS>::vertex_descriptor>(rv_3, cp); VariableMessageNode<DiscreteRandomVariable, ConstantPotential, VertexDescriptor> * v_4 = new VariableMessageNode<DiscreteRandomVariable, ConstantPotential, VertexDescriptor>(rv_4, cp); VariableMessageNode<DiscreteRandomVariable, ConstantPotential, VertexDescriptor> * v_5 = new VariableMessageNode<DiscreteRandomVariable, ConstantPotential, VertexDescriptor>(rv_5, cp); DiscretePotential * p_1 = new DiscretePotential(); p_1->add_variable(*rv_1); p_1->add_variable(*rv_2); DiscretePotential * p_2 = new DiscretePotential(); p_2->add_variable(*rv_2); p_2->add_variable(*rv_3); p_2->add_variable(*rv_4); DiscretePotential * p_3 = new DiscretePotential(); p_3->add_variable(*rv_4); p_3->add_variable(*rv_5); vector <double> values_vec; values_vec.push_back (10); values_vec.push_back (4); values_vec.push_back (3); values_vec.push_back (5); p_1->setup_potential_values (values_vec); values_vec[0] = 8; values_vec[1] = 3; values_vec[2] = 7; values_vec[3] = 8; p_3->setup_potential_values (values_vec); values_vec[0] = 1; values_vec[1] = 5; values_vec[2] = 7; values_vec[3] = 8; values_vec.push_back (6); values_vec.push_back (9); values_vec.push_back (2); values_vec.push_back (4); p_2->setup_potential_values (values_vec); PotentialMessageNode<DiscreteRandomVariable, DiscretePotential, VertexDescriptor> * vp_1 = new PotentialMessageNode<DiscreteRandomVariable, DiscretePotential, VertexDescriptor>(p_1); PotentialMessageNode<DiscreteRandomVariable, DiscretePotential, VertexDescriptor> * vp_2 = new PotentialMessageNode<DiscreteRandomVariable, DiscretePotential, VertexDescriptor>(p_2); PotentialMessageNode<DiscreteRandomVariable, DiscretePotential, VertexDescriptor> * vp_3 = new PotentialMessageNode<DiscreteRandomVariable, DiscretePotential, VertexDescriptor>(p_3); VertexDescriptor vd_1 = add_vertex(v_1, G); VertexDescriptor vd_2 = add_vertex(v_2, G); VertexDescriptor vd_3 = add_vertex(v_3, G); VertexDescriptor vd_4 = add_vertex(v_4, G); VertexDescriptor vd_5 = add_vertex(v_5, G); VertexDescriptor vd_6 = add_vertex(vp_1, G); VertexDescriptor vd_7 = add_vertex(vp_2, G); VertexDescriptor vd_8 = add_vertex(vp_3, G); add_edge(vd_1, vd_6, *cp, G); add_edge(vd_6, vd_2, *cp, G); add_edge(vd_2, vd_7, *cp, G); add_edge(vd_7, vd_3, *cp, G); add_edge(vd_7, vd_4, *cp, G); add_edge(vd_4, vd_8, *cp, G); add_edge(vd_8, vd_5, *cp, G); // Graph ready cout << "Starting Message Passing..." << endl; //message_passing (G); rv_1->display_probabilities(); rv_2->display_probabilities(); rv_3->display_probabilities(); rv_4->display_probabilities(); rv_5->display_probabilities(); /* cout << "Starting Gibbs Sampler..." << endl; gibbs_sampler (G,10000,1000); rv_1->display_probabilities(); rv_2->display_probabilities(); rv_3->display_probabilities(); rv_4->display_probabilities(); rv_5->display_probabilities(); */ }#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -