Changeset 28 for branches


Ignore:
Timestamp:
Sep 27, 2002 3:22:32 PM (17 years ago)
Author:
forrest
Message:

For presolve

Location:
branches/devel-1
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/devel-1/ClpModel.cpp

    r27 r28  
    871871
    872872}
     873void
     874ClpModel::copyInIntegerInformation(const char * information)
     875{
     876  delete [] integerType_;
     877  if (information) {
     878    integerType_ = new char[numberColumns_];
     879    memcpy(integerType_,information,numberColumns_*sizeof(char));
     880  } else {
     881    integerType_ = NULL;
     882  }
     883}
     884// Drops names - makes lengthnames 0 and names empty
     885void
     886ClpModel::dropNames()
     887{
     888  lengthNames_=0;
     889  rowNames_ = std::vector<std::string> ();
     890  columnNames_ = std::vector<std::string> ();
     891}
     892// Drop integer informations
     893void
     894ClpModel::deleteIntegerInformation()
     895{
     896  delete [] integerType_;
     897  integerType_ = NULL;
     898}
  • branches/devel-1/ClpSimplex.cpp

    r27 r28  
    572572            break;
    573573          case superBasic:
    574             abort();
     574            if (rowUpperWork_[iRow]>largeValue_) {
     575              if (rowLowerWork_[iRow]>-largeValue_) {
     576                rowActivityWork_[iRow]=rowLowerWork_[iRow];
     577                setRowStatus(iRow,atLowerBound);
     578              } else {
     579                // say free
     580                setRowStatus(iRow,isFree);
     581                rowActivityWork_[iRow]=0.0;
     582              }
     583            } else {
     584              if (rowLowerWork_[iRow]>-largeValue_) {
     585                // set to nearest
     586                if (fabs(rowActivityWork_[iRow]-rowLowerWork_[iRow])
     587                    <fabs(rowActivityWork_[iRow]-rowLowerWork_[iRow])) {
     588                  rowActivityWork_[iRow]=rowLowerWork_[iRow];
     589                  setRowStatus(iRow,atLowerBound);
     590                } else {
     591                  rowActivityWork_[iRow]=rowUpperWork_[iRow];
     592                  setRowStatus(iRow,atUpperBound);
     593                }
     594              } else {
     595                rowActivityWork_[iRow]=rowUpperWork_[iRow];
     596                setRowStatus(iRow,atUpperBound);
     597              }
     598            }
    575599            break;
    576600          }
     
    623647            break;
    624648          case superBasic:
    625             abort();
     649            if (columnUpperWork_[iColumn]>largeValue_) {
     650              if (columnLowerWork_[iColumn]>-largeValue_) {
     651                columnActivityWork_[iColumn]=columnLowerWork_[iColumn];
     652                setColumnStatus(iColumn,atLowerBound);
     653              } else {
     654                // say free
     655                setColumnStatus(iColumn,isFree);
     656                columnActivityWork_[iColumn]=0.0;
     657              }
     658            } else {
     659              if (columnLowerWork_[iColumn]>-largeValue_) {
     660                // set to nearest
     661                if (fabs(columnActivityWork_[iColumn]-columnLowerWork_[iColumn])
     662                    <fabs(columnActivityWork_[iColumn]-columnLowerWork_[iColumn])) {
     663                  columnActivityWork_[iColumn]=columnLowerWork_[iColumn];
     664                  setColumnStatus(iColumn,atLowerBound);
     665                } else {
     666                  columnActivityWork_[iColumn]=columnUpperWork_[iColumn];
     667                  setColumnStatus(iColumn,atUpperBound);
     668                }
     669              } else {
     670                columnActivityWork_[iColumn]=columnUpperWork_[iColumn];
     671                setColumnStatus(iColumn,atUpperBound);
     672              }
     673            }
    626674            break;
    627675          }
     
    16371685      rowReducedCost_ = dj_+numberColumns_;
    16381686      memcpy(reducedCostWork_,reducedCost_,numberColumns_*sizeof(double));
     1687      memcpy(rowReducedCost_,dual_,numberRows_*sizeof(double));
    16391688    }
    16401689    if (!solution_) {
     
    17481797      rowActivityWork_[i] *= rowScale_[i];
    17491798      dual_[i] /= rowScale_[i];
     1799      rowReducedCost_[i] = dual_[i];
    17501800    }
    17511801  }
     
    27862836ClpSimplex::sanityCheck()
    27872837{
     2838  // bad if empty
     2839  if (!numberRows_||!numberColumns_||!matrix_->getNumElements()) {
     2840    handler_->message(CLP_EMPTY_PROBLEM,messages_)
     2841      <<numberRows_
     2842      <<numberColumns_
     2843      <<matrix_->getNumElements()
     2844      <<CoinMessageEol;
     2845    problemStatus_=4;
     2846    return false;
     2847  }
    27882848  int numberBad , numberBadBounds;
    27892849  double largestBound, smallestBound, minimumGap;
     
    30253085  return status;
    30263086}
     3087// Just check solution (for external use)
     3088void
     3089ClpSimplex::checkSolution()
     3090{
     3091  // put in standard form
     3092  createRim(7+8+16);
     3093  checkPrimalSolution( rowActivityWork_, columnActivityWork_);
     3094  checkDualSolution();
     3095  // release extra memory
     3096  deleteRim(false);
     3097}
  • branches/devel-1/ClpSimplexDual.cpp

    r27 r28  
    233233  assert(rowUpper_);
    234234
    235 #ifdef CLP_DEBUG
    236   int debugIteration=-1;
    237 #endif
    238235
    239236  algorithm_ = -1;
     
    367364ClpSimplexDual::whileIterating()
    368365{
     366#ifdef CLP_DEBUG
     367  int debugIteration=-1;
     368#endif
    369369  // status stays at -1 while iterating, >=0 finished, -2 to invert
    370370  // status -3 to go to top without an invert
  • branches/devel-1/include/ClpModel.hpp

    r27 r28  
    9191              bool keepNames=false,
    9292              bool ignoreErrors = false);
     93  /// Copy in integer informations
     94  void copyInIntegerInformation(const char * information);
     95  /// Drop integer informations
     96  void deleteIntegerInformation();
    9397  /// Resizes rim part of model
    9498  void resize (int newNumberRows, int newNumberColumns);
     
    105109      also updates any scalars */
    106110  void returnModel(ClpModel & otherModel);
     111
     112  /// Drops names - makes lengthnames 0 and names empty
     113  void dropNames();
    107114 
    108115  //@}
  • branches/devel-1/include/ClpSimplex.hpp

    r27 r28  
    228228  int restoreModel(const char * fileName);
    229229 
     230  /** Just check solution (for external use) - sets sum of
     231      infeasibilities etc */
     232  void checkSolution();
    230233  //@}
    231234
Note: See TracChangeset for help on using the changeset viewer.