lpi_clp.cpp File Reference Detailed DescriptionLP interface for Clp. Notes on this interface:
Definition in file lpi_clp.cpp. #include <ClpSimplex.hpp> #include <ClpPrimalColumnSteepest.hpp> #include <ClpDualRowSteepest.hpp> #include <CoinIndexedVector.hpp> #include <ClpConfig.h> #include <config_clp.h> #include <cassert> #include <cstdlib> #include <iostream> #include <vector> #include <string> #include "lpi/lpi.h" #include "scip/bitencode.h" #include "scip/pub_message.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 66 of file lpi_clp.cpp. Referenced by SCIPlpiGetSolverName().
Definition at line 90 of file lpi_clp.cpp. Referenced by SCIPlpiGetSolFeasibility().
Definition at line 116 of file lpi_clp.cpp.
Definition at line 118 of file lpi_clp.cpp. Typedef Documentation
Definitions for storing basis status (copied from lpi_spx.cpp) Definition at line 115 of file lpi_clp.cpp.
Definition at line 117 of file lpi_clp.cpp. Function Documentation
gets name and version of LP solver Definition at line 433 of file lpi_clp.cpp. References CLP_VERSION.
gets description of LP solver (developer, webpage, ...) Definition at line 442 of file lpi_clp.cpp.
gets pointer for LP solver - use only with great care
Definition at line 450 of file lpi_clp.cpp.
creates an LP problem object
Definition at line 469 of file lpi_clp.cpp. References FALSE, SCIP_ALLOC, SCIP_CALL, SCIP_LPPAR_PRICING, SCIP_OKAY, SCIP_PRICING_LPIDEFAULT, SCIPdebugMessage, and SCIPlpiSetIntpar().
deletes an LP problem object
Definition at line 538 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
copies LP data with column matrix into LP solver
Definition at line 572 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
adds columns to the LP
Definition at line 638 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
deletes all columns in the given range from LP
Definition at line 705 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
deletes columns from SCIP_LPI; the new position of a column must not be greater that its old position
Definition at line 736 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
adds rows to the LP
Definition at line 782 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
deletes all rows in the given range from LP
Definition at line 844 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
deletes rows from SCIP_LP; the new position of a row must not be greater that its old position
Definition at line 876 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
clears the whole LP
Definition at line 922 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
changes lower and upper bounds of columns
Definition at line 941 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
changes left and right hand sides of rows
Definition at line 1007 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
changes a single coefficient
Definition at line 1035 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
changes the objective sense
Definition at line 1058 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
changes objective values of columns in the LP
Definition at line 1078 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
multiplies a row with a non-zero scalar; for negative scalars, the row's sense is switched accordingly
Definition at line 1105 of file lpi_clp.cpp. References SCIP_OKAY, SCIP_Real, and SCIPdebugMessage.
multiplies a column with a non-zero scalar; the objective value is multiplied with the scalar, and the bounds are divided by the scalar; for negative scalars, the column's bounds are switched
Definition at line 1178 of file lpi_clp.cpp. References SCIP_OKAY, SCIP_Real, and SCIPdebugMessage.
gets the number of rows in the LP
Definition at line 1255 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets the number of columns in the LP
Definition at line 1273 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets the number of nonzero elements in the LP constraint matrix
Definition at line 1291 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets columns from LP problem object; the arrays have to be large enough to store all values Either both, lb and ub, have to be 0, or both have to be non-0, either nnonz, beg, ind, and val have to be 0, or all of them have to be non-0.
Definition at line 1312 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets rows from LP problem object; the arrays have to be large enough to store all values. Either both, lhs and rhs, have to be 0, or both have to be non-0, either nnonz, beg, ind, and val have to be 0, or all of them have to be non-0.
Definition at line 1379 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets column names
Definition at line 1443 of file lpi_clp.cpp. References SCIP_LPERROR, and SCIPerrorMessage.
gets row names
Definition at line 1459 of file lpi_clp.cpp. References SCIP_LPERROR, and SCIPerrorMessage.
tries to reset the internal status of the LP solver in order to ignore an instability of the last solving call
Definition at line 1475 of file lpi_clp.cpp. References FALSE, NULL, SCIP_OKAY, and SCIPdebugMessage.
gets the objective sense of the LP
Definition at line 1493 of file lpi_clp.cpp. References NULL, SCIP_OBJSEN_MAXIMIZE, SCIP_OBJSEN_MINIMIZE, and SCIP_OKAY.
gets objective coefficients from LP problem object
Definition at line 1513 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets current bounds from LP problem object
Definition at line 1536 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets current row sides from LP problem object
Definition at line 1567 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets a single coefficient
Definition at line 1598 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
calls primal simplex to solve the LP startFinishOptions - bits 1 - do not delete work areas and factorization at end 2 - use old factorization if same number of rows 4 - skip as much initialization of work areas as possible (work in progress) 4 does not seem to work. Primal algorithm
Definition at line 1632 of file lpi_clp.cpp. References SCIP_CALL, SCIP_LPERROR, SCIP_OKAY, SCIPdebugMessage, SCIPlpiWriteLP(), SCIPlpiWriteState(), and TRUE.
calls dual simplex to solve the LP startFinishOptions - bits 1 - do not delete work areas and factorization at end 2 - use old factorization if same number of rows 4 - skip as much initialization of work areas as possible (work in progress) 4 does not seem to work. Dual algorithm
Definition at line 1705 of file lpi_clp.cpp. References SCIP_CALL, SCIP_LPERROR, SCIP_OKAY, SCIPdebugMessage, SCIPlpiWriteLP(), SCIPlpiWriteState(), and TRUE.
calls barrier or interior point algorithm to solve the LP with crossover to simplex basis
Definition at line 1780 of file lpi_clp.cpp. References SCIP_LPERROR, SCIP_OKAY, SCIPdebugMessage, and TRUE.
start strong branching - call before any strongbranching
Definition at line 1821 of file lpi_clp.cpp. References SCIP_OKAY.
end strong branching - call after any strongbranching
Definition at line 1830 of file lpi_clp.cpp. References EPSCEIL, EPSFLOOR, NULL, SCIP_ALLOC, SCIP_Bool, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, and TRUE.
performs strong branching iterations on one fractional candidate
Definition at line 2169 of file lpi_clp.cpp.
performs strong branching iterations on given fractional candidates
Definition at line 2190 of file lpi_clp.cpp.
performs strong branching iterations on one candidate with integral value
Definition at line 2215 of file lpi_clp.cpp.
performs strong branching iterations on given candidates with integral values
Definition at line 2236 of file lpi_clp.cpp. returns whether a solve method was called after the last modification of the LP
Definition at line 2271 of file lpi_clp.cpp. References NULL.
gets information about primal and dual feasibility of the current LP solution
Definition at line 2281 of file lpi_clp.cpp. References FALSE, SCIP_OKAY, SCIPdebugMessage, SUMINFEASBOUND, and TRUE. returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point); this does not necessarily mean, that the solver knows and can return the primal ray
Definition at line 2326 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point), and the solver knows and can return the primal ray
Definition at line 2344 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to be primal unbounded
Definition at line 2360 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to be primal infeasible
Definition at line 2374 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to be primal feasible
Definition at line 2393 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point); this does not necessarily mean, that the solver knows and can return the dual ray
Definition at line 2409 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point), and the solver knows and can return the dual ray
Definition at line 2427 of file lpi_clp.cpp. References FALSE, SCIPdebugMessage, and TRUE. returns TRUE iff LP is proven to be dual unbounded
Definition at line 2455 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to be dual infeasible
Definition at line 2472 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP is proven to be dual feasible
Definition at line 2486 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff LP was solved to optimality
Definition at line 2500 of file lpi_clp.cpp. References FALSE, SCIPdebugMessage, and SCIPlpiIsObjlimExc(). returns TRUE iff current LP basis is stable
Definition at line 2518 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff the objective limit was reached
Definition at line 2556 of file lpi_clp.cpp. References FALSE, SCIPdebugMessage, and TRUE. Referenced by SCIPlpiIsOptimal(). returns TRUE iff the iteration limit was reached
Definition at line 2588 of file lpi_clp.cpp. References SCIPdebugMessage. returns TRUE iff the time limit was reached
Definition at line 2604 of file lpi_clp.cpp. References SCIPdebugMessage.
returns the internal solution status of the solver
Definition at line 2620 of file lpi_clp.cpp. References SCIPdebugMessage.
gets objective value of solution
Definition at line 2634 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets primal and dual solution vectors
Definition at line 2652 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
gets primal ray for unbounded LPs Unbounded ray (NULL returned if none/wrong). Up to user to use delete [] on these arrays.
Definition at line 2696 of file lpi_clp.cpp. References SCIP_LPERROR, SCIP_OKAY, and SCIPdebugMessage.
gets dual farkas proof for infeasibility Infeasibility ray (NULL returned if none/wrong). Up to user to use delete [] on these arrays.
Definition at line 2721 of file lpi_clp.cpp. References SCIP_LPERROR, SCIP_OKAY, and SCIPdebugMessage.
gets the number of LP iterations of the last solve call
Definition at line 2753 of file lpi_clp.cpp. References SCIP_OKAY.
gets information about the quality of an LP solution Such information is usually only available, if also a (maybe not optimal) solution is available. The LPI should return SCIP_INVALID for
Definition at line 2771 of file lpi_clp.cpp. References NULL, SCIP_INVALID, and SCIP_OKAY.
gets current basis status for columns and rows; arrays must be large enough to store the basis status
Definition at line 2798 of file lpi_clp.cpp. References SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPdebugMessage, and SCIPerrorMessage. Referenced by SCIPlpiGetState().
sets current basis status for columns and rows Whats changed since last solve. Is only used when startFinishOptions used in dual or primal. Bit 1 - number of rows/columns has not changed (so work arrays valid) 2 - matrix has not changed 4 - if matrix has changed only by adding rows 8 - if matrix has changed only by adding columns 16 - row lbs not changed 32 - row ubs not changed 64 - column objective not changed 128 - column lbs not changed 256 - column ubs not changed 512 - basis not changed (up to user to set this to 0) top bits may be used internally
Definition at line 2886 of file lpi_clp.cpp. References EPSEQ, SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, SCIP_INVALIDDATA, SCIP_OKAY, SCIPABORT, SCIPdebugMessage, and SCIPerrorMessage. Referenced by SCIPlpiSetState().
returns the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m
Definition at line 3002 of file lpi_clp.cpp. References NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPdebugMessage.
get dense row of inverse basis matrix B^-1
Definition at line 3054 of file lpi_clp.cpp. References NULL, SCIP_OKAY, and SCIPdebugMessage.
get dense column of inverse basis matrix B^-1
Definition at line 3089 of file lpi_clp.cpp. References NULL, SCIP_OKAY, and SCIPdebugMessage.
get dense row of inverse basis matrix times constraint matrix B^-1 * A
Definition at line 3127 of file lpi_clp.cpp. References NULL, SCIP_OKAY, and SCIPdebugMessage.
get dense column of inverse basis matrix times constraint matrix B^-1 * A
Definition at line 3162 of file lpi_clp.cpp. References NULL, SCIP_OKAY, and SCIPdebugMessage.
stores LPi state (like basis information) into lpistate object
Definition at line 3202 of file lpi_clp.cpp. References SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, and SCIPlpiGetBase().
loads LPi state (like basis information) into solver; note that the LP might have been extended with additional columns and rows since the state was stored with SCIPlpiGetState()
Definition at line 3242 of file lpi_clp.cpp. References REALABS, SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMessage, SCIPlpiIsInfinity(), and SCIPlpiSetBase().
clears current LPi state (like basis information) of the solver
Definition at line 3296 of file lpi_clp.cpp. References SCIP_OKAY, and SCIPdebugMessage.
frees LPi state information
Definition at line 3312 of file lpi_clp.cpp. References NULL, SCIP_OKAY, and SCIPdebugMessage.
checks, whether the given LP state contains simplex basis information
Definition at line 3330 of file lpi_clp.cpp. References NULL.
reads LP state (like basis information) from a file Read a basis from the given filename, returns -1 on file error, 0 if no values, 1 if values
Definition at line 3339 of file lpi_clp.cpp. References SCIP_OKAY, SCIP_READERROR, and SCIPdebugMessage.
writes LP state (like basis information) to a file Write the basis in MPS format to the specified file. If writeValues true, writes values of structurals (and adds VALUES to end of NAME card) parameters:
Definition at line 3356 of file lpi_clp.cpp. References SCIP_OKAY, SCIP_WRITEERROR, and SCIPdebugMessage. Referenced by SCIPlpiSolveDual(), and SCIPlpiSolvePrimal().
stores LPi pricing norms information
Definition at line 3393 of file lpi_clp.cpp.
loads LPi pricing norms into solver; note that the LP might have been extended with additional columns and rows since the state was stored with SCIPlpiGetNorms()
Definition at line 3409 of file lpi_clp.cpp.
frees pricing norms information
Definition at line 3422 of file lpi_clp.cpp.
gets integer parameter of LP
Definition at line 3447 of file lpi_clp.cpp. References FALSE, SCIP_LPPAR_FASTMIP, SCIP_LPPAR_FROMSCRATCH, SCIP_LPPAR_LPINFO, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_PRICING, SCIP_LPPAR_SCALING, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPdebugMessage, and TRUE.
sets integer parameter of LP Amount of print out: 0 - none 1 - just final 2 - just factorizations 3 - as 2 plus a bit more 4 - verbose above that 8,16,32 etc just for selective SCIPdebug
Definition at line 3491 of file lpi_clp.cpp. References FALSE, SCIP_INVALIDDATA, SCIP_LPERROR, SCIP_LPPAR_FASTMIP, SCIP_LPPAR_FROMSCRATCH, SCIP_LPPAR_LPINFO, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_PRICING, SCIP_LPPAR_SCALING, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIP_PRICING_AUTO, SCIP_PRICING_DEVEX, SCIP_PRICING_FULL, SCIP_PRICING_LPIDEFAULT, SCIP_PRICING_STEEP, SCIP_PRICING_STEEPQSTART, SCIPABORT, SCIPdebugMessage, SCIPerrorMessage, and TRUE. Referenced by SCIPlpiCreate().
gets floating point parameter of LP
Definition at line 3593 of file lpi_clp.cpp. References SCIP_LPPAR_BARRIERCONVTOL, SCIP_LPPAR_DUALFEASTOL, SCIP_LPPAR_FEASTOL, SCIP_LPPAR_LOBJLIM, SCIP_LPPAR_LPTILIM, SCIP_LPPAR_UOBJLIM, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, and SCIPdebugMessage.
sets floating point parameter of LP
Definition at line 3639 of file lpi_clp.cpp. References SCIP_LPPAR_BARRIERCONVTOL, SCIP_LPPAR_DUALFEASTOL, SCIP_LPPAR_FEASTOL, SCIP_LPPAR_LOBJLIM, SCIP_LPPAR_LPTILIM, SCIP_LPPAR_UOBJLIM, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, and SCIPdebugMessage. returns value treated as infinity in the LP solver Definition at line 3696 of file lpi_clp.cpp. References SCIPdebugMessage. checks if given value is treated as infinity in the LP solver
Definition at line 3707 of file lpi_clp.cpp. References FALSE, SCIP_Bool, SCIPdebugMessage, and TRUE. Referenced by SCIPlpiSetState().
reads LP from a file read file in MPS format parameters: filename bool keepNames bool ignoreErrors
Definition at line 3747 of file lpi_clp.cpp. References SCIP_NOFILE, SCIP_OKAY, SCIP_READERROR, and SCIPdebugMessage.
writes LP to a file write file in MPS format parameters: filename int formatType (0 - normal, 1 - extra accuracy, 2 - IEEE hex) int numberAcross (1 or 2 values should be specified on every data line in the MPS file) double objSense
Definition at line 3775 of file lpi_clp.cpp. References SCIP_OKAY, SCIP_WRITEERROR, and SCIPdebugMessage. Referenced by SCIPlpiSolveDual(), and SCIPlpiSolvePrimal(). |