Ignore:
Timestamp:
Oct 2, 2007 9:16:23 AM (13 years ago)
Author:
forrest
Message:

for more repeatable runs and OsiPseudoCost?

File:
1 edited

Legend:

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

    r810 r814  
    406406    int numberColumns = solver_->getNumCols() ;
    407407    // Column copy of matrix
     408    bool allPlusOnes=true;
     409    bool allOnes=true;
     410    int problemType=-1;
    408411    const double * element = solver_->getMatrixByCol()->getElements();
    409412    const int * row = solver_->getMatrixByCol()->getIndices();
     
    441444          } else {
    442445            rhs[iRow] = rowLower[iRow]-rhs[iRow];
     446            if (problemType<0)
     447              problemType=3; // set cover
     448            else if (problemType!=3)
     449              problemType=4;
    443450          }
    444451        } else {
    445452          rhs[iRow] = rowUpper[iRow]-rhs[iRow];
     453            if (problemType<0)
     454              problemType=1; // set partitioning <=
     455            else if (problemType!=1)
     456              problemType=4;
    446457        }
    447458      } else {
    448459        rhs[iRow] = rowUpper[iRow]-rhs[iRow];
    449       }
     460        if (problemType<0)
     461          problemType=3; // set partitioning ==
     462        else if (problemType!=2)
     463          problemType=2;
     464      }
     465      if (fabs(rhs[iRow]-1.0)>1.0e-12)
     466        problemType=4;
    450467    }
    451468    if (continuousMultiplier) {
     
    460477          for (CoinBigIndex j=start;j<end;j++) {
    461478            double value = element[j];
    462             if (value!=1.0)
     479            if (value==1.0) {
     480            } else if (value==-1.0) {
    463481              rhs[row[j]]=-0.5;
    464             else if (value!=-1.0)
     482              allPlusOnes=false;
     483            } else {
    465484              rhs[row[j]]=-COIN_DBL_MAX;
     485              allOnes=false;
     486            }
    466487          }
    467488        }
     
    576597          }
    577598        }
     599      } else {
     600        // all integer
     601        problemType_= problemType;
     602#ifdef COIN_DEVELOP
     603        printf("Problem type is %d\n",problemType_);
     604#endif
    578605      }
    579606    }
     
    895922    eventHandler->setModel(this);
    896923  // set up for probing
    897   probingInfo_ = new CglTreeProbingInfo(solver_);
     924  //probingInfo_ = new CglTreeProbingInfo(solver_);
     925  probingInfo_=NULL;
    898926
    899927  // Try for dominated columns
     
    15481576  // For now just one model
    15491577  if (numberThreads_) {
     1578    nodeCompare_->sayThreaded(); // need to use addresses
    15501579    threadId = new pthread_t [numberThreads_];
    15511580    threadCount = new int [numberThreads_];
     
    47564785        else
    47574786          value = value -floor(value);
     4787#if 1
     4788        OsiBranchingInformation usefulInfo=usefulInformation();
     4789        OsiHotInfo hotInfo(solver_,&usefulInfo,&object,0);
     4790        if (branch) {
     4791          hotInfo.setUpStatus(iStatus);
     4792          hotInfo.setUpChange(changeInObjective);
     4793          //object->setUpEstimate(value);
     4794        } else {
     4795          hotInfo.setDownStatus(iStatus);
     4796          hotInfo.setDownChange(changeInObjective);
     4797          //object->setDownEstimate(value);
     4798        }
     4799        branchingMethod_->chooseMethod()->updateInformation(&usefulInfo,branch,&hotInfo);
     4800#else
    47584801        branchingMethod_->chooseMethod()->updateInformation(iObject,branch,changeInObjective,
    47594802                                                            value,iStatus);
     4803#endif
    47604804      }
    47614805    }
Note: See TracChangeset for help on using the changeset viewer.