Scippy

GCG

Branch-and-Price & Column Generation for Everyone

solver.c File Reference

Detailed Description

methods for GCG pricing solvers

Author
Henri Lotze
Christian Puchert

Definition in file solver.c.

#include "pub_solver.h"
#include "solver.h"
#include "struct_solver.h"
#include "gcg.h"
#include "pricer_gcg.h"
#include <string.h>

Go to the source code of this file.

Functions

 SCIP_DECL_SORTPTRCOMP (GCGsolverComp)
 
SCIP_RETCODE GCGsolverCreate (SCIP *scip, GCG_SOLVER **solver, const char *name, const char *desc, int priority, SCIP_Bool heurenabled, SCIP_Bool exactenabled, GCG_DECL_SOLVERUPDATE((*solverupdate)), GCG_DECL_SOLVERSOLVE((*solversolve)), GCG_DECL_SOLVERSOLVEHEUR((*solveheur)), GCG_DECL_SOLVERFREE((*solverfree)), GCG_DECL_SOLVERINIT((*solverinit)), GCG_DECL_SOLVEREXIT((*solverexit)), GCG_DECL_SOLVERINITSOL((*solverinitsol)), GCG_DECL_SOLVEREXITSOL((*solverexitsol)), GCG_SOLVERDATA *solverdata)
 
SCIP_RETCODE GCGsolverFree (SCIP *scip, GCG_SOLVER **solver)
 
SCIP_RETCODE GCGsolverInit (SCIP *scip, GCG_SOLVER *solver)
 
SCIP_RETCODE GCGsolverExit (SCIP *scip, GCG_SOLVER *solver)
 
SCIP_RETCODE GCGsolverInitsol (SCIP *scip, GCG_SOLVER *solver)
 
SCIP_RETCODE GCGsolverExitsol (SCIP *scip, GCG_SOLVER *solver)
 
SCIP_RETCODE GCGsolverUpdate (SCIP *pricingprob, GCG_SOLVER *solver, int probnr, SCIP_Bool varobjschanged, SCIP_Bool varbndschanged, SCIP_Bool consschanged)
 
SCIP_RETCODE GCGsolverSolve (SCIP *scip, SCIP *pricingprob, GCG_SOLVER *solver, SCIP_Bool redcost, SCIP_Bool heuristic, int probnr, SCIP_Real dualsolconv, SCIP_Real *lowerbound, GCG_PRICINGSTATUS *status, SCIP_Bool *solved)
 
GCG_SOLVERDATAGCGsolverGetData (GCG_SOLVER *solver)
 
void GCGsolverSetData (GCG_SOLVER *solver, GCG_SOLVERDATA *solverdata)
 
const char * GCGsolverGetName (GCG_SOLVER *solver)
 
const char * GCGsolverGetDesc (GCG_SOLVER *solver)
 
int GCGsolverGetPriority (GCG_SOLVER *solver)
 
SCIP_Bool GCGsolverIsHeurEnabled (GCG_SOLVER *solver)
 
SCIP_Bool GCGsolverIsExactEnabled (GCG_SOLVER *solver)
 
int GCGsolverGetOptFarkasCalls (GCG_SOLVER *solver)
 
int GCGsolverGetOptRedcostCalls (GCG_SOLVER *solver)
 
int GCGsolverGetHeurFarkasCalls (GCG_SOLVER *solver)
 
int GCGsolverGetHeurRedcostCalls (GCG_SOLVER *solver)
 
SCIP_Real GCGsolverGetOptFarkasTime (SCIP *scip, GCG_SOLVER *solver)
 
SCIP_Real GCGsolverGetOptRedcostTime (SCIP *scip, GCG_SOLVER *solver)
 
SCIP_Real GCGsolverGetHeurFarkasTime (SCIP *scip, GCG_SOLVER *solver)
 
SCIP_Real GCGsolverGetHeurRedcostTime (SCIP *scip, GCG_SOLVER *solver)
 

Function Documentation

◆ GCGsolverFree()

SCIP_RETCODE GCGsolverFree ( SCIP *  scip,
GCG_SOLVER **  solver 
)

calls destructor and frees memory of GCG pricing solver

Parameters
scipSCIP data structure (master problem)
solverpointer to pricing solver data structure

Definition at line 144 of file solver.c.

◆ GCGsolverInit()

SCIP_RETCODE GCGsolverInit ( SCIP *  scip,
GCG_SOLVER solver 
)

initializes GCG pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 172 of file solver.c.

References GCG_Solver::heurfarkascalls, GCG_Solver::heurfarkasclock, GCG_Solver::heurredcostcalls, GCG_Solver::heurredcostclock, GCG_Solver::optfarkascalls, GCG_Solver::optfarkasclock, GCG_Solver::optredcostcalls, and GCG_Solver::optredcostclock.

◆ GCGsolverExit()

SCIP_RETCODE GCGsolverExit ( SCIP *  scip,
GCG_SOLVER solver 
)

calls exit method of GCG pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 206 of file solver.c.

◆ GCGsolverInitsol()

SCIP_RETCODE GCGsolverInitsol ( SCIP *  scip,
GCG_SOLVER solver 
)

calls solving process initialization method of GCG pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 223 of file solver.c.

◆ GCGsolverExitsol()

SCIP_RETCODE GCGsolverExitsol ( SCIP *  scip,
GCG_SOLVER solver 
)

calls solving process deinitialization method of GCG pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 240 of file solver.c.

◆ GCGsolverUpdate()

SCIP_RETCODE GCGsolverUpdate ( SCIP *  pricingprob,
GCG_SOLVER solver,
int  probnr,
SCIP_Bool  varobjschanged,
SCIP_Bool  varbndschanged,
SCIP_Bool  consschanged 
)

calls update method of GCG pricing solver

Parameters
pricingprobthe pricing problem that should be solved
solverpricing solver
probnrnumber of the pricing problem
varobjschangedhave the objective coefficients changed?
varbndschangedhave the lower and upper bounds changed?
consschangedhave the constraints changed?

Definition at line 257 of file solver.c.

Referenced by GCGsetPricingObjs(), ObjPricerGcg::priceNewVariables(), and ObjPricerGcg::pricingLoop().

◆ GCGsolverSolve()

SCIP_RETCODE GCGsolverSolve ( SCIP *  scip,
SCIP *  pricingprob,
GCG_SOLVER solver,
SCIP_Bool  redcost,
SCIP_Bool  heuristic,
int  probnr,
SCIP_Real  dualsolconv,
SCIP_Real *  lowerbound,
GCG_PRICINGSTATUS status,
SCIP_Bool *  solved 
)

calls heuristic or exact solving method of GCG pricing solver

Note
This method has to be threadsafe!
Parameters
scipSCIP data structure (master problem)
pricingprobthe pricing problem that should be solved
solverpricing solver
redcostis reduced cost (TRUE) or Farkas (FALSE) pricing performed?
heuristicshall the pricing problem be solved heuristically?
probnrnumber of the pricing problem
dualsolconvdual solution of the corresponding convexity constraint
lowerboundpointer to store lower bound of pricing problem
statuspointer to store the returned pricing status
solvedpointer to store whether the solution method was called

Definition at line 280 of file solver.c.

References GCG_Solver::exactenabled, GCG_PRICINGSTATUS_NOTAPPLICABLE, GCG_Solver::heurenabled, GCG_Solver::heurfarkascalls, GCG_Solver::heurfarkasclock, GCG_Solver::heurredcostcalls, GCG_Solver::heurredcostclock, GCG_Solver::optfarkascalls, GCG_Solver::optfarkasclock, GCG_Solver::optredcostcalls, and GCG_Solver::optredcostclock.

◆ GCGsolverGetData()

GCG_SOLVERDATA* GCGsolverGetData ( GCG_SOLVER solver)

gets user data of GCG pricing solver

Parameters
solverpricing solver

Definition at line 377 of file solver.c.

References GCG_Solver::solverdata.

Referenced by GCG_DECL_SOLVEREXITSOL(), GCG_DECL_SOLVERFREE(), GCG_DECL_SOLVERINITSOL(), GCG_DECL_SOLVERSOLVE(), GCG_DECL_SOLVERSOLVEHEUR(), and GCG_DECL_SOLVERUPDATE().

◆ GCGsolverSetData()

void GCGsolverSetData ( GCG_SOLVER solver,
GCG_SOLVERDATA solverdata 
)

sets user data of GCG pricing solver

Parameters
solverpricing solver
solverdatapricing solver data

Definition at line 387 of file solver.c.

References GCG_Solver::solverdata.

Referenced by GCG_DECL_SOLVERFREE().

◆ GCGsolverGetName()

const char* GCGsolverGetName ( GCG_SOLVER solver)

gets name of GCG pricing solver

Parameters
solverpricing solver

Definition at line 398 of file solver.c.

References GCG_Solver::name.

Referenced by gcg::Pricingcontroller::evaluatePricingjob(), GCGpricerPrintListOfSolvers(), GCGpricerPrintPricingStatistics(), and ObjPricerGcg::pricingLoop().

◆ GCGsolverGetDesc()

const char* GCGsolverGetDesc ( GCG_SOLVER solver)

gets description of GCG pricing solver

Parameters
solverpricing solver

Definition at line 408 of file solver.c.

References GCG_Solver::desc.

Referenced by GCGpricerPrintListOfSolvers().

◆ GCGsolverGetPriority()

int GCGsolverGetPriority ( GCG_SOLVER solver)

gets priority of GCG pricing solver

Parameters
solverpricing solver

Definition at line 418 of file solver.c.

References GCG_Solver::priority.

Referenced by GCGpricerPrintListOfSolvers(), and gcg::SCIP_DECL_SORTPTRCOMP().

◆ GCGsolverIsHeurEnabled()

SCIP_Bool GCGsolverIsHeurEnabled ( GCG_SOLVER solver)

gets whether heuristic solving method of GCG pricing solver is enabled

Parameters
solverpricing solver

Definition at line 428 of file solver.c.

References GCG_Solver::heurenabled.

Referenced by GCGpricerPrintListOfSolvers(), GCGpricingjobNextSolver(), GCGpricingjobResetHeuristic(), GCGpricingjobResetSolver(), gcg::Pricingcontroller::initSol(), and gcg::Pricingcontroller::setupPriorityQueue().

◆ GCGsolverIsExactEnabled()

SCIP_Bool GCGsolverIsExactEnabled ( GCG_SOLVER solver)

gets whether exact solving method of GCG pricing solver is enabled

Parameters
solverpricing solver

Definition at line 438 of file solver.c.

References GCG_Solver::exactenabled.

Referenced by GCGpricerPrintListOfSolvers(), GCGpricingjobNextSolver(), GCGpricingjobResetSolver(), and gcg::Pricingcontroller::initSol().

◆ GCGsolverGetOptFarkasCalls()

int GCGsolverGetOptFarkasCalls ( GCG_SOLVER solver)

gets number of exact Farkas pricing calls of pricing solver

Parameters
solverpricing solver

Definition at line 448 of file solver.c.

References GCG_Solver::optfarkascalls.

Referenced by GCGpricerPrintPricingStatistics().

◆ GCGsolverGetOptRedcostCalls()

int GCGsolverGetOptRedcostCalls ( GCG_SOLVER solver)

gets number of exact reduced cost pricing calls of pricing solver

Parameters
solverpricing solver

Definition at line 458 of file solver.c.

References GCG_Solver::optredcostcalls.

Referenced by GCGpricerPrintPricingStatistics().

◆ GCGsolverGetHeurFarkasCalls()

int GCGsolverGetHeurFarkasCalls ( GCG_SOLVER solver)

gets number of heuristic Farkas pricing calls of pricing solver

Parameters
solverpricing solver

Definition at line 468 of file solver.c.

References GCG_Solver::heurfarkascalls.

Referenced by GCGpricerPrintPricingStatistics().

◆ GCGsolverGetHeurRedcostCalls()

int GCGsolverGetHeurRedcostCalls ( GCG_SOLVER solver)

gets number of heuristic reduced cost pricing calls of pricing solver

Parameters
solverpricing solver

Definition at line 478 of file solver.c.

References GCG_Solver::heurredcostcalls.

Referenced by GCGpricerPrintPricingStatistics().

◆ GCGsolverGetOptFarkasTime()

SCIP_Real GCGsolverGetOptFarkasTime ( SCIP *  scip,
GCG_SOLVER solver 
)

gets exact Farkas pricing time of pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 488 of file solver.c.

References GCG_Solver::optfarkasclock.

Referenced by GCGpricerPrintPricingStatistics().

◆ GCGsolverGetOptRedcostTime()

SCIP_Real GCGsolverGetOptRedcostTime ( SCIP *  scip,
GCG_SOLVER solver 
)

gets exact reduced cost pricing time of pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 500 of file solver.c.

References GCG_Solver::optredcostclock.

Referenced by GCGpricerPrintPricingStatistics().

◆ GCGsolverGetHeurFarkasTime()

SCIP_Real GCGsolverGetHeurFarkasTime ( SCIP *  scip,
GCG_SOLVER solver 
)

gets heuristic Farkas pricing time of pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 512 of file solver.c.

References GCG_Solver::heurfarkasclock.

Referenced by GCGpricerPrintPricingStatistics().

◆ GCGsolverGetHeurRedcostTime()

SCIP_Real GCGsolverGetHeurRedcostTime ( SCIP *  scip,
GCG_SOLVER solver 
)

gets heuristic reduced cost pricing time of pricing solver

Parameters
scipSCIP data structure (master problem)
solverpricing solver

Definition at line 524 of file solver.c.

References GCG_Solver::heurredcostclock.

Referenced by GCGpricerPrintPricingStatistics().