void CvVSModule::AddParam(const char* name, const char** pAddr) { CvDefParam* pP = NewParam(name); const char* p = pAddr?pAddr[0]:NULL; pP->pStr = pAddr?(char**)pAddr:&(pP->Str); if(p) { pP->Str = strdup(p); pP->pStr[0] = pP->Str; } }
int main(int argc, char** argv) { int i; double t_opt = 0.; param_ param, param_0; gsl_complex **K, *W, *CW, *dW, *complex_rot; arr_info_ arr_info; double *argW, *absW; double *rec, *prec; pr_max_ *pr_max; double AREA, AREA_0=1000.; lattice_point_ **nghb; if(argc!=3){ printf("Usage: recall/precision threshold, random seed\n"); exit(1); } /* * Param initialization */ param.idum = (long *)malloc(sizeof(long)); // pointer to long integer for random number generator *param.idum = atoi(argv[2]); // initialization to random number param.thresh = HeaviSide; // function pointer for threshold param.T = 2.0; param.T_opt = 1.0; param.dt = 0.01; param.L = 100; param.L_sub = 5; param.int_range_rat = 3; param.sigma = 0.008; param.mu = 15; param.Kinh = 0.012; param.Kloc = 1.; param.d = 0.25; param.test_d = 4; param.excl_d = 8; param.M = 1.; param.delta = 5.; param.A = 5.; param.N_max = 2; param.kappa_upp = 0.6; param.kappa_low = 0.4; param.ecc_upp = 0.6; param.ecc_low = 0.4; param.kappa_xy = 0.1; param.mask_min = 2; param.mask_max = 4; param.kappa_mask = 0.25; param.pr_range = atoi(argv[1]); param.clutter_thresh = 0.15; param.excl_thresh = 1/2; param.temp = 0.005; param.mut = 0.01; param.gnuplot = 1; // 0 for screen and 1 for print to file /**** PIPE TO GNUPLOT ***/ FILE *pipe=popen("gnuplot -persist","w"); fprintf(pipe,"set size square\n"); fprintf(pipe,"unset key\n"); if(param.gnuplot == 1){ fprintf(pipe,"set term post enhanced color \"Helvetica\" 20\n"); } fflush(pipe); /* * Specify the precision/recall range * and initiate pr_max. */ rec =(double *)malloc(param.pr_range*sizeof(double)); prec =(double *)malloc(param.pr_range*sizeof(double)); param.pr_thresh =(double *)malloc(param.pr_range*sizeof(double)); for(i=0;i<param.pr_range;i++) param.pr_thresh[i] = (double) i/param.pr_range; pr_max = (pr_max_ *)malloc(param.pr_range*sizeof(pr_max_)); /* * Need to define param_0. */ param_0 = param; /* * Kernel Initialization */ nghb = NghbInit(param, &arr_info, param.int_range_rat/sqrt(2*param.sigma)); K = KernelInit(param); /* * Initializing the rW, pW, eW size * variable. */ W=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L); CW=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L); dW=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L); complex_rot=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L); argW=(double *)malloc(sizeof(double)*param.L*param.L); absW=(double *)malloc(sizeof(double)*param.L*param.L); /* * Optimization loop */ while(t_opt < param.T_opt){ t_opt += OneSim(param, pipe, arr_info, nghb, K, W, CW, dW, complex_rot, argW, absW, rec, prec, pr_max); /* * Do we keep or reject the current choice * of parameters? */ AREA = CalcArea(param, pr_max); if( 1./(1.+exp((AREA - AREA_0)/param.temp)) > ran1(param.idum) ){ param_0 = param; AREA_0 = AREA; } param = NewParam(param_0); /* * Here we print out the current choice of * parameters */ printf("%e %e %e %e %e %e %e\n", t_opt, param_0.sigma, param_0.mu, param_0.Kinh, param_0.delta, param_0.A, AREA_0); fflush(stdout); } //End optimization loop; free(param.idum); free(W); free(CW); free(dW); free(absW); free(argW); free(rec); free(prec); free(param.pr_thresh); free(pr_max); free2d((void **) nghb, param.L*param.L); free2d((void **) K, 4*param.L+1); pclose(pipe); return (EXIT_SUCCESS); }
void CvVSModule::AddParam(const char* name) { CvDefParam* p = NewParam(name); p->pDouble = &p->Double; }
void CvVSModule::AddParam(const char* name, int* pAddr) { NewParam(name)->pInt=pAddr; }
void CvVSModule::AddParam(const char* name, float* pAddr) { NewParam(name)->pFloat=pAddr; }
void CvVSModule::AddParam(const char* name, double* pAddr) { NewParam(name)->pDouble = pAddr; }