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

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • 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                {