Changeset 1084 for trunk


Ignore:
Timestamp:
Aug 17, 2007 10:12:01 AM (13 years ago)
Author:
forrest
Message:

add numeric checking to main programs and modify tightenPrimalbounds

Location:
trunk/Clp/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Clp/src/CbcOrClpParam.cpp

    r1080 r1084  
    10701070  //std::cout<<field<<std::endl;
    10711071  if (field!="EOL") {
    1072     // how do I check valid
    1073     value =  atoi(field.c_str());
    1074     *valid=0;
     1072    const char * start = field.c_str();
     1073    char * endPointer = NULL;
     1074    // check valid
     1075    value =  strtol(start,&endPointer,10);
     1076    if (*endPointer=='\0') {
     1077      *valid = 0;
     1078    } else {
     1079      *valid = 1;
     1080      std::cout<<"String of "<<field;
     1081    }
    10751082  } else {
    10761083    *valid=2;
     
    10981105  //std::cout<<field<<std::endl;
    10991106  if (field!="EOL") {
    1100     // how do I check valid
    1101     value = atof(field.c_str());
    1102     *valid=0;
     1107    const char * start = field.c_str();
     1108    char * endPointer = NULL;
     1109    // check valid
     1110    value =  strtod(start,&endPointer);
     1111    if (*endPointer=='\0') {
     1112      *valid = 0;
     1113    } else {
     1114      *valid = 1;
     1115      std::cout<<"String of "<<field;
     1116    }
    11031117  } else {
    11041118    *valid=2;
     
    26422656     );
    26432657  parameters[numberParameters-1].setIntValue(0);
     2658#ifdef COIN_HAS_CBC
     2659  parameters[numberParameters++]=
     2660    CbcOrClpParam("vub!heuristic","Type of vub heuristic",
     2661                  -2,10,VUBTRY,false);
     2662  parameters[numberParameters-1].setLonghelp
     2663    (
     2664     "If set will try and fix some integer variables"
     2665     );
     2666  parameters[numberParameters-1].setIntValue(-1);
     2667#endif
    26442668  assert(numberParameters<CBCMAXPARAMETERS);
    26452669}
  • trunk/Clp/src/CbcOrClpParam.hpp

    r1080 r1084  
    6666    NUMBERMINI,MIPOPTIONS,MOREMIPOPTIONS,MAXHOTITS,FPUMPITS,MAXSOLS,
    6767    FPUMPTUNE,TESTOSI,EXTRA1,EXTRA2,EXTRA3,EXTRA4,CUTPASSINTREE,
    68     THREADS,CUTPASS,
     68    THREADS,CUTPASS,VUBTRY,
    6969#ifdef COIN_HAS_CBC
    7070    LOGLEVEL ,
  • trunk/Clp/src/ClpMain.cpp

    r1037 r1084  
    329329            parameters[iParam].setDoubleParameter(models+iModel,value);
    330330          } else if (valid==1) {
    331             abort();
     331            std::cout<<" is illegal for double parameter "<<parameters[iParam].name()<<" value remains "<<
     332              parameters[iParam].doubleValue()<<std::endl;
    332333          } else {
    333334            std::cout<<parameters[iParam].name()<<" has value "<<
     
    362363            parameters[iParam].setIntParameter(models+iModel,value);
    363364          } else if (valid==1) {
    364             abort();
     365            std::cout<<" is illegal for integer parameter "<<parameters[iParam].name()<<" value remains "<<
     366              parameters[iParam].intValue()<<std::endl;
    365367          } else {
    366368            std::cout<<parameters[iParam].name()<<" has value "<<
  • trunk/Clp/src/ClpSimplex.cpp

    r1076 r1084  
    40854085*/
    40864086int
    4087 ClpSimplex::tightenPrimalBounds(double factor,int doTight)
     4087ClpSimplex::tightenPrimalBounds(double factor,int doTight,bool tightIntegers)
    40884088{
    40894089 
     
    44974497          }
    44984498        }
     4499      }
     4500    }
     4501    if (tightIntegers&&integerType_) {
     4502      for (iColumn=0;iColumn<numberColumns_;iColumn++) {
     4503        if (integerType_[iColumn]) {
     4504          double value;
     4505          value = floor(columnLower_[iColumn]+0.5);
     4506          if (fabs(value-columnLower_[iColumn])>primalTolerance_)
     4507            value = ceil(columnLower_[iColumn]);
     4508          columnLower_[iColumn]=value;
     4509          value = floor(columnUpper_[iColumn]+0.5);
     4510          if (fabs(value-columnUpper_[iColumn])>primalTolerance_)
     4511            value = floor(columnUpper_[iColumn]);
     4512          columnUpper_[iColumn]=value;
     4513          if (columnLower_[iColumn]>columnUpper_[iColumn])
     4514            numberInfeasible++;
     4515        }
     4516      }
     4517      if (numberInfeasible) {
     4518        handler_->message(CLP_SIMPLEX_INFEASIBILITIES,messages_)
     4519          <<numberInfeasible
     4520          <<CoinMessageEol;
     4521        // restore column bounds
     4522        memcpy(columnLower_,saveLower,numberColumns_*sizeof(double));
     4523        memcpy(columnUpper_,saveUpper,numberColumns_*sizeof(double));
    44994524      }
    45004525    }
  • trunk/Clp/src/ClpSimplex.hpp

    r1076 r1084  
    362362      in branch and bound on infeasible branches (0.0 is off)
    363363  */
    364   int tightenPrimalBounds(double factor=0.0,int doTight=0);
     364  int tightenPrimalBounds(double factor=0.0,int doTight=0,bool tightIntegers=false);
    365365  /** Crash - at present just aimed at dual, returns
    366366      -2 if dual preferred and crash basis created
Note: See TracChangeset for help on using the changeset viewer.