Changeset 368 for trunk/ClpPresolve.cpp


Ignore:
Timestamp:
May 12, 2004 12:09:20 PM (16 years ago)
Author:
jpfasano
Message:

Modified to compile on windows when DEBUG_PRESOLVE and CHECK_CONSISTENCY are 1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ClpPresolve.cpp

    r353 r368  
    807807
    808808
    809 
    810 #if     DEBUG_PRESOLVE
    811 void check_djs(CoinPostsolveMatrix *prob)
    812 {
    813   //return;
    814   double *colels        = prob->colels_;
    815   int *hrow             = prob->hrow_;
    816   int *mcstrt           = prob->mcstrt_;
    817   int *hincol           = prob->hincol_;
    818   int *link             = prob->link_;
    819   int ncols             = prob->ncols_;
    820 
    821   double *dcost = prob->cost_;
    822 
    823   double *rcosts        = prob->rcosts_;
    824 
    825   double *rowduals = prob->rowduals_;
    826 
    827   const double maxmin   = prob->maxmin_;
    828 
    829   char *cdone   = prob->cdone_;
    830 
    831   double * csol = prob->sol_;
    832   double * clo = prob->clo_;
    833   double * cup = prob->cup_;
    834   int nrows = prob->nrows_;
    835   double * rlo = prob->rlo_;
    836   double * rup = prob->rup_;
    837   char *rdone   = prob->rdone_;
    838 
    839   int colx;
    840 
    841   double * rsol = new double[nrows];
    842   memset(rsol,0,nrows*sizeof(double));
    843 
    844   for (colx = 0; colx < ncols; ++colx) {
    845     if (cdone[colx]) {
    846       CoinBigIndex k = mcstrt[colx];
    847       int nx = hincol[colx];
    848       double dj = maxmin * dcost[colx];
    849       double solutionValue = csol[colx];
    850       for (int i=0; i<nx; ++i) {
    851         int row = hrow[k];
    852         double coeff = colels[k];
    853         k = link[k];
    854         dj -= rowduals[row] * coeff;
    855         rsol[row] += solutionValue*coeff;
    856       }
    857       if (! (fabs(rcosts[colx] - dj) < 1.0e-4))
    858         printf("BAD DJ:  %d %g %g\n",
    859                colx, rcosts[colx], dj);
    860       if (cup[colx]-clo[colx]>1.0e-6) {
    861         if (csol[colx]<clo[colx]+1.0e-6) {
    862           if (dj <-1.0e-6)
    863             printf("neg DJ:  %d %g  - %g %g %g\n",
    864                    colx, dj, clo[colx], csol[colx], cup[colx]);
    865         } else if (csol[colx]>cup[colx]-1.0e-6) {
    866           if (dj > 1.0e-6)
    867             printf("pos DJ:  %d %g  - %g %g %g\n",
    868                    colx, dj, clo[colx], csol[colx], cup[colx]);
    869         } else {
    870           if (fabs(dj) >1.0e-6)
    871             printf("nonzero DJ:  %d %g  - %g %g %g\n",
    872                    colx, dj, clo[colx], csol[colx], cup[colx]);
    873         }
    874       }
    875     }
    876   }
    877   int rowx;
    878   for (rowx = 0; rowx < nrows; ++rowx) {
    879     if (rdone[rowx]) {
    880       if (rup[rowx]-rlo[rowx]>1.0e-6) {
    881         double dj = rowduals[rowx];
    882         if (rsol[rowx]<rlo[rowx]+1.0e-6) {
    883           if (dj <-1.0e-5)
    884             printf("neg rDJ:  %d %g  - %g %g %g\n",
    885                    rowx, dj, rlo[rowx], rsol[rowx], rup[rowx]);
    886         } else if (rsol[rowx]>rup[rowx]-1.0e-6) {
    887           if (dj > 1.0e-5)
    888             printf("pos rDJ:  %d %g  - %g %g %g\n",
    889                    rowx, dj, rlo[rowx], rsol[rowx], rup[rowx]);
    890         } else {
    891           if (fabs(dj) >1.0e-5)
    892             printf("nonzero rDJ:  %d %g  - %g %g %g\n",
    893                    rowx, dj, rlo[rowx], rsol[rowx], rup[rowx]);
    894         }
    895       }
    896     }
    897   }
    898   delete [] rsol;
    899 }
    900 #endif
    901809
    902810static inline double getTolerance(const ClpSimplex  *si, ClpDblParam key)
Note: See TracChangeset for help on using the changeset viewer.