Changeset 648 for branches/devel/Cbc/src


Ignore:
Timestamp:
Jun 27, 2007 6:37:20 AM (12 years ago)
Author:
forrest
Message:

for parallel

Location:
branches/devel/Cbc/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/devel/Cbc/src/CbcCutGenerator.cpp

    r642 r648  
    385385      for (k = numberRowCutsBefore;k<numberRowCutsAfter;k++) {
    386386        OsiRowCut thisCut = cs.rowCut(k) ;
     387        if (thisCut.lb()>thisCut.ub()||
     388            thisCut.lb()>1.0e8||
     389            thisCut.ub()<-1.0e8)
     390          printf("cut from %s has bounds %g and %g!\n",
     391                 generatorName_,thisCut.lb(),thisCut.ub());
    387392        if (thisCut.lb()<=thisCut.ub()) {
    388393          /* check size of elements.
  • branches/devel/Cbc/src/CbcModel.cpp

    r642 r648  
    14971497          threadStats[4]++;
    14981498          continue;
     1499        } else {
     1500          // now check if any have just finished
     1501          for (iThread=0;iThread<numberThreads_;iThread++) {
     1502            if (threadId[iThread]) {
     1503              if (threadInfo[iThread].returnCode==1)
     1504                break;
     1505            }
     1506          }
     1507          if (iThread<numberThreads_) {
     1508            unlockThread();
     1509            locked = false;
     1510            threadModel[iThread]->moveToModel(this,1);
     1511            assert (threadInfo[iThread].returnCode==1);
     1512            // say available
     1513            threadInfo[iThread].returnCode=-1;
     1514            threadStats[4]++;
     1515            continue;
     1516          }
    14991517        }
    15001518      }
     
    46514669        countRowCuts[i] += numberRowCutsAfter-numberRowCutsBefore ;
    46524670       
     4671        bool dodgyCuts=false;
    46534672        for (j = numberRowCutsBefore;j<numberRowCutsAfter;j++) {
     4673          const OsiRowCut * thisCut = theseCuts.rowCutPtr(j) ;
     4674          if (thisCut->lb()>1.0e10||thisCut->ub()<-1.0e10) {
     4675            dodgyCuts=true;
     4676            break;
     4677          }
    46544678          whichGenerator_[numberBefore++] = i ;
    4655           const OsiRowCut * thisCut = theseCuts.rowCutPtr(j) ;
    46564679          if (thisCut->lb()>thisCut->ub())
    46574680            violated=-2; // sub-problem is infeasible
     
    46624685            newCut.mutableRow().setTestForDuplicateIndex(false);
    46634686            globalCuts_.insert(newCut) ;
     4687          }
     4688        }
     4689        if (dodgyCuts) {
     4690          for (int k=numberRowCutsAfter-1;k>=j;k--) {
     4691            const OsiRowCut * thisCut = theseCuts.rowCutPtr(k) ;
     4692            if (thisCut->lb()>thisCut->ub())
     4693              violated=-2; // sub-problem is infeasible
     4694            if (thisCut->lb()>1.0e10||thisCut->ub()<-1.0e10)
     4695              theseCuts.eraseRowCut(k);
     4696          }
     4697          numberRowCutsAfter = theseCuts.sizeRowCuts() ;
     4698          for (;j<numberRowCutsAfter;j++) {
     4699            const OsiRowCut * thisCut = theseCuts.rowCutPtr(j) ;
     4700            whichGenerator_[numberBefore++] = i ;
     4701            if (thisCut->globallyValid()) {
     4702              // add to global list
     4703              OsiRowCut newCut(*thisCut);
     4704              newCut.setGloballyValid(2);
     4705              newCut.mutableRow().setTestForDuplicateIndex(false);
     4706              globalCuts_.insert(newCut) ;
     4707            }
    46644708          }
    46654709        }
     
    48394883        if (numberRowCuts) {
    48404884          for (j=0;j<numberRowCuts;j++) {
    4841             theseCuts.insert(eachCuts[i].rowCut(j));
     4885            const OsiRowCut * thisCut = eachCuts[i].rowCutPtr(j) ;
     4886            if (thisCut->lb()<=1.0e10&&thisCut->ub()>=-1.0e10)
     4887              theseCuts.insert(eachCuts[i].rowCut(j));
    48424888          }
    48434889          if (generator_[i]->mustCallAgain())
     
    1033410380#if 1
    1033510381    if(stuff->saveStuff[0]!=searchStrategy_) {
     10382#ifdef COIN_DEVELOP
    1033610383      printf("changing searchStrategy from %d to %d\n",
    1033710384             baseModel->searchStrategy_,searchStrategy_);
     10385#endif
    1033810386      baseModel->searchStrategy_=searchStrategy_;
    1033910387    }
    1034010388    if(stuff->saveStuff[1]!=stateOfSearch_) {
     10389#ifdef COIN_DEVELOP
    1034110390      printf("changing stateOfSearch from %d to %d\n",
    1034210391             baseModel->stateOfSearch_,stateOfSearch_);
     10392#endif
    1034310393      baseModel->stateOfSearch_=stateOfSearch_;
    1034410394    }
  • branches/devel/Cbc/src/CbcSolver.cpp

    r642 r648  
    15651565    parameters[whichParam(SUBSTITUTION,numberParameters,parameters)].setIntValue(substitution);
    15661566    parameters[whichParam(DUALIZE,numberParameters,parameters)].setIntValue(dualize);
    1567     model.setNumberBeforeTrust(5);
     1567    model.setNumberBeforeTrust(10);
    15681568    parameters[whichParam(NUMBERBEFORE,numberParameters,parameters)].setIntValue(5);
    15691569    parameters[whichParam(MAXNODES,numberParameters,parameters)].setIntValue(model.getMaximumNodes());
     
    33883388              if (type==MIPLIB) {
    33893389                if (babModel->numberStrong()==5&&babModel->numberBeforeTrust()==5)
    3390                   babModel->setNumberBeforeTrust(50);
     3390                  babModel->setNumberBeforeTrust(10);
    33913391              }
    33923392              // add cut generators if wanted
Note: See TracChangeset for help on using the changeset viewer.