Beispiel #1
0
void pcnn::simulate(const unsigned int steps, const pcnn_stimulus & stimulus, pcnn_dynamic & output_dynamic) {
	output_dynamic.resize(steps, size());

	for (unsigned int i = 0; i < steps; i++) {
		calculate_states(stimulus);
		store_dynamic(i, output_dynamic);
	}
}
Beispiel #2
0
arma::Mat<double> RobotChasing::calculate_probabilities()
{
    calculate_states();
    arma::Mat<double> all_probabilities(state_to_ind.size() * m_possible_actions.size(),state_to_ind.size(), arma::fill::zeros);
    int it = 0;
    for(unsigned int i = 0; i <= m_max_x; i++)
    {
        for(unsigned int j = 0; j <= m_max_y; j++)
        {
            for(unsigned int k = 0; k <= m_max_x; k++)
            {
                for(unsigned int l = 0; l <= m_max_y; l++)
                {
                    for(unsigned int a = 0; a < m_possible_actions.size(); a++)
                    {
                        vector<double> s;
                        s.push_back(i);
                        s.push_back(j);
                        s.push_back(k);
                        s.push_back(l);


                        if(i == k && j == l)
                        {
                            int ind = state_to_ind[s];
                            all_probabilities(it, ind) += 1.0;
                        }
                        else
                        {
                            vector<vector<double> > neighbors = get_neighbors(s,a);
                            for(unsigned int n = 0; n < neighbors.size(); n++)
                            {
                                vector<double> neighbor = neighbors[n];

                                //                            for(unsigned int z = 0; z < neighbor.size(); z++)
                                //                            {
                                //                                cout << neighbor[z] << ",";
                                //                            }
                                //                            cout << endl;
                                int ind = state_to_ind[neighbor];

                                all_probabilities(it, ind) += 1.0/neighbors.size();
                            }
                        }
                        it++;
                    }
                }
            }
        }
    }
    //all_probabilities.print();
    //exit(1);
    return all_probabilities;
}
Beispiel #3
0
void legion_network::simulate(const unsigned int steps, 
                              const double time, 
                              const solve_type solver, 
                              const bool collect_dynamic, 
                              const legion_stimulus & stimulus, 
                              legion_dynamic & output_dynamic) {

	output_dynamic.clear();

	m_stimulus = (legion_stimulus *) &stimulus;
	create_dynamic_connections(stimulus);

	const double step = time / (double) steps;
	const double int_step = step / 10.0;

	store_dynamic(0.0, collect_dynamic, output_dynamic);	/* store initial state */

	for (double cur_time = step; cur_time < time; cur_time += step) {
		calculate_states(stimulus, solver, cur_time, step, int_step);
		
		store_dynamic(cur_time, collect_dynamic, output_dynamic);	/* store initial state */
	}
}