Scippy

SCIP

Solving Constraint Integer Programs

reader_gms.c File Reference

Detailed Description

GAMS file writer.

Author
Ambros Gleixner
Stefan Vigerske

Definition in file reader_gms.c.

#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include "scip/reader_gms.h"
#include "scip/cons_knapsack.h"
#include "scip/cons_linear.h"
#include "scip/cons_logicor.h"
#include "scip/cons_quadratic.h"
#include "scip/cons_soc.h"
#include "scip/cons_sos1.h"
#include "scip/cons_sos2.h"
#include "scip/cons_setppc.h"
#include "scip/cons_varbound.h"
#include "scip/cons_indicator.h"
#include "scip/cons_abspower.h"
#include "scip/cons_nonlinear.h"
#include "scip/cons_bivariate.h"
#include "scip/pub_misc.h"

Go to the source code of this file.

Macros

#define READER_NAME   "gmsreader"
 
#define READER_DESC   "file writer for MI(NL)(SOC)Ps in GAMS file format"
 
#define READER_EXTENSION   "gms"
 
#define GMS_MAX_LINELEN   256
 
#define GMS_MAX_PRINTLEN   256
 
#define GMS_MAX_NAMELEN   64
 
#define GMS_PRINTLEN   100
 
#define GMS_DEFAULT_BIGM   1e+6
 
#define GMS_DEFAULT_INDICATORREFORM   's'
 
#define GMS_DEFAULT_SIGNPOWER   FALSE
 

Functions

static SCIP_RETCODE getActiveVariables (SCIP *scip, SCIP_VAR **vars, SCIP_Real *scalars, int *nvars, SCIP_Real *constant, SCIP_Bool transformed)
 
static void clearLine (char *linebuffer, int *linecnt)
 
static void endLine (SCIP *scip, FILE *file, char *linebuffer, int *linecnt)
 
static void appendLine (SCIP *scip, FILE *file, char *linebuffer, int *linecnt, const char *extension)
 
static void appendLineWithIndent (SCIP *scip, FILE *file, char *linebuffer, int *linecnt, const char *extension)
 
static void conformName (char *name)
 
static SCIP_RETCODE printConformName (SCIP *scip, char *t, int len, const char *name)
 
static SCIP_RETCODE printActiveVariables (SCIP *scip, FILE *file, char *linebuffer, int *linecnt, const char *prefix, const char *suffix, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Bool transformed)
 
static SCIP_RETCODE printLinearRow (SCIP *scip, FILE *file, const char *rowname, const char *rownameextension, const char *type, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs)
 
static SCIP_RETCODE printLinearCons (SCIP *scip, FILE *file, const char *rowname, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool transformed)
 
static SCIP_RETCODE printQuadraticRow (SCIP *scip, FILE *file, const char *rowname, const char *rownameextension, const char *type, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoeffs, int nquadvarterms, SCIP_QUADVARTERM *quadvarterms, int nbilinterms, SCIP_BILINTERM *bilinterms, SCIP_Real rhs, SCIP_Bool transformed)
 
static SCIP_RETCODE printQuadraticCons (SCIP *scip, FILE *file, const char *rowname, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoeffs, int nquadvarterms, SCIP_QUADVARTERM *quadvarterms, int nbilinterms, SCIP_BILINTERM *bilinterms, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool transformed)
 
static SCIP_Bool isGAMSprintableSOC (int nlhsvars, SCIP_VAR **lhsvars, SCIP_Real *lhscoeffs, SCIP_Real *lhsoffsets, SCIP_Real lhsconstant, SCIP_VAR *rhsvar, SCIP_Real rhscoef, SCIP_Real rhsoffset)
 
static SCIP_RETCODE printSOCCons (SCIP *scip, FILE *file, const char *rowname, int nlhsvars, SCIP_VAR **lhsvars, SCIP_Real *lhscoeffs, SCIP_Real *lhsoffsets, SCIP_Real lhsconstant, SCIP_VAR *rhsvar, SCIP_Real rhscoef, SCIP_Real rhsoffset, SCIP_Bool transformed)
 
static SCIP_RETCODE printIndicatorCons (SCIP *scip, FILE *file, const char *rowname, SCIP_VAR *z, SCIP_VAR *s, SCIP_Bool *sossetdeclr, SCIP_Bool transformed)
 
static SCIP_RETCODE printSOSCons (SCIP *scip, FILE *file, const char *rowname, int nvars, SCIP_VAR **vars, int sostype, SCIP_Bool transformed)
 
static SCIP_RETCODE printSignpowerRow (SCIP *scip, FILE *file, const char *rowname, const char *rownameextension, const char *type, SCIP_VAR *nonlinvar, SCIP_VAR *linvar, SCIP_Real exponent, SCIP_Real offset, SCIP_Real coeflinear, SCIP_Real rhs, SCIP_Bool transformed, SCIP_Bool signpowerallowed, SCIP_Bool *nsmooth)
 
static SCIP_RETCODE printSignpowerCons (SCIP *scip, FILE *file, const char *rowname, SCIP_VAR *nonlinvar, SCIP_VAR *linvar, SCIP_Real exponent, SCIP_Real offset, SCIP_Real coeflinear, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool transformed, SCIP_Bool signpowerallowed, SCIP_Bool *nsmooth)
 
static SCIP_RETCODE printExpr (SCIP *scip, FILE *file, char *linebuffer, int *linecnt, SCIP_Bool *nsmooth, SCIP_Bool transformed, SCIP_EXPR *expr, SCIP_VAR **exprvars)
 
static SCIP_RETCODE printNonlinearRow (SCIP *scip, FILE *file, const char *rowname, const char *rownameextension, const char *type, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoeffs, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *exprtreecoefs, SCIP_Real rhs, SCIP_Bool transformed, SCIP_Bool *nsmooth)
 
static SCIP_RETCODE printNonlinearCons (SCIP *scip, FILE *file, const char *rowname, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoeffs, int nexprtrees, SCIP_EXPRTREE **exprtrees, SCIP_Real *exprtreecoefs, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool transformed, SCIP_Bool *nsmooth)
 
static SCIP_RETCODE checkVarnames (SCIP *scip, SCIP_VAR **vars, int nvars)
 
static SCIP_RETCODE checkConsnames (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool transformed)
 
static SCIP_DECL_READERCOPY (readerCopyGms)
 
static SCIP_DECL_READERWRITE (readerWriteGms)
 
SCIP_RETCODE SCIPincludeReaderGms (SCIP *scip)
 
SCIP_RETCODE SCIPwriteGms (SCIP *scip, FILE *file, const char *name, SCIP_Bool transformed, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_VAR **vars, int nvars, int nbinvars, int nintvars, int nimplvars, int ncontvars, SCIP_CONS **conss, int nconss, SCIP_RESULT *result)
 

Variables

static const char badchars [] = "#*+/-@$"
 

Macro Definition Documentation

#define READER_NAME   "gmsreader"

Definition at line 55 of file reader_gms.c.

Referenced by SCIP_DECL_READERCOPY(), and SCIPincludeReaderGms().

#define READER_DESC   "file writer for MI(NL)(SOC)Ps in GAMS file format"

Definition at line 56 of file reader_gms.c.

Referenced by SCIPincludeReaderGms().

#define READER_EXTENSION   "gms"

Definition at line 57 of file reader_gms.c.

Referenced by SCIPincludeReaderGms().

#define GMS_MAX_LINELEN   256

Definition at line 60 of file reader_gms.c.

Referenced by SCIPwriteGms().

#define GMS_MAX_PRINTLEN   256
#define GMS_MAX_NAMELEN   64
#define GMS_PRINTLEN   100

Definition at line 63 of file reader_gms.c.

Referenced by appendLine().

#define GMS_DEFAULT_BIGM   1e+6

Definition at line 64 of file reader_gms.c.

Referenced by SCIPincludeReaderGms().

#define GMS_DEFAULT_INDICATORREFORM   's'

Definition at line 65 of file reader_gms.c.

Referenced by SCIPincludeReaderGms().

#define GMS_DEFAULT_SIGNPOWER   FALSE

Definition at line 66 of file reader_gms.c.

Referenced by SCIPincludeReaderGms().

Function Documentation

static SCIP_RETCODE getActiveVariables ( SCIP scip,
SCIP_VAR **  vars,
SCIP_Real scalars,
int *  nvars,
SCIP_Real constant,
SCIP_Bool  transformed 
)
static

transforms given variables, scalars, and constant to the corresponding active variables, scalars, and constant

Parameters
scipSCIP data structure
varsvars array to get active variables for
scalarsscalars a_1, ..., a_n in linear sum a_1*x_1 + ... + a_n*x_n + c
nvarspointer to number of variables and values in vars and vals array
constantpointer to constant c in linear sum a_1*x_1 + ... + a_n*x_n + c
transformedtransformed constraint?

Definition at line 76 of file reader_gms.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPgetProbvarLinearSum(), SCIPreallocBufferArray, SCIPvarGetOrigvarSum(), and TRUE.

Referenced by printActiveVariables(), and printLinearCons().

static void clearLine ( char *  linebuffer,
int *  linecnt 
)
static

clears the given line buffer

Parameters
linebufferline
linecntnumber of characters in line

Definition at line 119 of file reader_gms.c.

References NULL.

Referenced by endLine(), printIndicatorCons(), printLinearRow(), printNonlinearRow(), printQuadraticRow(), printSignpowerRow(), printSOCCons(), printSOSCons(), and SCIPwriteGms().

static void endLine ( SCIP scip,
FILE *  file,
char *  linebuffer,
int *  linecnt 
)
static

ends the given line with '\0' and prints it to the given file stream

Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
linebufferline
linecntnumber of characters in line

Definition at line 133 of file reader_gms.c.

References clearLine(), NULL, and SCIPinfoMessage().

Referenced by appendLine(), printIndicatorCons(), printLinearRow(), printNonlinearRow(), printQuadraticRow(), printSignpowerRow(), printSOCCons(), printSOSCons(), and SCIPwriteGms().

static void appendLine ( SCIP scip,
FILE *  file,
char *  linebuffer,
int *  linecnt,
const char *  extension 
)
static

appends extension to line and prints it to the give file stream if the line exceeded the length given in the define GMS_PRINTLEN

Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
linebufferline
linecntnumber of characters in line
extensionstring to extend the line

Definition at line 155 of file reader_gms.c.

References endLine(), GMS_MAX_PRINTLEN, GMS_PRINTLEN, NULL, and SCIPdebugMessage.

Referenced by appendLineWithIndent(), printActiveVariables(), printIndicatorCons(), printLinearRow(), printNonlinearRow(), printQuadraticRow(), printSignpowerRow(), printSOCCons(), printSOSCons(), and SCIPwriteGms().

static void appendLineWithIndent ( SCIP scip,
FILE *  file,
char *  linebuffer,
int *  linecnt,
const char *  extension 
)
static

appends extension to line and prints it to the give file stream if the line exceeded the length given in the define GMS_PRINTLEN indents the line by some spaces if it is a new line

Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
linebufferline
linecntnumber of characters in line
extensionstring to extend the line

Definition at line 189 of file reader_gms.c.

References appendLine().

Referenced by printExpr(), and printNonlinearRow().

static void conformName ( char *  name)
static

checks string for occurences of '#', '*', '+', '/', and '-' and replaces those by '_'

Parameters
namestring to adjust

Definition at line 206 of file reader_gms.c.

References badchars, and NULL.

Referenced by printConformName().

static SCIP_RETCODE printConformName ( SCIP scip,
char *  t,
int  len,
const char *  name 
)
static
Parameters
scipSCIP data structure
ttarget string
lenlength of t
namesource string or format string

Definition at line 230 of file reader_gms.c.

References conformName(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPgetBoolParam(), and SCIPsnprintf().

Referenced by printActiveVariables(), printIndicatorCons(), printLinearRow(), printNonlinearRow(), printQuadraticRow(), printSignpowerRow(), printSOCCons(), printSOSCons(), and SCIPwriteGms().

static SCIP_RETCODE printActiveVariables ( SCIP scip,
FILE *  file,
char *  linebuffer,
int *  linecnt,
const char *  prefix,
const char *  suffix,
int  nvars,
SCIP_VAR **  vars,
SCIP_Real vals,
SCIP_Bool  transformed 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
linebufferline
linecntnumber of characters in line
prefixprefix (maybe NULL)
suffixsuffix (maybe NULL)
nvarsnumber of variables
varsarray of variables
valsarray of values (or NULL if all ones)
transformedtransformed constraint?

Definition at line 255 of file reader_gms.c.

References appendLine(), getActiveVariables(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, NULL, printConformName(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), SCIPisZero(), SCIPsnprintf(), and SCIPvarGetName().

Referenced by printExpr(), printIndicatorCons(), printNonlinearRow(), printQuadraticRow(), printSignpowerRow(), printSOCCons(), printSOSCons(), and SCIPwriteGms().

static SCIP_RETCODE printLinearRow ( SCIP scip,
FILE *  file,
const char *  rowname,
const char *  rownameextension,
const char *  type,
int  nvars,
SCIP_VAR **  vars,
SCIP_Real vals,
SCIP_Real  rhs 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
rownameextensionrow name extension
typerow type ("=e=", "=l=", or "=g=")
nvarsnumber of variables
varsarray of variables
valsarray of values
rhsright hand side

Definition at line 410 of file reader_gms.c.

References appendLine(), clearLine(), endLine(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, NULL, printConformName(), SCIP_CALL, SCIP_OKAY, SCIPisZero(), SCIPsnprintf(), and SCIPvarGetName().

Referenced by printLinearCons().

static SCIP_RETCODE printLinearCons ( SCIP scip,
FILE *  file,
const char *  rowname,
int  nvars,
SCIP_VAR **  vars,
SCIP_Real vals,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_Bool  transformed 
)
static

prints given linear constraint information in GAMS format to file stream

Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamename of the row
nvarsnumber of variables
varsarray of variables
valsarray of coefficients values (or NULL if all coefficient values are 1)
lhsleft hand side
rhsright hand side
transformedtransformed constraint?

Definition at line 494 of file reader_gms.c.

References getActiveVariables(), NULL, printLinearRow(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), and SCIPisInfinity().

Referenced by SCIPwriteGms().

static SCIP_RETCODE printQuadraticRow ( SCIP scip,
FILE *  file,
const char *  rowname,
const char *  rownameextension,
const char *  type,
int  nlinvars,
SCIP_VAR **  linvars,
SCIP_Real lincoeffs,
int  nquadvarterms,
SCIP_QUADVARTERM quadvarterms,
int  nbilinterms,
SCIP_BILINTERM bilinterms,
SCIP_Real  rhs,
SCIP_Bool  transformed 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
rownameextensionrow name extension
typerow type ("=e=", "=l=", or "=g=")
nlinvarsnumber of linear terms
linvarsvariables in linear part
lincoeffscoefficients of variables in linear part
nquadvartermsnumber of quadratic variable terms
quadvartermsquadratic variable terms
nbilintermsnumber of bilinear terms
bilintermsbilinear terms
rhsright hand side
transformedtransformed constraint?

Definition at line 582 of file reader_gms.c.

References appendLine(), clearLine(), endLine(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, NULL, printActiveVariables(), printConformName(), SCIP_CALL, SCIP_OKAY, SCIPisZero(), SCIPsnprintf(), SCIP_QuadVarTerm::var, SCIP_BilinTerm::var1, and SCIP_BilinTerm::var2.

Referenced by printQuadraticCons().

static SCIP_RETCODE printQuadraticCons ( SCIP scip,
FILE *  file,
const char *  rowname,
int  nlinvars,
SCIP_VAR **  linvars,
SCIP_Real lincoeffs,
int  nquadvarterms,
SCIP_QUADVARTERM quadvarterms,
int  nbilinterms,
SCIP_BILINTERM bilinterms,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_Bool  transformed 
)
static

prints given quadratic constraint information in GAMS format to file stream

Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamename of the row
nlinvarsnumber of linear terms
linvarsvariables in linear part
lincoeffscoefficients of variables in linear part
nquadvartermsnumber of quadratic variable terms
quadvartermsquadratic variable terms
nbilintermsnumber of bilinear terms
bilintermsbilinear terms
lhsleft hand side
rhsright hand side
transformedtransformed constraint?

Definition at line 701 of file reader_gms.c.

References NULL, printQuadraticRow(), SCIP_CALL, SCIP_OKAY, SCIPisEQ(), and SCIPisInfinity().

Referenced by SCIPwriteGms().

static SCIP_Bool isGAMSprintableSOC ( int  nlhsvars,
SCIP_VAR **  lhsvars,
SCIP_Real lhscoeffs,
SCIP_Real lhsoffsets,
SCIP_Real  lhsconstant,
SCIP_VAR rhsvar,
SCIP_Real  rhscoef,
SCIP_Real  rhsoffset 
)
static

check GAMS limitations on SOC constraints returns true of constraint can be written as conic equation in GAMS (using equation type =C=)

Parameters
nlhsvarsnumber of variables on left hand side
lhsvarsvariables on left hand side
lhscoeffscoefficients of variables on left hand side, or NULL if == 1.0
lhsoffsetsoffsets of variables on left hand side, or NULL if == 0.0
lhsconstantconstant on left hand side
rhsvarvariable on right hand side
rhscoefcoefficient of variable on right hand side
rhsoffsetoffset of variable on right hand side

Definition at line 766 of file reader_gms.c.

References FALSE, NULL, SCIPvarIsActive(), and TRUE.

Referenced by printSOCCons(), and SCIPwriteGms().

static SCIP_RETCODE printSOCCons ( SCIP scip,
FILE *  file,
const char *  rowname,
int  nlhsvars,
SCIP_VAR **  lhsvars,
SCIP_Real lhscoeffs,
SCIP_Real lhsoffsets,
SCIP_Real  lhsconstant,
SCIP_VAR rhsvar,
SCIP_Real  rhscoef,
SCIP_Real  rhsoffset,
SCIP_Bool  transformed 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
nlhsvarsnumber of variables on left hand side
lhsvarsvariables on left hand side
lhscoeffscoefficients of variables on left hand side, or NULL if == 1.0
lhsoffsetsoffsets of variables on left hand side, or NULL if == 0.0
lhsconstantconstant on left hand side
rhsvarvariable on right hand side
rhscoefcoefficient of variable on right hand side
rhsoffsetoffset of variable on right hand side
transformedtransformed constraint?

Definition at line 821 of file reader_gms.c.

References appendLine(), clearLine(), endLine(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, isGAMSprintableSOC(), NULL, printActiveVariables(), printConformName(), SCIP_CALL, SCIP_OKAY, and SCIPsnprintf().

Referenced by SCIPwriteGms().

static SCIP_RETCODE printIndicatorCons ( SCIP scip,
FILE *  file,
const char *  rowname,
SCIP_VAR z,
SCIP_VAR s,
SCIP_Bool sossetdeclr,
SCIP_Bool  transformed 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
zindicating variable (binary)
sslack variable
sossetdeclrbuffer to store whether we declared the SOS set for indicator reform
transformedtransformed constraint?

Definition at line 911 of file reader_gms.c.

References appendLine(), clearLine(), endLine(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, NULL, printActiveVariables(), printConformName(), SCIP_CALL, SCIP_ERROR, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPgetCharParam(), SCIPgetRealParam(), SCIPinfoMessage(), SCIPisInfinity(), SCIPsnprintf(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPwarningMessage(), and TRUE.

Referenced by SCIPwriteGms().

static SCIP_RETCODE printSOSCons ( SCIP scip,
FILE *  file,
const char *  rowname,
int  nvars,
SCIP_VAR **  vars,
int  sostype,
SCIP_Bool  transformed 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
nvarsnumber of variables in SOS
varsvariables in SOS
sostypetype of SOS: 1 or 2
transformedtransformed constraint?

Definition at line 1023 of file reader_gms.c.

References appendLine(), clearLine(), endLine(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, NULL, printActiveVariables(), printConformName(), SCIP_CALL, SCIP_OKAY, SCIP_Real, and SCIPsnprintf().

Referenced by SCIPwriteGms().

static SCIP_RETCODE printSignpowerRow ( SCIP scip,
FILE *  file,
const char *  rowname,
const char *  rownameextension,
const char *  type,
SCIP_VAR nonlinvar,
SCIP_VAR linvar,
SCIP_Real  exponent,
SCIP_Real  offset,
SCIP_Real  coeflinear,
SCIP_Real  rhs,
SCIP_Bool  transformed,
SCIP_Bool  signpowerallowed,
SCIP_Bool nsmooth 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
rownameextensionrow name extension
typerow type ("=e=", "=l=", or "=g=")
nonlinvarnonlinear variable
linvarlinear variable, may be NULL
exponentexponent of nonlinear variable
offsetoffset of nonlinear variable
coeflinearcoefficient of linear variable
rhsright hand side
transformedtransformed constraint?
signpowerallowedallowed to use signpower operator in GAMS?
nsmoothbuffer to store whether we printed a nonsmooth function

Definition at line 1080 of file reader_gms.c.

References appendLine(), clearLine(), endLine(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, NULL, printActiveVariables(), printConformName(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPfloor(), SCIPisIntegral(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), SCIPsnprintf(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by printSignpowerCons().

static SCIP_RETCODE printSignpowerCons ( SCIP scip,
FILE *  file,
const char *  rowname,
SCIP_VAR nonlinvar,
SCIP_VAR linvar,
SCIP_Real  exponent,
SCIP_Real  offset,
SCIP_Real  coeflinear,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_Bool  transformed,
SCIP_Bool  signpowerallowed,
SCIP_Bool nsmooth 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
nonlinvarnonlinear variable
linvarlinear variable, may be NULL
exponentexponent of nonlinear variable
offsetoffset of nonlinear variable
coeflinearcoefficient of linear variable
lhsleft hand side
rhsright hand side
transformedtransformed constraint?
signpowerallowedallowed to use signpower operator in GAMS?
nsmoothbuffer to store whether we printed a nonsmooth function

Definition at line 1284 of file reader_gms.c.

References NULL, printSignpowerRow(), SCIP_CALL, SCIP_OKAY, SCIPisEQ(), and SCIPisInfinity().

Referenced by SCIPwriteGms().

static SCIP_RETCODE printExpr ( SCIP scip,
FILE *  file,
char *  linebuffer,
int *  linecnt,
SCIP_Bool nsmooth,
SCIP_Bool  transformed,
SCIP_EXPR expr,
SCIP_VAR **  exprvars 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
linebufferline buffer of length GMS_MAX_PRINTLEN
linecntnumber of characters in line so far
nsmoothbuffer to store whether we printed a nonsmooth function
transformedexpression belongs to transformed constraint?
exprexpression to print
exprvarsvariables of expression

Definition at line 1333 of file reader_gms.c.

References appendLineWithIndent(), GMS_MAX_PRINTLEN, NULL, printActiveVariables(), SCIP_Bool, SCIP_CALL, SCIP_EXPR_ABS, SCIP_EXPR_CONST, SCIP_EXPR_COS, SCIP_EXPR_DIV, SCIP_EXPR_EXP, SCIP_EXPR_INTPOWER, SCIP_EXPR_LINEAR, SCIP_EXPR_LOG, SCIP_EXPR_MAX, SCIP_EXPR_MIN, SCIP_EXPR_MINUS, SCIP_EXPR_MUL, SCIP_EXPR_PARAM, SCIP_EXPR_PLUS, SCIP_EXPR_POLYNOMIAL, SCIP_EXPR_PRODUCT, SCIP_EXPR_QUADRATIC, SCIP_EXPR_REALPOWER, SCIP_EXPR_SIGN, SCIP_EXPR_SIGNPOWER, SCIP_EXPR_SIN, SCIP_EXPR_SQRT, SCIP_EXPR_SQUARE, SCIP_EXPR_SUM, SCIP_EXPR_TAN, SCIP_EXPR_VARIDX, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPexprGetChildren(), SCIPexprGetIntPowerExponent(), SCIPexprGetLinearCoefs(), SCIPexprGetLinearConstant(), SCIPexprGetMonomialChildIndices(), SCIPexprGetMonomialCoef(), SCIPexprGetMonomialExponents(), SCIPexprGetMonomialNFactors(), SCIPexprGetMonomials(), SCIPexprGetNChildren(), SCIPexprGetNMonomials(), SCIPexprGetNQuadElements(), SCIPexprGetOperator(), SCIPexprGetOpIndex(), SCIPexprGetOpReal(), SCIPexprGetPolynomialConstant(), SCIPexprGetQuadConstant(), SCIPexprGetQuadElements(), SCIPexprGetQuadLinearCoefs(), SCIPexprGetRealPowerExponent(), SCIPexprGetSignPowerExponent(), SCIPexpropGetName(), SCIPgetBoolParam(), SCIPround(), SCIPsnprintf(), SCIPwarningMessage(), and TRUE.

Referenced by printNonlinearRow().

static SCIP_RETCODE printNonlinearRow ( SCIP scip,
FILE *  file,
const char *  rowname,
const char *  rownameextension,
const char *  type,
int  nlinvars,
SCIP_VAR **  linvars,
SCIP_Real lincoeffs,
int  nexprtrees,
SCIP_EXPRTREE **  exprtrees,
SCIP_Real exprtreecoefs,
SCIP_Real  rhs,
SCIP_Bool  transformed,
SCIP_Bool nsmooth 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
rownameextensionrow name extension
typerow type ("=e=", "=l=", or "=g=")
nlinvarsnumber of linear terms
linvarsvariables in linear part
lincoeffscoefficients of variables in linear part
nexprtreesnumber of expression trees
exprtreesexpression trees
exprtreecoefsexpression tree coefficients
rhsright hand side
transformedtransformed constraint?
nsmoothbuffer to store whether we printed a nonsmooth function

Definition at line 1732 of file reader_gms.c.

References appendLine(), appendLineWithIndent(), clearLine(), endLine(), GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, NULL, printActiveVariables(), printConformName(), printExpr(), SCIP_CALL, SCIP_OKAY, SCIPexprtreeGetRoot(), SCIPexprtreeGetVars(), SCIPisZero(), and SCIPsnprintf().

Referenced by printNonlinearCons().

static SCIP_RETCODE printNonlinearCons ( SCIP scip,
FILE *  file,
const char *  rowname,
int  nlinvars,
SCIP_VAR **  linvars,
SCIP_Real lincoeffs,
int  nexprtrees,
SCIP_EXPRTREE **  exprtrees,
SCIP_Real exprtreecoefs,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_Bool  transformed,
SCIP_Bool nsmooth 
)
static
Parameters
scipSCIP data structure
fileoutput file (or NULL for standard output)
rownamerow name
nlinvarsnumber of linear terms
linvarsvariables in linear part
lincoeffscoefficients of variables in linear part
nexprtreesnumber of expression trees
exprtreesexpression trees
exprtreecoefsexpression tree coefficients
lhsleft hand side
rhsright hand side
transformedtransformed constraint?
nsmoothbuffer to store whether we printed a nonsmooth function

Definition at line 1812 of file reader_gms.c.

References NULL, printNonlinearRow(), SCIP_CALL, SCIP_OKAY, SCIPisEQ(), and SCIPisInfinity().

Referenced by SCIPwriteGms().

static SCIP_RETCODE checkVarnames ( SCIP scip,
SCIP_VAR **  vars,
int  nvars 
)
static

method check if the variable names are not longer than GMS_MAX_NAMELEN

Parameters
scipSCIP data structure
varsarray of variables
nvarsnumber of variables

Definition at line 1861 of file reader_gms.c.

References badchars, GMS_MAX_NAMELEN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPgetBoolParam(), SCIPinfoMessage(), SCIPvarGetName(), and SCIPwarningMessage().

Referenced by SCIPwriteGms().

static SCIP_RETCODE checkConsnames ( SCIP scip,
SCIP_CONS **  conss,
int  nconss,
SCIP_Bool  transformed 
)
static

method check if the constraint names are not longer than GMS_MAX_NAMELEN

Parameters
scipSCIP data structure
conssarray of constraints
nconssnumber of constraints
transformedTRUE iff problem is the transformed problem

Definition at line 1920 of file reader_gms.c.

References badchars, GMS_MAX_NAMELEN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPgetBoolParam(), SCIPgetLhsLinear(), SCIPgetLhsQuadratic(), SCIPgetRhsQuadratic(), SCIPinfoMessage(), SCIPisEQ(), and SCIPwarningMessage().

Referenced by SCIPwriteGms().

static SCIP_DECL_READERCOPY ( readerCopyGms  )
static

copy method for reader plugins (called when SCIP copies plugins)

Definition at line 2013 of file reader_gms.c.

References NULL, READER_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludeReaderGms(), and SCIPreaderGetName().

static SCIP_DECL_READERWRITE ( readerWriteGms  )
static

problem writing method of reader

Definition at line 2129 of file reader_gms.c.

References SCIP_CALL, SCIP_OKAY, and SCIPwriteGms().

SCIP_RETCODE SCIPwriteGms ( SCIP scip,
FILE *  file,
const char *  name,
SCIP_Bool  transformed,
SCIP_OBJSENSE  objsense,
SCIP_Real  objscale,
SCIP_Real  objoffset,
SCIP_VAR **  vars,
int  nvars,
int  nbinvars,
int  nintvars,
int  nimplvars,
int  ncontvars,
SCIP_CONS **  conss,
int  nconss,
SCIP_RESULT result 
)

writes problem to gms file

Parameters
scipSCIP data structure
fileoutput file, or NULL if standard output should be used
nameproblem name
transformedTRUE iff problem is the transformed problem
objsenseobjective sense
objscalescalar applied to objective function; external objective value is extobj = objsense * objscale * (intobj + objoffset)
objoffsetobjective offset from bound shifting and fixing
varsarray with active variables ordered binary, integer, implicit, continuous
nvarsnumber of active variables in the problem
nbinvarsnumber of binary variables
nintvarsnumber of general integer variables
nimplvarsnumber of implicit integer variables
ncontvarsnumber of continuous variables
conssarray with constraints of the problem
nconssnumber of constraints in the problem
resultpointer to store the result of the file writing call

Definition at line 2203 of file reader_gms.c.

References appendLine(), checkConsnames(), checkVarnames(), clearLine(), endLine(), FALSE, GMS_MAX_LINELEN, GMS_MAX_NAMELEN, GMS_MAX_PRINTLEN, isGAMSprintableSOC(), NULL, printActiveVariables(), printConformName(), printIndicatorCons(), printLinearCons(), printNonlinearCons(), printQuadraticCons(), printSignpowerCons(), printSOCCons(), printSOSCons(), SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_SETPPCTYPE_COVERING, SCIP_SETPPCTYPE_PACKING, SCIP_SETPPCTYPE_PARTITIONING, SCIP_STAGE_EXITPRESOLVE, SCIP_STAGE_INITPRESOLVE, SCIP_SUCCESS, SCIP_VARSTATUS_NEGATED, SCIP_VARSTATUS_ORIGINAL, SCIP_VARTYPE_IMPLINT, SCIPallocBufferArray, SCIPceil(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPconsIsEnabled(), SCIPconsIsTransformed(), SCIPexprgraphGetTree(), SCIPexprtreeFree(), SCIPexprtreeGetMaxDegree(), SCIPfeasFloor(), SCIPfloor(), SCIPfreeBufferArray, SCIPgetBilinTermsQuadratic(), SCIPgetBinaryVarIndicator(), SCIPgetBoolParam(), SCIPgetCapacityKnapsack(), SCIPgetCoefLinearAbspower(), SCIPgetCoefsLinearVarsQuadratic(), SCIPgetExponentAbspower(), SCIPgetExprgraphNodeNonlinear(), SCIPgetExprgraphNonlinear(), SCIPgetExprtreeBivariate(), SCIPgetExprtreeCoefsNonlinear(), SCIPgetExprtreesNonlinear(), SCIPgetLhsAbspower(), SCIPgetLhsBivariate(), SCIPgetLhsCoefsSOC(), SCIPgetLhsConstantSOC(), SCIPgetLhsLinear(), SCIPgetLhsNonlinear(), SCIPgetLhsOffsetsSOC(), SCIPgetLhsQuadratic(), SCIPgetLhsVarbound(), SCIPgetLhsVarsSOC(), SCIPgetLinearCoefBivariate(), SCIPgetLinearCoefsNonlinear(), SCIPgetLinearVarAbspower(), SCIPgetLinearVarBivariate(), SCIPgetLinearVarsNonlinear(), SCIPgetLinearVarsQuadratic(), SCIPgetNBilinTermsQuadratic(), SCIPgetNExprtreesNonlinear(), SCIPgetNLhsVarsSOC(), SCIPgetNLinearVarsNonlinear(), SCIPgetNLinearVarsQuadratic(), SCIPgetNonlinearVarAbspower(), SCIPgetNQuadVarTermsQuadratic(), SCIPgetNVarsKnapsack(), SCIPgetNVarsLinear(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetNVarsSOS1(), SCIPgetNVarsSOS2(), SCIPgetOffsetAbspower(), SCIPgetQuadVarTermsQuadratic(), SCIPgetRhsAbspower(), SCIPgetRhsBivariate(), SCIPgetRhsCoefSOC(), SCIPgetRhsLinear(), SCIPgetRhsNonlinear(), SCIPgetRhsOffsetSOC(), SCIPgetRhsQuadratic(), SCIPgetRhsVarbound(), SCIPgetRhsVarSOC(), SCIPgetSlackVarIndicator(), SCIPgetStage(), SCIPgetTypeSetppc(), SCIPgetValsLinear(), SCIPgetVarsKnapsack(), SCIPgetVarsLinear(), SCIPgetVarsLogicor(), SCIPgetVarsSetppc(), SCIPgetVarsSOS1(), SCIPgetVarsSOS2(), SCIPgetVarVarbound(), SCIPgetVbdcoefVarbound(), SCIPgetVbdvarVarbound(), SCIPgetWeightsKnapsack(), SCIPinfinity(), SCIPinfoMessage(), SCIPisEQ(), SCIPisFeasEQ(), SCIPisInfinity(), SCIPisZero(), SCIPprintCons(), SCIPsnprintf(), SCIPvarGetLbLocal(), SCIPvarGetLbOriginal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarGetUbOriginal(), SCIPvarIsActive(), SCIPwarningMessage(), and TRUE.

Referenced by SCIP_DECL_READERWRITE().

Variable Documentation

const char badchars[] = "#*+/-@$"
static

Definition at line 72 of file reader_gms.c.

Referenced by checkConsnames(), checkVarnames(), and conformName().