Ignore:
Timestamp:
Sep 27, 2006 6:24:45 PM (13 years ago)
Author:
ladanyi
Message:

Added warmstart

File:
1 edited

Legend:

Unmodified
Added
Removed
  • stable/0.1/Bonmin/experimental/Bcp/BM_lp.cpp

    r45 r52  
    99    babSolver_(3),
    1010    nlp(),
     11    ws(NULL),
    1112    feasChecker_(NULL),
    1213    in_strong(0)
     
    2021BM_lp::~BM_lp()
    2122{
     23    delete ws;
    2224    delete feasChecker_;
    2325    delete[] primal_solution_;
     
    134136           a feas sol) then create "sol"
    135137        */
    136         nlp.initialSolve();
     138        if (current_index() == 0) {
     139            nlp.initialSolve();
     140            switch (par.entry(BM_par::WarmStartStrategy)) {
     141            case WarmStartNone:
     142                break;
     143            case WarmStartFromRoot:
     144                ws = nlp.getWarmStart();
     145                break;
     146            case WarmStartFromParent:
     147                // FIXME: not yet implemented
     148                break;
     149            }
     150        } else {
     151            switch (par.entry(BM_par::WarmStartStrategy)) {
     152            case WarmStartNone:
     153                nlp.initialSolve();
     154                break;
     155            case WarmStartFromRoot:
     156                nlp.setWarmStart(ws);
     157                nlp.resolve();
     158                break;
     159            case WarmStartFromParent:
     160                // FIXME: not yet implemented
     161                nlp.initialSolve();
     162                break;
     163            }
     164        }
    137165        if (nlp.isProvenOptimal()) {
    138166            const int numCols = nlp.getNumCols();
     
    167195            }
    168196            if (lower_bound_>upper_bound()-get_param(BCP_lp_par::Granularity) &&
    169                         par.entry(BM_par::PrintBranchingInfo)) {
    170                         printf("\
     197                par.entry(BM_par::PrintBranchingInfo)) {
     198                printf("\
    171199BM_lp: At node %i : will fathom because of high lower bound\n",
    172                                    current_index());
     200                       current_index());
    173201            }
    174202        }
     
    177205            lower_bound_ = 1e200;
    178206            numNlpFailed_ = 0;
    179                 if (par.entry(BM_par::PrintBranchingInfo)) {
    180                         printf("\
     207            if (par.entry(BM_par::PrintBranchingInfo)) {
     208                printf("\
    181209BM_lp: At node %i : will fathom because of infeasibility\n",
    182                                    current_index());
    183                 }
     210                       current_index());
     211            }
    184212        }
    185213        else if (nlp.isAbandoned()) {
     214            if (nlp.isIterationLimitReached()) {
     215                printf("\
     216BM_lp: At node %i : WARNING: nlp reached iter limit. Will force branching\n",
     217                       current_index());
     218            } else {
    186219                printf("\
    187220BM_lp: At node %i : WARNING: nlp is abandoned. Will force branching\n",
    188                            current_index());
     221                       current_index());
     222            }
    189223            // nlp failed
    190224            nlp.forceBranchable();
Note: See TracChangeset for help on using the changeset viewer.