root/applications/robust/main.cpp @ 1299

Revision 1299, 5.4 kB (checked in by sindj, 13 years ago)

Skoro dodelano slucovani polyhedronu v pripade odstraneni podminky (bylo nutne udelat znovu, kvuli predchozi ztrate prace zpusebene budto SVN nebo mnou). JS

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