Scippy

    SCIP

    Solving Constraint Integer Programs

    cons_rpa.c File Reference

    Detailed Description

    constraint handler for recursive circle packing

    Author
    Benjamin Mueller

    This constraint handler is used to store information about which (not verified) rectangular patterns have been locked and which circular patterns have not been tried to be verified yet.

    Definition in file cons_rpa.c.

    #include <assert.h>
    #include <string.h>
    #include "cons_rpa.h"
    #include "probdata_rpa.h"
    #include "pattern.h"

    Go to the source code of this file.

    Macros

    #define CONSHDLR_NAME   "rpa"
     
    #define CONSHDLR_DESC   "ringpacking constraint handler"
     
    #define CONSHDLR_ENFOPRIORITY   1
     
    #define CONSHDLR_CHECKPRIORITY   -1
     
    #define CONSHDLR_EAGERFREQ   100
     
    #define CONSHDLR_NEEDSCONS   FALSE
     
    #define EVENTHDLR_NAME   "bestsol"
     
    #define EVENTHDLR_DESC   "best solution event handler"
     
    #define DEFAULT_VERIFICATION_NLPTILIM   10.0
     
    #define DEFAULT_VERIFICATION_NLPNODELIM   10000L
     
    #define DEFAULT_VERIFICATION_HEURTILIM   10.0
     
    #define DEFAULT_VERIFICATION_HEURITERLIM   1000
     
    #define DEFAULT_VERIFICATION_TOTALTILIM   3600.0
     

    Functions

    static SCIP_Bool isSolFeasible (SCIP *scip, SCIP_SOL *sol)
     
    static SCIP_RETCODE verifyCircularPattern (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_PROBDATA *probdata, SCIP_PATTERN *pattern)
     
    static SCIP_RETCODE enforceSol (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_RESULT *result)
     
    static int getShadingVal (int type, int ntypes)
     
    static SCIP_DECL_EVENTEXEC (processNewSolutionEvent)
     
    static SCIP_DECL_CONSFREE (consFreeRpa)
     
    static SCIP_DECL_CONSINITSOL (consInitsolRpa)
     
    static SCIP_DECL_CONSEXITSOL (consExitsolRpa)
     
    static SCIP_DECL_CONSENFOLP (consEnfolpRpa)
     
    static SCIP_DECL_CONSENFORELAX (consEnforelaxRpa)
     
    static SCIP_DECL_CONSENFOPS (consEnfopsRpa)
     
    static SCIP_DECL_CONSCHECK (consCheckRpa)
     
    static SCIP_DECL_CONSLOCK (consLockRpa)
     
    SCIP_RETCODE SCIPincludeConshdlrRpa (SCIP *scip)
     

    Macro Definition Documentation

    ◆ CONSHDLR_NAME

    #define CONSHDLR_NAME   "rpa"

    Definition at line 47 of file cons_rpa.c.

    ◆ CONSHDLR_DESC

    #define CONSHDLR_DESC   "ringpacking constraint handler"

    Definition at line 48 of file cons_rpa.c.

    ◆ CONSHDLR_ENFOPRIORITY

    #define CONSHDLR_ENFOPRIORITY   1

    priority of the constraint handler for constraint enforcing

    Definition at line 49 of file cons_rpa.c.

    ◆ CONSHDLR_CHECKPRIORITY

    #define CONSHDLR_CHECKPRIORITY   -1

    priority of the constraint handler for checking feasibility

    Definition at line 50 of file cons_rpa.c.

    ◆ CONSHDLR_EAGERFREQ

    #define CONSHDLR_EAGERFREQ   100

    frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only

    Definition at line 52 of file cons_rpa.c.

    ◆ CONSHDLR_NEEDSCONS

    #define CONSHDLR_NEEDSCONS   FALSE

    should the constraint handler be skipped, if no constraints are available?

    Definition at line 53 of file cons_rpa.c.

    ◆ EVENTHDLR_NAME

    #define EVENTHDLR_NAME   "bestsol"

    Definition at line 56 of file cons_rpa.c.

    ◆ EVENTHDLR_DESC

    #define EVENTHDLR_DESC   "best solution event handler"

    Definition at line 57 of file cons_rpa.c.

    ◆ DEFAULT_VERIFICATION_NLPTILIM

    #define DEFAULT_VERIFICATION_NLPTILIM   10.0

    time limit for each verification NLP

    Definition at line 60 of file cons_rpa.c.

    ◆ DEFAULT_VERIFICATION_NLPNODELIM

    #define DEFAULT_VERIFICATION_NLPNODELIM   10000L

    node limit for each verification NLP

    Definition at line 61 of file cons_rpa.c.

    ◆ DEFAULT_VERIFICATION_HEURTILIM

    #define DEFAULT_VERIFICATION_HEURTILIM   10.0

    time limit for heuristic verification

    Definition at line 62 of file cons_rpa.c.

    ◆ DEFAULT_VERIFICATION_HEURITERLIM

    #define DEFAULT_VERIFICATION_HEURITERLIM   1000

    iteration limit for each heuristic verification

    Definition at line 63 of file cons_rpa.c.

    ◆ DEFAULT_VERIFICATION_TOTALTILIM

    #define DEFAULT_VERIFICATION_TOTALTILIM   3600.0

    total time limit for all verification problems during the solving process

    Definition at line 64 of file cons_rpa.c.

    Function Documentation

    ◆ isSolFeasible()

    static SCIP_Bool isSolFeasible ( SCIP scip,
    SCIP_SOL sol 
    )
    static

    auxiliary function to decide whether a proposed solution is feasible; a solution is called feasible if and only if z*_C = 0 holds for all circular patterns that are either not packable, i.e., SCIP_PACKABLE_NO or SCIP_PACKABLE_UNKNOWN

    Parameters
    scipSCIP data structure
    solsolution (NULL for LP solution)

    Definition at line 95 of file cons_rpa.c.

    References FALSE, NULL, SCIP_PACKABLE_YES, SCIP_Real, SCIPdebugMsg, SCIPgetProbData(), SCIPgetSolVal(), SCIPisFeasZero(), SCIPpatternGetPackableStatus(), SCIPprobdataGetCInfos(), and TRUE.

    Referenced by enforceSol(), and SCIP_DECL_CONSCHECK().

    ◆ verifyCircularPattern()

    static SCIP_RETCODE verifyCircularPattern ( SCIP scip,
    SCIP_CONSHDLRDATA conshdlrdata,
    SCIP_PROBDATA probdata,
    SCIP_PATTERN pattern 
    )
    static

    tries to verify a circular pattern; it first tries to call heuristic(s) and afterwards uses a verification NLP

    Parameters
    scipSCIP data structure
    conshdlrdataconstraint handler data
    probdataproblem data
    patterncircular pattern

    Definition at line 137 of file cons_rpa.c.

    References MIN, MIN3, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PACKABLE_UNKNOWN, SCIP_PATTERNTYPE_CIRCULAR, SCIP_Real, SCIPcheckPattern(), SCIPdebugMsg, SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPpatternGetPackableStatus(), SCIPpatternGetPatternType(), SCIPverifyCircularPatternHeuristic(), and SCIPverifyCircularPatternNLP().

    Referenced by enforceSol().

    ◆ enforceSol()

    static SCIP_RETCODE enforceSol ( SCIP scip,
    SCIP_CONSHDLR conshdlr,
    SCIP_SOL sol,
    SCIP_RESULT result 
    )
    static

    auxiliary function for enforcing ringpacking constraint; the function checks whether

    1. the solution is feasible; if yes -> skip
    2. tries to verify an unverified circular pattern C with z*_c > 0 2a. case packable or unknown: go to 2. 2b. case not packable: fix z_C to 0 -> skip
    3. fix all unverified circular patterns to 0

    Note that after step 3. the dual bound is not valid anymore.

    Parameters
    scipSCIP data structure
    conshdlrconstraint handler
    solsolution (NULL for LP solution)
    resultpointer to store the result

    Definition at line 192 of file cons_rpa.c.

    References isSolFeasible(), NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_OKAY, SCIP_PACKABLE_NO, SCIP_PACKABLE_UNKNOWN, SCIP_Real, SCIP_REDUCEDDOM, SCIPconshdlrGetData(), SCIPdebugMsg, SCIPfixVar(), SCIPgetProbData(), SCIPgetSolVal(), SCIPisFeasZero(), SCIPpatternGetPackableStatus(), SCIPprintSol(), SCIPprobdataGetCInfos(), SCIPprobdataInvalidateDualbound(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and verifyCircularPattern().

    Referenced by SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), and SCIP_DECL_CONSENFORELAX().

    ◆ getShadingVal()

    static int getShadingVal ( int  type,
    int  ntypes 
    )
    static

    get shading of a given pattern type

    Parameters
    typepattern type
    ntypestotal number of patterns

    Definition at line 303 of file cons_rpa.c.

    References MAX, and MIN.

    Referenced by SCIP_DECL_EVENTEXEC().

    ◆ SCIP_DECL_EVENTEXEC()

    ◆ SCIP_DECL_CONSFREE()

    static SCIP_DECL_CONSFREE ( consFreeRpa  )
    static

    destructor of constraint handler to free constraint handler data (called when SCIP is exiting)

    Definition at line 485 of file cons_rpa.c.

    References NULL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArray.

    ◆ SCIP_DECL_CONSINITSOL()

    static SCIP_DECL_CONSINITSOL ( consInitsolRpa  )
    static

    solving process initialization method of constraint handler (called when branch and bound process is about to begin)

    Definition at line 504 of file cons_rpa.c.

    References BMSclearMemoryArray, NULL, SCIP_CALL, SCIP_EVENTTYPE_BESTSOLFOUND, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPcatchEvent(), SCIPconshdlrGetData(), SCIPgetProbData(), and SCIPprobdataGetCInfos().

    ◆ SCIP_DECL_CONSEXITSOL()

    static SCIP_DECL_CONSEXITSOL ( consExitsolRpa  )
    static

    solving process deinitialization method of constraint handler (called before branch and bound process data is freed)

    Definition at line 533 of file cons_rpa.c.

    References NULL, SCIP_CALL, SCIP_EVENTTYPE_BESTSOLFOUND, SCIP_OKAY, SCIPconshdlrGetData(), SCIPdropEvent(), SCIPfreeBlockMemoryArray, SCIPgetProbData(), and SCIPprobdataGetCInfos().

    ◆ SCIP_DECL_CONSENFOLP()

    static SCIP_DECL_CONSENFOLP ( consEnfolpRpa  )
    static

    constraint enforcing method of constraint handler for LP solutions

    Definition at line 560 of file cons_rpa.c.

    References enforceSol(), NULL, SCIP_CALL, and SCIP_OKAY.

    ◆ SCIP_DECL_CONSENFORELAX()

    static SCIP_DECL_CONSENFORELAX ( consEnforelaxRpa  )
    static

    constraint enforcing method of constraint handler for relaxation solutions

    Definition at line 570 of file cons_rpa.c.

    References enforceSol(), SCIP_CALL, and SCIP_OKAY.

    ◆ SCIP_DECL_CONSENFOPS()

    static SCIP_DECL_CONSENFOPS ( consEnfopsRpa  )
    static

    constraint enforcing method of constraint handler for pseudo solutions

    Definition at line 580 of file cons_rpa.c.

    References enforceSol(), NULL, SCIP_CALL, and SCIP_OKAY.

    ◆ SCIP_DECL_CONSCHECK()

    static SCIP_DECL_CONSCHECK ( consCheckRpa  )
    static

    feasibility check method of constraint handler for integral solutions

    Definition at line 590 of file cons_rpa.c.

    References isSolFeasible(), SCIP_FEASIBLE, SCIP_INFEASIBLE, and SCIP_OKAY.

    ◆ SCIP_DECL_CONSLOCK()