コード例 #1
0
ファイル: evo.c プロジェクト: sbenning42/42
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);
}
コード例 #2
0
ファイル: bcd_test.c プロジェクト: jmainpri/libmove3d
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);
}
コード例 #3
0
ファイル: bcd_test.c プロジェクト: jmainpri/libmove3d
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);
}
コード例 #4
0
ファイル: TetrisForm.cpp プロジェクト: filipkarlsson/Blockz
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);

    }

}
コード例 #5
0
ファイル: bcd_test.c プロジェクト: jmainpri/libmove3d
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;
}