Ignore:
Timestamp:
Aug 25, 2011 6:17:49 AM (9 years ago)
Author:
forrest
Message:

patches to try and make parametrics faster

File:
1 edited

Legend:

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

    r1780 r1785  
    103103    /// Finds best possible pivot
    104104    double bestPivot(bool justColumns=false);
     105  typedef struct {
     106    double startingTheta;
     107    double endingTheta;
     108    double * lowerChange; // full array of lower bound changes
     109    int * lowerList; // list of lower bound changes
     110    double * upperChange; // full array of upper bound changes
     111    int * upperList; // list of upper bound changes
     112    char * markDone; // mark which ones looked at
     113    int * backwardBasic; // from sequence to pivot row
     114  } parametricsData;
    105115
    106116private:
     
    113123         if event handler exists it may do more
    114124     */
    115      int parametricsLoop(double startingTheta, double & endingTheta, double reportIncrement,
     125     int parametricsLoop(parametricsData & paramData, double reportIncrement,
    116126                         const double * changeLower, const double * changeUpper,
    117127                         const double * changeObjective, ClpDataSave & data,
    118128                         bool canTryQuick);
    119      int parametricsLoop(double & startingTheta, double & endingTheta,
     129     int parametricsLoop(parametricsData & paramData,
    120130                         ClpDataSave & data,bool canSkipFactorization=false);
    121131     /**  Refactorizes if necessary
     
    137147         +3 max iterations
    138148      */
    139      int whileIterating(double & startingTheta, double & endingTheta, double reportIncrement,
    140                         const double * changeLower, const double * changeUpper,
     149     int whileIterating(parametricsData & paramData, double reportIncrement,
    141150                        const double * changeObjective);
    142151     /** Computes next theta and says if objective or bounds (0= bounds, 1 objective, -1 none).
     
    144153         type 1 bounds, 2 objective, 3 both.
    145154     */
    146      int nextTheta(int type, double maxTheta,
    147                    const double * changeLower, const double * changeUpper,
     155     int nextTheta(int type, double maxTheta, parametricsData & paramData,
    148156                   const double * changeObjective);
    149157     /// Restores bound to original bound
     
    197205         non-zero return code indicates minor problems
    198206     */
    199      int restoreFromDual(const ClpSimplex * dualProblem);
     207  int restoreFromDual(const ClpSimplex * dualProblem,
     208                      bool checkAccuracy=false);
    200209     /** Does very cursory presolve.
    201210         rhs is numberRows, whichRows is 3*numberRows and whichColumns is 2*numberColumns.
Note: See TracChangeset for help on using the changeset viewer.