Scippy

GCG

Branch-and-Price & Column Generation for Everyone

sepa_master.c File Reference

Detailed Description

master separator

Author
Gerald Gamrath

Definition in file sepa_master.c.

#include <assert.h>
#include <stdio.h>
#include <string.h>
#include "scip/scip.h"
#include "scip/lp.h"
#include "sepa_master.h"
#include "gcg.h"
#include "relax_gcg.h"
#include "pricer_gcg.h"

Go to the source code of this file.

Data Structures

struct  SCIP_SepaData
 

Macros

#define SEPA_NAME   "master"
 
#define SEPA_DESC   "separator for separating cuts in the original problem, called in the master"
 
#define SEPA_PRIORITY   1000
 
#define SEPA_FREQ   1
 
#define SEPA_MAXBOUNDDIST   1.0
 
#define SEPA_USESSUBSCIP   FALSE
 
#define SEPA_DELAY   FALSE
 
#define STARTMAXCUTS   50
 
#define sepaCopyMaster   NULL
 
#define sepaInitMaster   NULL
 
#define sepaInitsolMaster   NULL
 
#define sepaExecsolMaster   NULL
 

Functions

static SCIP_RETCODE ensureSizeCuts (SCIP *scip, SCIP_SEPADATA *sepadata, int size)
 
static SCIP_DECL_SEPAFREE (sepaFreeMaster)
 
static SCIP_DECL_SEPAEXIT (sepaExitMaster)
 
static SCIP_DECL_SEPAEXITSOL (sepaExitsolMaster)
 
static SCIP_DECL_SEPAEXECLP (sepaExeclpMaster)
 
SCIP_RETCODE SCIPincludeSepaMaster (SCIP *scip)
 
SCIP_ROW ** GCGsepaGetOrigcuts (SCIP *scip)
 
int GCGsepaGetNCuts (SCIP *scip)
 
SCIP_ROW ** GCGsepaGetMastercuts (SCIP *scip)
 
SCIP_RETCODE GCGsepaAddMastercuts (SCIP *scip, SCIP_ROW *origcut, SCIP_ROW *mastercut)
 

Macro Definition Documentation

◆ SEPA_NAME

#define SEPA_NAME   "master"

Definition at line 47 of file sepa_master.c.

◆ SEPA_DESC

#define SEPA_DESC   "separator for separating cuts in the original problem, called in the master"

Definition at line 48 of file sepa_master.c.

◆ SEPA_PRIORITY

#define SEPA_PRIORITY   1000

Definition at line 49 of file sepa_master.c.

◆ SEPA_FREQ

#define SEPA_FREQ   1

Definition at line 51 of file sepa_master.c.

◆ SEPA_MAXBOUNDDIST

#define SEPA_MAXBOUNDDIST   1.0

Definition at line 52 of file sepa_master.c.

◆ SEPA_USESSUBSCIP

#define SEPA_USESSUBSCIP   FALSE

Definition at line 53 of file sepa_master.c.

◆ SEPA_DELAY

#define SEPA_DELAY   FALSE

should separation method be delayed, if other separators found cuts?

Definition at line 54 of file sepa_master.c.

◆ STARTMAXCUTS

#define STARTMAXCUTS   50

maximal cuts used at the beginning

Definition at line 56 of file sepa_master.c.

◆ sepaCopyMaster

#define sepaCopyMaster   NULL

Definition at line 111 of file sepa_master.c.

◆ sepaInitMaster

#define sepaInitMaster   NULL

Definition at line 112 of file sepa_master.c.

◆ sepaInitsolMaster

#define sepaInitsolMaster   NULL

Definition at line 113 of file sepa_master.c.

◆ sepaExecsolMaster

#define sepaExecsolMaster   NULL

Definition at line 114 of file sepa_master.c.

Function Documentation

◆ ensureSizeCuts()

static SCIP_RETCODE ensureSizeCuts ( SCIP *  scip,
SCIP_SEPADATA *  sepadata,
int  size 
)
static

allocates enough memory to hold more cuts

Parameters
scipSCIP data structure
sepadataseparator data data structure
sizenew size of cut arrays

Definition at line 82 of file sepa_master.c.

Referenced by GCGsepaAddMastercuts(), and SCIP_DECL_SEPAEXECLP().

◆ SCIP_DECL_SEPAFREE()

static SCIP_DECL_SEPAFREE ( sepaFreeMaster  )
static

destructor of separator to free user data (called when SCIP is exiting)

Definition at line 118 of file sepa_master.c.

◆ SCIP_DECL_SEPAEXIT()

static SCIP_DECL_SEPAEXIT ( sepaExitMaster  )
static

deinitialization method of separator (called before transformed problem is freed)

Definition at line 134 of file sepa_master.c.

References GCGmasterGetOrigprob().

◆ SCIP_DECL_SEPAEXITSOL()

static SCIP_DECL_SEPAEXITSOL ( sepaExitsolMaster  )
static

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

Definition at line 158 of file sepa_master.c.

References GCGmasterGetOrigprob().

◆ SCIP_DECL_SEPAEXECLP()

static SCIP_DECL_SEPAEXECLP ( sepaExeclpMaster  )
static

◆ SCIPincludeSepaMaster()

SCIP_RETCODE SCIPincludeSepaMaster ( SCIP *  scip)

creates the master separator and includes it in SCIP

Parameters
scipSCIP data structure

Definition at line 368 of file sepa_master.c.

References GCGmasterGetOrigprob(), SEPA_DELAY, SEPA_DESC, SEPA_FREQ, SEPA_MAXBOUNDDIST, SEPA_NAME, SEPA_PRIORITY, SEPA_USESSUBSCIP, sepaCopyMaster, sepaExecsolMaster, sepaInitMaster, sepaInitsolMaster, and STARTMAXCUTS.

Referenced by GCGincludeMasterPlugins().

◆ GCGsepaGetOrigcuts()

SCIP_ROW** GCGsepaGetOrigcuts ( SCIP *  scip)

returns the array of original cuts saved in the separator data

Parameters
scipSCIP data structure

Definition at line 400 of file sepa_master.c.

References SEPA_NAME.

Referenced by ObjPricerGcg::computeColMastercuts(), ObjPricerGcg::getStabilizedDualObjectiveValue(), SCIP_DECL_SEPAEXECLP(), and ObjPricerGcg::setPricingObjs().

◆ GCGsepaGetNCuts()

int GCGsepaGetNCuts ( SCIP *  scip)

◆ GCGsepaGetMastercuts()

SCIP_ROW** GCGsepaGetMastercuts ( SCIP *  scip)

returns the array of master cuts saved in the separator data

Parameters
scipSCIP data structure

Definition at line 438 of file sepa_master.c.

References SEPA_NAME.

Referenced by ObjPricerGcg::computeColMastercuts(), GCGcolComputeDualObjPara(), ObjPricerGcg::getStabilizedDualObjectiveValue(), gcg::Stabilization::rowGetDual(), and ObjPricerGcg::setPricingObjs().

◆ GCGsepaAddMastercuts()

SCIP_RETCODE GCGsepaAddMastercuts ( SCIP *  scip,
SCIP_ROW *  origcut,
SCIP_ROW *  mastercut 
)

adds given original and master cut to master separator data

Parameters
scipSCIP data structure
origcutpointer to orginal cut
mastercutpointer to master cut

Definition at line 457 of file sepa_master.c.

References ensureSizeCuts(), and SEPA_NAME.

Referenced by SCIP_DECL_SEPAEXECLP().