Changeset 1338 for applications/robust

Show
Ignore:
Timestamp:
04/27/11 19:00:36 (14 years ago)
Author:
sindj
Message:

Zacatky experimentovani v robustlib. Zacleneni vypoctu polynomialni rovnice pro optimalni akci s vyuzitim funkce itpp::roots(). Odstranovani zbylych chyb. JS

Location:
applications/robust
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • applications/robust/main.cpp

    r1337 r1338  
    1212#include <iostream> 
    1313#include <fstream> 
    14 #include <itpp/signal/poly.h> 
     14#include <itpp/itsignal.h> 
    1515 
    1616using namespace itpp; 
     
    138138        vector<vector<string>> strings; 
    139139 
    140         char* file_strings[3] = {"c:\\dataADClosePercDiff", "c:\\ar_student_single","c:\\ar_cauchy_single"}; 
     140        char* file_strings[3] = {"c:\\dataCDClosePercDiff", "c:\\ar_student_single","c:\\ar_cauchy_single"}; 
    141141 
    142142        for(int i = 0;i<3;i++) 
     
    172172                RARX* my_rarx = new RARX(2,30,false); 
    173173                 
    174                 /* 
     174                 
    175175                mat V0 = 0.0001 * eye ( 3 ); 
    176176                ARX* my_arx = new ARX(0.97); 
     
    178178                my_arx->set_constant ( false ); 
    179179                my_arx->validate(); 
    180                 */ 
    181  
    182                 for(int k = 1;k<170;k++) 
     180                 
     181 
     182                for(int k = 1;k<strings[j].size();k++) 
    183183                { 
    184184                        vec condition; 
     
    199199                                conditions[k-3].ins(0,strings[j][k]); 
    200200 
    201                                 // cout << "modi:" << conditions[k-3] << endl; 
     201                                //cout << "Condition:" << conditions[k-3] << endl; 
    202202 
    203203                                my_rarx->bayes(conditions[k-3]); 
     204                                //my_rarx->posterior->step_me(1); 
    204205                                 
    205206                                vec cond_vec; 
    206207                                cond_vec.ins(0,conditions[k-3][0]); 
    207208                                 
    208                                 // my_arx->bayes(cond_vec,conditions[k-3].right(2)); 
     209                                my_arx->bayes(cond_vec,conditions[k-3].right(2)); 
    209210                                         
    210211                                 
    211                                 if(k>5) 
     212                                if(k>8) 
    212213                                { 
    213214                                        //my_rarx->posterior->step_me(0); 
     
    219220                                        { 
    220221                                                vec lap_sample = conditions[k-3].left(2); 
     222                                                //lap_sample.ins(lap_sample.size(),1.0); 
    221223                                                 
    222224                                                lap_sample.ins(0,LapRNG()); 
     
    225227                                        } 
    226228 
     229                                         
    227230                                        vec sample_pow = sample_prediction; 
    228231                                        vec poly_coefs; 
     
    236239                                                { 
    237240                                                        sample_pow = elem_mult(sample_pow,sample_prediction); 
    238                                                         poly_coefs.ins(poly_coefs.size(),pow(-1,en)*poly_coef); 
     241                                                        poly_coefs.ins(poly_coefs.size(),((-1)^en)*poly_coef); 
    239242                                                } 
    240243                                                else 
     
    247250                                        while(!stop_iteration); 
    248251 
    249                                         cvec action =  
    250                                          
    251                                          
    252                                         cout << "MaxLik coords:" << my_rarx->posterior->minimal_vertex->get_coordinates() << endl; 
     252                                        // cout << "Coefficients: " << poly_coefs << endl; 
     253                                                                                 
     254                                        cvec actions = roots(poly_coefs); 
     255                                        bool is_max = false; 
     256                                        for(int t = 0;t<actions.size();t++) 
     257                                        { 
     258                                                if(actions[t].imag() == 0 && actions[t].real()>-1 && actions[t].real()<1) 
     259                                                { 
     260                                                        cout << "Action:" << actions[t].real() << endl; 
     261                                                        is_max = true; 
     262                                                } 
     263                                        } 
     264 
     265                                        if(!is_max) 
     266                                        { 
     267                                                cout << "No maximum." << endl; 
     268                                        } 
     269 
     270                                        // cout << "MaxLik coords:" << my_rarx->posterior->minimal_vertex->get_coordinates() << endl; 
    253271 
    254272                                        double prediction = 0; 
     
    290308                                        } 
    291309 
    292                                         /* 
     310                                        cout << "Prediction: "<< prediction << endl; 
     311                                         
    293312                                        enorm<ldmat>* pred_mat = my_arx->epredictor(conditions[k-3].left(2)); 
    294313                                        double prediction2 = pred_mat->mean()[0]; 
    295                                         */ 
     314                                         
    296315 
    297316                                        ofstream myfile; 
    298317                                        char fstring[80]; 
    299                                         //char f2string[80]; 
     318                                        char f2string[80]; 
    300319                                        strcpy(fstring,file_strings[j]); 
    301                                         //strcpy(f2string,fstring); 
     320                                        strcpy(f2string,fstring); 
    302321 
    303322                                        strcat(fstring,"pred.txt"); 
    304                                         //strcat(f2string,"2pred.txt"); 
     323                                        strcat(f2string,"2pred.txt"); 
    305324                                         
    306325 
    307326                                        myfile.open(fstring,ios::app); 
    308327                                         
    309                                         //myfile << my_rarx->posterior->minimal_vertex->get_coordinates()[0]; 
     328                                        // myfile << my_rarx->posterior->minimal_vertex->get_coordinates()[0]; 
    310329                                        myfile << prediction; 
    311330                                         
     
    320339                                        myfile.close(); 
    321340 
    322                                         /* 
     341                                         
    323342                                        myfile.open(f2string,ios::app); 
    324343                                        myfile << prediction2; 
     
    333352                                        } 
    334353                                        myfile.close(); 
    335                                         */ 
     354                                         
    336355 
    337356                                }                                        
  • applications/robust/robustlib.cpp

    r1335 r1338  
    3333                                { 
    3434                                        double cur_prob = 0; 
     35 
     36                                        /* 
     37                                        if(should_integrate&&new_simplex->vertices.size()!=3) 
     38                                        { 
     39                                                cout << "Error: Wrong vertex count for integration!"; 
     40                                        } 
     41                                        */ 
    3542 
    3643                                        if(should_integrate) 
  • applications/robust/robustlib.h

    r1337 r1338  
    883883                                { 
    884884                                        current_parent->totallyneutralgrandchildren.insert(sender->totallyneutralchildren.begin(),sender->totallyneutralchildren.end()); 
    885  
     885                                         
    886886                                        for(set<polyhedron*>::iterator tot_child_ref = sender->totallyneutralchildren.begin();tot_child_ref!=sender->totallyneutralchildren.end();tot_child_ref++) 
    887887                                        { 
    888888                                                (*tot_child_ref)->grandparents.insert(current_parent); 
     889                                        } 
     890 
     891                                        if(current_parent->totally_neutral == NULL) 
     892                                        { 
     893                                                current_parent->totally_neutral = sender->totally_neutral; 
     894                                        } 
     895                                        else 
     896                                        { 
     897                                                current_parent->totally_neutral = current_parent->totally_neutral && sender->totally_neutral; 
    889898                                        } 
    890899 
     
    898907                                                current_parent->neutralchildren.push_back(sender); 
    899908                                                current_parent->positiveneutralvertices.insert(sender->positiveneutralvertices.begin(),sender->positiveneutralvertices.end()); 
    900                                                 current_parent->negativeneutralvertices.insert(sender->negativeneutralvertices.begin(),sender->negativeneutralvertices.end()); 
    901  
    902                                                 if(current_parent->totally_neutral == NULL) 
    903                                                 { 
    904                                                         current_parent->totally_neutral = sender->totally_neutral; 
    905                                                 } 
    906                                                 else 
    907                                                 { 
    908                                                         current_parent->totally_neutral = current_parent->totally_neutral && sender->totally_neutral; 
    909                                                 } 
     909                                                current_parent->negativeneutralvertices.insert(sender->negativeneutralvertices.begin(),sender->negativeneutralvertices.end());                                           
    910910 
    911911                                                if(sender->totally_neutral) 
     
    922922 
    923923                                        if(is_last) 
    924                                         { 
     924                                        {                                                
    925925                                                 
    926                                                 /// \TODO Nechapu druhou podminku, zda se mi ze je to spatne.. Nemela by byt jen prvni? Nebo se jedna o nastaveni totalni neutrality? 
    927                                                 if((current_parent->negativechildren.size()>0&&current_parent->positivechildren.size()>0)|| 
    928                                                                                                         (current_parent->neutralchildren.size()>0&&current_parent->totally_neutral==false)) 
     926                                                if((current_parent->negativechildren.size()>0&&current_parent->positivechildren.size()>0) 
     927                                                                                                        ||(current_parent->neutralchildren.size()>0&&current_parent->totallyneutralchildren.empty())) 
    929928                                                { 
    930929                                                        for_splitting[level+1].push_back(current_parent);                                                
     
    981980                                                                current_parent->negativechildren.clear(); 
    982981                                                                current_parent->neutralchildren.clear(); 
    983                                                                 current_parent->totallyneutralchildren.clear(); 
     982                                                                //current_parent->totallyneutralchildren.clear(); 
    984983                                                                current_parent->totallyneutralgrandchildren.clear(); 
    985984                                                                // current_parent->grandparents.clear(); 
     
    10021001                         
    10031002                        } 
    1004                          
     1003 
     1004                        sender->totallyneutralchildren.clear();                  
    10051005                }                
    10061006        } 
     
    10491049                        { 
    10501050                                 
    1051                                  
     1051                                /* 
    10521052                                if(i==statistic.size()-1) 
    10531053                                { 
     
    10551055                                        cout << "Order:" << ((toprow*)horiz_ref)->condition_order << endl; 
    10561056                                } 
     1057                                */ 
     1058 
     1059                                cout << "Stepped." << endl; 
    10571060                                 
    10581061                                /* 
     
    12591262                                                current_vertex->negativeneutralvertices.insert(current_vertex); 
    12601263                                                current_vertex->positiveneutralvertices.insert(current_vertex); 
    1261                                         }                                        
     1264                                        } 
     1265                                        else 
     1266                                        { 
     1267                                                current_vertex->totally_neutral = false; 
     1268                                        } 
    12621269                                } 
    12631270                         
     
    12961303                if(should_remove) 
    12971304                { 
     1305                        /* 
    12981306                        for(int i = 0;i<for_merging.size();i++) 
    12991307                        { 
     
    13051313                                cout << endl; 
    13061314                        } 
     1315                        */ 
     1316 
     1317                        cout << "Merging." << endl; 
    13071318 
    13081319                        set<vertex*> vertices_to_be_reduced;                     
     
    14071418                                                        } 
    14081419 
     1420                                                        /* 
    14091421                                                        current_positive->totallyneutralchildren.insert(current_negative->totallyneutralchildren.begin(),current_negative->totallyneutralchildren.end()); 
    14101422                                                         
    14111423                                                        current_positive->totallyneutralchildren.erase(*merge_ref); 
     1424                                                        */ 
    14121425 
    14131426                                                        current_positive->totallyneutralgrandchildren.insert(current_negative->totallyneutralgrandchildren.begin(),current_negative->totallyneutralgrandchildren.end()); 
     
    14231436                                                                current_positive->negativechildren.clear(); 
    14241437                                                                current_positive->neutralchildren.clear(); 
    1425                                                                 current_positive->totallyneutralchildren.clear(); 
     1438                                                                // current_positive->totallyneutralchildren.clear(); 
    14261439                                                                current_positive->totallyneutralgrandchildren.clear();                                                           
    14271440                                                                current_positive->positiveneutralvertices.clear(); 
     
    15581571                } 
    15591572                 
     1573                /* 
    15601574                vector<int> sizevector; 
    15611575                for(int s = 0;s<statistic.size();s++) 
     
    15641578                        cout << statistic.row_size(s) << ", "; 
    15651579                } 
    1566  
    1567                 cout << endl; 
     1580                */ 
     1581 
     1582                //cout << endl; 
     1583 
     1584                // this->step_me(2); 
    15681585 
    15691586                if(should_add) 
     
    17221739                } 
    17231740 
    1724                  
     1741                /* 
    17251742                sizevector.clear(); 
    17261743                for(int s = 0;s<statistic.size();s++) 
     
    17311748                 
    17321749                cout << endl; 
     1750                */ 
    17331751 
    17341752                /* 
     
    19431961 
    19441962                                //// cout << "Sigma: " << sigma << endl; 
    1945                                 //// cout << "Nr. of runs: " << number_of_runs << endl; 
     1963                                //// cout << "Nr. of sigma runs: " << number_of_runs << endl; 
    19461964 
    19471965                                int dimension = (*s_ref)->vertices.size()-1; 
     
    20872105                                        sample_mat.ins_col(0,sample_coordinates); 
    20882106 
    2089                                         cout << sample_mat.cols() << ","; 
     2107                                        // cout << sample_mat.cols() << ","; 
    20902108                                } 
    20912109 
     
    20962114                        } 
    20972115 
    2098                         cout << endl; 
     2116                        // cout << endl; 
    20992117                        return sample_mat; 
    21002118                }