root/applications/robust/main.cpp @ 1282

Revision 1282, 4.4 kB (checked in by sindj, 13 years ago)

Prvni pokusy s robustnim AR modelem. JS

RevLine 
[976]1
2/*!
3\file
4\brief Robust
5\author Vasek Smidl
6
7 */
8
9#include "robustlib.h"
[1216]10#include <vector>
[1282]11#include <iostream>
12#include <fstream>
13
[1208]14using namespace itpp;
[1275]15//using namespace bdm;
[976]16
[1275]17const int emlig_size = 2;
[1268]18
[1272]19
[976]20int main ( int argc, char* argv[] ) {
21       
[1282]22       
23       
24       
25        vector<vector<vector<string>>> string_lists;
26        string_lists.push_back(vector<vector<string>>());
27        string_lists.push_back(vector<vector<string>>());
28        string_lists.push_back(vector<vector<string>>());
[1186]29
[1282]30        char* file_strings[3] = {"c:\\ar_normal.txt", "c:\\ar_student.txt", "c:\\ar_cauchy.txt"};
[1268]31       
[1282]32
33        for(int i = 0;i<3;i++)
34        {       
35                ifstream myfile(file_strings[i]);
36                if (myfile.is_open())
37                {
38                        while ( myfile.good() )
39                        {
40                                string line;
41                                getline(myfile,line);
42                               
43                                vector<string> parsed_line;
44                                while(line.find(',') != string::npos)
45                                {
46                                        int loc = line.find(',');
47                                        parsed_line.push_back(line.substr(0,loc));
48                                        line.erase(0,loc+1);                                   
49                                }                               
50
51                                string_lists[i].push_back(parsed_line);
52                        }
53                        myfile.close();
54                }
55        }
56
57        for(int j = 0;j<string_lists.size();j++)
58        { 
59               
60                for(int i = 0;i<string_lists[j].size();i++)
61                {
62                        vector<vec> conditions;
63                        emlig* emliga = new emlig(2);
64                        for(int k = 1;k<string_lists[j][i].size();k++)
65                        {
66                                vec condition;
67                                //condition.ins(0,1);                           
68                                condition.ins(0,string_lists[j][i][k]);                         
69                                conditions.push_back(condition);
70
71                                //cout << "orig:" << condition << endl;
72
73                                if(conditions.size()>1)
74                                {               
75                                        conditions[k-2].ins(0,string_lists[j][i][k]);
76                                       
77                                }
78
79                                if(conditions.size()>2)
80                                {
81                                        conditions[k-3].ins(0,string_lists[j][i][k]);
82
83                                        //cout << "modi:" << conditions[k-3] << endl;
84
85                                        emliga->add_condition(conditions[k-3]);
86
87                                        /*
88                                        if(k>5)
89                                        {
90                                                cout << "MaxLik coords:" << emliga->minimal_vertex->get_coordinates() << endl;
91                                        }
92                                        */
93                                }
94                        }
95
96                        //emliga->step_me(0);
97                        cout << "MaxLik coords:" << emliga->minimal_vertex->get_coordinates() << endl;
98                        cout << "Step: " << i << endl;
99                }
100
101                cout << "One experiment finished." << endl;
102        }
103
104       
105
106        //emlig* emlig1 = new emlig(emlig_size);
107       
[1267]108        /*
109        emlig1->set_correction_factors(4);
[1266]110
[1267]111        for(int j = 0;j<emlig1->correction_factors.size();j++)
112        {
113                for(set<my_ivec>::iterator vec_ref = emlig1->correction_factors[j].begin();vec_ref!=emlig1->correction_factors[j].end();vec_ref++)
114                {
[1268]115                        cout << j << "    ";
116                       
[1267]117                        for(int i=0;i<(*vec_ref).size();i++)
118                        {
119                                cout << (*vec_ref)[i];
120                        }
121
122                        cout << endl;
123                }
[1268]124        }*/
125       
[1282]126    /*
127        vec condition1 = "1.0 1.0 1.01";
[1275]128        emlig1->add_condition(condition1);
[1267]129
[1280]130        vec condition2 = "-1.0 1.0 1.0";
[1275]131        emlig1->add_condition(condition2);
[1234]132
[1282]133        vec condition3 = "0.5 -1.01 1.0";
[1280]134        emlig1->add_condition(condition3);
135
136        vec condition4 = "-0.5 -1.0 1.0";
137        emlig1->add_condition(condition4);
138
[1282]139        cout << emlig1->minimal_vertex->get_coordinates();
[1275]140
[1282]141        //vec condition5 = "-0.3 1.7 1.5";
142        //emlig1->add_condition(condition5);
143
144        // DA SE POUZIT PRO VYPIS DO SOUBORU
[1275]145        // emlig1->step_me(0);
146
147        //emlig1->remove_condition(condition1);
148
149       
150
151       
152        /*
[1282]153       
154        for(int i = 0;i<100;i++)
[1219]155        {
[1282]156                cout << endl << "Step:" << i << endl;           
[1208]157
[1268]158                double condition[emlig_size+1];         
[1220]159
[1268]160                for(int k = 0;k<=emlig_size;k++)
161                {
[1272]162                        condition[k] = (rand()-RAND_MAX/2)/1000.0;             
[1268]163                }
164                       
[1216]165
[1268]166                vec* condition_vec = new vec(condition,emlig_size+1);
[1219]167                emlig1->add_condition(*condition_vec);
[1271]168
[1272]169                /*
170                for(polyhedron* toprow_ref = emlig1->statistic.rows[emlig_size]; toprow_ref != emlig1->statistic.end_poly; toprow_ref = toprow_ref->next_poly)
171                {
172                        cout << ((toprow*)toprow_ref)->probability << endl;
173                }
174                */
[1275]175                /*
[1271]176                cout << emlig1->statistic_rowsize(emlig_size) << endl << endl;
[1268]177       
[1272]178                /*
[1271]179                if(i-emlig1->number_of_parameters >= 0)
180                {
181                        pause(30);
182                }
[1272]183                */
[1219]184
[1271]185                // emlig1->step_me(i);
[1219]186               
[1272]187                /*
[1219]188                vector<int> sizevector;
189                for(int s = 0;s<=emlig1->number_of_parameters;s++)
190                {
191                        sizevector.push_back(emlig1->statistic_rowsize(s));
192                }
[1272]193                */
[1275]194        //}
195   
[1219]196
197
198       
199        /*
200        emlig1->step_me(1);
201
202        vec condition = "2.0 0.0 1.0"; 
203
[1208]204        emlig1->add_condition(condition);
205
[1216]206        vector<int> sizevector;
207        for(int s = 0;s<=emlig1->number_of_parameters;s++)
208        {
209                sizevector.push_back(emlig1->statistic_rowsize(s));
210        }
211
[1219]212        emlig1->step_me(2);
[1216]213
[1219]214        condition = "2.0 1.0 0.0";
[1216]215
216        emlig1->add_condition(condition);
217
218        sizevector.clear();
219        for(int s = 0;s<=emlig1->number_of_parameters;s++)
220        {
221                sizevector.push_back(emlig1->statistic_rowsize(s));
222        }
[1219]223        */
[1216]224
[976]225        return 0;
226}
227
[1282]228
Note: See TracBrowser for help on using the browser.