Changeset 1860
 Timestamp:
 May 31, 2012 9:40:26 AM (7 years ago)
 Location:
 trunk/Clp/src
 Files:

 2 edited
Legend:
 Unmodified
 Added
 Removed

trunk/Clp/src/ClpSimplexOther.cpp
r1854 r1860 2956 2956 } 2957 2957 double maxTheta = 1.0e50; 2958 double largestChange=0.0; 2958 2959 for (int iRow = 0; iRow < numberRows_; iRow++) { 2959 2960 double lower = rowLower_[iRow]; … … 2962 2963 lowerChange[numberColumns_+iRow]=0.0; 2963 2964 double chgLower = lowerChange[numberColumns_+iRow]; 2965 largestChange=CoinMax(largestChange,fabs(chgLower)); 2964 2966 if (upper>1.0e30) 2965 2967 upperChange[numberColumns_+iRow]=0.0; 2966 2968 double chgUpper = upperChange[numberColumns_+iRow]; 2969 largestChange=CoinMax(largestChange,fabs(chgUpper)); 2967 2970 if (lower > 1.0e30 && upper < 1.0e30) { 2968 2971 if (lower + maxTheta * chgLower > upper + maxTheta * chgUpper) { … … 2985 2988 lowerChange[iColumn]=0.0; 2986 2989 double chgLower = lowerChange[iColumn]; 2990 largestChange=CoinMax(largestChange,fabs(chgLower)); 2987 2991 if (upper>1.0e30) 2988 2992 upperChange[iColumn]=0.0; 2989 2993 double chgUpper = upperChange[iColumn]; 2994 largestChange=CoinMax(largestChange,fabs(chgUpper)); 2990 2995 if (lower > 1.0e30 && upper < 1.0e30) { 2991 2996 if (lower + maxTheta * chgLower > upper + maxTheta * chgUpper) { … … 3022 3027 } 3023 3028 paramData.maxTheta=maxTheta; 3029 /* given largest change element choose acceptable end 3030 be safe and make sure difference < 0.1*tolerance */ 3031 double acceptableDifference=0.1*primalTolerance_/ 3032 CoinMax(largestChange,1.0); 3033 paramData.acceptableMaxTheta=maxThetaacceptableDifference; 3024 3034 bool swapped=false; 3025 3035 // Dantzig … … 3683 3693 double saveTheta=theta_; 3684 3694 theta_ = endingTheta; 3685 if (problemStatus_==2&&theta_> 0.99999999*paramData.maxTheta)3695 if (problemStatus_==2&&theta_>paramData.acceptableMaxTheta) 3686 3696 theta_=COIN_DBL_MAX; // we have finished 3687 3697 int status=eventHandler_>event(ClpEventHandler::theta); 
trunk/Clp/src/ClpSimplexOther.hpp
r1851 r1860 109 109 double endingTheta; 110 110 double maxTheta; 111 double acceptableMaxTheta; // if this far then within tolerances 111 112 double * lowerChange; // full array of lower bound changes 112 113 int * lowerList; // list of lower bound changes
Note: See TracChangeset
for help on using the changeset viewer.