COIN-OR::LEMON - Graph Library

Changeset 628:aa1804409f29 in lemon for lemon/circulation.h


Ignore:
Timestamp:
04/14/09 10:35:38 (11 years ago)
Author:
Peter Kovacs <kpeter@…>
Branch:
default
Phase:
public
Message:

Exploit that the standard maps are reference maps (#190)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/circulation.h

    r606 r628  
    454454
    455455      for(NodeIt n(_g);n!=INVALID;++n) {
    456         _excess->set(n, (*_delta)[n]);
     456        (*_excess)[n] = (*_delta)[n];
    457457      }
    458458
    459459      for (ArcIt e(_g);e!=INVALID;++e) {
    460460        _flow->set(e, (*_lo)[e]);
    461         _excess->set(_g.target(e), (*_excess)[_g.target(e)] + (*_flow)[e]);
    462         _excess->set(_g.source(e), (*_excess)[_g.source(e)] - (*_flow)[e]);
     461        (*_excess)[_g.target(e)] += (*_flow)[e];
     462        (*_excess)[_g.source(e)] -= (*_flow)[e];
    463463      }
    464464
     
    483483
    484484      for(NodeIt n(_g);n!=INVALID;++n) {
    485         _excess->set(n, (*_delta)[n]);
     485        (*_excess)[n] = (*_delta)[n];
    486486      }
    487487
     
    489489        if (!_tol.positive((*_excess)[_g.target(e)] + (*_up)[e])) {
    490490          _flow->set(e, (*_up)[e]);
    491           _excess->set(_g.target(e), (*_excess)[_g.target(e)] + (*_up)[e]);
    492           _excess->set(_g.source(e), (*_excess)[_g.source(e)] - (*_up)[e]);
     491          (*_excess)[_g.target(e)] += (*_up)[e];
     492          (*_excess)[_g.source(e)] -= (*_up)[e];
    493493        } else if (_tol.positive((*_excess)[_g.target(e)] + (*_lo)[e])) {
    494494          _flow->set(e, (*_lo)[e]);
    495           _excess->set(_g.target(e), (*_excess)[_g.target(e)] + (*_lo)[e]);
    496           _excess->set(_g.source(e), (*_excess)[_g.source(e)] - (*_lo)[e]);
     495          (*_excess)[_g.target(e)] += (*_lo)[e];
     496          (*_excess)[_g.source(e)] -= (*_lo)[e];
    497497        } else {
    498498          Value fc = -(*_excess)[_g.target(e)];
    499499          _flow->set(e, fc);
    500           _excess->set(_g.target(e), 0);
    501           _excess->set(_g.source(e), (*_excess)[_g.source(e)] - fc);
     500          (*_excess)[_g.target(e)] = 0;
     501          (*_excess)[_g.source(e)] -= fc;
    502502        }
    503503      }
     
    538538            if(!_tol.less(fc, exc)) {
    539539              _flow->set(e, (*_flow)[e] + exc);
    540               _excess->set(v, (*_excess)[v] + exc);
     540              (*_excess)[v] += exc;
    541541              if(!_level->active(v) && _tol.positive((*_excess)[v]))
    542542                _level->activate(v);
    543               _excess->set(act,0);
     543              (*_excess)[act] = 0;
    544544              _level->deactivate(act);
    545545              goto next_l;
     
    547547            else {
    548548              _flow->set(e, (*_up)[e]);
    549               _excess->set(v, (*_excess)[v] + fc);
     549              (*_excess)[v] += fc;
    550550              if(!_level->active(v) && _tol.positive((*_excess)[v]))
    551551                _level->activate(v);
     
    562562            if(!_tol.less(fc, exc)) {
    563563              _flow->set(e, (*_flow)[e] - exc);
    564               _excess->set(v, (*_excess)[v] + exc);
     564              (*_excess)[v] += exc;
    565565              if(!_level->active(v) && _tol.positive((*_excess)[v]))
    566566                _level->activate(v);
    567               _excess->set(act,0);
     567              (*_excess)[act] = 0;
    568568              _level->deactivate(act);
    569569              goto next_l;
     
    571571            else {
    572572              _flow->set(e, (*_lo)[e]);
    573               _excess->set(v, (*_excess)[v] + fc);
     573              (*_excess)[v] += fc;
    574574              if(!_level->active(v) && _tol.positive((*_excess)[v]))
    575575                _level->activate(v);
     
    580580        }
    581581
    582         _excess->set(act, exc);
     582        (*_excess)[act] = exc;
    583583        if(!_tol.positive(exc)) _level->deactivate(act);
    584584        else if(mlevel==_node_num) {
Note: See TracChangeset for help on using the changeset viewer.