static void evo_duplicate(t_env *e, t_unit *unit) { t_list *elem; t_unit clone; clone = *unit; clone.pos = random_pos(clone.pos); if (evo_exist(e->pop, clone.pos)) return ; clone.pv = random_rank(PVPOPMIN, PVPOPMAX) + (clone.lv * (random_rank(LVUPDEATHMIN, LVUPDEATHMAX))); if (!(elem = ft_lstnew(&clone, sizeof(t_unit)))) return ; else ft_lstadd_back(&e->pop, elem); }
static void testhydrogenbonds(pp3d_rob protein, double falsescale){ Robot_structure *rob=bcd_robots[0]; int iteraciones= 100000; double scale= 0.2; double donor_aceptor_scale= 0.85; int j,njoints=protein->njoints; double averagecol; int conf_in_col; set_required_collisions_to_max(); p3d_init_random_seed(0); printf ("numero de joints: %d\n", njoints); printf ("proteina %s, iteraciones %d, escala general para todos los atomos %4.3f, donor_aceptor scale %4.3f\n", protein->name, iteraciones,scale,donor_aceptor_scale); bio_set_col_mode(NORMAL_BIOCOL_MODE); bio_create_molecules(scale); bio_all_molecules_col_with_report(); printf("numero de colisiones es %d \n", get_n_collisions()); //write_SUM_VDW(); #ifdef HYDROGEN_BOND reduce_don_acep_mat(donor_aceptor_scale); printf("HYDROGEN_BOND esta ACTIVO\n"); #else resize_NSO_percent(0,donor_aceptor_scale); printf("HYDROGEN_BOND NO esta ACTIVO\n"); #endif bio_all_molecules_col_with_report(); //write_SUM_VDW(); printf("numero de colisiones es %d \n", get_n_collisions()); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions()) conf_in_col++; averagecol+= get_n_collisions(); } averagecol= averagecol / iteraciones; printf("s, conf. en colision %d, %3.2f colisiones\n", conf_in_col, averagecol); }
static void kcd(pp3d_rob protein, int iteraciones, double tpos, double *initial){ int j, ncol; int conf_in_col; double tcol,tinit; double inicio,fin, aux, tiempo,averagecol; int col_mode_to_be_set; //printf ("proteina %s, escala: %1.6f , iteraciones %d\n", protein->name, escala, iteraciones); ChronoOn(); ChronoTimes(&inicio, &aux); col_mode_to_be_set = p3d_col_mode_kcd; set_DO_KCD_GJK(TRUE); p3d_filter_switch_filter_mechanism(FALSE); p3d_col_set_mode(col_mode_to_be_set); p3d_col_start(col_mode_to_be_set); ChronoTimes(&fin, &aux); tinit= fin - inicio; printf("inicializacion: %4.4f segundos\n", tinit); ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); p3d_col_test(); //kcd_robot_collides_itself(0 , JUST_BOOL); ncol= p3d_col_number(); if (ncol) conf_in_col++; averagecol+= ncol; //printf("numero de colisiones es %d \n", ncol); } ChronoTimes(&fin, &aux); ChronoOff(); tiempo= fin - inicio; tcol= tiempo - tpos; averagecol= averagecol / iteraciones; printf("kcd\n"); printf("%8s %7s %7s %7s %31s\n","col_conf","ncol","tinit","tpos","tcol"); printf(" %7d %7.2f %7.2f %7.2f %31.2f\n", conf_in_col, averagecol, tinit, tpos, tcol); restore_conf(initial,protein->njoints); }
void TetrisForm::move() { if(yspeed>0) { bool new_block = false; for(unsigned int i=0; i < all_blocks.size(); i++) { for(int a=0; a<=3; a++) { for(int b=0; b<=3; b++) { if((col_y(rects[a], all_blocks[i].rects[b]) == 1) and (id != all_blocks[i].id) and all_blocks[i].in_game) { if((rects[a].w == BLOCK_SIZE) and (all_blocks[i].rects[b].w == BLOCK_SIZE)){ //bug 1 //std::cout << "id: " << id << " col with id: "<< all_blocks[i].id << " a:" <<a<<" b:"<<b<<" i:"<<i <<std::endl; //std::cout << "active block: (" << xpos << ", " << ypos<< ") rect: (" << rects[a].x << ", " << rects[a].y<<") W:"<< rects[a].w<<" collides with: (" << all_blocks[i].rects[b].x<<", "<<all_blocks[i].rects[b].y <<") "<<std::endl; new_block=true; yspeed = 0; } } if(ypos>SCREEN_HEIGHT){ below=true; } } } } /*if((ypos > SCREEN_HEIGHT) and in_game) { new_block = true; in_game = false; }*/ if(new_block and in_game){ TetrisForm temp(round(random_pos(), BLOCK_SIZE), 0, true, random_block()); all_blocks.push_back(temp); } else if (below and in_game) { in_game = false; TetrisForm temp(round(random_pos(), BLOCK_SIZE), 0, true, random_block()); all_blocks.push_back(temp); } } ypos += yspeed; if(yspeed == 0) { ypos = round(ypos, BLOCK_SIZE); } }
static double sistematica2(pp3d_rob protein, double scale, int iteraciones, double *initial){ int j,njoints=protein->njoints; int conf_in_col; double inicio,fin, aux, tiempo,averagecol,usual_averagecol,averagecol0; double tinit,tpos,tposzig,trebuild,tprep,tlongdist,tcol,tcolzig,trebuilt_percent0; Robot_structure *rob; p3d_init_random_seed(0); printf ("numero de joints: %d\n", njoints); printf ("proteina %s, iteraciones %d, escala %4.3f\n", protein->name, iteraciones,escala_cont_pos); /*for (i=0;i<njoints;i++){ printf("%s,%2.2f, %2.2f\n ", protein->joints[i]->name,protein->joints[i]->vmin,protein->joints[i]->vmax); } */ charlatan=0; ChronoOn(); ChronoTimes(&inicio, &aux); bio_set_col_mode(NORMAL_BIOCOL_MODE); #ifdef HYDROGEN_BOND bio_init_molecules(0.8); printf("compilado con HYDROGEN_BOND", tpos); #else bio_init_molecules(scale); #endif rob=bcd_robots[0]; ChronoTimes(&fin, &aux); tinit= fin - inicio; printf("inicializacion: %4.4f segundos\n", tinit); /**************** unuseful action; only to "inject fuel to the machine" ***********/ /* for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); sup_collision(rob->superroot, rob->superroot); } restore_conf(initial,njoints); */ /****************** end of unuseful action ******************************** */ /*tpos */ ChronoTimes(&inicio, &aux); for (j=0;j<iteraciones;j++){ random_pos(protein); } ChronoTimes(&fin, &aux); tpos= fin - inicio; printf("pos: %4.4f segundos\n", tpos); restore_conf(initial,njoints); //goto abrevia; /*trbuild */ ChronoTimes(&inicio, &aux); averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); } ChronoTimes(&fin, &aux); //ChronoOff(); tiempo= fin - inicio; averagecol= averagecol / iteraciones; trebuild= tiempo - tpos; printf("rebuild: %4.4f segundos \n", trebuild); restore_conf(initial,njoints); /* tshordistance */ ChronoTimes(&inicio, &aux); averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; tprep= tiempo - (tpos + trebuild); printf("preprog: %4.4f segundos, %3.2f colisiones\n", tprep, averagecol); restore_conf(initial,njoints); abrevia: /* tlongdistance */ ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions()) conf_in_col++; averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; tlongdist= tiempo - (tpos + trebuild + tprep); printf("sup: %4.4f segundos, conf. en colision %d, %3.2f colisiones\n", tlongdist,conf_in_col, averagecol); restore_conf(initial,njoints); tcol= tiempo - tpos; usual_averagecol=averagecol; //goto t0; /* tposzig */ ChronoTimes(&inicio, &aux); for (j=0;j<iteraciones;j++){ zigzag_change_pos(protein); } ChronoTimes(&fin, &aux); tposzig= fin - inicio; printf("poszig: %4.4f segundos\n", tposzig); restore_conf(initial,njoints); /* tzig */ ChronoTimes(&inicio, &aux); averagecol=0; for (j=0;j<iteraciones;j++){ zigzag_change_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); averagecol+= get_n_collisions(); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; printf("tiempo total escala pequegna %5.2f\n", tiempo); averagecol= averagecol / iteraciones; tcolzig= tiempo - tposzig; restore_conf(initial,njoints); averagecol0= averagecol; t0: /* t0 */ set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions() != averagecol0) printf("\n NO HAY LAS MISMAS COLISIONES!!!\n\n"); printf("colisiones en posicion inicial %d\n", get_n_collisions()); //goto acaba; ChronoTimes(&inicio, &aux); for (j=0;j<iteraciones;j++){ set_n_collisions_to_zero(); //rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; printf("tiempo total escala 0: %5.2f\n", tiempo); trebuilt_percent0= (100 *(tcolzig - tiempo ))/ tcolzig; restore_conf(initial,njoints); acaba: //free_robot(rob); printf("bio\n"); printf("%8s %7s %7s %7s %7s %7s %7s %7s %7s %7s\n", "col_conf", "ncol", "tinit", "tpos", "tbuild", "tshort", "tlong", "tcol", "ncol0", "%build0"); printf(" %7d %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.1f %7.2f\n", conf_in_col,usual_averagecol,tinit,tpos,trebuild,tprep,tlongdist,tcol,averagecol0,trebuilt_percent0); /* tiempo surf_distance */ bio_set_col_mode(SURFACE_DISTANCE_BIOCOL_MODE); bio_set_surface_d(0.8); ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions()) conf_in_col++; averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; printf("SURF_DISTANCE: %4.4f segundos, conf. en colision %d, %3.2f colisiones\n", tiempo - tpos, conf_in_col, averagecol); restore_conf(initial,njoints); /* tiempo minimum_surf_distance */ bio_set_col_mode(MINIMUM_DISTANCE_BIOCOL_MODE); ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); set_minimum_Sdistance_to_max(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions()) conf_in_col++; averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; printf("MINIMUM_DISTANCE: %4.4f segundos, conf. en colision %d, %3.2f colisiones\n", tiempo - tpos, conf_in_col, averagecol); restore_conf(initial,njoints); bio_set_col_mode(NORMAL_BIOCOL_MODE); ChronoOff(); return tpos; }