Detailed Description
LP interface for Glop.
Definition in file lpi_glop.cpp.
#include "ortools/base/version.h"
#include "ortools/glop/lp_solver.h"
#include "ortools/glop/revised_simplex.h"
#include "ortools/lp_data/lp_print_utils.h"
#include "ortools/lp_data/lp_data_utils.h"
#include "ortools/lp_data/proto_utils.h"
#include "ortools/util/file_util.h"
#include "ortools/util/stats.h"
#include "ortools/util/time_limit.h"
#include "ortools/base/logging.h"
#include "ortools/base/vlog_is_on.h"
#include "lpi/lpi.h"
#include "scip/pub_message.h"
#include <assert.h>
Go to the source code of this file.
Data Structures | |
struct | SCIP_LPi |
struct | SCIP_LPiState |
struct | SCIP_LPiNorms |
Macros | |
#define | UNSCALEDFEAS_CHECK 2 |
Variables | |
static char * | glopname = initGlopName( ) |
Macro Definition Documentation
◆ UNSCALEDFEAS_CHECK
#define UNSCALEDFEAS_CHECK 2 |
uncomment to turn off scaling define feasibility check to possibly reoptimize: 0: no check, 1: completely new check, 2: check unscaled variable and activity values
Definition at line 126 of file lpi_glop.cpp.
Function Documentation
◆ initGlopName()
char * initGlopName | ( | ) |
Definition at line 138 of file lpi_glop.cpp.
References glopname.
◆ updateScaledLP()
|
static |
update scaled linear program
- Parameters
-
lpi LP interface structure
Definition at line 1288 of file lpi_glop.cpp.
References SCIP_LPi::linear_program, SCIP_LPi::lp_modified_since_last_solve, SCIP_LPi::parameters, SCIP_LPi::scaled_lp, and SCIP_LPi::scaler.
Referenced by SCIPlpiStartStrongbranch(), and SolveInternal().
◆ checkUnscaledPrimalFeasibility()
|
static |
check primal feasibility
- Parameters
-
lpi LP interface structure
Definition at line 1308 of file lpi_glop.cpp.
References SCIP_LPi::feastol, SCIP_LPi::linear_program, NULL, SCIP_LPi::parameters, SCIP_LPi::scaler, and SCIP_LPi::solver.
Referenced by SolveInternal().
◆ SolveInternal()
|
static |
common function between the two LPI Solve() functions
- Parameters
-
lpi LP interface structure recursive Is this a recursive call? time_limit time limit
Definition at line 1362 of file lpi_glop.cpp.
References checkUnscaledPrimalFeasibility(), SCIP_LPi::from_scratch, SCIP_LPi::lp_modified_since_last_solve, SCIP_LPi::lp_time_limit_was_reached, SCIP_LPi::niterations, NULL, SCIP_LPi::parameters, SCIP_LPi::scaled_lp, SCIP_Longint, SCIP_LPERROR, SCIP_OKAY, SCIPdebugMessage, SCIP_LPi::solver, and updateScaledLP().
Referenced by SCIPlpiSolveDual(), and SCIPlpiSolvePrimal().
◆ IsDualBoundValid()
|
static |
determine whether the dual bound is valid
- Parameters
-
status status to be checked
Definition at line 1501 of file lpi_glop.cpp.
Referenced by strongbranch().
◆ strongbranch()
|
static |
performs strong branching iterations
- Parameters
-
lpi LP interface structure col_index column to apply strong branching on psol fractional current primal solution value of column itlim iteration limit for strong branchings down stores dual bound after branching column down up stores dual bound after branching column up downvalid stores whether the returned down value is a valid dual bound; otherwise, it can only be used as an estimate value upvalid stores whether the returned up value is a valid dual bound; otherwise, it can only be used as an estimate value iter stores total number of strong branching iterations, or -1; may be NULL
Definition at line 1510 of file lpi_glop.cpp.
References eps, EPSCEIL, EPSFLOOR, FALSE, IsDualBoundValid(), SCIP_LPi::linear_program, NULL, SCIP_LPi::parameters, SCIP_LPi::scaled_lp, SCIP_LPi::scaler, SCIP_OKAY, SCIPdebugMessage, SCIPerrorMessage, SCIP_LPi::solver, and TRUE.
Referenced by SCIPlpiStrongbranchFrac(), and SCIPlpiStrongbranchInt().
◆ ConvertGlopVariableStatus()
|
static |
convert Glop variable basis status to SCIP status
- Parameters
-
status variable status rc reduced cost of variable
Definition at line 2203 of file lpi_glop.cpp.
References SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, and SCIPerrorMessage.
Referenced by SCIPlpiGetBase().
◆ ConvertGlopConstraintStatus()
|
static |
convert Glop constraint basis status to SCIP status
- Parameters
-
status constraint status dual dual variable value
Definition at line 2228 of file lpi_glop.cpp.
References SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, and SCIPerrorMessage.
Referenced by SCIPlpiGetBase().
◆ ConvertSCIPVariableStatus()
|
static |
Convert SCIP variable status to Glop status
- Parameters
-
status SCIP variable status
Definition at line 2253 of file lpi_glop.cpp.
References SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, and SCIPerrorMessage.
Referenced by SCIPlpiSetBase().
◆ ConvertSCIPConstraintStatusToSlackStatus()
|
static |
Convert a SCIP constraint status to its corresponding Glop slack VariableStatus.
Note that we swap the upper/lower bounds.
- Parameters
-
status SCIP constraint status
Definition at line 2278 of file lpi_glop.cpp.
References SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, and SCIPerrorMessage.
Referenced by SCIPlpiSetBase().
Variable Documentation
◆ glopname
|
static |
Definition at line 136 of file lpi_glop.cpp.
Referenced by initGlopName(), and SCIPlpiGetSolverName().