Ignore:
Timestamp:
Jul 15, 2008 11:57:59 AM (12 years ago)
Author:
forrest
Message:

for threads and hotstart

File:
1 edited

Legend:

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

    r979 r1003  
    64726472                const int * originalColumns = preProcess ? process.originalColumns() : NULL;
    64736473                if (solutionIn&&useSolution>=0) {
     6474                  if (!prioritiesIn) {
     6475                    int n;
     6476                    if (preProcess) {
     6477                      int numberColumns = babModel_->getNumCols();
     6478                      // extend arrays in case SOS
     6479                      n = originalColumns[numberColumns-1]+1;
     6480                    } else {
     6481                      n = babModel_->getNumCols();
     6482                    }
     6483                    prioritiesIn = new int[n];
     6484                    for (int i=0;i<n;i++)
     6485                      prioritiesIn[i]=100;
     6486                  }
    64746487                  if (preProcess) {
    64756488                    int numberColumns = babModel_->getNumCols();
     
    64976510                        prioritiesIn2[i]=prioritiesIn2[iColumn];
    64986511                    }
    6499                     babModel_->setHotstartSolution(solutionIn2,prioritiesIn2);
     6512                    if (useSolution)
     6513                      babModel_->setHotstartSolution(solutionIn2,prioritiesIn2);
     6514                    else
     6515                      babModel_->setBestSolution(solutionIn2,numberColumns,
     6516                                                 COIN_DBL_MAX,true);
    65006517                    delete [] solutionIn2;
    65016518                    delete [] prioritiesIn2;
    65026519                  } else {
    6503                     babModel_->setHotstartSolution(solutionIn,prioritiesIn);
     6520                    if (useSolution)
     6521                      babModel_->setHotstartSolution(solutionIn,prioritiesIn);
     6522                    else
     6523                      babModel_->setBestSolution(solutionIn,babModel_->getNumCols(),
     6524                                                 COIN_DBL_MAX,true);
    65046525                  }
    65056526                }
     
    74117432                }
    74127433#endif
    7413                 if (useSolution>0) {
     7434                if (useSolution>1) {
    74147435                  // use hotstart to try and find solution
    74157436                  CbcHeuristicPartial partial(*babModel_,10000,useSolution);
     
    94149435                  delete [] newMasks;
    94159436                }
    9416                 if (printMode>2) {
     9437                if (printMode>2&&printMode<5) {
    94179438                  for (iRow=0;iRow<numberRows;iRow++) {
    94189439                    int type=printMode-3;
     
    94469467                double * columnUpper = lpSolver->columnUpper();
    94479468                if (printMode!=2) {
     9469                  if (printMode==5) {
     9470                    if (lengthName)
     9471                      fprintf(fp,"name");
     9472                    else
     9473                      fprintf(fp,"number");
     9474                    fprintf(fp,",solution\n");
     9475                  }
    94489476                  for (iColumn=0;iColumn<numberColumns;iColumn++) {
    94499477                    int type=(printMode>3) ? 1 :0;
     
    94659493                      type =0;
    94669494                    if (type) {
    9467                       fprintf(fp,"%7d ",iColumn);
    9468                       if (lengthName)
    9469                         fprintf(fp,format,columnNames[iColumn].c_str());
    9470                       fprintf(fp,"%15.8g        %15.8g\n",
    9471                               primalColumnSolution[iColumn],
    9472                               dualColumnSolution[iColumn]);
    9473                     }
     9495                      if (printMode!=5) {
     9496                        fprintf(fp,"%7d ",iColumn);
     9497                        if (lengthName)
     9498                          fprintf(fp,format,columnNames[iColumn].c_str());
     9499                        fprintf(fp,"%15.8g        %15.8g\n",
     9500                                primalColumnSolution[iColumn],
     9501                                dualColumnSolution[iColumn]);
     9502                      } else {
     9503                        char temp[100];
     9504                        if (lengthName)
     9505                          sprintf(temp,format,columnNames[iColumn].c_str());
     9506                        else
     9507                          sprintf(temp,"%7d ",iColumn);
     9508                        sprintf(temp+strlen(temp),",%15.8g",
     9509                                primalColumnSolution[iColumn]);
     9510                        int n=strlen(temp);
     9511                        int k=0;
     9512                        for (int i=0;i<n+1;i++) {
     9513                          if (temp[i]!=' ')
     9514                            temp[k++]=temp[i];
     9515                        }
     9516                        fprintf(fp,"%s\n",temp);
     9517                      }
     9518                    }
    94749519                  }
    94759520                } else {
Note: See TracChangeset for help on using the changeset viewer.