Changeset 1357 for applications/robust

Show
Ignore:
Timestamp:
05/06/11 16:25:00 (13 years ago)
Author:
sindj
Message:

Opravena chyba s uvolnovanim pameti pri ruseni ve for_merging poli a dalsi drobne nedostatky. JS

Location:
applications/robust
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • applications/robust/main.cpp

    r1349 r1357  
    1818 
    1919const int emlig_size = 2; 
    20 const int utility_constant = 10; 
     20const int utility_constant = 5; 
    2121 
    2222 
     
    139139        vector<vector<string>> strings; 
    140140 
    141         char* file_strings[3] = {"c:\\dataCDClosePercDiff","c:\\ar_student_single","c:\\ar_cauchy_single"}; 
     141        char* file_strings[3] = {"c:\\dataADClosePercDiff","c:\\ar_student_single","c:\\ar_cauchy_single"}; 
    142142 
    143143        for(int i = 0;i<3;i++) 
     
    166166                } 
    167167        } 
     168 
     169         
    168170         
    169171        for(int j = 0;j<strings.size();j++) 
     
    171173                vector<vec> conditions; 
    172174                //emlig* emliga = new emlig(2); 
    173                 RARX* my_rarx = new RARX(2,10,false); 
     175                RARX* my_rarx = new RARX(2,8,false); 
    174176                 
    175177                 
  • applications/robust/robustlib.cpp

    r1349 r1357  
    169169                                                        base_ref++; 
    170170 
    171                                                         if(base_ref == simplex->vertices.end()) 
     171                                                        if(base_ref == simplex->vertices.end()&&simplex->vertices.size()!=2) 
    172172                                                        { 
    173173                                                                throw new exception("Equal local conditions are paired. If this ever occurs, the software has to be modified to include multiplied a_0!!"); 
    174174                                                        } 
     175                                                        /* 
     176                                                        else if(implex->vertices.size()==2) 
     177                                                        { 
     178                                                                return relative_coords[0]*exp 
     179                                                        } 
     180                                                        */ 
    175181                                                         
    176182                                                        order_correct = false;                                           
  • applications/robust/robustlib.h

    r1356 r1357  
    2222using namespace itpp; 
    2323 
    24 const double max_range = 50;//numeric_limits<double>::max()/10e-10; 
     24const double max_range = 5;//numeric_limits<double>::max()/10e-10; 
    2525 
    2626/// An enumeration of possible actions performed on the polyhedrons. We can merge them or split them. 
     
    924924                                        case 0: 
    925925                                                current_parent->neutralchildren.push_back(sender); 
    926                                                 current_parent->positiveneutralvertices.insert(sender->positiveneutralvertices.begin(),sender->positiveneutralvertices.end()); 
    927                                                 current_parent->negativeneutralvertices.insert(sender->negativeneutralvertices.begin(),sender->negativeneutralvertices.end());                                           
     926 
     927                                                if(level!=0) 
     928                                                { 
     929                                                        current_parent->positiveneutralvertices.insert(sender->positiveneutralvertices.begin(),sender->positiveneutralvertices.end()); 
     930                                                        current_parent->negativeneutralvertices.insert(sender->negativeneutralvertices.begin(),sender->negativeneutralvertices.end());                                           
     931                                                } 
     932                                                else 
     933                                                { 
     934                                                        current_parent->positiveneutralvertices.insert(*sender->vertices.begin()); 
     935                                                        current_parent->negativeneutralvertices.insert(*sender->vertices.begin()); 
     936                                                } 
    928937 
    929938                                                if(sender->totally_neutral) 
     
    13171326 
    13181327                                                current_vertex->raise_multiplicity(); 
    1319                                                 current_vertex->parentconditions.insert(condition_to_add); 
    1320  
    1321                                                 current_vertex->negativeneutralvertices.insert(current_vertex); 
    1322                                                 current_vertex->positiveneutralvertices.insert(current_vertex); 
     1328                                                current_vertex->parentconditions.insert(condition_to_add);                                               
    13231329                                        } 
    13241330                                        else 
     
    13671373                                for(list<polyhedron*>::iterator merge_ref = for_merging[i].begin();merge_ref!=for_merging[i].end();merge_ref++) 
    13681374                                { 
    1369                                         cout << (*merge_ref)->get_state(MERGE) << ","; 
    1370                                 } 
    1371  
    1372                                 cout << endl; 
     1375                                         
     1376                                        for(list<polyhedron*>::iterator par_ref = (*merge_ref)->children.begin();par_ref!=(*merge_ref)->children.end();par_ref++) 
     1377                                        { 
     1378                                                if(find((*par_ref)->parents.begin(),(*par_ref)->parents.end(),(*merge_ref))==(*par_ref)->parents.end()) 
     1379                                                { 
     1380                                                        cout << "Parent/child relations are not matched!" << endl; 
     1381                                                } 
     1382                                        } 
     1383                                         
     1384                                        //cout << (*merge_ref)->get_state(MERGE) << ","; 
     1385                                } 
     1386 
     1387                                // cout << endl; 
    13731388                        } 
    13741389                        */ 
     1390                         
     1391                         
    13751392 
    13761393                        cout << "Merging." << endl; 
     
    15911608                                                { 
    15921609                                                        (*grand_p_ref)->totallyneutralgrandchildren.erase(*merge_ref); 
    1593                                                 } 
     1610                                                }                                
     1611 
     1612                                                statistic.delete_polyhedron(k-1,*merge_ref); 
     1613 
    15941614                                                 
    1595                                                 for_splitting[k-1].remove(*merge_ref); 
    1596  
    1597                                                 statistic.delete_polyhedron(k-1,*merge_ref); 
    15981615 
    15991616                                                if(k==1) 
    1600                                                 { 
     1617                                                {                                                        
    16011618                                                        vertices_to_be_reduced.insert((vertex*)(*merge_ref)); 
     1619                                                        for_splitting[k-1].remove(*merge_ref); 
    16021620                                                } 
    16031621                                                else 
    16041622                                                { 
    1605                                                         delete *merge_ref; 
     1623                                                        delete (*merge_ref); 
     1624                                                        for_splitting[k-1].remove(*merge_ref); 
    16061625                                                } 
    16071626                                        } 
     
    16201639                                else 
    16211640                                { 
    1622                                         delete *vert_ref; 
     1641                                        delete (*vert_ref); 
    16231642                                } 
    16241643                        } 
     
    18121831                */ 
    18131832 
    1814                 cout << "Normalization factor: " << normalization_factor << endl;        
     1833                // cout << "Normalization factor: " << normalization_factor << endl;     
    18151834 
    18161835                log_nc = log(normalization_factor) + logfact(condition_order-number_of_parameters-2); 
     
    27082727                         
    27092728                        yt.ins(c_size,1.0); 
    2710                 } 
    2711                  
     2729                }                
     2730 
    27122731                if(yt.size() == posterior->number_of_parameters+1) 
    27132732                {