Changeset 261 for trunk


Ignore:
Timestamp:
Feb 20, 2006 2:45:26 PM (14 years ago)
Author:
forrest
Message:

for help

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Test/CoinSolve.cpp

    r258 r261  
    8383static double totalTime=0.0;
    8484static void statistics(ClpSimplex * originalModel, ClpSimplex * model);
    85 
     85static bool maskMatches(std::string & mask, std::string & check);
    8686//#############################################################################
    8787
     
    511511    std::string importBasisFile ="";
    512512    std::string debugFile="";
     513    std::string printMask="";
    513514    double * debugValues = NULL;
    514515    int numberDebugValues = -1;
     
    526527    parameters[whichParam(BASISOUT,numberParameters,parameters)].setStringValue(exportBasisFile);
    527528    parameters[whichParam(DEBUG,numberParameters,parameters)].setStringValue(debugFile);
     529    parameters[whichParam(PRINTMASK,numberParameters,parameters)].setStringValue(printMask);
    528530    parameters[whichParam(DIRECTORY,numberParameters,parameters)].setStringValue(directory);
    529531    parameters[whichParam(DUALBOUND,numberParameters,parameters)].setDoubleValue(lpSolver->dualBound());
     
    760762          types.push_back("Integer parameters:");
    761763          types.push_back("Branch and Cut integer parameters:");
    762           types.push_back("Keyword parameters and others:");
    763           types.push_back("Branch and Cut keyword parameters and others:");
    764           types.push_back("Actions:");
     764          types.push_back("Keyword parameters:");
     765          types.push_back("Branch and Cut keyword parameters:");
     766          types.push_back("Actions or string parameters:");
    765767          types.push_back("Branch and Cut actions:");
    766768          int iType;
     
    817819          types.push_back("Integer parameters:");
    818820          types.push_back("Branch and Cut integer parameters:");
    819           types.push_back("Keyword parameters and others:");
    820           types.push_back("Branch and Cut keyword parameters and others:");
    821           types.push_back("Actions:");
     821          types.push_back("Keyword parameters:");
     822          types.push_back("Branch and Cut keyword parameters:");
     823          types.push_back("Actions or string parameters:");
    822824          types.push_back("Branch and Cut actions:");
    823825          int iType;
     
    23852387            }
    23862388            break;
     2389          case PRINTMASK:
     2390            // get next field
     2391            {
     2392              std::string name = CoinReadGetString(argc,argv);
     2393              if (name!="EOL") {
     2394                parameters[iParam].setStringValue(name);
     2395                printMask = name;
     2396              } else {
     2397                parameters[iParam].printString();
     2398              }
     2399            }
     2400            break;
    23872401          case BASISOUT:
    23882402            if (goodModel) {
     
    27772791                char format[6];
    27782792                sprintf(format,"%%-%ds",CoinMax(lengthName,8));
     2793                bool doMask = (printMask!=""&&lengthName);
    27792794                if (printMode>2) {
    27802795                  for (iRow=0;iRow<numberRows;iRow++) {
     
    27892804                      type=3;
    27902805                    }
     2806                    if (doMask&&!maskMatches(printMask,rowNames[iRow]))
     2807                      type =0;
    27912808                    if (type) {
    27922809                      fprintf(fp,"%7d ",iRow);
     
    28082825                if (printMode!=2) {
    28092826                  for (iColumn=0;iColumn<numberColumns;iColumn++) {
    2810                     int type=0;
     2827                    int type=(printMode>3) ? 1 :0;
    28112828                    if (primalColumnSolution[iColumn]>columnUpper[iColumn]+primalTolerance||
    28122829                        primalColumnSolution[iColumn]<columnLower[iColumn]-primalTolerance) {
     
    28222839                         &&printMode==1)
    28232840                      type=0;
     2841                    if (doMask&&!maskMatches(printMask,columnNames[iColumn]))
     2842                      type =0;
    28242843                    if (type) {
    28252844                      fprintf(fp,"%7d ",iColumn);
     
    32653284  breakdown("Objective",numberColumns,objective);
    32663285}
     3286static bool maskMatches(std::string & mask, std::string & check)
     3287{
     3288  // back to char as I am old fashioned
     3289  const char * maskC = mask.c_str();
     3290  const char * checkC = check.c_str();
     3291  int length = strlen(maskC);
     3292  int lengthCheck;
     3293  for (lengthCheck=length-1;lengthCheck>=0;lengthCheck--) {
     3294    if (maskC[lengthCheck]!='*')
     3295      break;
     3296  }
     3297  lengthCheck++;
     3298  int lengthC = strlen(checkC);
     3299  if (lengthC>length)
     3300    return false; // can't be true
     3301  if (lengthC<lengthCheck) {
     3302    // last lot must be blank for match
     3303    for (int i=lengthC;i<lengthCheck;i++) {
     3304      if (maskC[i]!=' ')
     3305        return false;
     3306    }
     3307  }
     3308  // need only check this much
     3309  lengthC = CoinMin(lengthC,lengthCheck);
     3310  for (int i=0;i<lengthC;i++) {
     3311    if (maskC[i]!='*'&&maskC[i]!=checkC[i])
     3312      return false;
     3313  }
     3314  return true; // matches
     3315}
    32673316/*
    32683317  Version 1.00.00 November 16 2005.
Note: See TracChangeset for help on using the changeset viewer.