Scippy

SCIP

Solving Constraint Integer Programs

pattern.c File Reference

Detailed Description

pattern data for Ringpacking Problem

Author
Benjamin Mueller

This file implements the handling of patterns. Each pattern has a SCIP_PATTERNTYPE, accessible by SCIPpatternGetPatternType(), which indicates whether it is a circular or rectangular pattern.

Definition in file pattern.c.

#include "pattern.h"
#include "probdata_rpa.h"

Go to the source code of this file.

Functions

static SCIP_RETCODE ensureElemSize (SCIP_PATTERN *pattern, int size)
 
static SCIP_RETCODE createPattern (SCIP *scip, SCIP_PATTERN **pattern, SCIP_PATTERNTYPE patterntype, int type)
 
SCIP_RETCODE SCIPpatternCreateCircular (SCIP *scip, SCIP_PATTERN **pattern, int type)
 
SCIP_RETCODE SCIPpatternCreateRectangular (SCIP *scip, SCIP_PATTERN **pattern)
 
void SCIPpatternCapture (SCIP_PATTERN *pattern)
 
void SCIPpatternRelease (SCIP *scip, SCIP_PATTERN **pattern)
 
SCIP_RETCODE SCIPpatternCopy (SCIP *scip, SCIP_PATTERN *pattern, SCIP_PATTERN **copy)
 
SCIP_RETCODE SCIPpatternAddElement (SCIP_PATTERN *pattern, int type, SCIP_Real x, SCIP_Real y)
 
void SCIPpatternRemoveLastElements (SCIP_PATTERN *pattern, int k)
 
int SCIPpatternGetNElemens (SCIP_PATTERN *pattern)
 
int SCIPpatternGetElementType (SCIP_PATTERN *pattern, int i)
 
int SCIPpatternCountElements (SCIP_PATTERN *pattern, int type)
 
SCIP_Real SCIPpatternGetElementPosX (SCIP_PATTERN *pattern, int elem)
 
SCIP_Real SCIPpatternGetElementPosY (SCIP_PATTERN *pattern, int elem)
 
void SCIPpatternSetElementPos (SCIP_PATTERN *pattern, int elem, SCIP_Real x, SCIP_Real y)
 
SCIP_PATTERNTYPE SCIPpatternGetPatternType (SCIP_PATTERN *pattern)
 
int SCIPpatternGetCircleType (SCIP_PATTERN *pattern)
 
void SCIPpatternSetType (SCIP_PATTERN *pattern, int type)
 
SCIP_PACKABLE SCIPpatternGetPackableStatus (SCIP_PATTERN *pattern)
 
void SCIPpatternSetPackableStatus (SCIP_PATTERN *pattern, SCIP_PACKABLE packable)
 

Function Documentation

◆ ensureElemSize()

static SCIP_RETCODE ensureElemSize ( SCIP_PATTERN pattern,
int  size 
)
static

ensures that there is enough memory to store elements

Parameters
patternpattern
sizerequired size

Definition at line 36 of file pattern.c.

References SCIP_Pattern::blkmem, BMSreallocBlockMemoryArray, MAX, NULL, SCIP_ALLOC, SCIP_OKAY, SCIP_Pattern::size, SCIP_Pattern::types, SCIP_Pattern::xs, and SCIP_Pattern::ys.

Referenced by SCIPpatternAddElement(), and SCIPpatternCopy().

◆ createPattern()

static SCIP_RETCODE createPattern ( SCIP scip,
SCIP_PATTERN **  pattern,
SCIP_PATTERNTYPE  patterntype,
int  type 
)
static

auxiliary function to create a pattern

Parameters
scipSCIP data structure
patternpointer to store pattern
patterntypepattern type
typecircle type (not needed for rectangular patterns)

Definition at line 59 of file pattern.c.

References BMSclearMemory, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PACKABLE_UNKNOWN, SCIPallocBlockMemory, SCIPblkmem(), and SCIPpatternCapture().

Referenced by SCIPpatternCopy(), SCIPpatternCreateCircular(), and SCIPpatternCreateRectangular().

◆ SCIPpatternCreateCircular()

SCIP_RETCODE SCIPpatternCreateCircular ( SCIP scip,
SCIP_PATTERN **  pattern,
int  type 
)

creates an empty circular pattern

Parameters
scipSCIP data structure
patternpointer to store pattern
typecircle type (not needed for rectangular patterns)

Definition at line 88 of file pattern.c.

References createPattern(), and SCIP_PATTERNTYPE_CIRCULAR.

Referenced by SCIPprobdataEnumeratePatterns().

◆ SCIPpatternCreateRectangular()

SCIP_RETCODE SCIPpatternCreateRectangular ( SCIP scip,
SCIP_PATTERN **  pattern 
)

creates an empty rectangular pattern

Parameters
scipSCIP data structure
patternpointer to store pattern

Definition at line 98 of file pattern.c.

References createPattern(), and SCIP_PATTERNTYPE_RECTANGULAR.

Referenced by addVariable(), and setupProblem().

◆ SCIPpatternCapture()

void SCIPpatternCapture ( SCIP_PATTERN pattern)

captures a pattern

Parameters
patternpattern

Definition at line 107 of file pattern.c.

References SCIP_Pattern::nlocks, and NULL.

Referenced by createPattern(), and probdataCreate().

◆ SCIPpatternRelease()

void SCIPpatternRelease ( SCIP scip,
SCIP_PATTERN **  pattern 
)
Parameters
scipSCIP data structure
patternpointer to free pattern

Definition at line 117 of file pattern.c.

References NULL, SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArrayNull.

Referenced by addVariable(), filterPatterns(), probdataFree(), SCIPprobdataEnumeratePatterns(), and setupProblem().

◆ SCIPpatternCopy()

SCIP_RETCODE SCIPpatternCopy ( SCIP scip,
SCIP_PATTERN pattern,
SCIP_PATTERN **  copy 
)

copies a pattern

Parameters
scipSCIP data structure
patternpattern to copy
copypointer to store the copy

Definition at line 143 of file pattern.c.

References createPattern(), ensureElemSize(), SCIP_Pattern::nelems, NULL, SCIP_Pattern::packable, SCIP_Pattern::patterntype, SCIP_CALL, SCIP_OKAY, SCIPpatternAddElement(), SCIP_Pattern::type, SCIP_Pattern::types, SCIP_Pattern::xs, and SCIP_Pattern::ys.

Referenced by SCIPprobdataAddVar().

◆ SCIPpatternAddElement()

SCIP_RETCODE SCIPpatternAddElement ( SCIP_PATTERN pattern,
int  type,
SCIP_Real  x,
SCIP_Real  y 
)

adds an element of a given type to a pattern; packable status does not change

Parameters
patternpattern
typeelement of a given type
xx-coordinate (SCIP_INVALID: unknown)
yy-coordinate (SCIP_INVALID: unknown)

Definition at line 173 of file pattern.c.

References ensureElemSize(), SCIP_Pattern::nelems, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Pattern::types, x, SCIP_Pattern::xs, y, and SCIP_Pattern::ys.

Referenced by addVariable(), enumeratePatterns(), SCIPpatternCopy(), and setupProblem().

◆ SCIPpatternRemoveLastElements()

void SCIPpatternRemoveLastElements ( SCIP_PATTERN pattern,
int  k 
)

removes the last k elements

Parameters
patternpattern
knumber of elements to remove

Definition at line 194 of file pattern.c.

References SCIP_Pattern::nelems, and NULL.

Referenced by enumeratePatterns().

◆ SCIPpatternGetNElemens()

int SCIPpatternGetNElemens ( SCIP_PATTERN pattern)

returns the total number of elements

Parameters
patternpattern

Definition at line 206 of file pattern.c.

References SCIP_Pattern::nelems, and NULL.

Referenced by createPatternVars(), enumeratePatterns(), isPatternDominating(), SCIP_DECL_EVENTEXEC(), SCIPcheckPattern(), SCIPverifyCircularPatternHeuristic(), and SCIPverifyCircularPatternNLP().

◆ SCIPpatternGetElementType()

int SCIPpatternGetElementType ( SCIP_PATTERN pattern,
int  i 
)

returns the type of the i-th element

Parameters
patternpattern
iindex

Definition at line 216 of file pattern.c.

References NULL, and SCIP_Pattern::types.

Referenced by createPatternVars(), enumeratePatterns(), isPatternDominating(), SCIP_DECL_EVENTEXEC(), SCIPcheckPattern(), SCIPverifyCircularPatternHeuristic(), and SCIPverifyCircularPatternNLP().

◆ SCIPpatternCountElements()

int SCIPpatternCountElements ( SCIP_PATTERN pattern,
int  type 
)

returns the total number of elements of a given type

Parameters
patternpattern
typetype

Definition at line 228 of file pattern.c.

References SCIP_Pattern::nelems, NULL, and SCIP_Pattern::types.

Referenced by setupProblem().

◆ SCIPpatternGetElementPosX()

SCIP_Real SCIPpatternGetElementPosX ( SCIP_PATTERN pattern,
int  elem 
)

returns the x-coordinate of an element

Parameters
patternpattern
elemindex of the element

Definition at line 248 of file pattern.c.

References NULL, and SCIP_Pattern::xs.

Referenced by SCIP_DECL_EVENTEXEC(), and SCIPcheckPattern().

◆ SCIPpatternGetElementPosY()

SCIP_Real SCIPpatternGetElementPosY ( SCIP_PATTERN pattern,
int  elem 
)

returns the y-coordinate of an element

Parameters
patternpattern
elemindex of the element

Definition at line 260 of file pattern.c.

References NULL, and SCIP_Pattern::ys.

Referenced by SCIP_DECL_EVENTEXEC(), and SCIPcheckPattern().

◆ SCIPpatternSetElementPos()

void SCIPpatternSetElementPos ( SCIP_PATTERN pattern,
int  elem,
SCIP_Real  x,
SCIP_Real  y 
)

sets the (x,y) position of an element

Parameters
patternpattern
elemindex of the element
xx-coordinate
yy-coordinate

Definition at line 272 of file pattern.c.

References NULL, x, SCIP_Pattern::xs, y, and SCIP_Pattern::ys.

Referenced by SCIPverifyCircularPatternHeuristic(), and SCIPverifyCircularPatternNLP().

◆ SCIPpatternGetPatternType()

SCIP_PATTERNTYPE SCIPpatternGetPatternType ( SCIP_PATTERN pattern)

returns the type of a pattern

Parameters
patternpattern

Definition at line 287 of file pattern.c.

References NULL, and SCIP_Pattern::patterntype.

Referenced by SCIPcheckPattern(), SCIPprobdataAddVar(), SCIPverifyCircularPatternHeuristic(), SCIPverifyCircularPatternNLP(), setupProblem(), and verifyCircularPattern().

◆ SCIPpatternGetCircleType()

int SCIPpatternGetCircleType ( SCIP_PATTERN pattern)

returns the type of the boundary circle

Note
this function can only be called for circular patterns
Parameters
patternpattern

Definition at line 300 of file pattern.c.

References NULL, SCIP_Pattern::patterntype, SCIP_PATTERNTYPE_CIRCULAR, and SCIP_Pattern::type.

Referenced by createPatternVars(), enumeratePatterns(), isPatternDominating(), SCIP_DECL_EVENTEXEC(), SCIPcheckPattern(), SCIPverifyCircularPatternHeuristic(), SCIPverifyCircularPatternNLP(), and setupProblem().

◆ SCIPpatternSetType()

void SCIPpatternSetType ( SCIP_PATTERN pattern,
int  type 
)

sets the type of the boundary circle

Note
this function can only be called for circular patterns
Parameters
patternpattern
typetype

Definition at line 314 of file pattern.c.

References NULL, SCIP_Pattern::patterntype, SCIP_PATTERNTYPE_CIRCULAR, and SCIP_Pattern::type.

Referenced by SCIPprobdataEnumeratePatterns().

◆ SCIPpatternGetPackableStatus()

◆ SCIPpatternSetPackableStatus()

void SCIPpatternSetPackableStatus ( SCIP_PATTERN pattern,
SCIP_PACKABLE  packable 
)

sets the packable status of a pattern

Parameters
patternpattern
packablepackable status

Definition at line 336 of file pattern.c.

References NULL, and SCIP_Pattern::packable.

Referenced by addVariable(), enumeratePatterns(), SCIPverifyCircularPatternHeuristic(), SCIPverifyCircularPatternNLP(), and setupProblem().