int main(int argc, char* argv[]) { if (argc != 3){ std::cout << "Uso: "<<argv[0]<< MSJ_USAGE << std::endl; return 1; } ModeloObservable modelo(argv[1],argv[2]); modelo.actualizarProductos(); modelo.actualizarAreasDeVision(); Gtk::Main kit(argc, argv); Glib::RefPtr<Gtk::Builder> refBuilder2 = Gtk::Builder::create(); if (crearAPartirDeGlade(&refBuilder2, VISTA_PPAL)==1) return 1; VistaPrincipal* pPrincipal = 0; refBuilder2->get_widget_derived("VentanaPrincipal",pPrincipal); if( pPrincipal){ //Start: pPrincipal->setModelo(&modelo); pPrincipal->show(); Gtk::Main::run(); } delete pPrincipal; return 0; }
void estadoInicial(float *a, float *b, float *c, float *d, float *l, float *yInicial,float *x_obs, float *y_obs, int n_puntos) { srand48(time(NULL)); a[0] = drand48(); b[0] = drand48(); c[0] = drand48(); d[0] = drand48(); yInicial = modelo(x_obs, yInicial,a[0],b[0],c[0],d[0],n_puntos); l[0] = likelyhood(y_obs, yInicial, n_puntos); }
void *elCamino(float *x_obs, float *y_obs, float *yDelMomento,float *yCandidato, float *a, float *b, float *c, float *d,float *l, int n_puntos, int iteraciones, int burn) { int i; float aPrima; float bPrima; float cPrima; float dPrima; float lPresente; float lCandidato; float gamma; float beta; float alpha; const gsl_rng_type * T; gsl_rng * r; gsl_rng_env_setup(); T = gsl_rng_default; r = gsl_rng_alloc (T); for(i=0; i < (iteraciones-1) ; i++) { aPrima = gsl_ran_gaussian(r, 0.1)+a[i]; //bPrima = gsl_ran_gaussian(r, 0.1)+b[i]; //cPrima = gsl_ran_gaussian(r, 0.1)+c[i]; //dPrima = gsl_ran_gaussian(r, 0.1)+d[i]; yDelMomento = modelo(x_obs, yDelMomento ,a[i],b[i],c[i],d[i],n_puntos); yCandidato = modelo(x_obs, yCandidato ,aPrima,b[i],c[i],d[i],n_puntos); lPresente = likelyhood(y_obs, yDelMomento, n_puntos); lCandidato = likelyhood(y_obs, yCandidato , n_puntos); gamma = (lCandidato - lPresente); if(gamma>=0.00) { a[i+1]=aPrima; } else { beta = drand48(); alpha = exp(gamma); if(beta<=alpha) { a[i+1]=aPrima; } else { a[i+1]=a[i]; } } //aPrima = gsl_ran_gaussian(r, 0.1)+a[i]; bPrima = gsl_ran_gaussian(r, 0.1)+b[i]; //cPrima = gsl_ran_gaussian(r, 0.1)+c[i]; //dPrima = gsl_ran_gaussian(r, 0.1)+d[i]; yDelMomento = modelo(x_obs, yDelMomento ,a[i],b[i],c[i],d[i],n_puntos); yCandidato = modelo(x_obs, yCandidato ,a[i],bPrima,c[i],d[i],n_puntos); lPresente = likelyhood(y_obs, yDelMomento, n_puntos); lCandidato = likelyhood(y_obs, yCandidato , n_puntos); gamma = (lCandidato - lPresente); if(gamma>=0.00) { b[i+1]=bPrima; } else { beta = drand48(); alpha = exp(gamma); if(beta<=alpha) { b[i+1]=bPrima; } else { b[i+1]=b[i]; } } //aPrima = gsl_ran_gaussian(r, 0.1)+a[i]; //bPrima = gsl_ran_gaussian(r, 0.1)+b[i]; cPrima = gsl_ran_gaussian(r, 0.1)+c[i]; //dPrima = gsl_ran_gaussian(r, 0.1)+d[i]; yDelMomento = modelo(x_obs, yDelMomento ,a[i],b[i],c[i],d[i],n_puntos); yCandidato = modelo(x_obs, yCandidato ,a[i],b[i],cPrima,d[i],n_puntos); lPresente = likelyhood(y_obs, yDelMomento, n_puntos); lCandidato = likelyhood(y_obs, yCandidato , n_puntos); gamma = (lCandidato - lPresente); if(gamma>=0.00) { c[i+1]=cPrima; } else { beta = drand48(); alpha = exp(gamma); if(beta<=alpha) { c[i+1]=cPrima; } else { c[i+1]=c[i]; } } //aPrima = gsl_ran_gaussian(r, 0.1)+a[i]; //bPrima = gsl_ran_gaussian(r, 0.1)+b[i]; //cPrima = gsl_ran_gaussian(r, 0.1)+c[i]; dPrima = gsl_ran_gaussian(r, 0.1)+d[i]; yDelMomento = modelo(x_obs, yDelMomento ,a[i],b[i],c[i],d[i],n_puntos); yCandidato = modelo(x_obs, yCandidato ,a[i],b[i],c[i],dPrima,n_puntos); lPresente = likelyhood(y_obs, yDelMomento, n_puntos); lCandidato = likelyhood(y_obs, yCandidato , n_puntos); gamma = (lCandidato - lPresente); if(gamma>=0.00) { d[i+1]=dPrima; } else { beta = drand48(); alpha = exp(gamma); if(beta<=alpha) { d[i+1]=dPrima; } else { d[i+1]=d[i]; } } yCandidato = modelo(x_obs, yCandidato, a[i+1],b[i+1],c[i+1],d[i+1],n_puntos); l[i+1] = likelyhood(y_obs,yCandidato,n_puntos); if(i+1>burn) { printf("%f %f %f %f %f\n", a[i+1],b[i+1],c[i+1],d[i+1], l[i+1]); } } }