Changeset 2332


Ignore:
Timestamp:
May 25, 2017 11:37:09 AM (18 months ago)
Author:
forrest
Message:

fix SOS2

Location:
trunk/Cbc/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cbc/src/CbcModel.cpp

    r2331 r2332  
    1204112041                mark[iColumn] = i;
    1204212042            }
     12043        } else {
     12044            newNumberObjects++;
    1204312045        }
    1204412046    }
  • trunk/Cbc/src/CbcSolver.cpp

    r2314 r2332  
    43434343                                        }
    43444344                                    }
     4345                                    // redo existing SOS
     4346                                    if (osiclp->numberSOS()) {
     4347                                      int * back = new int[numberOriginalColumns];
     4348                                      for (int i = 0; i < numberOriginalColumns; i++)
     4349                                        back[i]=-1;
     4350                                      for (int i = 0; i < numberColumns; i++) {
     4351                                        int iColumn = originalColumns[i];
     4352                                        back[iColumn]=i;
     4353                                      }
     4354                                      int numberSOSOld=osiclp->numberSOS();
     4355                                      int numberSOS=osiclp2->numberSOS();
     4356                                      assert (numberSOS==numberSOSOld);
     4357                                      CoinSet * setInfo = const_cast<CoinSet *>(osiclp2->setInfo());
     4358                                      for (int i = 0; i < numberSOS; i++) {
     4359                                        //int type = setInfo[i].setType();
     4360                                        int n = setInfo[i].numberEntries();
     4361                                        int * which = const_cast<int *>(setInfo[i].which());
     4362                                        for (int j=0;j<n;j++) {
     4363                                          int iColumn = which[j];
     4364                                          iColumn=back[iColumn];
     4365                                          assert(iColumn>=0);
     4366                                          which[j]=iColumn;
     4367                                        }
     4368                                      }
     4369                                      delete [] back;
     4370                                    }
    43454371                                }
    43464372                                // we have to keep solver2 so pass clone
     
    56925718                                            int iColumn = oldObjects[iObj]->columnNumber();
    56935719                                            if (iColumn < 0 || iColumn >= numberOriginalColumns) {
     5720#if 0 // now done earlier
    56945721                                                CbcSOS * obj =
    56955722                                                    dynamic_cast <CbcSOS *>(oldObjects[iObj]) ;
     
    57115738                                                    obj->setNumberMembers(nn);
    57125739                                                }
     5740#endif
    57135741                                                continue;
    57145742                                            }
Note: See TracChangeset for help on using the changeset viewer.