Changeset 8498:75475c519e6d in orange


Ignore:
Timestamp:
07/28/11 08:55:31 (3 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
a39fd825faab20981b997988c88fedcda449adeb
Message:

Changed cooling and update schedule.

Location:
source/orangeplot
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • source/orangeplot/networkcurve.cpp

    r8495 r8498  
    294294} 
    295295 
    296 int NetworkCurve::fr(int steps, bool weighted, double temperature) 
     296int NetworkCurve::fr(int steps, bool weighted) 
    297297{ 
    298298    int i, j; 
     
    300300    NodeItem *u, *v; 
    301301    EdgeItem *edge; 
     302    m_stop_optimization = false; 
     303 
    302304    double rect[4] = {std::numeric_limits<double>::max(), 
    303305              std::numeric_limits<double>::max(), 
     
    321323    } 
    322324    QRectF data_r(rect[0], rect[1], rect[2]-rect[0], rect[3]-rect[1]); 
    323     qDebug() << data_r << data_rect(); 
    324325    double area = data_r.width() * data_r.height(); 
    325  
    326  
    327     int updateCheckpoint = steps / 50 + 1; 
     326    int updateCheckpoint = steps / 50; 
     327    if (updateCheckpoint == 0 || updateCheckpoint % 2 != 0) 
     328    { 
     329        updateCheckpoint += 1; 
     330    } 
    328331    double k2 = area / m_nodes.size(); 
    329332    double k = sqrt(k2); 
     
    331334    double kk2 = kk * kk; 
    332335 
    333     double cooling, cooling_switch, cooling_1, cooling_2; 
     336    double temperature, cooling, cooling_switch, cooling_1, cooling_2; 
    334337    temperature = sqrt(area) / 5; 
    335338    cooling = exp(log(k / 10 / temperature) / steps); 
     
    347350    } 
    348351 
    349     qDebug() << "k " << k; 
    350352    // iterations 
    351353    for (i = 0; i < steps; i++) 
     
    436438        } 
    437439 
     440        if (m_stop_optimization) 
     441        { 
     442            return 0; 
     443        } 
     444 
    438445        //temperature = temperature * cooling; 
    439         //qDebug() << count << " " << temperature << " " << (temperature > cooling_switch); 
    440         if ((int)temperature > cooling_switch) 
     446        if (floor(temperature) > cooling_switch) 
    441447        { 
    442448            temperature -= cooling_1; 
     
    446452            temperature -= cooling_2; 
    447453        } 
    448  
    449     } 
    450     data_r =  data_rect(); 
    451     area = data_r.width() * data_r.height(); 
    452     k = sqrt(data_r.width() * data_r.height() / m_nodes.size()); 
    453     qDebug() << "k " << k; 
     454    } 
     455 
    454456    return 0; 
    455457} 
     
    628630} 
    629631 
     632void NetworkCurve::stop_optimization() 
     633{ 
     634    m_stop_optimization = true; 
     635} 
  • source/orangeplot/networkcurve.h

    r8495 r8498  
    140140    virtual QRectF data_rect() const; 
    141141     
    142     int fr(int steps, bool weighted, double temperature); 
     142    int fr(int steps, bool weighted); 
    143143    int random(); 
    144144     
     
    157157    double max_node_size() const; 
    158158 
     159    void stop_optimization(); 
     160 
    159161private: 
    160162    Nodes m_nodes; 
     
    163165    double m_min_node_size; 
    164166    double m_max_node_size; 
     167    bool m_stop_optimization; 
    165168}; 
    166169 
  • source/orangeplot/networkcurve.sip

    r8496 r8498  
    8787    virtual QRectF data_rect() const; 
    8888     
    89     int fr(int steps, bool weighted, double temperature); 
     89    int fr(int steps, bool weighted); 
    9090    int random(); 
    9191     
     
    103103    void set_max_node_size(double size); 
    104104    double max_node_size() const; 
     105     
     106    void stop_optimization(); 
    105107}; 
    106108 
Note: See TracChangeset for help on using the changeset viewer.