Ignore:
Timestamp:
Dec 16, 2013 11:27:56 AM (6 years ago)
Author:
tkr
Message:

Reverse merging r2007. Ignore the commit message on that one. I made a mistake

Location:
stable/1.15/Clp
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable/1.15/Clp

  • stable/1.15/Clp/src

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

    r2007 r2009  
    4040#include "ClpFactorization.hpp"
    4141#include "CoinTime.hpp"
    42 #include "CoinWarmStartBasis.hpp"
    4342#include "ClpSimplex.hpp"
    4443#include "ClpSimplexOther.hpp"
     
    6362#include "AbcDualRowDantzig.hpp"
    6463#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                 }
    314309                CbcOrClpRead_mode = 2; // so will start with parameters
    315310                // see if log in list (including environment)
     
    328323                    printf("%d rows, %d columns and %d elements\n",
    329324                           info.numberRows, info.numberColumns, info.numberElements);
    330                 if (!coinModelStart.model) {
    331                   // linear
    332325                    models->loadProblem(info.numberColumns, info.numberRows, info.starts,
    333326                                        info.rows, info.elements,
    334327                                        info.columnLower, info.columnUpper, info.objective,
    335328                                        info.rowLower, info.rowUpper);
    336                 } else {
    337                   // QP
    338                   models->loadProblem(*(coinModelStart.model));
    339                 }
    340329                // If we had a solution use it
    341330                if (info.primalSolution) {
     
    10331022                                   try {
    10341023                                        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
    11001024#ifndef NDEBUG
    11011025                                        // if infeasible check ray
Note: See TracChangeset for help on using the changeset viewer.