⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factor_graph_test.cc.svn-base

📁 Probabilistic graphical models in matlab.
💻 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 + -