Changeset 1770


Ignore:
Timestamp:
Mar 26, 2012 8:10:12 AM (7 years ago)
Author:
forrest
Message:

New mipstart provided by Haroldo Santos

Location:
trunk
Files:
2 added
4 edited

Legend:

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

    r1769 r1770  
    4949#include "OsiChooseVariable.hpp"
    5050#include "OsiAuxInfo.hpp"
     51#include "CbcMipStartIO.hpp"
    5152
    5253#include "CbcSolverHeuristics.hpp"
     
    551552    std::string importBasisFile = "";
    552553    std::string importPriorityFile = "";
     554    std::string mipStartFile = "";
    553555    std::string debugFile = "";
    554556    std::string printMask = "";
     
    580582    parameters_[whichParam(CLP_PARAM_ACTION_BASISIN, numberParameters_, parameters_)].setStringValue(importBasisFile);
    581583    parameters_[whichParam(CBC_PARAM_ACTION_PRIORITYIN, numberParameters_, parameters_)].setStringValue(importPriorityFile);
     584    parameters_[whichParam(CBC_PARAM_ACTION_MIPSTART, numberParameters_, parameters_)].setStringValue(mipStartFile);
    582585    parameters_[whichParam(CLP_PARAM_ACTION_BASISOUT, numberParameters_, parameters_)].setStringValue(exportBasisFile);
    583586    parameters_[whichParam(CLP_PARAM_ACTION_DEBUG, numberParameters_, parameters_)].setStringValue(debugFile);
     
    12711274        double * solutionIn = NULL;
    12721275        int * prioritiesIn = NULL;
     1276        std::vector< std::pair< std::string, double > > mipStart;
    12731277        int numberSOS = 0;
    12741278        int * sosStart = NULL;
     
    45174521#endif
    45184522                                const int * originalColumns = preProcess ? process.originalColumns() : NULL;
     4523
     4524                                if (mipStart.size())
     4525                                {
     4526                                   if (preProcess)
     4527                                   {
     4528                                      std::vector< std::string > colNames;
     4529                                      for ( int i=0 ; (i<babModel_->solver()->getNumCols()) ; ++i )
     4530                                         colNames.push_back( model_.solver()->getColName( babModel_->originalColumns()[i] ) );
     4531                                      //printf("--- %s %d\n", babModel_->solver()->getColName(0).c_str(), babModel_->solver()->getColNames().size() );
     4532                                      //printf("-- SIZES of models %d %d %d\n", model_.getNumCols(),  babModel_->solver()->getNumCols(), babModel_->solver()->getColNames().size() );
     4533                                      std::vector< double > x( babModel_->getNumCols(), 0.0 );
     4534                                      double obj;
     4535                                      int status = computeCompleteSolution( babModel_, colNames, mipStart, &x[0], obj );
     4536                                      if (!status)
     4537                                         babModel_->setBestSolution( &x[0], x.size(), obj, false );
     4538                                   }
     4539                                }
     4540
    45194541                                if (solutionIn && useSolution >= 0) {
    45204542                                    if (!prioritiesIn) {
     
    71247146                                std::cout << "Unable to open file " << fileName << std::endl;
    71257147                            }
     7148                        } else {
     7149#ifndef DISALLOW_PRINTING
     7150                            std::cout << "** Current model not valid" << std::endl;
     7151#endif
     7152                        }
     7153                        break;
     7154                    case CBC_PARAM_ACTION_MIPSTART:
     7155                        if (goodModel) {
     7156                            // get next field
     7157                            field = CoinReadGetString(argc, argv);
     7158                            if (field == "$") {
     7159                                field = parameters_[iParam].stringValue();
     7160                            } else if (field == "EOL") {
     7161                                parameters_[iParam].printString();
     7162                                break;
     7163                            } else {
     7164                                parameters_[iParam].setStringValue(field);
     7165                            }
     7166                            std::string fileName;
     7167                            if (field[0] == '/' || field[0] == '\\') {
     7168                                fileName = field;
     7169                            } else if (field[0] == '~') {
     7170                                char * environVar = getenv("HOME");
     7171                                if (environVar) {
     7172                                    std::string home(environVar);
     7173                                    field = field.erase(0, 1);
     7174                                    fileName = home + field;
     7175                                } else {
     7176                                    fileName = field;
     7177                                }
     7178                            } else {
     7179                                fileName = directory + field;
     7180                            }
     7181                            sprintf(generalPrint,"will open mipstart file %s.",fileName.c_str() );
     7182                            generalMessageHandler->message(CLP_GENERAL, generalMessages)
     7183                              << generalPrint
     7184                              << CoinMessageEol;
     7185                            double msObj;
     7186                            readMIPStart( &model_, fileName.c_str(), mipStart, msObj );
    71267187                        } else {
    71277188#ifndef DISALLOW_PRINTING
  • trunk/Cbc/src/Makefile.am

    r1713 r1770  
    101101        CbcSolverHeuristics.cpp CbcSolverHeuristics.hpp \
    102102        CbcSolverAnalyze.cpp CbcSolverAnalyze.hpp \
     103        CbcMipStartIO.cpp CbcMipStartIO.hpp \
    103104        CbcSolverExpandKnapsack.cpp CbcSolverExpandKnapsack.hpp
    104105
     
    248249        CbcStrategy.hpp \
    249250        CbcSolver.hpp \
     251        CbcMipStartIO.hpp \
    250252        CbcSOS.hpp \
    251253        CbcSubProblem.hpp \
  • trunk/Cbc/src/Makefile.in

    r1714 r1770  
    119119am_libCbcSolver_la_OBJECTS = CbcCbcParam.lo Cbc_ampl.lo CbcLinked.lo \
    120120        CbcLinkedUtils.lo unitTestClp.lo CbcSolver.lo \
    121         CbcSolverHeuristics.lo CbcSolverAnalyze.lo \
     121        CbcSolverHeuristics.lo CbcSolverAnalyze.lo CbcMipStartIO.lo \
    122122        CbcSolverExpandKnapsack.lo
    123123libCbcSolver_la_OBJECTS = $(am_libCbcSolver_la_OBJECTS)
     
    597597        CbcSolverHeuristics.cpp CbcSolverHeuristics.hpp \
    598598        CbcSolverAnalyze.cpp CbcSolverAnalyze.hpp \
     599        CbcMipStartIO.cpp CbcMipStartIO.hpp \
    599600        CbcSolverExpandKnapsack.cpp CbcSolverExpandKnapsack.hpp
    600601
     
    708709        CbcStrategy.hpp \
    709710        CbcSolver.hpp \
     711        CbcMipStartIO.hpp \
    710712        CbcSOS.hpp \
    711713        CbcSubProblem.hpp \
     
    909911@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CbcLinkedUtils.Plo@am__quote@
    910912@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CbcMessage.Plo@am__quote@
     913@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CbcMipStartIO.Plo@am__quote@
    911914@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CbcModel.Plo@am__quote@
    912915@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CbcNWay.Plo@am__quote@
  • trunk/configure

    r1679 r1770  
    18681868if test x"$CXX" != x; then
    18691869  case "$CXX" in
     1870    clang* ) ;;
    18701871    cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    18711872      if test x"$CC" = x; then
     
    26872688# Autoconf incorrectly concludes that cl recognises -g. It doesn't.
    26882689case "$CC" in
     2690  clang* ) ;;
    26892691  cl* | */cl* | CL* | */CL* )
    26902692    if test "$ac_cv_prog_cc_g" = yes ; then
     
    26992701coin_cc_is_cl=false
    27002702case "$CC" in
     2703  clang* ) ;;
    27012704  cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    27022705    coin_cc_is_cl=true
     
    28022805      *-cygwin* | *-mingw*)
    28032806        case "$CC" in
     2807          clang* ) ;;
    28042808          cl* | */cl* | CL* | */CL*)
    28052809            coin_opt_cflags='-MT -O2'
     
    31233127# Correct the LD variable if we are using the MS or Intel-windows compiler
    31243128case "$CC" in
     3129  clang* ) ;;
    31253130  cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    31263131    case $build in
     
    36163621# It seems that we need to cleanup something here for the Windows
    36173622case "$CXX" in
     3623  clang* ) ;;
    36183624  cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    36193625    sed -e 's/^void exit (int);//' confdefs.h >> confdefs.hh
     
    36373643# Autoconf incorrectly concludes that cl recognises -g. It doesn't.
    36383644case "$CXX" in
     3645  clang* ) ;;
    36393646  cl* | */cl* | CL* | */CL* )
    36403647    if test "$ac_cv_prog_cxx_g" = yes ; then
     
    37403747      *-cygwin* | *-mingw*)
    37413748        case "$CXX" in
     3749          clang* ) ;;
    37423750          cl* | */cl* | CL* | */CL*)
    37433751            # The MT and MTd options are mutually exclusive
     
    40694077# correct the LD variable in a mingw build with MS or intel compiler
    40704078case "$CXX" in
     4079  clang* ) ;;
    40714080  cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    40724081    case $build in
     
    43254334
    43264335# Provide some information about the compiler.
    4327 echo "$as_me:4327:" \
     4336echo "$as_me:4336:" \
    43284337     "checking for Fortran 77 compiler version" >&5
    43294338ac_compiler=`set X $ac_compile; echo $2`
     
    65916600*-*-irix6*)
    65926601  # Find out which ABI we are using.
    6593   echo '#line 6593 "configure"' > conftest.$ac_ext
     6602  echo '#line 6602 "configure"' > conftest.$ac_ext
    65946603  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
    65956604  (eval $ac_compile) 2>&5
     
    85558564   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    85568565   -e 's:$: $lt_compiler_flag:'`
    8557    (eval echo "\"\$as_me:8557: $lt_compile\"" >&5)
     8566   (eval echo "\"\$as_me:8566: $lt_compile\"" >&5)
    85588567   (eval "$lt_compile" 2>conftest.err)
    85598568   ac_status=$?
    85608569   cat conftest.err >&5
    8561    echo "$as_me:8561: \$? = $ac_status" >&5
     8570   echo "$as_me:8570: \$? = $ac_status" >&5
    85628571   if (exit $ac_status) && test -s "$ac_outfile"; then
    85638572     # The compiler can only warn and ignore the option if not recognized
     
    88238832   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    88248833   -e 's:$: $lt_compiler_flag:'`
    8825    (eval echo "\"\$as_me:8825: $lt_compile\"" >&5)
     8834   (eval echo "\"\$as_me:8834: $lt_compile\"" >&5)
    88268835   (eval "$lt_compile" 2>conftest.err)
    88278836   ac_status=$?
    88288837   cat conftest.err >&5
    8829    echo "$as_me:8829: \$? = $ac_status" >&5
     8838   echo "$as_me:8838: \$? = $ac_status" >&5
    88308839   if (exit $ac_status) && test -s "$ac_outfile"; then
    88318840     # The compiler can only warn and ignore the option if not recognized
     
    89278936   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    89288937   -e 's:$: $lt_compiler_flag:'`
    8929    (eval echo "\"\$as_me:8929: $lt_compile\"" >&5)
     8938   (eval echo "\"\$as_me:8938: $lt_compile\"" >&5)
    89308939   (eval "$lt_compile" 2>out/conftest.err)
    89318940   ac_status=$?
    89328941   cat out/conftest.err >&5
    8933    echo "$as_me:8933: \$? = $ac_status" >&5
     8942   echo "$as_me:8942: \$? = $ac_status" >&5
    89348943   if (exit $ac_status) && test -s out/conftest2.$ac_objext
    89358944   then
     
    1127211281  lt_status=$lt_dlunknown
    1127311282  cat > conftest.$ac_ext <<EOF
    11274 #line 11274 "configure"
     11283#line 11283 "configure"
    1127511284#include "confdefs.h"
    1127611285
     
    1137211381  lt_status=$lt_dlunknown
    1137311382  cat > conftest.$ac_ext <<EOF
    11374 #line 11374 "configure"
     11383#line 11383 "configure"
    1137511384#include "confdefs.h"
    1137611385
     
    1371613725   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    1371713726   -e 's:$: $lt_compiler_flag:'`
    13718    (eval echo "\"\$as_me:13718: $lt_compile\"" >&5)
     13727   (eval echo "\"\$as_me:13727: $lt_compile\"" >&5)
    1371913728   (eval "$lt_compile" 2>conftest.err)
    1372013729   ac_status=$?
    1372113730   cat conftest.err >&5
    13722    echo "$as_me:13722: \$? = $ac_status" >&5
     13731   echo "$as_me:13731: \$? = $ac_status" >&5
    1372313732   if (exit $ac_status) && test -s "$ac_outfile"; then
    1372413733     # The compiler can only warn and ignore the option if not recognized
     
    1382013829   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    1382113830   -e 's:$: $lt_compiler_flag:'`
    13822    (eval echo "\"\$as_me:13822: $lt_compile\"" >&5)
     13831   (eval echo "\"\$as_me:13831: $lt_compile\"" >&5)
    1382313832   (eval "$lt_compile" 2>out/conftest.err)
    1382413833   ac_status=$?
    1382513834   cat out/conftest.err >&5
    13826    echo "$as_me:13826: \$? = $ac_status" >&5
     13835   echo "$as_me:13835: \$? = $ac_status" >&5
    1382713836   if (exit $ac_status) && test -s out/conftest2.$ac_objext
    1382813837   then
     
    1539015399   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    1539115400   -e 's:$: $lt_compiler_flag:'`
    15392    (eval echo "\"\$as_me:15392: $lt_compile\"" >&5)
     15401   (eval echo "\"\$as_me:15401: $lt_compile\"" >&5)
    1539315402   (eval "$lt_compile" 2>conftest.err)
    1539415403   ac_status=$?
    1539515404   cat conftest.err >&5
    15396    echo "$as_me:15396: \$? = $ac_status" >&5
     15405   echo "$as_me:15405: \$? = $ac_status" >&5
    1539715406   if (exit $ac_status) && test -s "$ac_outfile"; then
    1539815407     # The compiler can only warn and ignore the option if not recognized
     
    1549415503   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    1549515504   -e 's:$: $lt_compiler_flag:'`
    15496    (eval echo "\"\$as_me:15496: $lt_compile\"" >&5)
     15505   (eval echo "\"\$as_me:15505: $lt_compile\"" >&5)
    1549715506   (eval "$lt_compile" 2>out/conftest.err)
    1549815507   ac_status=$?
    1549915508   cat out/conftest.err >&5
    15500    echo "$as_me:15500: \$? = $ac_status" >&5
     15509   echo "$as_me:15509: \$? = $ac_status" >&5
    1550115510   if (exit $ac_status) && test -s out/conftest2.$ac_objext
    1550215511   then
     
    1770117710   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    1770217711   -e 's:$: $lt_compiler_flag:'`
    17703    (eval echo "\"\$as_me:17703: $lt_compile\"" >&5)
     17712   (eval echo "\"\$as_me:17712: $lt_compile\"" >&5)
    1770417713   (eval "$lt_compile" 2>conftest.err)
    1770517714   ac_status=$?
    1770617715   cat conftest.err >&5
    17707    echo "$as_me:17707: \$? = $ac_status" >&5
     17716   echo "$as_me:17716: \$? = $ac_status" >&5
    1770817717   if (exit $ac_status) && test -s "$ac_outfile"; then
    1770917718     # The compiler can only warn and ignore the option if not recognized
     
    1796917978   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    1797017979   -e 's:$: $lt_compiler_flag:'`
    17971    (eval echo "\"\$as_me:17971: $lt_compile\"" >&5)
     17980   (eval echo "\"\$as_me:17980: $lt_compile\"" >&5)
    1797217981   (eval "$lt_compile" 2>conftest.err)
    1797317982   ac_status=$?
    1797417983   cat conftest.err >&5
    17975    echo "$as_me:17975: \$? = $ac_status" >&5
     17984   echo "$as_me:17984: \$? = $ac_status" >&5
    1797617985   if (exit $ac_status) && test -s "$ac_outfile"; then
    1797717986     # The compiler can only warn and ignore the option if not recognized
     
    1807318082   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    1807418083   -e 's:$: $lt_compiler_flag:'`
    18075    (eval echo "\"\$as_me:18075: $lt_compile\"" >&5)
     18084   (eval echo "\"\$as_me:18084: $lt_compile\"" >&5)
    1807618085   (eval "$lt_compile" 2>out/conftest.err)
    1807718086   ac_status=$?
    1807818087   cat out/conftest.err >&5
    18079    echo "$as_me:18079: \$? = $ac_status" >&5
     18088   echo "$as_me:18088: \$? = $ac_status" >&5
    1808018089   if (exit $ac_status) && test -s out/conftest2.$ac_objext
    1808118090   then
     
    2081320822    *-cygwin* | *-mingw*)
    2081420823       case "$CXX" in
     20824    clang* )
     20825      # we assume that libtool patches for CLANG are the same as for GNU compiler - correct???
     20826      { echo "$as_me:$LINENO: Applying patches to libtool for CLANG compiler" >&5
     20827echo "$as_me: Applying patches to libtool for CLANG compiler" >&6;}
     20828      sed -e 's|fix_srcfile_path=\"`cygpath -w \"\$srcfile\"`\"|fix_srcfile_path=\"\\\`'"$CYGPATH_W"' \\\"\\$srcfile\\\"\\\`\"|' \
     20829          -e 's|"lib /OUT:\\$oldlib\\$oldobjs\\$old_deplibs"|"\\$AR \\$AR_FLAGS \\$oldlib\\$oldobjs\\$old_deplibs~\\$RANLIB \\$oldlib"|' \
     20830          -e 's|libext="lib"|libext="a"|' \
     20831      libtool > conftest.bla
     20832      ;;
    2081520833    cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    2081620834      { echo "$as_me:$LINENO: Applying patches to libtool for cl compiler" >&5
     
    2082820846          -e 's%old_archive_cmds="lib -OUT:\\$oldlib\\$oldobjs\\$old_deplibs"%old_archive_cmds="if test -r \\$oldlib; then bla=\\"\\$oldlib\\"; else bla=; fi; lib -OUT:\\$oldlib \\\\\\$bla\\$oldobjs\\$old_deplibs"%' \
    2082920847      libtool > conftest.bla
    20830 
    20831       mv conftest.bla libtool
    20832       chmod 755 libtool
    2083320848      ;;
    2083420849    *)
     
    2083920854          -e 's|libext="lib"|libext="a"|' \
    2084020855      libtool > conftest.bla
    20841 
    20842       mv conftest.bla libtool
    20843       chmod 755 libtool
    2084420856      ;;
    2084520857  esac
     20858  mv conftest.bla libtool
     20859  chmod 755 libtool
     20860
    2084620861      ;;
    2084720862    *-darwin*)
     
    2308423099fi
    2308523100case "$CC" in
     23101  clang* ) ;;
    2308623102  cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    2308723103    coin_link_input_cmd=cp ;;
     
    2309723113
    2309823114  case "$CC" in
     23115    clang* )
     23116         LIBEXT=a ;;
    2309923117    cl* | */cl* | CL* | */CL* | icl* | */icl* | ICL* | */ICL*)
    2310023118         LIBEXT=lib ;;
Note: See TracChangeset for help on using the changeset viewer.