Ignore:
Timestamp:
Sep 28, 2007 11:40:51 AM (13 years ago)
Author:
forrest
Message:

add ampl stuff after heuristic

File:
1 edited

Legend:

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

    r805 r809  
    1616#include "CoinHelperFunctions.hpp"
    1717// Version
    18 #define CBCVERSION "1.04.00"
     18#define CBCVERSION "2.00.00"
    1919
    2020#include "CoinMpsIO.hpp"
     
    6565  }
    6666  void * p =malloc(size);
     67  //char * xx = (char *) p;
     68  //memset(xx,0,size);
     69  // Initialize random seed
     70  //CoinSeedRandom(987654321);
    6771  return p;
    6872}
     
    728732}
    729733//#define NEW_STYLE_SOLVER
    730 #undef COIN_HAS_ASL
     734//#undef COIN_HAS_ASL
    731735#ifdef COIN_HAS_ASL
    732736#include "Cbc_ampl.h"
     
    15261530  for (int iPass=0;iPass<2;iPass++) {
    15271531    for (int jLayer=0;jLayer<kLayer;jLayer++) {
    1528       int check[]={-1,0,1,2,3,4,5,10,50,100,500,1000,5000,10000,INT_MAX};
     1532      int check[]={-1,0,1,2,3,4,5,10,50,100,500,1000,5000,10000,COIN_INT_MAX};
    15291533      int nCheck = (int) (sizeof(check)/sizeof(int));
    15301534      int countsI[20];
     
    49184922                model_.setProblemStatus(1);
    49194923                model_.setSecondaryStatus(6);
     4924#ifdef COIN_HAS_ASL
     4925                if (statusUserFunction_[0]) {
     4926                  double value = model_.getObjValue();
     4927                  char buf[300];
     4928                  int pos=0;
     4929                  pos += sprintf(buf+pos,"feasible,");
     4930                  info.problemStatus=0;
     4931                  info.objValue = value;
     4932                  pos += sprintf(buf+pos," objective %.*g",ampl_obj_prec(),
     4933                                 value);
     4934                  sprintf(buf+pos,"\n0 iterations");
     4935                  free(info.primalSolution);
     4936                  int numberColumns=lpSolver->numberColumns();
     4937                  info.primalSolution = (double *) malloc(numberColumns*sizeof(double));
     4938                  CoinCopyN(model_.bestSolution(),numberColumns,info.primalSolution);
     4939                  int numberRows = lpSolver->numberRows();
     4940                  free(info.dualSolution);
     4941                  info.dualSolution = (double *) malloc(numberRows*sizeof(double));
     4942                  CoinZeroN(info.dualSolution,numberRows);
     4943                  CoinWarmStartBasis * basis = lpSolver->getBasis();
     4944                  free(info.rowStatus);
     4945                  info.rowStatus = (int *) malloc(numberRows*sizeof(int));
     4946                  free(info.columnStatus);
     4947                  info.columnStatus = (int *) malloc(numberColumns*sizeof(int));
     4948                  // Put basis in
     4949                  int i;
     4950                  // free,basic,ub,lb are 0,1,2,3
     4951                  for (i=0;i<numberRows;i++) {
     4952                    CoinWarmStartBasis::Status status = basis->getArtifStatus(i);
     4953                    info.rowStatus[i]=status;
     4954                  }
     4955                  for (i=0;i<numberColumns;i++) {
     4956                    CoinWarmStartBasis::Status status = basis->getStructStatus(i);
     4957                    info.columnStatus[i]=status;
     4958                  }
     4959                  // put buffer into info
     4960                  strcpy(info.buffer,buf);
     4961                  delete basis;
     4962                }
     4963#endif
    49204964              }
    49214965#ifdef NEW_STYLE_SOLVER
     
    94349478  Version 1.04 June 2007
    94359479  Goes parallel
     9480  Version 2.00 September 2007
     9481  Improvements to feaspump
     9482  Source code changes so up to 2.0
    94369483*/
Note: See TracChangeset for help on using the changeset viewer.