void get_rooms(t_env *env) { t_args *tmp; char start; char end; t_args *prev; tmp = env->a_start; while (tmp) { if (start != 1 && tmp != env->a_start) start = is_start(prev); if (end != 1 && tmp != env->a_start) end = is_end(prev); if (is_room(tmp, env, 1) != -1) { add_room(env, ft_strsplit(tmp->data, ' '), start, end); start = 0; end = 0; } else if (is_command(tmp) != 1 && is_com(tmp) != 1 && \ is_ants(tmp, env) != 1) break ; prev = tmp; tmp = tmp->next; } }
/*! * \param[in] cargoLimit of the vehicle */ void Vehicle_node::evaluate(double cargoLimit) { if (is_start()) { /* time */ m_travel_time = 0; m_arrival_time = opens(); m_wait_time = 0; m_departure_time = arrival_time() + service_time(); /* time aggregates */ m_tot_travel_time = 0; m_tot_wait_time = 0; m_tot_service_time = service_time(); /* cargo aggregates */ m_cargo = demand(); /* violation aggregates */ m_twvTot = m_cvTot = 0; m_cvTot = has_cv(cargoLimit) ? 1 : 0; m_delta_time = 0; } }
/* Returns a single amino acid for this position */ char amino(unsigned char *seq, int n, struct _training *tinf, int is_init) { if(is_stop(seq, n, tinf) == 1) return '*'; if(is_start(seq, n, tinf) == 1 && is_init == 1) return 'M'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'F'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'F'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'L'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'L'; if(is_t(seq, n) == 1 && is_c(seq, n+1) == 1) return 'S'; if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'Y'; if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'Y'; if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 6) return 'Q'; if(tinf->trans_table == 14) return 'Y'; } if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) { if(tinf->trans_table == 6 || tinf->trans_table == 15) return 'Q'; if(tinf->trans_table == 22) return 'L'; } if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'C'; if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'C'; if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'W'; if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'W'; if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_t(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; return 'L'; } if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_c(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; return 'L'; } if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; return 'L'; } if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_g(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; if(tinf->trans_table == 12) return 'S'; return 'L'; } if(is_c(seq, n) == 1 && is_c(seq, n+1) == 1) return 'P'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'H'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'H'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'Q'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'Q'; if(is_c(seq, n) == 1 && is_g(seq, n+1) == 1) return 'R'; if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'I'; if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'I'; if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 2 || tinf->trans_table == 3 || tinf->trans_table == 5 || tinf->trans_table == 13 || tinf->trans_table == 21) return 'M'; return 'I'; } if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'M'; if(is_a(seq, n) == 1 && is_c(seq, n+1) == 1) return 'T'; if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'N'; if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'N'; if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 9 || tinf->trans_table == 14 || tinf->trans_table == 21) return 'N'; return 'K'; } if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'K'; if(is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'S'; if(is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'S'; if(is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && (is_a(seq, n+2) == 1 || is_g(seq, n+2) == 1)) { if(tinf->trans_table == 13) return 'G'; if(tinf->trans_table == 5 || tinf->trans_table == 9 || tinf->trans_table == 14 || tinf->trans_table == 21) return 'S'; return 'R'; } if(is_g(seq, n) == 1 && is_t(seq, n+1) == 1) return 'V'; if(is_g(seq, n) == 1 && is_c(seq, n+1) == 1) return 'A'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'D'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'D'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'E'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'E'; if(is_g(seq, n) == 1 && is_g(seq, n+1) == 1) return 'G'; return 'X'; }
void MSP3D::reducedGraph(){ m_graph.clear(); m_nodes.clear(); m_start_index=-1; m_end_index=-1; octomap::OcTree::tree_iterator it_end=m_tree.end_tree(); bool skip=false; int depth=0; for(octomap::OcTree::tree_iterator it=m_tree.begin_tree();it!=it_end;++it){ if(skip){ if(it.getDepth()<=depth){ skip=false; } } if(!skip){ if((it.getCoordinate()-m_current_coord).norm()>m_alpha*it.getSize() || it.isLeaf()){ if(!inPath(it.getCoordinate(),it.getSize())){ m_nodes.push_back(std::pair<octomap::point3d,double>(it.getCoordinate(),it.getSize())); } skip=true; depth=it.getDepth(); } } } int l=m_nodes.size(); // std::cout<< "number of nodes: " << l << std::endl; for(int i=0;i<l;++i){ // !!!!!!!!!!!!! if not in path? // std::cout<< "node " << i << ":" << m_nodes[i].first <<std::endl; m_graph.add_vertex(i); if(is_start(m_nodes[i])){ // std::cout<<"start: "<< m_nodes[i].first <<std::endl; if(m_start_index!=-1){ std::cout << "2 start nodes, fail" << std::endl; exit(1); } m_start_index=i; } if(is_goal(m_nodes[i])){ // std::cout<<"end: "<< m_nodes[i].first <<std::endl; if(m_end_index!=-1){ std::cout << "2 end nodes, fail" << std::endl; exit(1); } m_end_index=i; } } if(m_start_index==-1){ std::cout << "0 start node, fail" << std::endl; } if(m_end_index==-1){ std::cout << "0 end node, fail" << std::endl; } for(int i=0;i<l;++i){ for(int j=i+1;j<l;++j){ if(neighboor(m_nodes[i],m_nodes[j])){ // std::cout<< "neighboor:" << i << "," << j <<std::endl; // std::cout<< "cost:" << cost(i,j) <<std::endl; m_graph.add_edge(i,j,cost(i,j)); m_graph.add_edge(j,i,cost(j,i)); } } } }