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

📄 old_code_3.svn-base

📁 Probabilistic graphical models in matlab.
💻 SVN-BASE
字号:
/* DiscreteGraph * make_discrete_graph(int argc, char * const argv[]) {	 DiscreteGraph * g;	 	 if (argc > 1)	 {		 if (!read_graph_from_file (argv[1], g))		 {			 cout << "A parsing error has occured reading file: '" << argv[1] << "'." << endl;			 return 0;		 }	 }	 	 else	 {		 g = make_random_graph <DiscreteGraph> (10, 0.2);	 }		 	 randomize_discrete_pairwise_symmetric_graph(*g);	 	 set_observations (*g);	 //initialize_random_variables (*g);	 	 return g; }  NPGraph * make_non_parametric_graph(int argc, char * const argv[]) {	 NPGraph * g;	 	 if (argc > 1)	 {		 if (!read_graph_from_file (argv[1], g))		 {			 cout << "A parsing error has occured reading file: '" << argv[1] << "'." << endl;			 return 0;		 }	 }	 	 else	 {		 g = make_random_graph <NPGraph> (10, 0.2);	 }		 	 randomize_non_parametric_pairwise_graph(*g);	 	 //set_observations (*g);	 initialize_random_variables (*g);	 	 return g; } */   // Full initialization/*template < class Graph>void Experiment<Graph>::initialize(){	computed_errors.clear();		next_sample_time = sampling_interval;	runs.clear();	initialize_random_variables (g);}template < class Graph>void Experiment<Graph>::run(const string reference_file, const string add_on){	read_reference_means (reference_file, g);		if (np_tree_gibbs)	{				for (current_run = 0; current_run < number_runs ; ++current_run)		{			runs.push_back(Run());						non_parametric_tree_gibbs_sampler( g, single_running_time , running_particles, 1, using_timer);						string st("tree_means_");			st += add_on;						export_computed_means (st, g);						next_sample_time = sampling_interval;			initialize_random_variables (g);		}				string st("tree_errors_");		st += add_on;				export_errors(st);		initialize();				set_observations (g);		//set_special_mrf_observations (g);	}		if (metropolis_bool)	{				for (current_run = 0; current_run < number_runs ; ++current_run)		{			runs.push_back(Run());						::metropolis(g, single_running_time, 0, using_timer);					string st("metropolis_means_");			st += add_on;						export_computed_means (st, g);						next_sample_time = sampling_interval;			initialize_random_variables (g);		}				string st("metropolis_errors_");				st += add_on;				export_errors(st);		initialize();		set_observations (g);		//set_special_mrf_observations (g);	}}template < class Graph>void Experiment<Graph>::set_ground_truth_method(const string s){	string gr_tr = "metropolis";if ( gr_tr.compare( s) == 0){	ground_metropolis = true;}	gr_tr = "tree";if ( gr_tr.compare( s ) == 0){	ground_tree = true;}}*//*template < >Experiment<DiscreteGraph>::Experiment( DiscreteGraph & a, const unsigned int b, const unsigned int running_time, const bool c, const bool d): g(a), number_runs(b), single_running_time(running_time), running_particles(100), burnoff(0), monitoring(true), np_tree_gibbs(c), metropolis_bool(d), ground_metropolis(false), ground_tree(false), ground_exact(false), using_timer(true){	randomize_discrete_pairwise_symmetric_graph(g);	set_observations (g);		initialize_random_variables (g);}template <>void Experiment< DiscreteGraph>::obtain_ground_truth(const string output_file_name, const unsigned int time){		bool monitoring_bkp (monitoring);		monitoring = false;			set_observations (g);	initialize_random_variables (g);		cout << "We get ground truth on discrete case" << endl; 		if (ground_exact)	{		//get_exact_inference_by_combine(g);				//message_passing(g);	}			if (ground_metropolis)	{		::gibbs_sampler(g, time, 0, true);	}		if (ground_tree)	{	non_parametric_tree_gibbs_sampler(g, time, 150, 1, true);	}			 	export_computed_means (output_file_name, g);		//display_variables_graph(g);		initialize();		monitoring = monitoring_bkp;}template <> void Experiment<DiscreteGraph>::record_errors(){		graph_traits<DiscreteGraph>::vertex_iterator u, u_end;				double current_error(0.0);				for (tie (u, u_end) = vertices (*g); u != u_end; ++u)		{			if (out_degree (*u, *g) != 1)			{				static_cast <DiscreteRandomVariable * > ( (*g)[*u]->get_random_variable())->compute_mean();				current_error += static_cast <DiscreteRandomVariable * > ((*g)[*u]->get_random_variable())->get_mean_error ();			}		}				// cout << "Error: " << current_error << endl;				runs[current_run].record_errors(current_error);	}template <>void Experiment<DiscreteGraph>::run(const string reference_file, const string add_on){		read_reference_means (reference_file, g);		set_observations (g);	initialize_random_variables (g);		if (metropolis_bool)	{				for (current_run = 0; current_run < number_runs ; ++current_run)		{			runs.push_back(Run());						::gibbs_sampler(g, single_running_time, burnoff, using_timer);						string st("metropolis_means_");			st += add_on;						export_computed_means (st, g);						next_sample_time = sampling_interval;			initialize_random_variables (g);		}				string st("metropolis_errors_");				st += add_on;				export_errors(st);		initialize();		set_observations (g);		//set_special_mrf_observations (g);	}			if (np_tree_gibbs)	{				for (current_run = 0; current_run < number_runs ; ++current_run)		{			runs.push_back(Run());						non_parametric_tree_gibbs_sampler(g, single_running_time, running_particles, 5, using_timer);						string st("tree_means_");			st += add_on;						export_computed_means (st, g);						next_sample_time = sampling_interval;			initialize_random_variables (g);		}				string st("tree_errors_");		st += add_on;				export_errors(st);				initialize();				set_observations (g);		//set_special_mrf_observations (g);	}	}*//*template < class Graph>Experiment<Graph>::Experiment( Graph & a, const unsigned int b, const unsigned int running_time, const bool c, const bool d): g(a), number_runs(b), single_running_time(running_time), running_particles(100), sampling_interval(1.0), next_sample_time(sampling_interval), monitoring(true), np_tree_gibbs(c), metropolis_bool(d), ground_metropolis(false), ground_tree(false), using_timer(true){	randomize_non_parametric_pairwise_graph(g);	set_observations (g);		initialize_random_variables (g);}template < class Graph>void Experiment<Graph>::obtain_ground_truth(const string output_file_name, const unsigned int time){		bool monitoring_bkp (monitoring);		monitoring = false;		cout << "We are trying to get ground truth" << endl;		if ( ground_metropolis)	{		metropolis (g, time, time/10, true);		export_computed_means (output_file_name, g);	}		if ( ground_tree)	{		non_parametric_tree_gibbs_sampler (g, time, 75, 25, true);		export_computed_means (output_file_name, g);	}		initialize();		//set_special_mrf_observations (g);	set_observations (g);	monitoring = monitoring_bkp;}template < class Graph>void Experiment<Graph>::export_errors(const string output_file_name){		unsigned int errors_size = runs.front().errors.size();		cout << "Errors size: " << errors_size << endl;		for ( vector <Run>::iterator it = runs.begin(); it != runs.end(); ++it)	{		assert (it->errors.size() == errors_size );	}		computed_errors.resize( errors_size, 0.0);		for (unsigned int i = 0; i < errors_size; ++i)	{				for ( vector <Run>::iterator it = runs.begin(); it != runs.end(); ++it)		{			computed_errors[i] += it->errors[i];		}				computed_errors[i] = computed_errors[i] /  runs.size();			}		ofstream output_file (output_file_name.c_str());			for (unsigned int i = 0; i < computed_errors.size(); ++i)	{		output_file << i  << " " << computed_errors[i] << "\n";	}		output_file << endl;}*/		//computed_errors[i] = computed_errors[i] /  runs.size();	//}		/*	for (unsigned int i = 0; i < computed_errors.size(); ++i)	{		output_file  << computed_errors[i] << " ";	}		output_file << ")" << endl;	*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -