Changeset 2217
- Timestamp:
- Oct 6, 2015 12:10:41 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
stable/2.9/Cbc/src/CbcHeuristicGreedy.cpp
r2094 r2217 996 996 const int * columnLength = matrix_.getVectorLengths(); 997 997 int * sosRow = new int [numberColumns]; 998 char * sos = new char [numberRows]; 999 memset(sos,'a',numberRows); 998 1000 int nonSOS=0; 999 1001 // If bit set then use current … … 1018 1020 } else if (rowUpper[iRow] < 1.0e10) { 1019 1021 rhs[iRow]=rowUpper[iRow]; 1022 if (rhs[iRow]<0) 1023 sos[iRow]=0; // can't be SOS 1020 1024 } else { 1021 1025 rhs[iRow]=rowLower[iRow]; 1026 if (rhs[iRow]<0) 1027 sos[iRow]=0; // can't be SOS 1022 1028 } 1023 1029 } … … 1037 1043 good = false; 1038 1044 int iRow = row[j]; 1039 if (rhs[iRow]==-1.0 ) {1045 if (rhs[iRow]==-1.0 && sos[iRow] == 'a') { 1040 1046 if (element[j] != 1.0) 1041 1047 good = false; … … 1053 1059 delete [] sosRow; 1054 1060 delete [] rhs; 1061 delete [] sos; 1055 1062 setWhen(0); // switch off 1056 1063 return 0; … … 1092 1099 } 1093 1100 double offset2 = 0.0; 1094 char * sos = new char [numberRows];1095 1101 for (int iRow = 0;iRow < numberRows; iRow++) { 1096 sos[iRow]=0; 1097 if (rhs[iRow]<0.0) { 1098 sos[iRow]=1; 1099 rhs[iRow]=1.0; 1100 } else if (rhs[iRow] != rowUpper[iRow]) { 1101 // G row 1102 sos[iRow]=-1; 1103 } 1104 if( slackCost[iRow] == 1.0e30) { 1105 slackCost[iRow]=0.0; 1106 } else { 1107 offset2 += slackCost[iRow]; 1108 sos[iRow] = 2; 1102 if (sos[iRow]=='a') { 1103 // row is possible 1104 sos[iRow]=0; 1105 if (rhs[iRow]<0.0) { 1106 sos[iRow]=1; 1107 rhs[iRow]=1.0; 1108 } else if (rhs[iRow] != rowUpper[iRow]) { 1109 // G row 1110 sos[iRow]=-1; 1111 } 1112 if( slackCost[iRow] == 1.0e30) { 1113 slackCost[iRow]=0.0; 1114 } else { 1115 offset2 += slackCost[iRow]; 1116 sos[iRow] = 2; 1117 } 1109 1118 } 1110 1119 }
Note: See TracChangeset
for help on using the changeset viewer.