示例#1
0
int global_gene_cell_init()
{
    int len=sizeof(g_gene_chaos)/sizeof(g_gene_chaos[0]);
    int meta_idx=0;
    int data_idx=0;
    int op_idx=0;

    gene_cell_meta_t gene_cell_meta;
    gene_cell_data_t gene_cell_data;
    gene_cell_meta_t *pgene_cell_meta;
    gene_cell_data_t *pgene_cell_data;
    gene_cell_op_t   *pgene_cell_op;

    for(int i=0;i<len;i++){
        op_idx=g_gene_cell_op_pool.put(g_gene_chaos[i]);

        data_idx=g_gene_cell_data_pool.put(gene_cell_data);
        
        gene_cell_meta.oid=op_idx;
        gene_cell_meta.did=data_idx;

        meta_idx=g_gene_cell_meta_pool.put(gene_cell_meta);

        pgene_cell_op=g_gene_cell_op_pool.get(op_idx);
        pgene_cell_meta=g_gene_cell_meta_pool.get(data_idx);
        pgene_cell_data=g_gene_cell_data_pool.get(op_idx);

        typedef void* (*init_func)(void *,void *);
        pgene_cell_op->init(pgene_cell_meta,NULL);
        LOG_DEBUG<<"op_idx:"<<op_idx<<" data_idx:"<<data_idx<<" meta_idx:"<<meta_idx<<" meta_cn:"<<(int)pgene_cell_meta->cn<<std::endl;
    }
    return 0;
}
示例#2
0
int global_gene_init()
{
    //gene init
    int op_total=g_gene_cell_meta_pool.size();
    vector< vector<gene_cell_meta_t> > gene_cell_meta_vv;
    vector< gene_cell_meta_t> dest;
    LOG_DEBUG<<"op_total:"<<op_total<<std::endl;
    for(int i=0;i<op_total;i++) {
        gene_cell_meta_t *pgene_cell_meta=g_gene_cell_meta_pool.get(i);
        if(pgene_cell_meta) {
            vector<gene_cell_meta_t> gene_cell_meta_v;
            gene_cell_meta_v.clear();
            gene_cell_meta_t gene_cell_meta;
            gene_cell_data_t gene_cell_data;
            gene_cell_data_t *pgene_cell_data;

            pgene_cell_data=g_gene_cell_data_pool.get(pgene_cell_meta->did);

            for(int j=0;j<pgene_cell_meta->cn;j++) {
                memcpy(&gene_cell_meta, pgene_cell_meta, sizeof(gene_cell_meta_t));
                memcpy(&gene_cell_data, pgene_cell_data, sizeof(gene_cell_data_t));
                gene_cell_data.cn=j;
                int data_idx=g_gene_cell_data_pool.put(gene_cell_data);
                gene_cell_meta.did=data_idx;
                gene_cell_meta_v.push_back(gene_cell_meta);
                int meta_idx=g_gene_cell_meta_pool.put(gene_cell_meta);
            }
            LOG_DEBUG<<"gene_cell_meta_v.size: "<<gene_cell_meta_v.size()<<std::endl;
            gene_cell_meta_vv.push_back(gene_cell_meta_v);
        }
        LOG_DEBUG<<"gene_cell_meta_vv.size: "<<gene_cell_meta_vv.size()<<std::endl;
    }

    /*gene gene_pool
     * */

    //gene all the genome
    if(gene_cell_meta_vv.size() < 6) {
        gene_generate(gene_cell_meta_vv.begin() , gene_cell_meta_vv.end(),
                        dest, g_gene_meta_pool);
        LOG_DEBUG<<"g_gene_meta_pool.size:"<<g_gene_meta_pool.size()<<std::endl;
    }else if(gene_cell_meta_vv.size() > 10) {
        /*
        gene small
        gene half
        gene full
        */
    }else {
        /*
        gene small
        gene full
        */
    }
    return 0;
}
示例#3
0
/** Transfers the particles stored within the class to a container class.
 * \param[in] con the container class to transfer to. */
void pre_container::setup(container &con) {
	int **c_id=pre_id,*idp,*ide,n;
	double **c_p=pre_p,*pp,x,y,z;
	while(c_id<end_id) {
		idp=*(c_id++);ide=idp+pre_container_chunk_size;
		pp=*(c_p++);
		while(idp<ide) {
			n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);
			con.put(n,x,y,z);
		}
	}
	idp=*c_id;
	pp=*c_p;
	while(idp<ch_id) {
		n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);
		con.put(n,x,y,z);
	}
}