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; }
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; }
/** 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); } }