Ignore:
Timestamp:
Aug 10, 2007 7:52:05 AM (13 years ago)
Author:
forrest
Message:

to make easier to use as function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcModel.cpp

    r724 r738  
    22612261      pthread_cond_signal(threadInfo[i].condition2); // unlock
    22622262      //if (!stopped)
    2263         pthread_join(threadId[i],NULL);
     2263      //pthread_join(threadId[i],NULL);
     2264      int returnCode;
     2265      returnCode=pthread_join(threadId[i],NULL);
     2266      assert (!returnCode);
    22642267        //else
    22652268        //pthread_kill(threadId[i]); // kill rather than try and synchronize
     
    30883091{
    30893092  // resize best solution if exists
    3090   if (bestSolution_) {
     3093  if (bestSolution_&&solver&&solver_) {
    30913094    int nOld = solver_->getNumCols();
    30923095    int nNew = solver->getNumCols();
     
    31133116  { delete emptyWarmStart_  ;
    31143117    emptyWarmStart_ = 0 ; }
     3118  bestSolutionBasis_ = CoinWarmStartBasis();
    31153119/*
    31163120  Initialize integer variable vector.
     
    33893393    addedCuts_ = NULL;
    33903394  }
     3395  bestSolutionBasis_ = rhs.bestSolutionBasis_;
    33913396  nextRowCut_ = NULL;
    33923397  currentNode_ = NULL;
     
    36503655      addedCuts_ = NULL;
    36513656    }
     3657    bestSolutionBasis_ = rhs.bestSolutionBasis_;
    36523658    nextRowCut_ = NULL;
    36533659    currentNode_ = NULL;
     
    49074913            // add to global list
    49084914            OsiRowCut newCut(*thisCut);
    4909             newCut.setGloballyValid(2);
     4915            newCut.setGloballyValid(true);
    49104916            newCut.mutableRow().setTestForDuplicateIndex(false);
    49114917            globalCuts_.insert(newCut) ;
     
    49274933              // add to global list
    49284934              OsiRowCut newCut(*thisCut);
    4929               newCut.setGloballyValid(2);
     4935              newCut.setGloballyValid(true);
    49304936              newCut.mutableRow().setTestForDuplicateIndex(false);
    49314937              globalCuts_.insert(newCut) ;
     
    49394945            // add to global list
    49404946            OsiColCut newCut(*thisCut);
    4941             newCut.setGloballyValid(2);
     4947            newCut.setGloballyValid(true);
    49424948            globalCuts_.insert(newCut) ;
    49434949          }
     
    51625168            // add to global list
    51635169            OsiRowCut newCut(*thisCut);
    5164             newCut.setGloballyValid(2);
     5170            newCut.setGloballyValid(true);
    51655171            newCut.mutableRow().setTestForDuplicateIndex(false);
    51665172            globalCuts_.insert(newCut) ;
     
    51735179            // add to global list
    51745180            OsiColCut newCut(*thisCut);
    5175             newCut.setGloballyValid(2);
     5181            newCut.setGloballyValid(true);
    51765182            globalCuts_.insert(newCut) ;
    51775183          }
     
    53475353*/
    53485354    int numberRowsNow = solver_->getNumRows() ;
     5355#ifndef NDEBUG
    53495356    assert(numberRowsNow == numberRowsAtStart+lastNumberCuts) ;
     5357#else
     5358    // ? maybe clue to threaded problems
     5359    if(numberRowsNow != numberRowsAtStart+lastNumberCuts) {
     5360      fprintf(stderr,"*** threaded error - numberRowsNow(%d) != numberRowsAtStart(%d)+lastNumberCuts(%d)\n",
     5361              numberRowsNow,numberRowsAtStart,lastNumberCuts);
     5362      fprintf(stdout,"*** threaded error - numberRowsNow(%d) != numberRowsAtStart(%d)+lastNumberCuts(%d)\n",
     5363              numberRowsNow,numberRowsAtStart,lastNumberCuts);
     5364      abort();
     5365    }
     5366#endif
    53505367    int numberToAdd = theseCuts.sizeRowCuts() ;
    53515368    numberNewCuts_ = lastNumberCuts+numberToAdd ;
     
    73277344        solver_->setWarmStart(slack);
    73287345        delete slack ;
     7346      } else {
     7347        if (bestSolutionBasis_.getNumStructural()==solver_->getNumCols()&&
     7348            bestSolutionBasis_.getNumArtificial()==solver_->getNumRows())
     7349          solver_->setWarmStart(&bestSolutionBasis_);
    73297350      }
    73307351      // Give a hint to do dual
     
    73787399      objectiveValue = solver_->getObjValue()*solver_->getObjSense();
    73797400    }
     7401    bestSolutionBasis_ = CoinWarmStartBasis();
    73807402   
    73817403    /*
     
    75277549                        // add to global list
    75287550                        OsiRowCut newCut(*thisCut);
    7529                         newCut.setGloballyValid(2);
     7551                        newCut.setGloballyValid(true);
    75307552                        newCut.mutableRow().setTestForDuplicateIndex(false);
    75317553                        globalCuts_.insert(newCut) ;
     
    77047726              // add to global list
    77057727              OsiRowCut newCut(*thisCut);
    7706               newCut.setGloballyValid(2);
     7728              newCut.setGloballyValid(true);
    77077729              newCut.mutableRow().setTestForDuplicateIndex(false);
    77087730              globalCuts_.insert(newCut) ;
     
    77187740          // add to global list
    77197741          OsiColCut newCut(*thisCut);
    7720           newCut.setGloballyValid(2);
     7742          newCut.setGloballyValid(true);
    77217743          globalCuts_.insert(newCut) ;
    77227744        }
     
    92039225        int start = rowStart[iRow];
    92049226        thisCut.setRow(rowLength[iRow],column+start,elementByRow+start,false);
    9205         thisCut.setGloballyValid(2);
     9227        thisCut.setGloballyValid(true);
    92069228        globalCuts_.insert(thisCut) ;
    92079229      }
     
    92269248{
    92279249  OsiRowCut newCut(cut);
    9228   newCut.setGloballyValid(2);
     9250  newCut.setGloballyValid(true);
    92299251  newCut.mutableRow().setTestForDuplicateIndex(false);
    92309252  globalCuts_.insert(newCut) ;
Note: See TracChangeset for help on using the changeset viewer.