Ignore:
Timestamp:
Oct 8, 2008 4:22:42 AM (13 years ago)
Author:
forrest
Message:

changes for cbc event handler and multiple factorizations

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Clp/src/ClpFactorization.cpp

    r1286 r1287  
    7777// Copy constructor
    7878//-------------------------------------------------------------------
    79 ClpFactorization::ClpFactorization (const ClpFactorization & rhs) :
     79ClpFactorization::ClpFactorization (const ClpFactorization & rhs,
     80                                    int dummyDenseIfSmaller) :
    8081   CoinFactorization(rhs)
    8182{
     
    11411142    else if (denseIfSmaller<=goSmallThreshold_)
    11421143      goDense=2;
     1144  } else if (denseIfSmaller<0) {
     1145    if (-denseIfSmaller<=goDenseThreshold_)
     1146      goDense=1;
     1147    else if (-denseIfSmaller<=goSmallThreshold_)
     1148      goDense=2;
    11431149  }
    11441150  if (rhs.coinFactorizationA_&&!goDense)
     
    11461152  else
    11471153    coinFactorizationA_=NULL;
    1148   if (rhs.coinFactorizationB_)
     1154  if (rhs.coinFactorizationB_&&(denseIfSmaller>=0||!goDense))
    11491155    coinFactorizationB_ = rhs.coinFactorizationB_->clone();
    1150   //coinFactorizationB_ = new CoinSmallFactorization(*(rhs.coinFactorizationB_));
    11511156  else
    11521157    coinFactorizationB_=NULL;
     
    11571162    else
    11581163      coinFactorizationB_ = new CoinSimpFactorization();
    1159     assert(rhs.coinFactorizationA_);
    1160     coinFactorizationB_->maximumPivots(rhs.coinFactorizationA_->maximumPivots());
    1161     coinFactorizationB_->pivotTolerance(rhs.coinFactorizationA_->pivotTolerance());
    1162     coinFactorizationB_->zeroTolerance(rhs.coinFactorizationA_->zeroTolerance());
     1164    if (rhs.coinFactorizationA_) {
     1165      coinFactorizationB_->maximumPivots(rhs.coinFactorizationA_->maximumPivots());
     1166      coinFactorizationB_->pivotTolerance(rhs.coinFactorizationA_->pivotTolerance());
     1167      coinFactorizationB_->zeroTolerance(rhs.coinFactorizationA_->zeroTolerance());
     1168    } else {
     1169      assert (coinFactorizationB_);
     1170      coinFactorizationB_->maximumPivots(rhs.coinFactorizationB_->maximumPivots());
     1171      coinFactorizationB_->pivotTolerance(rhs.coinFactorizationB_->pivotTolerance());
     1172      coinFactorizationB_->zeroTolerance(rhs.coinFactorizationB_->zeroTolerance());
     1173    }
    11631174  }
    11641175  assert (!coinFactorizationA_||!coinFactorizationB_);
     
    23632374      coinFactorizationA_->setCollectStatistics(false);
    23642375    } else {
    2365       returnCode= coinFactorizationB_->updateColumnFT(regionSparse1,
    2366                                                      regionSparse2);
    2367       coinFactorizationB_->updateColumn(regionSparse1,
    2368                                         regionSparse3,
    2369                                         noPermuteRegion3);
     2376#if 0
     2377      CoinSimpFactorization * fact =
     2378        dynamic_cast< CoinSimpFactorization*>(coinFactorizationB_);
     2379      if (!fact) {
     2380        returnCode= coinFactorizationB_->updateColumnFT(regionSparse1,
     2381                                                        regionSparse2);
     2382        coinFactorizationB_->updateColumn(regionSparse1,
     2383                                          regionSparse3,
     2384                                          noPermuteRegion3);
     2385      } else {
     2386        returnCode= fact->updateTwoColumnsFT(regionSparse1,
     2387                                             regionSparse2,
     2388                                             regionSparse3,
     2389                                             noPermuteRegion3);
     2390      }
     2391#else
     2392      returnCode= coinFactorizationB_->updateTwoColumnsFT(regionSparse1,
     2393                                                          regionSparse2,
     2394                                                          regionSparse3,
     2395                                                          noPermuteRegion3);
     2396#endif
    23702397    }
    23712398#ifdef CLP_FACTORIZATION_INSTRUMENT
Note: See TracChangeset for help on using the changeset viewer.