Changeset 1064 for trunk


Ignore:
Timestamp:
Feb 2, 2014 2:14:24 PM (6 years ago)
Author:
pbelotti
Message:

changeset by Timo: check if there are two identical solutions in the tabu list

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Couenne/src/heuristics/CouenneFPscipSolve.cpp

    r1062 r1064  
    427427      }
    428428
     429    ////////////////////////////////////////////////////////////////////////
     430
     431    SCIP_CALL(SCIPtransformProb(scip));
     432
     433    {
     434      SCIP_CONSHDLR*  conshdlr_bounddisjunction = SCIPfindConshdlr(scip, "bounddisjunction");
     435      int nbdconss= SCIPconshdlrGetNConss(conshdlr_bounddisjunction);
     436      SCIP_CONS** bdconss = SCIPconshdlrGetConss(conshdlr_bounddisjunction);
     437
     438      for(int i=0; i < nbdconss; i++)
     439        {
     440          SCIP_CONS* checkcons = bdconss[i];
     441          SCIP_VAR** checkvars = SCIPgetVarsBounddisjunction(scip, checkcons);
     442          SCIP_Real* checkbounds = SCIPgetBoundsBounddisjunction(scip,checkcons);
     443          SCIP_BOUNDTYPE* checkboundtypes =SCIPgetBoundtypesBounddisjunction(scip, checkcons);
     444          int checknvars = SCIPgetNVarsBounddisjunction(scip, checkcons);
     445
     446          for(int j=i+1; j < nbdconss; j++)
     447            {
     448              SCIP_CONS* tmpcons =SCIPconshdlrGetConss(conshdlr_bounddisjunction)[j];
     449              SCIP_VAR      **tmpvars = SCIPgetVarsBounddisjunction(scip,tmpcons);
     450              SCIP_Real      *tmpbounds =SCIPgetBoundsBounddisjunction(scip, tmpcons);
     451              SCIP_BOUNDTYPE *tmpboundtypes =SCIPgetBoundtypesBounddisjunction(scip, tmpcons);
     452              int tmpnvars = SCIPgetNVarsBounddisjunction(scip, tmpcons);
     453              int k;
     454
     455              if( checknvars !=  tmpnvars )
     456                continue;
     457
     458              for(k=0; k < tmpnvars; k++)
     459                if(tmpvars[k] != checkvars[k] || tmpbounds[k] !=checkbounds[k] || tmpboundtypes[k] != checkboundtypes[k])
     460                  break;
     461
     462              if(k == tmpnvars)
     463                printf("ZZZ identical bounddisjunction constraints\n");
     464            }
     465        }
     466    }
     467
     468    //////////////////////////////////////////////////////////////////////////
     469
    429470#if 0
    430471    // writes MILP problem and SCIP settings into a file
Note: See TracChangeset for help on using the changeset viewer.