Changeset 390


Ignore:
Timestamp:
Jun 26, 2006 12:11:00 PM (13 years ago)
Author:
forrest
Message:

for sos2 and prohibited

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

Legend:

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

    r356 r390  
    2323THIS SOFTWARE.
    2424****************************************************************/
    25 #ifdef CBC_AMPL
     25
    2626#include "getstub.h"
    2727#include "Cbc_ampl.h"
     
    6363    *blank=' ';
    6464    phrase=blank+1; /* move on */
    65     saveInfo->arguments[saveInfo->numberArguments++]=strdup(phrase);
    66   } else {
     65    if (strlen(phrase))
     66      saveInfo->arguments[saveInfo->numberArguments++]=strdup(phrase);
     67  } else if (strlen(phrase)) {
    6768    saveInfo->arguments=(char **) realloc(saveInfo->arguments,(saveInfo->numberArguments+1)*sizeof(char *));
    6869    saveInfo->arguments[saveInfo->numberArguments++]=strdup(phrase);
     
    554555  write_sol(buf,info->primalSolution,info->dualSolution,&Oinfo);
    555556}
    556 
    557 #endif
  • branches/devel/Cbc/src/CoinSolve.cpp

    r364 r390  
    22// Corporation and others.  All Rights Reserved.
    33   
     4#include "CbcConfig.h"
    45#include "CoinPragma.hpp"
    56
     
    7980
    8081#include "OsiClpSolverInterface.hpp"
    81 #ifdef CBC_AMPL
     82#ifdef COIN_HAS_ASL
    8283#include "Cbc_ampl.h"
    8384static bool usingAmpl=false;
     
    497498    double * sosReference = NULL;
    498499    int * sosPriority=NULL;
    499 #ifdef CBC_AMPL
     500#ifdef COIN_HAS_ASL
    500501    ampl_info info;
    501502    if (argc>2&&!strcmp(argv[2],"-AMPL")) {
     
    824825            verbose &= ~8;
    825826          }
    826 #ifdef CBC_AMPL
     827#ifdef COIN_HAS_ASL
    827828          if (verbose<4&&usingAmpl)
    828829            verbose +=4;
     
    12451246          // action
    12461247          if (type==EXIT) {
    1247 #ifdef CBC_AMPL
     1248#ifdef COIN_HAS_ASL
    12481249            if(usingAmpl) {
    12491250              if (info.numberIntegers||info.numberBinary) {
     
    14031404                model2=lpSolver;
    14041405              }
    1405 #ifdef CBC_AMPL
     1406#ifdef COIN_HAS_ASL
    14061407              if (usingAmpl) {
    14071408                double value = model2->getObjValue()*model2->getObjSense();
     
    17111712                  int translate[]={9999,0,0,-1,2,3};
    17121713                  process.messageHandler()->setLogLevel(babModel->logLevel());
     1714#ifdef COIN_HAS_ASL
     1715                  if (info.numberSos&&doSOS&&usingAmpl) {
     1716                    // SOS
     1717                    numberSOS = info.numberSos;
     1718                    sosStart = info.sosStart;
     1719                    sosIndices = info.sosIndices;
     1720                  }
     1721#endif
     1722                  if (numberSOS&&doSOS) {
     1723                    // SOS
     1724                    int numberColumns = saveSolver->getNumCols();
     1725                    char * prohibited = new char[numberColumns];
     1726                    memset(prohibited,0,numberColumns);
     1727                    int n=sosStart[numberSOS];
     1728                    for (int i=0;i<n;i++) {
     1729                      int iColumn = sosIndices[i];
     1730                      prohibited[iColumn]=1;
     1731                    }
     1732                    process.passInProhibited(prohibited,numberColumns);
     1733                    delete [] prohibited;
     1734                  }
    17131735                  solver2 = process.preProcessNonDefault(*saveSolver,translate[preProcess],10);
    17141736                  // Tell solver we are not in Branch and Cut
     
    17171739                    solver2->setHintParam(OsiDoInBranchAndCut,false,OsiHintDo) ;
    17181740                }
    1719 #ifdef CBC_AMPL
     1741#ifdef COIN_HAS_ASL
    17201742                if (!solver2&&usingAmpl) {
    17211743                  // infeasible
     
    19832005              }
    19842006              if (type==BAB) {
    1985 #ifdef CBC_AMPL
     2007#ifdef COIN_HAS_ASL
    19862008                if (usingAmpl) {
    19872009                  priorities=info.priorities;
     
    21752197                }
    21762198                int statistics = (printOptions>0) ? printOptions: 0;
    2177 #ifdef CBC_AMPL
     2199#ifdef COIN_HAS_ASL
    21782200                if (!usingAmpl) {
    21792201#endif
     
    22002222                  free(sosPriority);
    22012223                  sosPriority=NULL;
    2202 #ifdef CBC_AMPL
     2224#ifdef COIN_HAS_ASL
    22032225                }
    22042226#endif               
     
    23172339                           <<babModel->getIterationCount()<<
    23182340                    " iterations - took "<<time2-time1<<" seconds"<<std::endl;
    2319 #ifdef CBC_AMPL
     2341#ifdef COIN_HAS_ASL
    23202342                if (usingAmpl) {
    23212343                  double value = babModel->getObjValue()*lpSolver->getObjSense();
     
    23712393#endif
    23722394              } else {
    2373                 std::cout<<"Model strengthend - now has "<<clpSolver->getNumRows()
     2395                std::cout<<"Model strengthened - now has "<<clpSolver->getNumRows()
    23742396                         <<" rows"<<std::endl;
    23752397              }
     
    23832405          case IMPORT:
    23842406            {
    2385 #ifdef CBC_AMPL
     2407#ifdef COIN_HAS_ASL
    23862408              if (!usingAmpl) {
    23872409#endif
     
    24082430                free(sosPriority);
    24092431                sosPriority=NULL;
    2410 #ifdef CBC_AMPL
     2432#ifdef COIN_HAS_ASL
    24112433              }
    24122434#endif               
Note: See TracChangeset for help on using the changeset viewer.