Ignore:
Timestamp:
Apr 1, 2013 1:09:22 PM (7 years ago)
Author:
forrest
Message:

make it easier to use slow exotic cuts
more on cutoff as constraint and multiple root solver fixes
general fixing of bugs found on MIQP etc

File:
1 edited

Legend:

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

    r1854 r1880  
    14561456
    14571457    if (useDIVING > 0) {
     1458        int majorIterations=64;
    14581459        int diveOptions2 = parameters_[whichParam(CBC_PARAM_INT_DIVEOPT, numberParameters_, parameters_)].intValue();
    14591460        int diveOptions;
    14601461        if (diveOptions2 > 99) {
    14611462            // switch on various active set stuff
    1462             diveOptions = diveOptions2 % 100;
    1463             diveOptions2 -= diveOptions;
     1463            diveOptions = diveOptions2%100;
     1464            diveOptions2 /= 100;
    14641465        } else {
    14651466            diveOptions = diveOptions2;
     
    14721473            heuristicDV.setHeuristicName("DiveVectorLength");
    14731474            heuristicDV.setWhen(diveOptions);
     1475            if (diveOptions2) {
     1476              heuristicDV.setMaxIterations(majorIterations);
     1477              heuristicDV.setPercentageToFix(0.0);
     1478              heuristicDV.setMaxSimplexIterations(COIN_INT_MAX);
     1479              heuristicDV.setMaxSimplexIterationsAtRoot(COIN_INT_MAX-(diveOptions2-1));
     1480            }
    14741481            model->addHeuristic(&heuristicDV) ;
    14751482        }
     
    14781485            heuristicDG.setHeuristicName("DiveGuided");
    14791486            heuristicDG.setWhen(diveOptions);
     1487            if (diveOptions2) {
     1488              heuristicDG.setMaxIterations(majorIterations);
     1489              heuristicDG.setPercentageToFix(0.0);
     1490              heuristicDG.setMaxSimplexIterations(COIN_INT_MAX);
     1491              heuristicDG.setMaxSimplexIterationsAtRoot(COIN_INT_MAX-(diveOptions2-1));
     1492            }
    14801493            model->addHeuristic(&heuristicDG) ;
    14811494        }
     
    14841497            heuristicDF.setHeuristicName("DiveFractional");
    14851498            heuristicDF.setWhen(diveOptions);
     1499            if (diveOptions2) {
     1500              heuristicDF.setMaxIterations(majorIterations);
     1501              heuristicDF.setPercentageToFix(0.0);
     1502              heuristicDF.setMaxSimplexIterations(COIN_INT_MAX);
     1503              heuristicDF.setMaxSimplexIterationsAtRoot(COIN_INT_MAX-(diveOptions2-1));
     1504            }
    14861505            model->addHeuristic(&heuristicDF) ;
    14871506        }
     
    14901509            heuristicDC.setHeuristicName("DiveCoefficient");
    14911510            heuristicDC.setWhen(diveOptions);
     1511            if (diveOptions2) {
     1512              heuristicDC.setMaxIterations(majorIterations);
     1513              heuristicDC.setPercentageToFix(0.0);
     1514              heuristicDC.setMaxSimplexIterations(COIN_INT_MAX);
     1515              heuristicDC.setMaxSimplexIterationsAtRoot(COIN_INT_MAX-(diveOptions2-1));
     1516            }
    14921517            model->addHeuristic(&heuristicDC) ;
    14931518        }
     
    14961521            heuristicDL.setHeuristicName("DiveLineSearch");
    14971522            heuristicDL.setWhen(diveOptions);
     1523            if (diveOptions2) {
     1524              heuristicDL.setMaxIterations(majorIterations);
     1525              heuristicDL.setPercentageToFix(0.0);
     1526              heuristicDL.setMaxSimplexIterations(COIN_INT_MAX);
     1527              heuristicDL.setMaxSimplexIterationsAtRoot(COIN_INT_MAX-(diveOptions2-1));
     1528            }
    14981529            model->addHeuristic(&heuristicDL) ;
    14991530        }
     
    15011532            CbcHeuristicDivePseudoCost heuristicDP(*model);
    15021533            heuristicDP.setHeuristicName("DivePseudoCost");
    1503             heuristicDP.setWhen(diveOptions + diveOptions2);
     1534            heuristicDP.setWhen(diveOptions /*+ diveOptions2*/);
     1535            if (diveOptions2) {
     1536              heuristicDP.setMaxIterations(majorIterations);
     1537              heuristicDP.setPercentageToFix(0.0);
     1538              heuristicDP.setMaxSimplexIterations(COIN_INT_MAX);
     1539              heuristicDP.setMaxSimplexIterationsAtRoot(COIN_INT_MAX-(diveOptions2-1));
     1540            }
    15041541            model->addHeuristic(&heuristicDP) ;
    15051542        }
Note: See TracChangeset for help on using the changeset viewer.