Changeset 1833 for trunk


Ignore:
Timestamp:
Dec 6, 2011 9:23:30 AM (8 years ago)
Author:
forrest
Message:

clean up code a bit

File:
1 edited

Legend:

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

    r1832 r1833  
    35723572  const int * upperList = paramData.upperList;
    35733573  //#define CLP_PARAMETRIC_DENSE_ARRAYS 2
    3574 #if CLP_PARAMETRIC_DENSE_ARRAYS
     3574#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    35753575  double * lowerGap = paramData.lowerGap;
    35763576  double * upperGap = paramData.upperGap;
     
    36203620              double newValue = lower_[iSequence] + thisChange;
    36213621              lower_[iSequence] = newValue;
    3622 #if CLP_PARAMETRIC_DENSE_ARRAYS
     3622#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    36233623              if (getStatus(iSequence)==basic) {
    36243624                int iRow=backwardBasic[iSequence];
     
    36513651                 getStatus(iSequence)==isFixed) {
    36523652                solution_[iSequence] = newValue;
    3653 #if CLP_PARAMETRIC_DENSE_ARRAYS
     3653#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    36543654              } else if (getStatus(iSequence)==basic) {
    36553655                int iRow=backwardBasic[iSequence];
     
    39113911                      double multiplier = -pivotValue/alpha_;
    39123912                      double * array=rowArray_[4]->denseVector();
    3913 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
     3913#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    39143914                      int lowerN=lowerActive[-1];
    39153915                      int upperN=upperActive[-1];
     
    39233923                          double alpha=multiplier*work[iRow];
    39243924#endif
    3925 #if CLP_PARAMETRIC_DENSE_ARRAYS
     3925#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    39263926                          double alpha3 = alpha+array[iRow];
    39273927                          int iSequence = pivotVariable_[iRow];
    3928 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    39293928                          double oldLower = lowerCoefficient[iRow];
    39303929                          double oldUpper = upperCoefficient[iRow];
    3931 #endif
    39323930                          if (lower_[iSequence]>-1.0e30) {
    39333931                            //lowerGap[iRow]=value-lower_[iSequence];
    39343932                            double alpha2 = alpha3 + lowerChange[iSequence];
    3935 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    39363933                            if (alpha2>1.0e-8)  {
    39373934                              lowerCoefficient[iRow]=alpha2;
     
    39423939                                lowerCoefficient[iRow]=COIN_DBL_MIN;
    39433940                            }
    3944 #else
    3945                             if (alpha2>1.0e-8)
    3946                               lowerCoefficient[iRow]=alpha2;
    3947                             else
    3948                               lowerCoefficient[iRow]=0.0;
    3949 #endif
    39503941                          } else {
    3951 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    39523942                            if (oldLower)
    39533943                              lowerCoefficient[iRow]=COIN_DBL_MIN;
    3954 #else
    3955                             lowerCoefficient[iRow]=0.0;
    3956 #endif
    39573944                          }
    39583945                          if (upper_[iSequence]<1.0e30) {
    39593946                            //upperGap[iRow]=-(value-upper_[iSequence]);
    39603947                            double alpha2 = -(alpha3+upperChange[iSequence]);
    3961 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    39623948                            if (alpha2>1.0e-8) {
    39633949                              upperCoefficient[iRow]=alpha2;
     
    39683954                                upperCoefficient[iRow]=COIN_DBL_MIN;
    39693955                            }
    3970 #else
    3971                             if (alpha2>1.0e-8)
    3972                               upperCoefficient[iRow]=alpha2;
    3973                             else
    3974                               upperCoefficient[iRow]=0.0;
    3975 #endif
    39763956                          } else {
    3977 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    39783957                            if (oldUpper)
    39793958                              upperCoefficient[iRow]=COIN_DBL_MIN;
    3980 #else
    3981                             upperCoefficient[iRow]=0.0;
    3982 #endif
    39833959                          }
    39843960#endif
     
    39893965                      // we want pivot to be -multiplier
    39903966                      rowArray_[4]->quickAdd(pivotRow_,-multiplier-pivotValue);
    3991 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
     3967#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    39923968                      assert (lowerN>=0&&lowerN<=numberRows_);
    39933969                      lowerActive[-1]=lowerN;
     
    40103986                    reinterpret_cast<ClpSimplexDual *> ( this)->flipBounds(rowArray_[0], columnArray_[0]);
    40113987                    //rowArray_[1]->expand();
    4012 #if CLP_PARAMETRIC_DENSE_ARRAYS==0
     3988#ifndef CLP_PARAMETRIC_DENSE_ARRAYS
    40133989                    dualRowPivot_->updatePrimalSolution(rowArray_[1],
    40143990                                                        movement,
     
    41064082                    backwardBasic[sequenceOut_]=-1;
    41074083                    backwardBasic[sequenceIn_]=pivotRow_;
    4108 #if CLP_PARAMETRIC_DENSE_ARRAYS
     4084#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    41094085                    double value = solution_[sequenceIn_];
    41104086                    double alpha = rowArray_[4]->denseVector()[pivotRow_];
    4111 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    41124087                    double oldLower = lowerCoefficient[pivotRow_];
    41134088                    double oldUpper = upperCoefficient[pivotRow_];
     
    41504125                        upperCoefficient[pivotRow_]=COIN_DBL_MIN;
    41514126                    }
    4152 #else
    4153                     if (lower_[sequenceIn_]>-1.0e30) {
    4154                       lowerGap[pivotRow_]=value-lower_[sequenceIn_];
    4155                       double alpha2 = alpha + lowerChange[sequenceIn_];
    4156                       if (alpha2>1.0e-8)
    4157                         lowerCoefficient[pivotRow_]=alpha2;
    4158                       else
    4159                         lowerCoefficient[pivotRow_]=0.0;
    4160                     } else {
    4161                       lowerCoefficient[pivotRow_]=0.0;
    4162                     }
    4163                     if (upper_[sequenceIn_]<1.0e30) {
    4164                       upperGap[pivotRow_]=-(value-upper_[sequenceIn_]);
    4165                       double alpha2 = -(alpha+upperChange[sequenceIn_]);
    4166                       if (alpha2>1.0e-8)
    4167                         upperCoefficient[pivotRow_]=alpha2;
    4168                       else
    4169                         upperCoefficient[pivotRow_]=0.0;
    4170                     } else {
    4171                       upperCoefficient[pivotRow_]=0.0;
    4172                     }
    4173 #endif
    41744127#endif
    41754128                    {
     
    45154468  }
    45164469#endif
    4517   //#define CLP_PARAMETRIC_DENSE_ARRAYS
    4518 #if CLP_PARAMETRIC_DENSE_ARRAYS
     4470#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    45194471  double * lowerGap = paramData.lowerGap;
    45204472  double * upperGap = paramData.upperGap;
    45214473  double * lowerCoefficient = paramData.lowerCoefficient;
    45224474  double * upperCoefficient = paramData.upperCoefficient;
    4523 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    45244475  int * lowerActive=paramData.lowerActive;
    45254476  int * upperActive=paramData.upperActive;
    4526 #endif
    45274477#endif
    45284478  if (!factorization_->pivots()||needFullUpdate) {
     
    46404590    }
    46414591#endif
    4642 #if CLP_PARAMETRIC_DENSE_ARRAYS
     4592#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    46434593    /* later for sparse - keep like CoinIndexedvector
    46444594       and just redo here */
    4645 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    46464595    int lowerN=0;
    46474596    int upperN=0;
    4648 #endif
    46494597    memset(lowerCoefficient,0,numberRows_*sizeof(double));
    46504598    memset(upperCoefficient,0,numberRows_*sizeof(double));
     
    46614609        lowerGap[iRow]=gap;
    46624610        lowerCoefficient[iRow]=thetaCoefficientLower;
    4663 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    46644611        lowerActive[lowerN++]=iRow;
    4665 #endif
    46664612        //} else {
    46674613        //lowerCoefficient[iRow]=0.0;
     
    46734619        upperGap[iRow]=gap2;
    46744620        upperCoefficient[iRow]=-thetaCoefficientUpper;
    4675 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    46764621        upperActive[upperN++]=iRow;
    4677 #endif
    4678         //} else {
    4679         //upperCoefficient[iRow]=0.0;
    4680       }
    4681     }
    4682 #endif
    4683 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
     4622      }
     4623    }
    46844624    assert (lowerN>=0&&lowerN<=numberRows_);
    46854625    lowerActive[-1]=lowerN;
     
    47484688      int * index5 = rowArray_[5]->getIndices();
    47494689      int number5 = rowArray_[5]->getNumElements();
    4750 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
     4690#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    47514691      int lowerN=lowerActive[-1];
    47524692      int upperN=upperActive[-1];
     
    47564696      for (int i = 0; i < number5; i++) {
    47574697        int iPivot = index5[i];
    4758 #if CLP_PARAMETRIC_DENSE_ARRAYS==0
     4698#ifndef CLP_PARAMETRIC_DENSE_ARRAYS
    47594699        rowArray_[4]->quickAdd(iPivot,array5[iPivot]);
    47604700#else
     
    47654705        double alpha5 = array5[iPivot];
    47664706        double alpha = currentAlpha+alpha5;
    4767 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    47684707        if (currentAlpha) {
    47694708          if (alpha) {
     
    47764715          array[iPivot] = alpha;
    47774716        }
    4778 #else
    4779         rowArray_[4]->quickAdd(iPivot,alpha5);
    4780 #endif
    4781         //#undef CLP_PARAMETRIC_DENSE_ARRAYS
    4782         //#define CLP_PARAMETRIC_DENSE_ARRAYS 1
    47834717        double thetaCoefficientLower = lowerChange[iSequence] + alpha;
    47844718        double thetaCoefficientUpper = upperChange[iSequence] + alpha;
    4785 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    47864719        double oldLower = lowerCoefficient[iPivot];
    47874720        double oldUpper = upperCoefficient[iPivot];
    4788 #endif
    47894721        if (thetaCoefficientLower > 1.0e-8&&lower_[iSequence]>-1.0e30) {
    47904722          double currentLower = lower_[iSequence];
     
    47934725          lowerGap[iPivot]=gap;
    47944726          lowerCoefficient[iPivot]=thetaCoefficientLower;
    4795 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    47964727          if (!oldLower)
    47974728            lowerActive[lowerN++]=iPivot;
    4798 #endif
    47994729        } else {
    4800 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    48014730          if (oldLower)
    48024731            lowerCoefficient[iPivot]=COIN_DBL_MIN;
    4803 #else
    4804           lowerCoefficient[iPivot]=0.0;
    4805 #endif
    48064732        }
    48074733        if (thetaCoefficientUpper < -1.0e-8&&upper_[iSequence]<1.0e30) {
     
    48114737          upperGap[iPivot]=gap2;
    48124738          upperCoefficient[iPivot]=-thetaCoefficientUpper;
    4813 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    48144739          if (!oldUpper)
    48154740            upperActive[upperN++]=iPivot;
    4816 #endif
    48174741        } else {
    4818 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    48194742          if (oldUpper)
    48204743            upperCoefficient[iPivot]=COIN_DBL_MIN;
    4821 #else
    4822           upperCoefficient[iPivot]=0.0;
    4823 #endif
    48244744        }
    48254745#endif
     
    48274747      }
    48284748      rowArray_[5]->setNumElements(0);
    4829 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
     4749#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    48304750      rowArray_[4]->setNumElements(nIn4);
    48314751      assert (lowerN>=0&&lowerN<=numberRows_);
     
    48384758  int number = rowArray_[4]->getNumElements();
    48394759#define TESTXX 0
    4840 #if CLP_PARAMETRIC_DENSE_ARRAYS==0 //TESTXX
     4760#ifndef CLP_PARAMETRIC_DENSE_ARRAYS //TESTXX
    48414761  int * markDone = reinterpret_cast<int *>(paramData.markDone);
    48424762  int nToZero=(numberRows_+numberColumns_+COIN_ANY_BITS_PER_INT-1)>>COIN_ANY_SHIFT_PER_INT;
     
    48474767  double theta1=maxTheta;
    48484768  int pivotRow1=-1;
    4849 #if CLP_PARAMETRIC_DENSE_ARRAYS<2 //TESTXX
     4769#ifndef CLP_PARAMETRIC_DENSE_ARRAYS //TESTXX
    48504770  int pivotRow2=-1;
    48514771  double theta2=maxTheta;
    48524772#endif
    4853 #if CLP_PARAMETRIC_DENSE_ARRAYS==0 //TESTXX
     4773#ifndef CLP_PARAMETRIC_DENSE_ARRAYS //TESTXX
    48544774  for (int i=0;i<number;i++) {
    48554775    int iPivot=index[i];
     
    48654785    double thetaCoefficientLower = lowerChange[iSequence] + alpha;
    48664786    double thetaCoefficientUpper = upperChange[iSequence] + alpha;
    4867     //#define NO_TEST
    4868 #ifndef NO_TEST
    48694787    if (thetaCoefficientLower > 1.0e-8) {
    4870 #endif
    48714788      double currentLower = lower_[iSequence];
    48724789      ClpTraceDebug (currentSolution >= currentLower - 100.0*primalTolerance_);
     
    48784795        pivotRow1=iPivot;
    48794796      }
    4880 #ifndef NO_TEST
    48814797    }
    48824798    if (thetaCoefficientUpper < -1.0e-8) {
    4883 #endif
    48844799      double currentUpper = upper_[iSequence];
    48854800      ClpTraceDebug (currentSolution <= currentUpper + 100.0*primalTolerance_);
     
    48914806        pivotRow2=iPivot;
    48924807      }
    4893 #ifndef NO_TEST
    4894     }
    4895 #endif
     4808    }
    48964809  }
    48974810  // now others
     
    49464859  }
    49474860#if 0 //TESTXX
    4948 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
     4861#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    49494862  {
    49504863    double * checkArray = new double[numberRows_];
     
    50014914    delete [] checkArray;
    50024915  }
    5003 #endif
    5004 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    50054916  double theta3=maxTheta;
    50064917  int pivotRow3=-1;
     
    50895000  }
    50905001#endif
    5091 #if CLP_PARAMETRIC_DENSE_ARRAYS==2
    50925002  int lowerN=lowerActive[-1];
    50935003  for (int i=0;i<lowerN;i++) {
     
    51195029    toLower=true;
    51205030  }
    5121 #else
    5122   for (int iRow=0;iRow<numberRows_;iRow++) {
    5123     double lowerC = lowerCoefficient[iRow];
    5124     if (lowerC) {
    5125       double gap=lowerGap[iRow];
    5126       if (lowerC*theta1>gap&&lowerC!=COIN_DBL_MIN) {
    5127         theta1 = gap/lowerC;
    5128         pivotRow1=iRow;
    5129       }
    5130     }
    5131     double upperC = upperCoefficient[iRow];
    5132     if (upperC) {
    5133       double gap=upperGap[iRow];
    5134       if (upperC*theta2>gap&&upperC!=COIN_DBL_MIN) {
    5135         theta2 = gap/upperC;
    5136         pivotRow2=iRow;
    5137       }
    5138     }
    5139   }
    5140   if (theta2<theta1) {
    5141     theta_=theta2;
    5142     toLower=false;
    5143     pivotRow_=pivotRow2;
    5144   } else {
    5145     theta_=theta1;
    5146     toLower=true;
    5147     pivotRow_=pivotRow1;
    5148   }
    5149 #endif
    51505031#endif
    51515032  theta_ = CoinMax(theta_,0.0);
     
    51595040      double currentSolution = solution_[iSequence] - theta_ * alpha;
    51605041      solution_[iSequence] =currentSolution;
    5161 #if CLP_PARAMETRIC_DENSE_ARRAYS
     5042#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    51625043      if (lower_[iSequence]>-1.0e30)
    51635044        lowerGap[iPivot]=currentSolution-lower_[iSequence];
     
    51675048    }
    51685049  }
    5169 #if CLP_PARAMETRIC_DENSE_ARRAYS
     5050#ifdef CLP_PARAMETRIC_DENSE_ARRAYS
    51705051  if (pivotRow_>=0&&false) {
    51715052    double oldValue = upperCoefficient[pivotRow_];
Note: See TracChangeset for help on using the changeset viewer.