 Timestamp:
 Aug 29, 2009 11:39:30 AM (10 years ago)
 Location:
 trunk/Clp/src
 Files:

 4 edited
Legend:
 Unmodified
 Added
 Removed

trunk/Clp/src/CbcOrClpParam.cpp
r1424 r1426 2324 2324 ( 2325 2325 "Yet more ideas for Feasibility Pump \n\ 2326 \t/1000 == 1 Pump will run twice if no solution found\n\ 2327 \t/1000 == 2 Pump will only run after root cuts if no solution found\n\ 2328 \t/1000 >10 as above but even if solution found\n\ 2326 2329 \t/100 == 1,3.. exact 1.0 for objective values\n\ 2327 2330 \t/100 == 2,3.. allow more iterations per pass\n\ 
trunk/Clp/src/ClpSimplex.cpp
r1424 r1426 638 638 return numberOut; 639 639 } 640 640 if ((moreSpecialOptions_&128)!=0&&!numberIterations_) { 641 //printf("trying feas pump\n"); 642 const char * integerType = integerInformation(); 643 assert (integerType); 644 assert (perturbationArray_); 645 CoinZeroN(cost_,numberRows_+numberColumns_); 646 for (int i=0;i<numberRows_numberRows_;i++) { 647 int iSequence = pivotVariable_[i]; 648 if (iSequence<numberColumns_&&integerType[iSequence]) { 649 double lower =lower_[iSequence]; 650 double upper = upper_[iSequence]; 651 double value = solution_[iSequence]; 652 if (value>=lowerprimalTolerance_&& 653 value<=upper+primalTolerance_) { 654 double sign; 655 if (valuelower<uppervalue) 656 sign=1.0; 657 else 658 sign=1.0; 659 cost_[iSequence]=sign*perturbationArray_[iSequence]; 660 } 661 } 662 } 663 } 641 664 computeDuals(givenDuals); 665 if ((moreSpecialOptions_&128)!=0&&!numberIterations_) { 666 const char * integerType = integerInformation(); 667 // Need to do columns and rows to stay dual feasible 668 for (int iSequence=0;iSequence<numberColumns_;iSequence++) { 669 if (integerType[iSequence]&&getStatus(iSequence)!=basic) { 670 double djValue=dj_[iSequence]; 671 double change=0.0; 672 if (getStatus(iSequence)==atLowerBound) 673 change = CoinMax(djValue,10.0*perturbationArray_[iSequence]); 674 else if (getStatus(iSequence)==atUpperBound) 675 change = CoinMin(djValue,10.0*perturbationArray_[iSequence]); 676 cost_[iSequence]=change; 677 dj_[iSequence]+=change; 678 } 679 } 680 } 642 681 643 682 // now check solutions … … 9773 9812 #endif 9774 9813 } 9775 if (numberColumns_== 100) {9814 if (numberColumns_==100) { 9776 9815 const char * integerType = integerInformation(); 9777 9816 for (int i=0;i<100;i++) { 
trunk/Clp/src/ClpSimplex.hpp
r1424 r1426 951 951 32 bit  say optimal if primal feasible! 952 952 64 bit  give up easily in dual (and say infeasible) 953 128 bit  no objective, 01 and in B&B 953 954 */ 954 955 inline int moreSpecialOptions() const … … 962 963 32 bit  say optimal if primal feasible! 963 964 64 bit  give up easily in dual (and say infeasible) 965 128 bit  no objective, 01 and in B&B 964 966 */ 965 967 inline void setMoreSpecialOptions(int value) 
trunk/Clp/src/ClpSimplexDual.cpp
r1425 r1426 5343 5343 double * sort = new double[numberColumns_]; 5344 5344 // Use objective BEFORE scaling 5345 const double * obj = objective();5345 const double * obj = ((moreSpecialOptions_&128)==0) ? objective() : cost_; 5346 5346 int i; 5347 5347 for (i=0;i<numberColumns_;i++) {
Note: See TracChangeset
for help on using the changeset viewer.