Ignore:
Timestamp:
Aug 31, 2010 7:14:51 AM (9 years ago)
Author:
forrest
Message:

a few more rens heuristics

File:
1 edited

Legend:

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

    r1482 r1499  
    39963996                                    }
    39973997                                }
    3998                                 babModel_->addCutGenerator(&gomoryGen, translate[gomoryAction], "Gomory");
     3998                                int extra3 = parameters_[whichParam(CBC_PARAM_INT_EXTRA3, numberParameters_, parameters_)].intValue();
     3999                                if (extra3>=100) {
     4000                                  // replace
     4001                                  gomoryGen.passInOriginalSolver(babModel_->solver());
     4002                                  gomoryGen.setGomoryType(2);
     4003                                  extra3 = -1;
     4004                                  parameters_[whichParam(CBC_PARAM_INT_EXTRA3, numberParameters_, parameters_)].setIntValue(extra3);
     4005                                  babModel_->addCutGenerator(&gomoryGen, translate[gomoryAction], "GomoryL");
     4006                                } else {
     4007                                  babModel_->addCutGenerator(&gomoryGen, translate[gomoryAction], "Gomory");
     4008                                }
    39994009                                accuracyFlag[numberGenerators] = 3;
    40004010                                switches[numberGenerators++] = 0;
     4011                                if (extra3>=10) {
     4012                                  // just root if 10
     4013                                  int itype=-99;
     4014                                  if (extra3>=20) {
     4015                                    extra3-=10;
     4016                                    itype = translate[gomoryAction];
     4017                                  }
     4018                                  gomoryGen.passInOriginalSolver(babModel_->solver());
     4019                                  babModel_->addCutGenerator(&gomoryGen, itype, "GomoryL2");
     4020                                  accuracyFlag[numberGenerators] = 3;
     4021                                  switches[numberGenerators++] = 0;
     4022                                  extra3 -= 10;
     4023                                  parameters_[whichParam(CBC_PARAM_INT_EXTRA3, numberParameters_, parameters_)].setIntValue(extra3);
     4024                                }
    40014025                            }
    40024026#ifdef CLIQUE_ANALYSIS
     
    52815305                                    // use osl in gomory (may not if CglGomory decides not to)
    52825306                                    int numberGenerators = babModel_->numberCutGenerators();
     5307                                    int nGomory=0;
    52835308                                    for (int iGenerator = 0; iGenerator < numberGenerators;
    52845309                                            iGenerator++) {
     
    52865311                                        CglGomory * gomory = dynamic_cast<CglGomory *>
    52875312                                                             (generator->generator());
    5288                                         if (gomory)
     5313                                        if (gomory) {
     5314                                          if (nGomory<2) {
    52895315                                            gomory->useAlternativeFactorization();
     5316                                          } else if (gomory->originalSolver()) {
     5317                                            OsiClpSolverInterface * clpSolver = dynamic_cast<OsiClpSolverInterface *>(gomory->originalSolver());
     5318                                            if (clpSolver) {
     5319                                              ClpSimplex * simplex = clpSolver->getModelPtr();
     5320                                              simplex->factorization()->setGoOslThreshold(0);
     5321                                            }
     5322                                          }
     5323                                            nGomory++;
     5324                                        }
    52905325                                    }
    52915326                                }
Note: See TracChangeset for help on using the changeset viewer.