root/applications/robust/main.cpp @ 1299

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

Skoro dodelano slucovani polyhedronu v pripade odstraneni podminky (bylo nutne udelat znovu, kvuli predchozi ztrate prace zpusebene budto SVN nebo mnou). 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>
[1284]11#include <iostream>
[1282]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        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>>());
[1186]27
[1282]28        char* file_strings[3] = {"c:\\ar_normal.txt", "c:\\ar_student.txt", "c:\\ar_cauchy.txt"};
[1268]29       
[1282]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               
[1284]58                for(int i = 0;i<string_lists[j].size()-1;i++)
[1282]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
[1299]85                                       
86                                        //if(k>5)
87                                        //{
88                                        //      cout << "MaxLik coords:" << emliga->minimal_vertex->get_coordinates() << endl;
89                                        //}
90                                       
91                                }                               
92                               
[1282]93                        }
94
95                        //emliga->step_me(0);
[1284]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
[1282]105                        cout << "MaxLik coords:" << emliga->minimal_vertex->get_coordinates() << endl;
106                        cout << "Step: " << i << endl;
107                }
108
109                cout << "One experiment finished." << endl;
[1284]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();
[1282]119        }
[1299]120   
[1282]121
[1299]122        // emlig* emlig1 = new emlig(emlig_size);
123        // emlig* emlig2 = new emlig(emlig_size);
[1282]124       
[1267]125        /*
126        emlig1->set_correction_factors(4);
[1266]127
[1267]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                {
[1268]132                        cout << j << "    ";
133                       
[1267]134                        for(int i=0;i<(*vec_ref).size();i++)
135                        {
136                                cout << (*vec_ref)[i];
137                        }
138
139                        cout << endl;
140                }
[1268]141        }*/
142       
[1299]143        /*
144    vec condition5 = "-0.3 1.7 1.5";
145        emlig1->add_condition(condition5);
146       
[1282]147        vec condition1 = "1.0 1.0 1.01";
[1275]148        emlig1->add_condition(condition1);
[1299]149        emlig2->add_condition(condition1);
[1267]150
[1280]151        vec condition2 = "-1.0 1.0 1.0";
[1275]152        emlig1->add_condition(condition2);
[1299]153        emlig2->add_condition(condition2);
[1234]154
[1282]155        vec condition3 = "0.5 -1.01 1.0";
[1280]156        emlig1->add_condition(condition3);
[1299]157        emlig2->add_condition(condition3);
158       
[1280]159
160        vec condition4 = "-0.5 -1.0 1.0";
161        emlig1->add_condition(condition4);
[1299]162        cout << "************************************************" << endl;
163        emlig2->add_condition(condition4);
164        cout << "************************************************" << endl;
[1280]165
[1299]166        //cout << emlig1->minimal_vertex->get_coordinates();
[1275]167
[1299]168        emlig1->remove_condition(condition5);
169        cout << "************************************************" << endl;
170       
171        //emlig1->step_me(0);
172        //emlig2->step_me(0);
173       
[1282]174
175        // DA SE POUZIT PRO VYPIS DO SOUBORU
[1275]176        // emlig1->step_me(0);
177
178        //emlig1->remove_condition(condition1);
179
180       
181
182       
183        /*
[1282]184       
185        for(int i = 0;i<100;i++)
[1219]186        {
[1282]187                cout << endl << "Step:" << i << endl;           
[1208]188
[1268]189                double condition[emlig_size+1];         
[1220]190
[1268]191                for(int k = 0;k<=emlig_size;k++)
192                {
[1272]193                        condition[k] = (rand()-RAND_MAX/2)/1000.0;             
[1268]194                }
195                       
[1216]196
[1268]197                vec* condition_vec = new vec(condition,emlig_size+1);
[1219]198                emlig1->add_condition(*condition_vec);
[1271]199
[1272]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                */
[1275]206                /*
[1271]207                cout << emlig1->statistic_rowsize(emlig_size) << endl << endl;
[1268]208       
[1272]209                /*
[1271]210                if(i-emlig1->number_of_parameters >= 0)
211                {
212                        pause(30);
213                }
[1272]214                */
[1219]215
[1271]216                // emlig1->step_me(i);
[1219]217               
[1272]218                /*
[1219]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                }
[1272]224                */
[1275]225        //}
226   
[1219]227
228
229       
230        /*
231        emlig1->step_me(1);
232
233        vec condition = "2.0 0.0 1.0"; 
234
[1208]235        emlig1->add_condition(condition);
236
[1216]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
[1219]243        emlig1->step_me(2);
[1216]244
[1219]245        condition = "2.0 1.0 0.0";
[1216]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        }
[1219]254        */
[1216]255
[976]256        return 0;
257}
258
[1282]259
Note: See TracBrowser for help on using the browser.