Exemplo n.º 1
0
parameters::parameters(datafile dat, model nv_mod, model ref_mod,parameters ref_param,int compo,int iter){
	const MatrixXi & omega=nv_mod.Get_model(),ref_omega=ref_mod.Get_model(),mat=dat.Get_mat_datafile();
	const int g=omega.rows(),unique=mat.rows();
	m_proba=ref_param.m_proba;
	m_proba_block.resize(g);
	m_param.resize(g);
	for (int k=0;k<g;k++){
		if (k!=compo){
			m_param[k].resize(omega.rowwise().maxCoeff()(k)+1);
			m_param[k]=ref_param.m_param[k];
			m_proba_block[k].resize(unique,omega.rowwise().maxCoeff()(k)+1);
			m_proba_block[k]=ref_param.m_proba_block[k];
			for (int b=0;b<(omega.rowwise().maxCoeff()(k)+1) ;b++){
				if ((omega.row(k).array()==b).any()){
					m_param[k][b]=ref_param.m_param[k][b];
				}
			}
		}else{
			m_param[k].resize(omega.rowwise().maxCoeff()(k)+1);
			m_proba_block[k].resize(unique,omega.rowwise().maxCoeff()(k)+1);
			for (int b=0;b<(omega.rowwise().maxCoeff()(k)+1) ;b++){
				if ((omega.row(k).array()==b).any()){
					if ((((omega.row(k).array()==b)==(ref_omega.row(k).array()==b)).prod())==1){
						m_param[k][b]=ref_param.m_param[k][b];
					}else{
						m_param[k][b]=param_block(k,b,dat,nv_mod,m_proba.col(k).array()/m_proba.rowwise().sum().array(),1);
						if ((omega.row(k).array()==b).count()>1){
							int prem=0;
							while(omega(k,prem)!=b){prem++;}
							if (mat.col(prem).maxCoeff()>5){
									m_param[k][b]=m_param[k][b].Optimise_gamma(k,b,dat,nv_mod,5,m_proba.col(k).array()/m_proba.rowwise().sum().array(),dat.Get_eff_datafile());
							}
						}
					}
				}
			}
		}

	}
	m_propor=uniforme(g);
	Probapost( nv_mod , mat );
	Compte_nbparam(dat,nv_mod);
	Likelihood(dat.Get_eff_datafile());
	Estimation(1,0,iter,dat,nv_mod);
}
Exemplo n.º 2
0
parameters::parameters(datafile dat, model mod){
	// TODO Auto-generated constructor stub
	const MatrixXi & omega=mod.Get_model(),mat=dat.Get_mat_datafile();
	const int g=omega.rows(),unique=mat.rows();
	m_proba=MatrixXd::Ones(unique,g);
	m_proba_block.resize(g);
	m_param.resize(g);

	for (int k=0;k<g;k++){
		m_param[k].resize(omega.rowwise().maxCoeff()(k)+1);
		m_proba_block[k].resize(unique,omega.rowwise().maxCoeff()(k)+1);
		for (int b=0;b<(omega.rowwise().maxCoeff()(k)+1) ;b++){
			if ((omega.row(k).array()==b).any()){
				m_param[k][b]=param_block(k,b,dat,mod,VectorXd::Ones(mat.rows()),1);
			}
		}
	}
	m_propor=uniforme(g);
	Probapost( mod , mat );
	Compte_nbparam(dat,mod);
	Likelihood(dat.Get_eff_datafile());
	Estimation(1,0,6,dat,mod);
}
Exemplo n.º 3
0
int main (int argc, char *argv[])
{
    int  i,j,k,count;

    struct vertex* G;      // graph represented by adjacency list
    int     n = 8;        // number of vertices in G
    double  vm = 4;        // numero medio de vizinhos

    int    no_viz, *vizs, flag;
    struct neighbor *aux, *viz;


    // Inicializacao

    if (argc > 1) {
       n = atoi(argv[1]);
       vm = atoi(argv[2]);
    } 

    srand((unsigned)time(NULL));

    vizs = (int *) malloc (sizeof (int) * n);
    G = (struct vertex *) malloc (sizeof (struct vertex) * n);
    for ( i = 0; i < n; i++ ) {
          G[i].id = i+1;
          G[i].adj_list = NULL;
    }


    // Geracao aleatoria do grafo G

    for ( i = 0; i < n; i++ ) {

        no_viz = geometrica(vm); 

        for ( j = 0; j < no_viz; j++ ) {

            viz  = (struct neighbor *) malloc (sizeof(struct neighbor));

            do{ 
               viz->id  = uniforme (1,n);          // verifica repeticoes 
               flag = 0;
               for (k=0;k<j;k++)  if (vizs[k] == viz->id)  flag = 1;
            } while(flag == 1);
            vizs[j] = viz->id;

            viz->weight = geometrica((int)n/vm); 

            aux = G[i].adj_list;
            viz->next = aux;
            G[i].adj_list = viz;
        }
    }


    // Imprime o grafo G

    printf ("%d\n",n);
    for ( i = 0; i < n; i++ ) {

          printf ("v%d,", G[i].id);

          aux = G[i].adj_list;
          while (aux != NULL) {
                printf ("v%d", G[aux->id].id);
		aux = aux->next;
                if (aux != NULL)
                   printf (",");
          }

          aux = G[i].adj_list;
          if (aux != NULL)
             printf ("/");
          while (aux != NULL) {
                printf ("%d", aux->weight);
		aux = aux->next;
                if (aux != NULL)
                   printf (",");
          }
          printf ("\n");

    }
}