Changeset 2007 for stable/1.15/Clp/src


Ignore:
Timestamp:
Dec 16, 2013 9:57:22 AM (6 years ago)
Author:
tkr
Message:

Syncing with trunk at r2006

Location:
stable/1.15/Clp
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • stable/1.15/Clp

  • stable/1.15/Clp/src

  • stable/1.15/Clp/src/ClpMain.cpp

    r1949 r2007  
    4040#include "ClpFactorization.hpp"
    4141#include "CoinTime.hpp"
     42#include "CoinWarmStartBasis.hpp"
    4243#include "ClpSimplex.hpp"
    4344#include "ClpSimplexOther.hpp"
     
    6263#include "AbcDualRowDantzig.hpp"
    6364#endif
    64 //#define COIN_HAS_ASL
    6565#ifdef COIN_HAS_ASL
    6666#include "Clp_ampl.h"
     
    307307                if (returnCode)
    308308                    return returnCode;
     309                if (info.numberBinary+info.numberIntegers+info.numberSos
     310                    &&!info.starts) {
     311                  printf("Unable to handle integer problems\n");
     312                  return 1;
     313                }
    309314                CbcOrClpRead_mode = 2; // so will start with parameters
    310315                // see if log in list (including environment)
     
    323328                    printf("%d rows, %d columns and %d elements\n",
    324329                           info.numberRows, info.numberColumns, info.numberElements);
     330                if (!coinModelStart.model) {
     331                  // linear
    325332                    models->loadProblem(info.numberColumns, info.numberRows, info.starts,
    326333                                        info.rows, info.elements,
    327334                                        info.columnLower, info.columnUpper, info.objective,
    328335                                        info.rowLower, info.rowUpper);
     336                } else {
     337                  // QP
     338                  models->loadProblem(*(coinModelStart.model));
     339                }
    329340                // If we had a solution use it
    330341                if (info.primalSolution) {
     
    10221033                                   try {
    10231034                                        status = model2->initialSolve(solveOptions);
     1035#ifdef COIN_HAS_ASL
     1036                            if (usingAmpl) {
     1037                                double value = model2->getObjValue() * model2->getObjSense();
     1038                                char buf[300];
     1039                                int pos = 0;
     1040                                int iStat = model2->status();
     1041                                if (iStat == 0) {
     1042                                    pos += sprintf(buf + pos, "optimal," );
     1043                                } else if (iStat == 1) {
     1044                                    // infeasible
     1045                                    pos += sprintf(buf + pos, "infeasible,");
     1046                                } else if (iStat == 2) {
     1047                                    // unbounded
     1048                                    pos += sprintf(buf + pos, "unbounded,");
     1049                                } else if (iStat == 3) {
     1050                                    pos += sprintf(buf + pos, "stopped on iterations or time,");
     1051                                } else if (iStat == 4) {
     1052                                    iStat = 7;
     1053                                    pos += sprintf(buf + pos, "stopped on difficulties,");
     1054                                } else if (iStat == 5) {
     1055                                    iStat = 3;
     1056                                    pos += sprintf(buf + pos, "stopped on ctrl-c,");
     1057                                } else if (iStat == 6) {
     1058                                    // bab infeasible
     1059                                    pos += sprintf(buf + pos, "integer infeasible,");
     1060                                    iStat = 1;
     1061                                } else {
     1062                                    pos += sprintf(buf + pos, "status unknown,");
     1063                                    iStat = 6;
     1064                                }
     1065                                info.problemStatus = iStat;
     1066                                info.objValue = value;
     1067                                pos += sprintf(buf + pos, " objective %.*g", ampl_obj_prec(),
     1068                                               value);
     1069                                sprintf(buf + pos, "\n%d iterations",
     1070                                        model2->getIterationCount());
     1071                                free(info.primalSolution);
     1072                                int numberColumns = model2->numberColumns();
     1073                                info.primalSolution = reinterpret_cast<double *> (malloc(numberColumns * sizeof(double)));
     1074                                CoinCopyN(model2->primalColumnSolution(), numberColumns, info.primalSolution);
     1075                                int numberRows = model2->numberRows();
     1076                                free(info.dualSolution);
     1077                                info.dualSolution = reinterpret_cast<double *> (malloc(numberRows * sizeof(double)));
     1078                                CoinCopyN(model2->dualRowSolution(), numberRows, info.dualSolution);
     1079                                CoinWarmStartBasis * basis = model2->getBasis();
     1080                                free(info.rowStatus);
     1081                                info.rowStatus = reinterpret_cast<int *> (malloc(numberRows * sizeof(int)));
     1082                                free(info.columnStatus);
     1083                                info.columnStatus = reinterpret_cast<int *> (malloc(numberColumns * sizeof(int)));
     1084                                // Put basis in
     1085                                int i;
     1086                                // free,basic,ub,lb are 0,1,2,3
     1087                                for (i = 0; i < numberRows; i++) {
     1088                                    CoinWarmStartBasis::Status status = basis->getArtifStatus(i);
     1089                                    info.rowStatus[i] = status;
     1090                                }
     1091                                for (i = 0; i < numberColumns; i++) {
     1092                                    CoinWarmStartBasis::Status status = basis->getStructStatus(i);
     1093                                    info.columnStatus[i] = status;
     1094                                }
     1095                                // put buffer into info
     1096                                strcpy(info.buffer, buf);
     1097                                delete basis;
     1098                            }
     1099#endif
    10241100#ifndef NDEBUG
    10251101                                        // if infeasible check ray
  • stable/1.15/Clp/src/Makefile.am

    r1968 r2007  
    154154        ClpMain.cpp \
    155155        CbcOrClpParam.cpp CbcOrClpParam.hpp \
     156        Clp_ampl.cpp Clp_ampl.h \
    156157        MyEventHandler.cpp MyEventHandler.hpp \
    157158        MyMessageHandler.cpp MyMessageHandler.hpp \
     
    159160
    160161# List all additionally required libraries
    161 clp_LDADD = libClp.la $(CLPLIB_LIBS)
     162clp_LDADD = libClp.la $(CLPLIB_LIBS) $(ASL_LIBS)
    162163
    163164# List all dependency libraries (similar to LDADD, but without -l, -L flags)
  • stable/1.15/Clp/src/Makefile.in

    r1991 r2007  
    256256PROGRAMS = $(bin_PROGRAMS)
    257257am_clp_OBJECTS = ClpMain.$(OBJEXT) CbcOrClpParam.$(OBJEXT) \
    258         MyEventHandler.$(OBJEXT) MyMessageHandler.$(OBJEXT) \
    259         unitTest.$(OBJEXT)
     258        Clp_ampl.$(OBJEXT) MyEventHandler.$(OBJEXT) \
     259        MyMessageHandler.$(OBJEXT) unitTest.$(OBJEXT)
    260260clp_OBJECTS = $(am_clp_OBJECTS)
    261261am__DEPENDENCIES_1 =
     
    324324AMTAR = @AMTAR@
    325325AR = @AR@
     326ASL_CFLAGS = @ASL_CFLAGS@
     327ASL_CFLAGS_INSTALLED = @ASL_CFLAGS_INSTALLED@
     328ASL_DATA = @ASL_DATA@
     329ASL_DATA_INSTALLED = @ASL_DATA_INSTALLED@
     330ASL_DEPENDENCIES = @ASL_DEPENDENCIES@
     331ASL_LIBS = @ASL_LIBS@
     332ASL_LIBS_INSTALLED = @ASL_LIBS_INSTALLED@
    326333AUTOCONF = @AUTOCONF@
    327334AUTOHEADER = @AUTOHEADER@
     
    366373COIN_HAS_AMD_FALSE = @COIN_HAS_AMD_FALSE@
    367374COIN_HAS_AMD_TRUE = @COIN_HAS_AMD_TRUE@
     375COIN_HAS_ASL_FALSE = @COIN_HAS_ASL_FALSE@
     376COIN_HAS_ASL_TRUE = @COIN_HAS_ASL_TRUE@
    368377COIN_HAS_BLAS_FALSE = @COIN_HAS_BLAS_FALSE@
    369378COIN_HAS_BLAS_TRUE = @COIN_HAS_BLAS_TRUE@
     
    621630        ClpMain.cpp \
    622631        CbcOrClpParam.cpp CbcOrClpParam.hpp \
     632        Clp_ampl.cpp Clp_ampl.h \
    623633        MyEventHandler.cpp MyEventHandler.hpp \
    624634        MyMessageHandler.cpp MyMessageHandler.hpp \
     
    627637
    628638# List all additionally required libraries
    629 clp_LDADD = libClp.la $(CLPLIB_LIBS)
     639clp_LDADD = libClp.la $(CLPLIB_LIBS) $(ASL_LIBS)
    630640
    631641# List all dependency libraries (similar to LDADD, but without -l, -L flags)
     
    863873@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ClpSolve.Plo@am__quote@
    864874@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Clp_C_Interface.Plo@am__quote@
     875@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Clp_ampl.Po@am__quote@
    865876@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CoinAbcBaseFactorization1.Plo@am__quote@
    866877@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CoinAbcBaseFactorization2.Plo@am__quote@
  • stable/1.15/Clp/src/OsiClp

  • stable/1.15/Clp/src/OsiClp/Makefile.in

    r1991 r2007  
    106106AMTAR = @AMTAR@
    107107AR = @AR@
     108ASL_CFLAGS = @ASL_CFLAGS@
     109ASL_CFLAGS_INSTALLED = @ASL_CFLAGS_INSTALLED@
     110ASL_DATA = @ASL_DATA@
     111ASL_DATA_INSTALLED = @ASL_DATA_INSTALLED@
     112ASL_DEPENDENCIES = @ASL_DEPENDENCIES@
     113ASL_LIBS = @ASL_LIBS@
     114ASL_LIBS_INSTALLED = @ASL_LIBS_INSTALLED@
    108115AUTOCONF = @AUTOCONF@
    109116AUTOHEADER = @AUTOHEADER@
     
    148155COIN_HAS_AMD_FALSE = @COIN_HAS_AMD_FALSE@
    149156COIN_HAS_AMD_TRUE = @COIN_HAS_AMD_TRUE@
     157COIN_HAS_ASL_FALSE = @COIN_HAS_ASL_FALSE@
     158COIN_HAS_ASL_TRUE = @COIN_HAS_ASL_TRUE@
    150159COIN_HAS_BLAS_FALSE = @COIN_HAS_BLAS_FALSE@
    151160COIN_HAS_BLAS_TRUE = @COIN_HAS_BLAS_TRUE@
  • stable/1.15/Clp/src/config.h.in

    r1910 r2007  
    2727/* Define to 1 if the AMD package is available */
    2828#undef COIN_HAS_AMD
     29
     30/* Define to 1 if the ASL package is available */
     31#undef COIN_HAS_ASL
    2932
    3033/* If defined, the BLAS Library is available. */
Note: See TracChangeset for help on using the changeset viewer.