Descriptions of C API "get" and "set" functions

Descriptions of the C API functions whose names begin with "ekk_get" and "ekk_set" are given. Each entry consists of: the name of the function, its C function prototype, a brief description of each item in the calling sequence, and a description of what the function does and what it returns. The following alphabetized list provides links to these descriptions. in the list. To conserve space in this list, entries for functions that "get" and "set" a quantity are of the form:
  Name of quantity  get  set                     
entries for functions that only "get" a quantity are of the form:
  Name of quantity  get                       
and entries for functions that only "set" a quantity are of the form:
  Name of quantity    set                     
where in each case, the  get  and  set  are hypertext links to the documentation. Interlineal insertions in the list provide links to entries elsewhere in the list.

C API functions whose names do not begin with "ekk_get" or "ekk_set" are documented in a separate file named featCMD2.htm. Finally, in the documentation below, the names of the functions themselves (ekk_...) are hypertext links back to the beginning of the list.

                                        Inumberuser - Rbbcutoff Rbestest - UserData
  Cbasis    get    set       Cbound    get    set       Cname    get    set
  Cobjective    get    set       Collower    get    set       Colrcosts    get    set
  Colsol    get    set       Colstat    get    set       Column    get    set
  ColumnsNonBasicAtLower    set       ColumnsNonBasicAtUpper    set       Colupper    get    set
  CompressOff     set       CompressOn     set       Crange    get    set
  Crhs    get    set       Debug     set       Idensecol    get    set
  Idevexmode    get    set       Ifastinteger    get    set       Ifastits    get    set
  Iheurpass    get    set       Iintmask    get    set       Iiterbnum    get    set
  Iiternum    get    set       Iiterufreq    get    set       Ilinelen    get    set
  Ilogfreq    get    set       Iloglevel    get    set       Ilpdcflag    get    set
  Imajorits    get    set       Imaxcols    get    set       Imaxfactor    get    set
  Imaxfactorsize    get    set       Imaxiter    get    set       Imaxiterb    get    set
  Imaxnodes    get    set       Imaxrows    get    set       Imaxsols    get    set
  Imiplength    get    set       Imodelmask    get    set       Imsgpos    get    set
                                        Cbasis - Imsgpos Rbestest - UserData
  Inumberuser    get        Inumblocks    get        Inumchar    get    set
  Inumcols    get    set       Inumdinf    get    set       Inumelq    get 
  Inumels    get        Inumints    get        Inumnodes    get 
  Inumpinf    get    set       Inumquadraticblocks    get        Inumrows    get    set
  Inumsets    get        Inumsols    get    set       Inumunsat    get    set
  Ioneobj    get    set       Iordunit    get    set       Ipagelines    get    set
  Ipossbasis    get    set       Ipricetype    get    set       Iprintsens    get    set
  Iprobstat    get    set       Iprobstat2    get        Iprtinfomask    get    set
  Iqparmaxiter    get    set       Iqparnumiter    get        Iroword    get    set
  Isolmask    get    set       Istopmask    get    set       Istrategy    get    set
  Isupertol    get    set       Ithreshold    get    set       IuseRowCopy    get    set
  LogfileFilePointer    get    set       LogfileName    get    set       Maximize     set
  Minimize     set       NumberBasicColumns    get        NumberBasicRows    get 
  Objective    get    set       Priority     set       Rbbcutoff    get    set
                                        Cbasis - Imsgpos Inumberuser - Rbbcutoff
  Rbestest    get    set       Rbestposs    get    set       Rbestsol    get    set
  Rchangeweight    get    set       Rdegscale    get    set       Rdensethr    get    set
  RdualPerturbation    get    set       Rdweight    get    set       Rimprove    get    set
  Riweight    get    set       Rmaxmin    get    set       Rmulinfac    get    set
  Rnetsamp    get    set       RobjectiveOffset    get    set       Robjvalue    get    set
  Row    get    set       Rowacts    get    set       Rowduals    get    set
  Rowlower    get    set       RowsNonBasicAtLower     set       RowsNonBasicAtUpper     set
  Rowstat    get    set       Rowupper    get    set       Rpdgaptol    get    set
  Rpertdiag    get    set       RprimalPerturbation    get    set       Rprintcpu    get    set
  Rpweight    get    set       RregularizedDelta    get    set       RregularizedGamma    get    set
  Rsumdinf    get    set       Rsumpinf    get    set       Rtarget    get    set
  Rthreshold    get    set       Rtoldinf    get    set       Rtolint    get    set
  Rtolmps    get    set       Rtolpinf    get    set       SOSInfo    get 
  UserData     set          Bottom of page
                      Cbasis - Imsgpos              Inumberuser - Rbbcutoff              Rbestest - UserData


ekk_getCbasis

Function prototype:
const char * ekk_getCbasis( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns a pointer to the current basis name. This is set by ekk_importBasis or ekk_setCbasis. If an error is encountered, ekk_getCbasis returns a null pointer.

ekk_getCbound

Function prototype:
const char * ekk_getCbound( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns a pointer to the current bound name. This is set by ekk_importModel or ekk_setCbound. If an error is encountered, ekk_getCbound returns a null pointer.

ekk_getCname

Function prototype:
const char * ekk_getCname( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns a pointer to the current model name. This is printed in messages referring to the model. This is set by ekk_importModel or ekk_setCname. It may also be set by ekk_newModel. If an error is encountered, ekk_getCname returns a null pointer.

ekk_getCobjective

Function prototype:
const char * ekk_getCobjective( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns a pointer to the current name of the objective row. This is set by ekk_importModel or ekk_setCobjective. If an error is encountered, ekk_getCobjective returns a null pointer.

ekk_getCollower

Function prototype:
double * ekk_getCollower( EKKModel * model );

Where:
model
is a pointer to the current model,

This function
allocates a block of storage space for which the user is responsible. That is: initially the user must name the allocated space; the user can modify the contents of this space at will; and ultimately the user must free the space by calling ekk_free. The purpose of allocating this space is to establish an addressable place to hold user accessible data from the model. The reason that Optimization Library functions allocate such space, instead of letting the user do so with the native C malloc command, is that the mechanics of dynamic memory support in C is implementation dependent, and user executable application code might be incompatible in this respect with OSL executable functions. The same logic applies to the use of the OSL function ekk_free in place of the corresponding native C free command. If no error has occurred, ekk_getCollower returns a vector containing the column lower bounds from the model identified by model. The length of this vector is the number of rows in the constraint matrix. If an error occurred, ekk_getCollower returns a null pointer.

ekk_getColsol

Function prototype:
double * ekk_getColsol( EKKModel * model );

Where:
model
is a pointer to the current model,

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getColsol returns a vector containing the column activities from the model identified by model. The length of this vector is the number of columns in the constraint matrix. If an error occurred, ekk_getColsol returns a null pointer.

ekk_getColupper

Function prototype:
double * ekk_getColupper( EKKModel * model );

Where:
model
is a pointer to the current model,

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getColupper returns a vector containing the column upper bounds from the model identified by model. The length of this vector is the number of columns in the constraint matrix. If an error occurred, ekk_getColupper returns a null pointer.

ekk_getColrcosts

Function prototype:
double * ekk_getColrcosts( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
allocates a block of storage space for which the user is responsible (as explained above). of no error has occurred, ekk_getColrcosts returns a vector containing the column reduced costs from the model identified by model. The length of this vector is the number of columns in the constraint matrix. If an error occurred, ekk_getColrcosts returns a null pointer.

ekk_getColstat

Function prototype:
int * ekk_getColstat( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getColstat returns a vector containing the column status elements (described in the next paragraph) from the model identified by model. The length of this vector is the number of columns in the constraint matrix. If an error occurred, ekk_getColstat returns a null pointer.

The row and column status elements are 32 bit integers. The bits are numbered from 0 to 31, with the lowest ordered bit numbered 0. All 32 bits are used internally by Optimization Library functions, but only the three high order bits are important to the user.
         If the 31 bit is 1, the corresponding variable is basic (i.e., row logical for a row,
            or structural for a column). If the 31 bit is 1, then the remaining bits are ignored.
         If the 30 bit is 1, then the row or column activity may go down.
         If the 29 bit is 1, then the row or column activity may go up.
In practice this translates into the following.
    For basic variables:
         The variable will have the basic bit (#31) equal to 1.
    For nonbasic variables:
         A variable at, or above, its upper bound will have the down bit (#30) equal to 1.
         A variable at, or below, its lower bound will have the up bit (#29) equal to 1.
         A variable between its bounds will have both the up and down bits equal to 1.
         A free variable at zero will have both the up and down bits equal to 1.
         A fixed variable, at its bound, will have both these bits equal to 0.
Note: Superbasic variables (that is, variables that are neither basic, nor at bound) are also allowed, although normally the bits are set using the primal solution values.
You may set up a basis using this information, and then call a solver function, such as ekk_dualSimplex, or either of ekk_primalNetwork or ekk_dualNetwork, with a warm start.

ekk_getColumn

Function prototype:
EKKVector ekk_getColumn( EKKModel * model , int iColumn )

Where:
model
is a pointer to the current model,
iColumn
is the index of the column to be retrieved.

This function
returns a EKKVector struct, into the index array of which it has loaded the row indices of the elements of the iColumnth column, and into the element array of which it has loaded the values of the corresponding column elements. If an error occurred, ekk_getColumn returns a null pointer.

ekk_getCrange

Function prototype:
const char * ekk_getCrange( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns a pointer to the current name of the ranges. This is set by ekk_importModel or ekk_setCrange. If an error is encountered, ekk_getCrange returns a null pointer.

ekk_getCrhs

Function prototype:
const char * ekk_getCrhs( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns a pointer to the current model rhs name. This is set by ekk_importModel or ekk_setCrhs. If an error is encountered, ekk_getCrhs returns a null pointer.

ekk_getIdensecol

Function prototype:
int ekk_getIdensecol( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIdensecol.
Idensecol Range: 10, maxint Default: 99,999
Description: The dense column threshold. Any matrix column with more nonzeros than Idensecol is treated as dense and is kept out of the direct Cholesky solve. This option should only be used in conjunction with ekk_regularized.

ekk_getIdevexmode

Function prototype:
int ekk_getIdevexmode( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIdevexmode.
Idevexmode Range: -3, 3 Default: 1
Description: The type of Devex pricing to be used. Idevexmode is used by the Devex pricing algorithm in ekk_primalSimplex or ekk_dualSimplex. The recommended values are:

If Idevexmode = 1, the approximate Devex method is used for primal, while for dual the result is as for 2. (This is the default.)

If Idevexmode = 2, the exact Devex method is used for the primal case, and the steepest edge method using inaccurate initial norms is used for the dual.

If Idevexmode = 3, the exact steepest edge method is used. This involves computing column norms initially. If the basis is full, this can involve significant overhead.

For the majority of problems, a setting of 1 (the default) gives the best results.

ekk_getIfastinteger

Function prototype:
int ekk_getIfastinteger( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIfastinteger.
Ifastinteger Range: 0, 1 Default: 0
Description: See "Control Variable Bit Masks" for information on bit masks.

1 Ifastinteger skips initial basis validity check the rows.
2 Ifastinteger skips non-basic cleaning check
4 Ifastinteger skips back substitution error checking
8 Ifastinteger skips final factorization if less than 20 iterations done in branch

ekk_getIfastits

Function prototype:
int ekk_getIfastits( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIfastits.
Ifastits Range: 0, maxint Default: 0
Description: The fast iteration switch. The default primal simplex strategies are for a majority of problems, and are intended to minimize the number of iterations. However, there are some problems where techniques such as Devex pricing are not needed, or are not cost effective, such as problems with a matrix that has many more columns than rows. In these problems, the decrease in the number of iterations is outweighed by the increase in time per iteration. The value of Ifastits modifies this pricing change so that ekk_primalSimplex will not switch to Devex pricing before Ifastits iterations.

ekk_getIheurpass

Function prototype:
int ekk_getIheurpass( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIheurpass.
Iheurpass Range: 0, maxint Default: 1
Description: The number of heuristic passes to be made by the MIP preprocessor. This does not affect supernode processing.

ekk_getIintmask

Function prototype:
int ekk_getIintmask( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIintmask.
Iintmask Range: 0, 63 Default: 1
Description: The MIP solver log detail bit mask. See "Control Variable Bit Masks" for information on bit masks.

0 = Iintmask turns off the printing of the MIP solver log line.
1 Iintmask prints nonzero integer values at integer solutions.
2 Iintmask does not modify Iloglevel. If this bit is not set, then Iloglevel is set to 0; this is the default.
4 Iintmask is not used.
8 Iintmask is not used.
16 Iintmask prints changes in bounds.
32 Iintmask prints nonzero integer values at noninteger solutions.

ekk_getIiterbnum

Function prototype:
int ekk_getIiterbnum( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIiterbnum.
Iiterbnum Range: 0, maxint Default: 0
Description: The current number of iterations the interior point LP solver has performed.

ekk_getIiternum

Function prototype:
int ekk_getIiternum( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIiternum.
Iiternum Range: 0, maxint Default: 0
Description: The current number of iterations that have been performed in a solver function.

ekk_getIiterufreq

Function prototype:
int ekk_getIiterufreq( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIiterufreq.
Iiterufreq Range: 0, maxint Default: 9,999,999
Description: The frequency with which ekk_itru is called. ekk_itru is called after every Iiterufreq iterations of a solver function. All the solver functions incur some overhead from calling ekk_itru. For the network solver, this overhead might be noticeable.

ekk_getIlinelen

Function prototype:
int ekk_getIlinelen( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIlinelen.
Ilinelen Range: 60, 150 Default: 132
Description: The length of the output line.

ekk_getIlogfreq

Function prototype:
int ekk_getIlogfreq( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIlogfreq.
Ilogfreq Range: 1, maxint Default: 999,999
Description: The log frequency. Ilogfreq=n prints log information every n iterations. However, log messages are always printed after problem matrix refactorizations, feasibility weight changes, and switches from random to Devex pricing, unless messages have been turned off by an appropriate setting of Iloglevel.

ekk_getIloglevel

Function prototype:
int ekk_getIloglevel( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIloglevel.
Iloglevel Range: 0, 63 Default: 15
Description: The simplex log detail bit mask. Iloglevel controls how much information is printed for each log message. See "Control Variable Bit Masks" for information on bit masks.

0 = Iloglevel selects no information to be printed for the log message.
1 Iloglevel prints a log line every Ilogfreq iterations and at final LP solver status.
2 Iloglevel prints a log line at every refactorization and change in pricing method.
4 Iloglevel prints variables being rejected from entering the basis.
8 Iloglevel is not used.
16 Iloglevel prints feasibility weight changes and minor computational errors.
32 Iloglevel prints pivoting information.

ekk_getIlpdcflag

Function prototype:
int ekk_getIlpdcflag( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIlpdcflag.
Ilpdcflag Range: 0, maxint Default: 0
Description: The number of blocks into which ekk_decomposeCrash will attempt to decompose the constraint matrix if the master rows are marked. If the value of Ilpdcflag is greater then zero, then ekk_decomposeCrash will attempt to decompose the constraint matrix into this number of blocks, and no more. I.e., if it is possible to decompose the constraint matrix into more than this number of blocks, ekk_decomposeCrash will not do so. If the value of Ilpdcflag is equal to zero, then ekk_decomposeCrash will attempt to decompose the constraint matrix into a number of blocks, but this composition may not be into as many blocks as possible. If you want a decomposition of the constraint matrix into as many blocks as possible, then set the value of Ilpdcflag to a very large number.

ekk_getImajorits

Function prototype:
int ekk_getImajorits( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImajorits.
Imajorits Range: 0, 999 Default: 30
Description: The maximum number of decomposition iterations.

For ekk_decomposeCrash with type = 3, Imajorits is the number of Dantzig-Wolfe decomposition passes to be made.

For a quadratic programming application, Imajorits determines the amount of storage that is to be allocated for decomposition, as well as the number of major decomposition iterations to be performed. More than (Imajorits × Imajorits) doubleword words of memory will be required for a quadratic application, so Imajorits should not be set too large.

ekk_getImaxcols

Function prototype:
int ekk_getImaxcols( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxcols.
Imaxcols Range: 0, maxint Default: 0
Description: The maximum number of columns allowed in the matrix. Setting this will resize the model.

ekk_getImaxfactor

Function prototype:
int ekk_getImaxfactor( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxfactor.
Imaxfactor Range: 0, 9999 Default: 100 + (Inumrows) / 100
Description: The maximum number of iterations before a refactorization (invert) of the basis must be performed. A lower value of Imaxfactor forces the simplex solver to refactorize at least every Imaxfactor iterations.

A decision is made on when to refactorize based on certain heuristics. To make a more accurate decision would involve either much more work, or using CPU timings. The latter possibility was rejected because runs would not be repeatable. For a small class of problems, it may be worth experimenting with Imaxfactor. The formula above is used after ekk_importModel, otherwise 100 is used.

ekk_getImaxfactorsize

Function prototype:
int ekk_getImaxfactorsize( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxfactorsize.
Imaxfactorsize Range: 0, maxint Default: 0
Description: Puts an upper bound on the space reserved for the factorization. If nonzero then the factorization can only have this many nonzeros. This can be useful if it is known that otherwise real memory will be exceeded and excessive paging will take place. Although the exact space used will vary, it is safe to assume that each unit of this variable corresponds to 24 bytes.

ekk_getImaxiter

Function prototype:
int ekk_getImaxiter( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxiter.
Imaxiter Range: 0, maxint Default: 9,999,999
Description: The maximum number of iterations that will be performed. The problem might be solved using fewer iterations, but no more than the value of Imaxiter will be done.

ekk_getImaxiterb

Function prototype:
int ekk_getImaxiterb( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxiterb.
Imaxiterb Range: 0, maxint Default: 100
Description: The maximum number of iterations of the interior-point barrier algorithm. For very large problems it may be worth increasing this to 150 or 200.

ekk_getImaxnodes

Function prototype:
int ekk_getImaxnodes( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxnodes.
Imaxnodes Range: 0, maxint Default: 9,999,999
Description: The maximum number of nodes to evaluate in branch and bound.

ekk_getImaxrows

Function prototype:
int ekk_getImaxrows( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxrows.
Imaxrows Range: 0, maxint Default: 0
Description: The maximum number of rows allowed in the matrix. Setting this will resize the model.

ekk_getImaxsols

Function prototype:
int ekk_getImaxsols( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImaxsols.
Imaxsols Range: 0, maxint Default: 9,999,999
Description: The maximum number of feasible integer solutions to find in Branch and Bound.

ekk_getImiplength

Function prototype:
int ekk_getImiplength( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImiplength.
Imiplength Range: 0, maxint Default: 0
Description: The amount of extra information that is saved and restored by the user exit ekk_nodu. This is set by the user exit ekk_nodu. An array of integer fullwords of length Imiplength is saved at each node. It is saved for use by the user exit ekk_nodu.

ekk_getImodelmask

Function prototype:
int ekk_getImodelmask( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImodelmask.
Imodelmask Range: 0, 8191 Default: 0
Description: The bit mask that determines which parts of the matrix are written or read by ekk_saveModel or ekk_restoreModel. See "Control Variable Bit Masks" for information on bit masks.

0 = Imodelmask selects all of the parts in the matrix.
1 Imodelmask selects the common block.
2 Imodelmask selects the row and column selection lists.
4 Imodelmask selects the names of the rows and columns.
8 Imodelmask selects the status of each variable.
16 Imodelmask selects the activity values of each variable.
32 Imodelmask selects the dual values and the reduced costs.
64 Imodelmask selects the lower bounds.
128 Imodelmask selects the upper bounds.
256 Imodelmask selects the input costs.
512 Imodelmask selects the matrix elements.
1024 Imodelmask selects the scales.
2048 Imodelmask selects the presolve information.
4096 Imodelmask selects integer information.

ekk_getImsgpos

Function prototype:
int ekk_getImsgpos( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setImsgpos.
Imsgpos Range: 0, 1 Default: 0
Description: The position of the message number on the output line. This does not affect traceback output.

ekk_getInumberuser

Function prototype:
int ekk_getInumberuser( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of elements in the user arrays as created by such functions as ekk_getRow.

ekk_getInumblocks

Function prototype:
int ekk_getInumblocks( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of matrix blocks in the model.

ekk_getInumchar

Function prototype:
int ekk_getInumchar( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setInumchar.
Inumchar Range: 1, 31 Default: 8
Description: The number of characters in row and column names. This can also be set by ekk_importModelFree.

ekk_getInumcols

Function prototype:
int ekk_getInumcols( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setInumcols.
Inumcols Range: 0, maxint Default: 0
Description: The number of structural variables in the model. Changing this will resize the model.

ekk_getInumdinf

Function prototype:
int ekk_getInumdinf( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setInumdinf.
Inumdinf Range: 0, Inumcols Default: n/a
Description: The current number of dual infeasibilities.

ekk_getInumelq

Function prototype:
int ekk_getInumelq( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of elements or columns in the quadratic part of the matrix. If the quadratic matrix is stored by indices, then this gives the number of nonzero elements. If the quadratic matrix is stored by columns, this gives the number of columns.

ekk_getInumels

Function prototype:
int ekk_getInumels( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of elements in the linear part of the matrix.

ekk_getInumints

Function prototype:
int ekk_getInumints( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of integer variables in the model.

ekk_getInumnodes

Function prototype:
int ekk_getInumnodes( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of nodes which branch and bound has explored.

ekk_getInumpinf

Function prototype:
int ekk_getInumpinf( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setInumpinf.
Inumpinf Range: 0, Inumrows Default: n/a
Description: The current number of primal infeasibilities.

ekk_getInumquadraticblocks

Function prototype:
int ekk_getInumquadraticblocks( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of quadratic blocks in the model. This will normally be zero or one.

ekk_getInumrows

Function prototype:
int ekk_getInumrows( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setInumrows.
Inumrows Range: 0, maxint Default: 0 The number of rows in the model. Changing this will resize the model.

ekk_getInumsets

Function prototype:
int ekk_getInumsets( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of integer and Special Ordered Sets.

ekk_getInumsols

Function prototype:
int ekk_getInumsols( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setInumsols.
Inumsols Range: 0, Imaxsols Default: 0
Description: The number of integer solutions found so far.

ekk_getInumunsat

Function prototype:
int ekk_getInumunsat( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setInumunsat.
Inumunsat Range: 0, maxint Default: 0
Description: The number of integer variables at fractional values.

ekk_getIoneobj

Function prototype:
int ekk_getIoneobj( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIoneobj.
Ioneobj Range: 0, 1 Default: 1
Description: One objective function (type-N row) flag for MPS files. This specifies whether to keep or discard the type-N rows except for the chosen one. The type-N row that is the objective function change vector for LP parametrics is not discarded if Cchangeobj is set before calling ekk_importModel.

ekk_getIordunit

Function prototype:
int ekk_getIordunit( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIordunit.
Iordunit Range: -1, 99 Default: -1
Description: The row ordering read and write logical unit - the name of which will be "fort.nn".
If Iroword is negative, then Iordunit must be set to a valid logical unit number, otherwise an error will occur.

ekk_getIpagelines

Function prototype:
int ekk_getIpagelines( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIpagelines.
Ipagelines Range: 10, maxint Default: 55
Description: The number of lines on the output page.

ekk_getIpossbasis

Function prototype:
int ekk_getIpossbasis( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIpossbasis.
Ipossbasis Range: 0, maxint Default: 65
Description: The potential basis flag. Ipossbasis > 0 means that at the end of the barrier algorithm, the variables significantly away from their bounds are marked as potentially basic, as are slack variables on rows with small dual values.

ekk_getIpricetype

Function prototype:
int ekk_getIpricetype( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIpricetype.
Ipricetype Range: 0, 1 Default: 0
Description: The type of pricing for the network solver.
If Ipricetype = 0, a sample size for the pricing step is selected based on problem characteristics, and it is adjusted dynamically during the solution process.
If Ipricetype = 1, the sample size given by Rnetsamp is used, and it remains fixed during the solution process.

ekk_getIprintsens

Function prototype:
int ekk_getIprintsens( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIprintsens.
Iprintsens Range: 0, 1023 Default: 0
Description: The sensitivity information printing bit mask. See "Control Variable Bit Masks" for information on bit masks. Iprintsens controls what information is created by ekk_senseObjective, or ekk_senseBound, and is printed by ekk_printSolution. No information relating to sensitivity analysis is printed by default.

For ekk_printSolution output of ekk_senseObjective results:
1 Iprintsens the range of the objective function coefficient up and down is printed.
2 Iprintsens the objective function values at the range points are printed.
4 Iprintsens the row or column that enters the basis is printed.
8 Iprintsens the row or column that leaves the basis is printed.

For ekk_printSolution output of ekk_senseBound results:
16 Iprintsens the range of the objective function coefficient up and down is printed.
32 Iprintsens the objective function values at the range points are printed.
64 Iprintsens the row or column that enters the basis is printed.
128 Iprintsens the row or column that leaves the basis is printed.
256 Iprintsens the sensitivity to row bounds is printed.
512 Iprintsens the sensitivity to column bounds is printed.

ekk_getIprobstat

Function prototype:
int ekk_getIprobstat( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIprobstat.
Iprobstat Range: -1, 6 Default: -1
Description: The problem status. Iprobstat is set as follows:

If Iprobstat = -1, Iprobstat has not been set by the solver function.
If Iprobstat = 0, the solver function completed successfully.
If Iprobstat = 1, the problem is continuous infeasible.
If Iprobstat = 2, the problem is continuous unbounded.
If Iprobstat = 3, the solver function has stopped on the maximum number of iterations.
If Iprobstat = 4, the solver function has stopped because no solution has been found.
If Iprobstat = 5, the solver function has stopped on the maximum number of solutions.
If Iprobstat = 6, the solver function has stopped because of lack of storage or file space.

ekk_getIprobstat2

Function prototype:
int ekk_getIprobstat2( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the secondary status variable.
Description: A secondary problem status variable. Iprobstat2 is set on the basis of a comparison of the feasibilities of the unscaled and scaled versions of a problem. Iprobstat2 will not be set if ekk_scale has not been called. In addition, Iprobstat2 may not be set if the problem was found to be unbounded, or if some error occurred in processing. The possible values of this control variable and the associated meanings are as follows:

If Iprobstat2 = -1, Iprobstat2 has not been set.
If Iprobstat2 = 0, both the unscaled and scaled problems are feasible.
If Iprobstat2 = 1, the unscaled problem is feasible, and the scaled problem is infeasible.
If Iprobstat2 = 2, the unscaled problem is infeasible, and the scaled problem is feasible.
If Iprobstat2 = 3, both the unscaled and scaled problems are infeasible.

ekk_getIprtinfomask

Function prototype:
int ekk_getIprtinfomask( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIprtinfomask.
Iprtinfomask Range: 0, 1023 Default: 31
Description: The solution information bit mask for ekk_printSolution. See "Control Variable Bit Masks" for information on bit masks.

0 = Iprtinfomask selects all of the parts for printing by ekk_printSolution. This is equivalent to setting Iprtinfomask to 63.
1 Iprtinfomask selects the statistics.
2 Iprtinfomask selects the iteration count, the value of the objective function, and the problem status.
4 Iprtinfomask selects the names of the columns and rows.
8 Iprtinfomask selects the status of each variable.
16 Iprtinfomask selects the activity values.
32 Iprtinfomask selects the dual values and reduced costs.
64 Iprtinfomask selects the lower bounds.
128 Iprtinfomask selects the upper bounds.
256 Iprtinfomask selects the input costs.
512 Iprtinfomask selects the matrix elements.

ekk_getIqparmaxiter

Function prototype:
int ekk_getIqparmaxiter( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIqparmaxiter.
Iqparmaxiter Range: 0, maxint Default: 9,999,999
Description: The maximum number of parametric adjustments that will be performed by ekk_quadraticParametrics.

ekk_getIqparnumiter

Function prototyp
int ekk_getIqparnumiter( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of quadratic parametric iterations done so far.

ekk_getIroword

Function prototype:
int ekk_getIroword( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIroword.
Iroword Range: -1, 4 Default: 3
Description: The row ordering method indicator.

Iroword = 0 indicates that no attempt is to be made to order the rows of the matrix for interior point LP solver. This option may be useful if the formulation order is known to be efficient.
Iroword = 1 indicates that a minimum degree ordering of the rows be performed for efficiency in the Cholesky factorization. If the value of Iordunit is a valid logical unit number, the ordering is written to that unit.
Iroword = 2 indicates that the row ordering user exit, ekkordu, is to be called to do the row ordering.
Iroword = 3 indicates that a row ordering algorithm based on graph partitioning (developed by Anshul Gupta) is used, with the usual Cholesky factorization algorithm, to do the row ordering.
Iroword = 4 indicates that Gupta's row ordering algorithm based on graph partitioning is used, with a variant Cholesky factorization algorithm. (This algorithm requires more storage than that used when Iroword is 3, but usually less storage than that used when Iroword is 1. It may be faster on RISC based workstations, but it may be slower on Intel based machines.)
Iroword = -1 indicates that a row ordering is to be read from the logical unit specified by the integer control variable Iordunit. Note that if the ordering is incorrectly specified, a new minimum degree ordering is carried out.

ekk_getIsolmask

Function prototype:
int ekk_getIsolmask( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIsolmask.
Isolmask Range: 0, 16 Default: 0
Description: The print matrix bit mask for ekk_printSolution. See "Control Variable Bit Masks" for information on bit masks.

0 = Isolmask selects all of the parts for printing by ekk_printSolution. This is equivalent to setting Isolmask to 15 or 16.
1 Isolmask selects the rows.
2 Isolmask selects the columns.
4 Isolmask selects the nonzero elements of the model.
8 Isolmask selects the infeasible elements of the model.
16 Isolmask selects the entire matrix.

ekk_getIstopmask

Function prototype:
int ekk_getIstopmask( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIstopmask.
Istopmask Range: 0, 3 Default: 0
Description: The stopping condition bit mask. Istopmask controls when the solver function will stop. See "Control Variable Bit Masks" for information on bit masks.

0 = Istopmask indicates that the simplex solver will exit normally.
1 Istopmask indicates that the solver will exit when the pricing mode changes. This occurs after a values pass when the solver was called with init set to 3. It also occurs when fast iterations are switched off.
2 Istopmask indicates that the solver will exit when the problem becomes feasible.

ekk_getIstrategy

Function prototype:
int ekk_getIstrategy( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIstrategy.
Istrategy Range: 0, 63 Default: 1
Description: The bit mask that selects various steps of the MIP algorithm. Istrategy affects MIP preprocessing, and supernode processing in the MIP solver. See "Control Variable Bit Masks" for information on bit masks.

0 = Istrategy specifies probing on all variables.

1 Istrategy means perform probing only on satisfied 0-1 variables. This is the default setting. When a 0-1 variable is satisfied (i.e. currently at 0 or 1), probing will be done to determine what other variables can be fixed as a result. If this variable is not one, then probing will done on all 0-1 integer variables. If they still have fractional values, the MIP solver will try setting them first to one and then to zero, and use probing to build an implication list for each direction.

2 Istrategy means use solution strategies that assume a valid integer solution has been found. The MIP solver uses different strategies when looking for the first integer solution than when looking for a better one. If you already have a solution from a previous run, and have set a cutoff value Rbbcutoff), then this option will cause the solver to operate as though it already has an integer solution. This is beneficial for restarting and should reduce the time needed to reach an optimal integer solution.

4 Istrategy means take the branch opposite the maximum pseudo-cost. Normally, the MIP solver will branch on the node whose smaller pseudo-cost is highest. This has the effect of choosing a node where both branches cause significant degradation in the objective function, probably allowing the tree to be pruned earlier. With this option, the MIP solver will branch on the node whose larger pseudo-cost is highest; the branch taken will be in the opposite direction of this cost. This has the effect of forcing the variables with most nearly integer values to integers earlier. This may be useful when any integer solution, even a suboptimal one, is desired. Here the tree could possibly grow much larger, but if any integer solution is adequate and the search is successful, then most of the tree will never have to be explored.

8 Istrategy means compute new pseudo-costs as variables are branched on. Pseudo-costs, whether assigned by the user or by the MIP solver, are normally left unchanged during the solution process. Choosing this option will cause new estimates to be made, using heuristics, as each branch is selected.

16 Istrategy means compute pseudo-costs for unsatisfied variables. Pseudo-costs, whether assigned by the user or by the MIP solver, are normally left unchanged during the solution process. Setting this option will cause new estimates to be made, using heuristics, for any unsatisfied variables' pseudo-costs in both directions. This is done only the first time the variable is found to be unsatisfied. In some cases, variables will be fixed to a bound by this process, leading to better performance. This work is equivalent to making two branches for every variable investigated. Note that this tactic can be very time-consuming, if it does not prove effective, and this should be weighed against the time likely to be spent in the solver.

32 Istrategy means compute pseudo-costs for satisfied variables as well as for unsatisfied variables. If the 16 bit is also one, the solver will compute new estimated pseudo-costs for the satisfied variables, as well as the unsatisfied ones. Again, this is computationally expensive, but it can improve performance on some problems.

ekk_getIsupertol

Function prototype:
int ekk_getIsupertol( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIsupertol.
Isupertol Range: 0, maxint Default: Number of 0-1 variables
Description: The number of branches allowed inside a supernode before supernode processing ends. Supernode processing ends, if all the following are true:

The number of integer variables fixed is less than Ithreshold.
The improvement to the objective function is less than Rthreshold.
The number of branches taken inside a supernode is greater than Isupertol.

ekk_getIthreshold

Function prototype:
int ekk_getIthreshold( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which can be set by ekk_setIthreshold.
Ithreshold Range: 0, maxint Default: 1
Description: Number of integer variables that must be fixed for supernode processing to continue. In the MIP presolver, the current phase ends and one or more variables are fixed before the next phase begins. In the MIP solver, a branch is performed if both of the following are true:

The number of integer variables fixed is less than Ithreshold.
The improvement to the objective function is less than Rthreshold.

ekk_getIuseRowCopy

Function prototype:
int ekk_getIuseRowCopy( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding integer control variable which is set by ekk_setIuseRowCopy.
IuseRowCopy Range: 0, 1 Default: 0
Description: For large sparse problems it may be much faster for the simplex algorithms to have a copy of matrix stored by rows. If the value of IuseRowCopy ekk_primalSimplex or ekk_dualSimplex. If an error occurred, ekk_getIuseRowCopy returns a nonzero value, otherwise it returns zero.

ekk_getLogfileFilePointer

Function prototype:
FILE * ekk_getLogfileFilePointer( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the FILE pointer to the current log file, i.e., the file into which Optimization Library messages will be written. This can be set using ekk_setLogfileFilePointer. ekk_getLogfileFilePointer returns a null pointer, if an error occurred.

ekk_getLogfileName

Function prototype:
const char * ekk_getLogfileName( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns a pointer to the name of the current log file, i.e., the file into which Optimization Library messages will be logged. This can be set using ekk_setLogfileFilePointer or ekk_setLogfileFileName. The default is stdout. ekk_getLogfileName returns a null pointer, if an error occurred.

ekk_getNumberBasicColumns

Function prototype:
int ekk_getNumberBasicColumns( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of basic columns in the current model.

ekk_getNumberBasicRows

Function prototype:
int ekk_getNumberBasicRows( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the number of basic rows in the current model.

ekk_getObjective

Function prototype:
double * ekk_getObjective( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getObjective returns a vector containing the objective function coefficients from the model identified by model. The length of this vector is the number of columns in the constraint matrix. If an error occurred, ekk_getObjective returns a null pointer.

ekk_getRbbcutoff

Function prototype:
double ekk_getRbbcutoff( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRbbcutoff.
Rbbcutoff Range: -10 20,maxreal Default: 10 31
Description: The cutoff for the branch and bound. All branches where the objective is at or above Rbbcutoff will be pruned. The value of Rbbcutoff is initialized to plus infinity. This allows all solutions. Whenever a valid integer solution is found, the cutoff is changed to the objective minus Rimprove.

ekk_getRbestest

Function prototype:
double ekk_getRbestest( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRbestest.
Rbestest Range: -maxreal, maxreal Default: 0.0
Description: The best estimated solution.

ekk_getRbestposs

Function prototype:
double ekk_getRbestposs( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRbestposs.
Rbestposs Range: -maxreal, maxreal Default: The continuous solution
Description: The best possible solution.

ekk_getRbestsol

Function prototype:
double ekk_getRbestsol( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRbestsol.
Rbestsol Range: -maxreal, maxreal Default: 10 31
Description: The best feasible integer solution found so far.

ekk_getRchangeweight

Function prototype:
double ekk_getRchangeweight( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRchangeweight.
Rchangeweight Range: 10 -12
Purpose: used by the simplex solvers
Description: The rate of change for Rpweight or Rdweight. It is a nonlinear factor based on case-dependent heuristics. The default of 0.5 gives a reasonable change if progress towards feasibility is slow. A value of 1.0 would give a greater change, while 0.1 would give a smaller change, and 0.01 would give a very slow change.

ekk_getRdegscale

Function prototype:
double ekk_getRdegscale( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRdegscale.
Rdegscale Range: 0.0, maxreal Default: 1.0
Description: The scale factor for all degradation. The pseudocosts and Riweight are used to estimate how much worse the objective will become when continuing from a node (the estimated degradation). This estimate is computed when the node is generated. The estimate of the objective at a solution used in choosing the node is the objective at the node + the value of Rdegscale multiplied by the estimated degradation. This is computed when the node choice is made.

A small value for Rdegscale causes nodes with a good objective, but possibly far away from a valid solution to be chosen. A large value biases the choice towards nodes that are closer to a valid solution.

Setting Rdegscale to zero has special significance. After computation of the estimated degradation, a value for Rdegscale is computed such that the estimated objective at a solution used in choosing the node (the objective at the node + the value of Rdegscale multiplied by the estimated degradation) is exactly the value of Rtarget. This is a quick way of getting reasonable estimates.

One way of using Rdegscale is to set a reasonable value for Rtarget, and then allow the MIP solver to compute Rdegscale to give a plausible search. When a solution is found, Rdegscale could be set to a small value to search using just the objective.

ekk_getRdensethr

Function prototype:
double ekk_getRdensethr( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRdensethr.
Rdensethr Range: -maxreal, maxreal Default: 0.7
Description: The density threshold for Cholesky processing. When the symbolic factorization encounters a column of L that has Rdensethr proportion of nonzeros and the remaining part of L is at least 12 × 12, the remainder of L is treated as dense. In practice, the lower right part of the Cholesky triangular factor L is quite dense and it can be computationally more efficient to treat it as 100% dense.

Rdensethr 0.0 causes all dense processing.
Rdensethr 1.0 causes all sparse processing.

ekk_getRdualPerturbation

Function prototype:
double ekk_getRdualPerturbation( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRdualPerturbation.
RdualPerturbation Range: -10 10, 10 10 Default: 0.0
Description: Normally when perturbation is applied in the primal or dual simplex method the amount is determined by the solver. This allows the user to influence this amount. If the value is negative then perturbation is applied immediately.

ekk_getRdweight

Function prototype:
double ekk_getRdweight( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRdweight.
Rdweight Range: 0.0, 1.0 Default: 0.1
Description: The proportion of the feasible objective that is used when the current solution is dual infeasible in the dual simplex method.

ekk_getRimprove

Function prototype:
double ekk_getRimprove( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRimprove.
Rimprove Range: -maxreal, maxreal Default: 10 -5
Description: The amount by which a new solution must be better.

When a valid solution is obtained, Rbbcutoff is set to the objective minus Rimprove. Because the default value is small this only stops alternative solutions with the same value.

If Rimprove is set to a large negative value all solutions of any value will be allowed.

Rimprove can be set to a large positive value if you are not interested in solutions with values close together.

Rimprove can be set to 0.9999 if the only variables with costs are integer variables, and the costs have integer values. This can be useful in pruning the tree earlier than would otherwise be the case.

ekk_getRiweight

Function prototype:
double ekk_getRiweight( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRiweight.
Riweight Range: 0.0, maxreal Default: 1.0
Description: The weight for each integer infeasibility. For some types of integer problems, the values of fractional variables are of use. For example, if one variable is greater than another it is more likely to be in the optimal solution. But for many pure 0-1 problems, only the number of variables at fractional values are important. By changing Riweight the balance between the contribution of the pseudocosts and the contribution of the number of fractional variables can be changed.

ekk_getRmaxmin

Function prototype:
double ekk_getRmaxmin( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRmaxmin. See also ekk_setMaximize and ekk_setMinimize.
Rmaxmin Range: -1.0, 1.0 Default: 1.0
Description: The weight of the linear objective.

Rmaxmin=1.0 minimizes the objective function.
Rmaxmin=-1.0 maximizes the objective function.
Rmaxmin=0.0 causes the objective function to be ignored, and optimality to be declared as soon as a feasible solution is found.

ekk_getRmulinfac

Function prototype:
double ekk_getRmulinfac( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRmulinfac.
Rmulinfac Range: 0.0, 1.0 Default:0.0
Description: The multiple of &mu. to add to the linear objective. Adding a small multiple of &mu. to each coefficient of the true objective can help prevent models from becoming unbounded if they have constraint sets that are not closed. Normally, this multiple is 0.

ekk_getRnetsamp

Function prototype:
double ekk_getRnetsamp( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRnetsamp.
Rnetsamp Range: 0.0, 1.0 Default:0.05
Description: The sample size for the network pricing algorithm. Rnetsamp gives the percent of arcs for which reduced costs are computed during the pricing step of the network solver. This is used if Ipricetype is set to 1.

ekk_getRobjectiveOffset

Function prototype:
double ekk_getRobjectiveOffset( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRobjectiveOffset.
RobjectiveOffset Range: -maxreal, maxreal Default: 0.0
Description: This is a constant to be subtracted from objective value whenever it is printed. ekk_preSolve may compute this (or an MPS file may have a value in the rhs of the objective row). Also the user may modify the problem in such a way that the objective function needs this offset (e.g. adding a multiple of an equality constraint to objective does not change problem but does change objective).

ekk_getRobjvalue

Function prototype:
double ekk_getRobjvalue( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRobjvalue.
Robjvalue Range: -maxreal, maxreal Default: n/a
Description: The value of the objective function.

ekk_getRow

Function prototype:
int ekk_getRow( EKKModel * model , int iRow );

Where:
model
is a pointer to the current model,
iRow
is the index of the constraint row to be retrieved.

This function
returns a EKKVector struct, into the index array of which it has loaded the column indices of the elements of the iRowth row, and into the element array of which it has loaded the values of the corresponding row elements. If an error occurred, ekk_getRow returns a null pointer.

ekk_getRowacts

Function prototype:
double * ekk_getRowacts( EKKModel * model );

Where:
model
is a pointer to the current model,

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getRowacts returns a vector containing the row activities from the model identified by model. The length of this vector is the number of rows in the constraint matrix. If an error occurred, ekk_getRowacts returns a null pointer.

ekk_getRowduals

Function prototype:
double * ekk_getRowduals( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getRowduals returns a vector containing the row dual values from the model identified by model. The length of this vector is the number of rows in the constraint matrix. If an error occurred, ekk_getRowduals returns a null pointer.

ekk_getRowlower

Function prototype:
double * ekk_getRowlower( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getRowlower returns a vector containing the row lower bounds from the model identified by model. The length of this vector is the number of rows in the constraint matrix. If an error occurred, ekk_getRowlower returns a null pointer.

ekk_getRowstat

Function prototype:
int * ekk_getRowstat( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getRowstat returns a vector containing the row status elements from the model identified by model. The length of this vector is the number of rows in the constraint matrix. If an error occurred, ekk_getRowstat returns a null pointer.

ekk_getRowupper

Function prototype:
double * ekk_getRowupper( EKKModel * model );

Where:
model
is a pointer to the current model,

This function
allocates a block of storage space for which the user is responsible (as explained above). If no error has occurred, ekk_getRowupper returns a vector containing the row upper bounds from the model identified by model. The length of this vector is the number of rows in the constraint matrix. If an error occurred, ekk_getRowupper returns a null pointer.

ekk_getRpdgaptol

Function prototype:
double ekk_getRpdgaptol( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRpdgaptol.
Rpdgaptol Range: 10 -12, 10 -1 Default: 10 -7
Description: The barrier method primal-dual gap tolerance. The relative gap between the primal and dual objectives that will be accepted for optimality when both the primal and dual problems are feasible.

ekk_getRpertdiag

Function prototype:
double ekk_getRpertdiag( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRpertdiag.
Rpertdiag Range: 0.0, 10 -6 Default: 10 -12
Description: The diagonal perturbation for Cholesky factorization. Rpertdiag is added to the diagonal matrix used in forming the normal matrix whose Cholesky factors are computed in the interior point solver. This helps avoid spurious indications of rank deficiency.

ekk_getRprimalPerturbation

Function prototype:
double ekk_getRprimalPerturbation( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRprimalPerturbation. RprimalPerturbation Range: -10 10, 10 10 Default: 0.0
Description: Normally when perturbation is applied in the primal or dual simplex method the amount is determined by OSL. This allows the user to influence this amount. If the value is negative then perturbation is applied immediately.

ekk_getRprintcpu

Function prototype:
double ekk_getRprintcpu( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRprintcpu.
Rprintcpu Range: 0.0, maxreal Default: 0.1
Description: Switch to print CPU time used by Library functions. If Rprintcpu is set to a positive value x.xx, then any Optimization Library function that takes more than x.xx seconds will print a message indicating how much time the function took, and the total CPU time used thus far. The times are printed to two decimal places, and so a zero may be printed, if the value of Rprintcpu is small. Also, the computing time may not be correct after the value of Rprintcpu has been changed by ekk_setRprintcpu In particular, if Rprintcpu has been set to 0.0, no messages about CPU time will be issued.

For some platforms, elapsed time may be returned.

ekk_getRpweight

Function prototype:
double ekk_getRpweight( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRpweight.
Rpweight Range: 10 -12, 10 10 Default: 0.1
Description: The multiplier of the feasible objective that is used when the current solution is primal infeasible. It starts as 0.1, but is decreased continually. It is decreased by a large amount if the infeasibilities increase, and by small amounts if progress to feasibility is slow. You may want to set Rpweight to a smaller value when the problem begins as feasible, for example, after a values pass of the interior point solver where the parameter init is set to 3.

ekk_getRregularizedDelta

Function prototype:
double ekk_getRregularizedDelta( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRregularizedDelta.
RregularizedDelta Range: 10 -8, 10 8 Default: 10 -3
Description: This perturbation is applied on the dual side in ekk_regularized. If this is too small there may a fatal loss of rank. If too big then the answer may be slightly inaccurate. If you are going to do crossover then for a first try leave at default safe values (1.0e-3). To use less perturbation set smaller e.g. 1.0e-6.

ekk_getRregularizedGamma

Function prototype:
double ekk_getRregularizedGamma( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRregularizedGamma.
RregularizedGamma Range: 10 -8, 10 8 Default: 10 -3
Description: This perturbation is applied on the primal side in ekk_regularized. If this is too small there may a fatal loss of rank. If too big then the answer may be slightly inaccurate. If you are going to do crossover then for a first try leave at default safe values (1.0e-3). To use less perturbation set smaller e.g. 1.0e-6.

ekk_getRsumdinf

Function prototype:
double ekk_getRsumdinf( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRsumdinf.
Rsumdinf Range: -maxreal, maxreal Default: n/a
Description: The sum of the dual infeasibilities.

ekk_getRsumpinf

Function prototype:
double ekk_getRsumpinf( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRsumpinf.
Rsumpinf Range: -maxreal, maxreal Default: n/a
Description: The sum of the primal infeasibilities.

ekk_getRtarget

Function prototype:
double ekk_getRtarget( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRtarget.
Rtarget Range: -maxreal, maxreal Default: 5% worse than the continuous solution
Description: This is a target value of the objective for a valid solution. In choosing a node to evaluate, preference is given to those with objective function values better than Rtarget, even if their estimated value is worse than a node whose objective is worse than the Rtarget.

Rtarget is also used if Rdegscale is zero. If you do not set Rtarget, then it will be set to 5% worse than the continuous solution.

ekk_getRthreshold

Function prototype:
double ekk_getRthreshold( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRthreshold.
Rthreshold Range: 0.0, maxreal Default: 0.0
Description: The supernode processing threshold. If Rthreshold is 0.0, the default, then the MIP presolver sets it to the smaller of 10 -4 × objective function + 10 -12 and 10 -3 × distance from the continuous solution to the cutoff, and the MIP solver sets Rthreshold to 10 times this value.

In the presolver, the current phase ends and one or more variables are fixed before the next phase begins. In the solver, a branch is performed if both of the following are true:

The number of integer variables fixed is less than Ithreshold.
The improvement to the objective function is less than Rthreshold.

ekk_getRtoldinf

Function prototype:
double ekk_getRtoldinf( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRtoldinf.
Rtoldinf Range: 10 -12, 10 -1 Default: 10 -7
Description: The allowed amount of dual infeasibility. This variable is the dual equivalent to the primal variable Rtolpinf.

ekk_getRtolint

Function prototype:
double ekk_getRtolint( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRtolint.
Rtolint Range: 10 -12, 10 -1 Default: 10 -6
Description: The integer tolerance. In some problems for which the accuracy of the data is questionable, it may not be worth forcing all variables exactly to integer values. It may be better to declare the solution valid when all fractional values are less than a moderate tolerance, and then get an integer solution by rounding.

ekk_getRtolmps

Function prototype:
double ekk_getRtolmps( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRtolmps.
Rtolmps Range: -maxreal, maxreal Default: 10 -12
Description: The zero tolerance for MPS and spreadsheet data.

If the absolute value of any of the following is less than Rtolmps, then that coefficient is not included in the matrix.

a coefficient in the COLUMNS section of an MPS file
a coefficient in a constraint cell in a spreadsheet work file
a coefficient in an objective cell in a spreadsheet work file

Setting Rtolmps to a negative value allows all the elements in an MPS file to remain in the matrix.
A value of zero allows all nonzero elements and coefficients in an MPS file or spreadsheet work file to remain in the matrix. A small positive value screens out elements and coefficients of small magnitude.
For elements in the RHS, RANGES, or BOUNDS sections of an MPS file, for objective row coefficients in an MPS file or an objective row cell of a spreadsheet work file, and for row and column bounds in a constraint cell in a spreadsheet work file, if the absolute value of an element is less than Rtolmps, it is set to zero.

ekk_getRtolpinf

Function prototype:
double ekk_getRtolpinf( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
returns the value of the corresponding real control variable which can be set by ekk_setRtolpinf.
Rtolpinf Range: 10 -12, 10 -1 Default: 10 -8
Description: The allowed amount of primal infeasibility. For most problems, the default value of Rtolpinf is adequate, but it might be necessary to increase its value, if ekk_preSolve finds a small infeasibility, or if the solution is slightly infeasible. If possible, the problem definition should be corrected, but in some cases this is impractical because of the limitations of finite precision.
Increasing Rtolpinf too much may lead to instability, but a modest increase can give the algorithm added flexibility and decrease the iteration count.

ekk_getSOSInfo

Function prototype:
EKKIntegerSet ekk_getSOSInfo( EKKModel * model , int iSet );

Where:
model
is a pointer to the current model,
iSet
is the index of the set of integer variables about which information is sought.

This function
returns a struct, with four entries, that gives information on the set of integers identified by iSet. The prototype for the struct is:

typedef struct{
int type; /* 1 => singleton , 2 => SOS1 , 3 => SOS1 , 4 => SOS2 */
int priority; /* branching priority for the set */
int number_in_set; /* number of elements in the set */
EKKSetEntry * entries_in_set; /* a pointer to the iSet entry in an array of EKKSetEntry structs */
} EKKIntegerSet;
The prototype for the EKKSetEntry struct is:
typedef struct{
int sequence; /* sequence number, 0 is first */
unsigned short number_up; /* number of times branched up on variable */
unsigned short number_down; /* number of times branched down on variable */
double down_pseudo_cost;
double up_pseudo_cost; /* could also be reference row entry */
} EKKSetEntry;

If ekk_getSOSInfo encounters an error, it returns an "empty struct," in which the branching priority is -1 and all other entries are zero.

ekk_setCbasis

Function prototype:
int ekk_setCbasis( EKKModel * model , const * char value );

Where:
model
is a pointer to the current model,
value new value.

This function
sets the current basis name.

ekk_setCbound

Function prototype:
int ekk_setCbound( EKKModel * model , const * char value );

Where:
model
is a pointer to the current model,
value new value.

This function
sets the current bound name.

ekk_setCname

Function prototype:
int ekk_setCname( EKKModel * model , const * char value );

Where:
model
is a pointer to the current model,
value new value.

This function
sets the current model name. This is printed in messages referring to the model.

ekk_setCobjective

Function prototype:
int ekk_setCobjective( EKKModel * model , const * char value );

Where:
model
is a pointer to the current model,
value new value.

This function
sets the current name of the objective row.

ekk_setCollower

Function prototype:
int ekk_setCollower( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the column lower bounds are to be set.

This function
sets the values of the column lower bounds in the model identified by model to the values in the array pointed to by fromArray. ekk_setCollower does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setCollower returns a nonzero value, otherwise it returns zero.

ekk_setColrcosts

Function prototype:
int ekk_setColrcosts( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the column reduced costs are to be set.

This function
sets the values of the column reduced costs in the model identified by model to the values in the array pointed to by fromArray. ekk_setColrcosts does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setColrcosts returns a nonzero value, otherwise it returns zero.

ekk_setColsol

Function prototype:
int ekk_setColsol( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the column activities are to be set.

This function
sets the values of the column activities in the model identified by model to the values in the array pointed to by fromArray. ekk_setColsol does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setColsol returns a nonzero value, otherwise it returns zero.

ekk_setColstat

Function prototype:
int ekk_setColstat( EKKModel * model , const int * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the column status elements are to be set.

This function
sets the values of all the column status elements in the model identified by model to the values in the array pointed to by fromArray. Compare ekk_setColumnStatus below, which resets status values for specified columns. ekk_setColstat does not clear, or deallocate, the "fromarray" in which the new column status information is stored. This array should be allocated with ekk_int before being populated, and it should ultimately be deallocated with ekk_free. If an error occurred, ekk_setColstat returns a nonzero value, otherwise it returns zero.

ekk_setColumnStatus

Function prototype:
int ekk_setColumnStatus( EKKModel * model , int numberToMark , const int * which , const int * usrstatus );

Where:
model
is a pointer to the current model,
numberToMark
is the number of columns whose status vectors are to be updated,
which
is a pointer to an array of indices (of numberToMark elements) containing the C indices of the columns whose status vectors are to be updated,
usrstatus
is a pointer to an array of column status values to be used to update the indicated columns' status vectors,

This function
Sets new column status element values for the indicated columns. Compare ekk_setColstat above, which resets status values for all the columns. ekk_setColumnStatus does not clear, or deallocate, either of the "which" or "usrstatus" input arrays. These arrays should be allocated with ekk_int before being populated, and they should ultimately be deallocated with ekk_free. If an error occurred, ekk_setColumnStatus returns a nonzero value, otherwise it returns zero.

ekk_setColupper

Function prototype:
int ekk_setColupper( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the column upper bounds are to be set.

This function
sets the values of the column upper bounds in the model identified by model to the values in the array pointed to by fromArray. ekk_setColupper does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setColupper returns a nonzero value, otherwise it returns zero.

ekk_setColumnsNonBasicAtLower

Function prototype:
int ekk_setColumnsNonBasicAtLower( EKKModel * model , int numberToMark , const int * which);

Where:
model
is a pointer to the current model,
numberToMark
is the number of columns to be marked,
which
is a pointer to a list of the C indices of the columns to be marked as being at lower bound.

This function
marks columns as being at their lower bounds.

ekk_setColumnsNonBasicAtUpper

Function prototype:
int ekk_setColumnsNonBasicAtUpper( EKKModel * model , int numberToMark , const int * which);

Where:
model
is a pointer to the current model,
numberToMark
is the number of columns to be marked,
which
is a pointer to a list of the C indices of the columns to be marked as being at upper bound.

This function
marks columns as being at their upper bounds.

ekk_setCompressOff

Function prototype:
void ekk_setCompressOff( EKKModel * model );

Where:
model
is a pointer to the current model.

This function
resets an internal indicator (to "OFF") that would otherwise cause the (physical) storage required for the constraint matrix to be reduced after a significant reduction in the number of data items of the model had been made. This is a companion function to ekk_setCompressOn.

ekk_setCompressOn

Function prototype:
void ekk_setCompressOn( EKKModel * model );

Where:
model
is a pointer to the current model,

This function
sets an internal indicator (to "ON") that causes the (physical) storage required for the constraint matrix to be reduced after a significant reduction in the number of data items of the model had been made. Such a reduction might result from presolving the problem, or from having eliminated columns or constraints.

ekk_setCrange

Function prototype:
int ekk_setCrange( EKKModel * model , const * char value);

Where:
model
is a pointer to the current model,
value
is the new value for ranges in an MPS input or output file.

This function
sets the current name of the ranges.

ekk_setCrhs

Function prototype:
int ekk_setCrhs( EKKModel * model , const * char value);

Where:
model
is a pointer to the current model,
value
is the new value for right hand sides in an MPS input or output file.

This function
sets the current model rhs name.

ekk_setDebug

Function prototype:
void ekk_setDebug( EKKModel * model , int ifParameters , int reserved );

Where:
model
is a pointer to the current model,
ifParameters
is an integer valued indicator for whether to output values of parameters, from the calling sequence of called function in output messages: ifParameters equal to -1 means do not output parameter values,
ifParameters equal to 0 means output single parameter values, but not values from arrays,
ifParameters greater than 0 means output single parameter values and up to ifParameters values from arrays.
This parameter is provided as a debugging aid.

This function
enables output of values supplied to OSL functions.

ekk_setIdensecol

Function prototype:
int ekk_setIdensecol( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
resets the value of the corresponding integer control variable which may be retrieved by ekk_getIdensecol. Any matrix column with more nonzeros than Idensecol is treated as dense and is kept out of the direct Cholesky solve. The default value of Idensecol is 99,999. This function should only be used in conjunction with ekk_regularized. If an error occurred, ekk_setIdensecol returns a nonzero value, otherwise it returns zero.

ekk_setIdevexmode

Function prototype:
int ekk_setIdevexmode( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIdevexmode.
Idevexmode Range: -3, 3 Default: 1
Description: The type of Devex pricing to be used. Idevexmode is used by the Devex pricing algorithm in ekk_primalSimplex or ekk_dualSimplex. The possible values and their meanings are as follows.

If Idevexmode = 1, the approximate Devex method is used for primal, while for dual the result is as for Idevexmode = 2.
If Idevexmode = 2, the exact Devex method is used for the primal case, and the steepest edge method using inaccurate initial norms is used for the dual.
If Idevexmode = 3, the exact steepest edge method is used. This involves computing column norms initially. If the basis is full, this can involve significant overhead.

For most problems, the default setting (Idevexmode = 1) gives the best results.

ekk_setIfastinteger

Function prototype:
int ekk_setIfastinteger( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIfastinteger.
Ifastinteger Range: 0, 1 Default: 0
Description: See "Control Variable Bit Masks" for information on bit masks.

1 Ifastinteger skips initial basis validity check the rows.
2 Ifastinteger skips non-basic cleaning check
4 Ifastinteger skips back substitution error checking
8 Ifastinteger skips final factorization if less than 20 iterations done in branch

ekk_setIfastits

Function prototype:
int ekk_setIfastits( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIfastits.
Ifastits Range: 0, maxint Default: 0
Description: The fast iteration switch. The default primal simplex strategies are for a majority of problems, and are intended to minimize the number of iterations. However, there are some problems where techniques such as Devex pricing are not needed, or are not cost effective, such as problems with a matrix that has many more columns than rows. In these problems, the decrease in the number of iterations is outweighed by the increase in time per iteration. The value of Ifastits modifies this pricing change so that ekk_primalSimplex will not switch to Devex pricing before Ifastits iterations.

ekk_setIheurpass

Function prototype:
int ekk_setIheurpass( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIheurpass.
Iheurpass Range: 0, maxint Default: 1
Description: The number of heuristic passes to be made by the MIP presolver. This does not affect supernode processing.

ekk_setIintmask

Function prototype:
int ekk_setIintmask( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIintmask.
Iintmask Range: 0, 63 Default: 1
Description: The MIP solver log detail bit mask. See "Control Variable Bit Masks" for information on bit masks.

0 = Iintmask turns off the printing of the MIP solver log line.
1 Iintmask prints nonzero integer values at integer solutions.
2 Iintmask does not modify Iloglevel. If this bit is not set, then Iloglevel is set to 0; this is the default.
4 Iintmask is not used.
8 Iintmask is not used.
16 Iintmask prints changes in bounds.
32 Iintmask prints nonzero integer values at noninteger solutions.

ekk_setIiterbnum

Function prototype:
int ekk_setIiterbnum( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIiterbnum.
Iiterbnum Range: 0, maxint Default: 0
Description: The current number of iterations that the interior point LP solver has performed.

ekk_setIiternum

Function prototype:
int ekk_setIiternum( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIiternum.
Iiternum Range: 0, maxint Default: 0
Description: The current number of iterations that have been performed in a solver function.

ekk_setIiterufreq

Function prototype:
int ekk_setIiterufreq( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIiterufreq.
Iiterufreq Range: 0, maxint Default: 9,999,999
Description: The frequency with which ekk_itru is called. ekk_itru is called after every Iiterufreq iterations of a solver function. All the solvers incur some overhead from calling ekk_itru. For the network solver, this overhead might be noticeable.

ekk_setIlinelen

Function prototype:
int ekk_setIlinelen( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIlinelen.
Ilinelen Range: 60, 150 Default: 132
Description: The length of the output line.

ekk_setIlogfreq

Function prototype:
int ekk_setIlogfreq( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIlogfreq.
Ilogfreq Range: 1, maxint Default: 999,999
Description: The log frequency. Ilogfreq=n prints log information every n iterations. However, log messages are always printed after problem matrix refactorizations, feasibility weight changes, and switches from random to Devex pricing, unless messages have been turned off by an appropriate setting of Iloglevel.

ekk_setIloglevel

Function prototype:
int ekk_setIloglevel( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIloglevel.
Iloglevel Range: 0, 63 Default: 15
Description: The simplex log detail bit mask. Iloglevel controls how much information is printed for each log message. See "Control Variable Bit Masks" for information on bit masks.

0 = Iloglevel selects no information to be printed for the log message.
1 Iloglevel prints a log line every Ilogfreq iterations and at final solver status.
2 Iloglevel prints a log line at every refactorization and change in pricing method.
4 Iloglevel prints variables being rejected from entering the basis.
8 Iloglevel is not used.
16 Iloglevel prints feasibility weight changes and minor computational errors.
32 Iloglevel prints pivoting information.

ekk_setIlpdcflag

Function prototype:
int ekk_setIlpdcflag( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIlpdcflag.
Ilpdcflag Range: 0, maxint Default: 0
Description: The number of blocks into which ekk_decomposeCrash will attempt to decompose the constraint matrix if the master rows are marked. If the value of Ilpdcflag is greater then zero, then ekk_decomposeCrash will attempt to decompose the constraint matrix into this number of blocks, and no more. I.e., if it is possible to decompose the constraint matrix into more than this number of blocks, ekk_decomposeCrash will not do so. If the value of Ilpdcflag is equal to zero, then ekk_decomposeCrash will attempt to decompose the constraint matrix into a number of blocks, but this composition may not be into as many blocks as possible. If you want a decomposition of the constraint matrix into as many blocks as possible, then set the value of Ilpdcflag to a very large number.

ekk_setImajorits

Function prototype:
int ekk_setImajorits( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImajorits.
Imajorits Range: 0, 999 Default: 30
Description: The maximum number of decomposition iterations.

For ekk_decomposeCrash with type = 3, Imajorits is the number of Dantzig-Wolfe decomposition passes to be made.

For a quadratic programming application, Imajorits determines the amount of storage that is allocated for decomposition, as well as the number of major decomposition iterations. More than (Imajorits × Imajorits) doubleword of memory will be required for a quadratic application, so Imajorits should not be set too large.

ekk_setImaxcols

Function prototype:
int ekk_setImaxcols( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxcols.
Imaxcols Range: 0, maxint Default: 0
Description: The maximum number of columns allowed in the matrix. Setting this will resize the model.

ekk_setImaxfactor

Function prototype:
int ekk_setImaxfactor( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxfactor.
Imaxfactor Range: 0, 9999 Default: 100 + (Inumrows) / 100
Description: The maximum number of iterations before a refactorization (invert) of the basis must be performed. A lower value of Imaxfactor forces the simplex solver to refactorize at least every Imaxfactor iterations.

A decision is made on when to refactorize based on certain heuristics. To make a more accurate decision would involve either much more work, or using CPU timings. The latter possibility was rejected because runs would not be repeatable. For a small class of problems, it may be worth experimenting with Imaxfactor. The formula above is used after ekk_importModel, otherwise 100 is used.

ekk_setImaxfactorsize

Function prototype:
int ekk_setImaxfactorsize( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxfactorsize.
Imaxfactorsize Range: 0, maxint Default: 0
Description: Puts an upper bound on the space reserved for the factorization. If nonzero then the factorization can only have this many nonzeros. This can be useful if it is known that otherwise real memory will be exceeded and excessive paging will take place. Although the exact space used will vary, it is safe to assume that each unit of this variable corresponds to 24 bytes.

ekk_setImaxiter

Function prototype:
int ekk_setImaxiter( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxiter.
Imaxiter Range: 0, maxint Default: 9,999,999
Description: The maximum number of iterations that will be performed. The problem might be solved using fewer iterations, but no more than the value of Imaxiter will be done.

ekk_setImaxiterb

Function prototype:
int ekk_setImaxiterb( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxiterb.
Imaxiterb Range: 0, maxint Default: 100
Description: The maximum number of iterations of the interior-point barrier algorithm. For very large problems it may be worth increasing this to 150 or 200.

ekk_setImaxnodes

Function prototype:
int ekk_setImaxnodes( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxnodes.
Imaxnodes Range: 0, maxint Default: 9,999,999
Description: The maximum number of nodes to evaluate in branch and bound.

ekk_setImaxrows

Function prototype:
int ekk_setImaxrows( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxrows.
Imaxrows Range: 0, maxint Default: 0
Description: The maximum number of rows allowed in the matrix. Setting this will resize the model.

ekk_setImaxsols

Function prototype:
int ekk_setImaxsols( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImaxsols.
Imaxsols Range: 0, maxint Default: 9,999,999
Description: The maximum number of feasible integer solutions to find in Branch and Bound.

ekk_setImiplength

Function prototype:
int ekk_setImiplength( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImiplength.
Imiplength Range: 0, maxint Default: 0
Description: The amount of extra information that is saved and restored by the user exit ekk_nodu. This may be retrieved by the user exit ekk_nodu. An array of integer fullwords of length Imiplength is saved at each node. It is saved for use by the user exit ekk_nodu.

ekk_setImodelmask

Function prototype:
int ekk_setImodelmask( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImodelmask.
Imodelmask Range: 0, 8191 Default: 0
Description: The bit mask that determines which parts of the matrix are written or read by ekk_saveModel or ekk_restoreModel. See "Control Variable Bit Masks" for information on bit masks.

0 = Imodelmask selects all of the parts in the matrix.
1 Imodelmask selects the common block.
2 Imodelmask selects the row and column selection lists.
4 Imodelmask selects the names of the rows and columns.
8 Imodelmask selects the status of each variable.
16 Imodelmask selects the activity values of each variable.
32 Imodelmask selects the dual values and the reduced costs.
64 Imodelmask selects the lower bounds.
128 Imodelmask selects the upper bounds.
256 Imodelmask selects the input costs.
512 Imodelmask selects the matrix elements.
1024 Imodelmask selects the scales.
2048 Imodelmask selects the presolve information.
4096 Imodelmask selects integer information.

ekk_setImsgpos

Function prototype:
int ekk_setImsgpos( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getImsgpos. The value of Imsgpos determines the position of OSL message numbers on the output line. (This does not affect traceback output.) The possible values of Imsgpos are 0 and 1. The default value is 0. Imsgpos = 0 => message numbers are to appear at the left margin, Imsgpos = 1 => message numbers are to appear at the right margin. If an error occurred, ekk_setImsgpos returns a nonzero value, otherwise it returns zero.

ekk_setInumchar

Function prototype:
int ekk_setInumchar( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getInumchar.
Inumchar Range: 1, 31 Default: 8
Description: The number of characters in each row or columns name. This is also set by ekk_importModelFree.

ekk_setInumcols

Function prototype:
int ekk_setInumcols( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getInumcols.
Inumcols Range: 0, maxint Default: 0
Description: The number of structural variables in the model. Changing this will resize the model.

ekk_setInumdinf

Function prototype:
int ekk_setInumdinf( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getInumdinf.
Inumdinf Range: 0, Inumcols Default: n/a
Description: The current number of dual infeasibilities.

ekk_setInumpinf

Function prototype:
int ekk_setInumpinf( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getInumpinf.
Inumpinf Range: 0, Inumrows Default: n/a
Description: The current number of primal infeasibilities.

ekk_setInumrows

Function prototype:
int ekk_setInumrows( EKKModel * model , int value);

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getInumrows.
Inumrows Range: 0, maxint Default: 0 The number of rows in the model. Changing this will resize the model.

ekk_setInumsols

Function prototype:
int ekk_setInumsols( EKKModel * model , int value);

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getInumsols.
Inumsols Range: 0, Imaxsols Default: 0
Description: The number of integer solutions found so far.

ekk_setInumunsat

Function prototype:
int ekk_setInumunsat( EKKModel * model , int value);

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getInumunsat.
Inumunsat Range: 0, maxint Default: 0
Description: The number of integer variables at fractional values.

ekk_setIoneobj

Function prototype:
int ekk_setIoneobj( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIoneobj.
Ioneobj Range: 0, 1 Default: 1
Description: One objective function (type-N row) flag for MPS files. This specifies whether to keep or discard the type-N rows except for the chosen one. The type-N row that is the objective function change vector for LP parametrics is not discarded if Cchangeobj is set before calling ekk_importModel.

ekk_setIordunit

Function prototype:
int ekk_setIordunit( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIordunit.
Iordunit Range: -1, 99 Default: -1
Description: The row ordering read and write logical unit - the name of which will be "fort.nn".
If Iroword is negative, then Iordunit must be set to a valid logical unit number, otherwise an error will occur.

ekk_setIpagelines

Function prototype:
int ekk_setIpagelines( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIpagelines.
Ipagelines Range: 10, maxint Default: 55
Description: The number of lines on the output page.

ekk_setIpossbasis

Function prototype:
int ekk_setIpossbasis( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIpossbasis.
Ipossbasis Range: 0, maxint Default: 65
Description: The potential basis flag. Ipossbasis > 0 means that at the end of the barrier algorithm, the variables significantly away from their bounds are marked as potentially basic, as are slack variables on rows with small dual values.

ekk_setIpricetype

Function prototype:
int ekk_setIpricetype( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIpricetype.
Ipricetype Range: 0, 1 Default: 0
Description: The type of pricing for the network solver.
If Ipricetype = 0, a sample size for the pricing step is selected based on problem characteristics, and it is adjusted dynamically during the solution process.
If Ipricetype = 1, the sample size given by Rnetsamp is used, and it remains fixed during the solution process.

ekk_setIprintsens

Function prototype:
int ekk_setIprintsens( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIprintsens.
Iprintsens Range: 0, 1023 Default: 0
Description: The sensitivity information printing bit mask. See "Control Variable Bit Masks" for information on bit masks. Iprintsens controls what information is created by ekk_senseObjective or ekk_senseBound and is printed by ekk_printSolution. No information relating to sensitivity analysis is printed by default.

For ekk_printSolution output of ekk_senseObjective results:
1 Iprintsens the range of the objective function coefficient up and down is printed.
2 Iprintsens the objective function values at the range points are printed.
4 Iprintsens the row or column that enters the basis is printed.
8 Iprintsens the row or column that leaves the basis is printed.

For ekk_printSolution output of ekk_senseBound results:
16 Iprintsens the range of the objective function coefficient up and down is printed.
32 Iprintsens the objective function values at the range points are printed.
64 Iprintsens the row or column that enters the basis is printed.
128 Iprintsens the row or column that leaves the basis is printed.
256 Iprintsens the sensitivity to row bounds is printed.
512 Iprintsens the sensitivity to column bounds is printed.

ekk_setIprobstat

Function prototype:
int ekk_setIprobstat( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIprobstat.
Iprobstat Range: -1, 6 Default: -1
Description: The problem status. Iprobstat is set as follows:

If Iprobstat = -1, Iprobstat has not been set by the solver function.
If Iprobstat = 0, the solver function completed successfully.
If Iprobstat = 1, the problem is continuous infeasible.
If Iprobstat = 2, the problem is continuous unbounded.
If Iprobstat = 3, the solver function has stopped on the maximum number of iterations.
If Iprobstat = 4, the solver function has stopped because no solution has been found.
If Iprobstat = 5, the solver function has stopped on the maximum number of solutions.
If Iprobstat = 6, the solver function has stopped because of lack of storage or file space.

ekk_setIprtinfomask

Function prototype:
int ekk_setIprtinfomask( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIprtinfomask.
Iprtinfomask Range: 0, 1023 Default: 31
Description: The solution information bit mask for ekk_printSolution. See "Control Variable Bit Masks" for information on bit masks.

0 = Iprtinfomask selects all of the parts for printing by ekk_printSolution. This is equivalent to setting Iprtinfomask to 63.
1 Iprtinfomask selects the statistics.
2 Iprtinfomask selects the iteration count, the value of the objective function, and the problem status.
4 Iprtinfomask selects the names of the columns and rows.
8 Iprtinfomask selects the status of each variable.
16 Iprtinfomask selects the activity values.
32 Iprtinfomask selects the dual values and reduced costs.
64 Iprtinfomask selects the lower bounds.
128 Iprtinfomask selects the upper bounds.
256 Iprtinfomask selects the input costs.
512 Iprtinfomask selects the matrix elements.

ekk_setIqparmaxiter

Function prototype:
int ekk_setIqparmaxiter( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIqparmaxiter.
Iqparmaxiter Range: 0, maxint Default: 9,999,999
Description: The maximum number of parametric adjustments that will be performed by ekk_quadraticParametrics.

ekk_setIroword

Function prototype:
int ekk_setIroword( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIroword.
Iroword Range: -1, 4 Default: 3
Description: The row ordering method indicator is described above.

ekk_setIsolmask

Function prototype:
int ekk_setIsolmask( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIsolmask.
Isolmask Range: 0, 16 Default: 0
Description: The print matrix bit mask for ekk_printSolution. See "Control Variable Bit Masks" for information on bit masks.

0 = Isolmask selects all of the parts for printing by ekk_printSolution. This is equivalent to setting Isolmask to 15 or 16.
1 Isolmask selects the rows.
2 Isolmask selects the columns.
4 Isolmask selects the nonzero elements of the model.
8 Isolmask selects the infeasible elements of the model.
16 Isolmask selects the entire matrix.

ekk_setIstopmask

Function prototype:
int ekk_setIstopmask( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIstopmask.
Istopmask Range: 0, 3 Default: 0
Description: The stopping condition bit mask. Istopmask controls when the solver function will stop. See "Control Variable Bit Masks" for information on bit masks.

0 = Istopmask indicates that the simplex solver will exit normally.
1 Istopmask indicates that the solver will exit when the pricing mode changes. This occurs after a values pass when the solver was called with init set to 3. It also occurs when fast iterations are switched off.
2 Istopmask indicates that the solver will exit when the problem becomes feasible.

ekk_setIstrategy

Function prototype:
int ekk_setIstrategy( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIstrategy.
Istrategy Range: 0, 63 Default: 1
Description: The bit mask that selects various steps of the MIP algorithm. Istrategy affects MIP preprocessing and supernode processing in the MIP solver. See "Control Variable Bit Masks" for information on bit masks.

0 = Istrategy specifies probing on all variables.

1 Istrategy means perform probing only on satisfied 0-1 variables. This is the default setting. When a 0-1 variable is satisfied (i.e. currently at 0 or 1), probing will be done to determine what other variables can be fixed as a result. If this variable is not one, then probing will done on all 0-1 integer variables. If they still have fractional values, the MIP solver will try setting them first to one and then to zero, and use probing to build an implication list for each direction.

2 Istrategy means use solution strategies that assume a valid integer solution has been found. the MIP solver uses different strategies when looking for the first integer solution than when looking for a better one. If you already have a solution from a previous run, and have set a cutoff value (Rbbcutoff), then this option will cause the solver to operate as though it already has an integer solution. This is beneficial for restarting and should reduce the time needed to reach an optimal integer solution.

4 Istrategy means take the branch opposite the maximum pseudo-cost. Normally, the solver will branch on the node whose smaller pseudo-cost is highest. This has the effect of choosing a node where both branches cause significant degradation in the objective function, probably allowing the tree to be pruned earlier. With this option, the solver will branch on the node whose larger pseudo-cost is highest; the branch taken will be in the opposite direction of this cost. This has the effect of forcing the variables with most nearly integer values to integers earlier. This may be useful when any integer solution, even a suboptimal one, is desired. Here the tree could possibly grow much larger, but if any integer solution is adequate and the search is successful, then most of the tree will never have to be explored.

8 Istrategy means compute new pseudo-costs as variables are branched on. Pseudo-costs, whether assigned by the user or by the solver, are normally left unchanged during the solution process. Choosing this option will cause new estimates to be made, using heuristics, as each branch is selected.

16 Istrategy means compute pseudo-costs for unsatisfied variables. Pseudo-costs, whether assigned by the user or by the solver, are normally left unchanged during the solution process. Setting this option will cause new estimates to be made, using heuristics, for any unsatisfied variables' pseudo-costs in both directions. This is done only the first time the variable is found to be unsatisfied. In some cases, variables will be fixed to a bound by this process, leading to better performance in the solver. This work is equivalent to making two branches for every variable investigated. Note that this tactic can be very time-consuming, if it does not prove effective, and this should be weighed against the time likely to be spent in the solver.

32 Istrategy means compute pseudo-costs for satisfied variables as well as for unsatisfied variables. If the 16 bit is also one, the solver will compute new estimated pseudo-costs for the satisfied variables, as well as the unsatisfied ones. Again, this is computationally expensive, but it can improve performance on some problems.

ekk_setIsupertol

Function prototype:
int ekk_setIsupertol( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIsupertol.
Isupertol Range: 0, maxint Default: Number of 0-1 variables
Description: The number of branches allowed inside a supernode before supernode processing ends. Supernode processing ends if all of the following are true:

The number of integer variables fixed is less than Ithreshold.
The improvement to the objective function is less than Rthreshold.
The number of branches taken inside a supernode is greater than Isupertol.

ekk_setIthreshold

Function prototype:
int ekk_setIthreshold( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIthreshold.
Ithreshold Range: 0, maxint Default: 1
Description: Number of integer variables that must be fixed for supernode processing to continue. In the MIP presolver, the current phase ends and one or more variables are fixed before the next phase begins. In the MIP solver, a branch is performed if both of the following are true:

The number of integer variables fixed is less than Ithreshold.
The improvement to the objective function is less than Rthreshold.

ekk_setIuseRowCopy

Function prototype:
int ekk_setIuseRowCopy( EKKModel * model , int value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding integer control variable which may be retrieved by ekk_getIuseRowCopy.
IuseRowCopy Range: 0, 1 Default: 0
Description: For large sparse problems it may be much faster for the simplex algorithms to have a copy of matrix stored by rows. If the value of IuseRowCopy is 1, then a row copy of the constraint matrix will be created by ekk_primalSimplex or ekk_dualSimplex. If an error occurred, ekk_setIuseRowCopy returns a nonzero value, otherwise it returns zero.

ekk_setLogfileFilePointer

Function prototype:
int ekk_setLogfileFilePointer( EKKModel * model , FILE * logfp );

Where:
model
is a pointer to the current model,
logfp
is the new value for the log file pointer.

This function
sets the FILE pointer logfp to point to the current log file, i.e., the file into which Optimization Library messages will be written. This pointer can be retrieved using ekk_getLogfileFilePointer. If an error occurred, ekk_setLogfileFilePointer returns a nonzero value, otherwise it returns zero.

ekk_setLogfileName

Function prototype:
int ekk_setLogfileName( EKKModel * model , const char * value );

Where:
model
is a pointer to the current model.
value
is the new value for the log file name.

This function
assigns value to the name of the current log file, i.e., the file into which Optimization Library messages will be logged. This is retrieved using ekk_getLogfileFileName. The default is stdout. If an error occurred, ekk_setLogfileName returns a nonzero value, otherwise it returns zero.

ekk_setMaximize

Function prototype:
int ekk_setMaximize( EKKModel * model );

Where:
model
is a pointer to the current model.

This function:
sets the value of Rmaxmin to -1.0 for the current model, which causes the objective function for LP, network, and linear MIP problems to be maximized. If an error occurred, ekk_setMaximize returns a nonzero value, otherwise it returns zero.

ekk_setMinimize

Function prototype:
int ekk_setMinimize( EKKModel * model );

Where:
model
is a pointer to the current model.

This function:
sets the value of Rmaxmin to +1.0 for the current model, which causes the objective function for LP, network, and linear MIP problems problem to be minimized. If an error occurred, ekk_setMinimize returns a nonzero value, otherwise it returns zero.

ekk_setObjective

Function prototype:
int ekk_setObjective( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the objective function coefficients are to be set.

This function
sets the values of the objective function coefficients in the model identified by model to the values in the array pointed to by fromArray. ekk_setObjective does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setObjective returns a nonzero value, otherwise it returns zero.

ekk_setPriority

Function prototype:
int ekk_setPriority( EKKModel * model , int iSet , int priority );

Where:
model
is a pointer to the current model,
iSet
is an integer that identifies a set of integer variables,
priority
is the branching priority for this set of integer variables.

This function
sets the branching priority to the indicated value for the indicated set of integer variables in the current model. A low value for priority correspond to a high branching priority. The highest branching priority is achieved by setting priority to "1." The lowest branching priority is achieved by setting priority to "32763". If an error occurred, ekk_setPriority returns a nonzero value, otherwise it returns zero.

ekk_setRbbcutoff

Function prototype:
int ekk_setRbbcutoff( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRbbcutoff.
Rbbcutoff Range: -10 20,maxreal Default: 10 31
Description: The cutoff for the branch and bound. All branches where the objective is at or above Rbbcutoff will be pruned. The value of Rbbcutoff is initialized to plus infinity. This allows all solutions. Whenever a valid integer solution is found, the cutoff is changed to the objective minus Rimprove.

ekk_setRbestest

Function prototype:
int ekk_setRbestest( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRbestest.
Rbestest Range: -maxreal, maxreal Default: 0.0
Description: The best estimated solution.

ekk_setRbestposs

Function prototype:
int ekk_setRbestposs( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRbestposs.
Rbestposs Range: -maxreal, maxreal Default: The continuous solution
Description: The best possible solution.

ekk_setRbestsol

Function prototype:
int ekk_setRbestsol( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRbestsol.
Rbestsol Range: -maxreal, maxreal Default: 10 31
Description: The best feasible integer solution found so far.

ekk_setRchangeweight

Function prototype:
int ekk_setRchangeweight( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRchangeweight.
Rchangeweight Range: 10 -12
Purpose: used by the simplex solver
Description: The rate of change for Rpweight or Rdweight. It is a nonlinear factor based on case-dependent heuristics. The default of 0.5 gives a reasonable change if progress towards feasibility is slow. A value of 1.0 would give a greater change, while 0.1 would give a smaller change, and 0.01 would give a very slow change.

ekk_setRdegscale

Function prototype:
int ekk_setRdegscale( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRdegscale.
Rdegscale Range: 0.0, maxreal Default: 1.0
Description: The scale factor for all degradation. The pseudocosts and Riweight are used to estimate how much worse the objective will become when continuing from a node (the estimated degradation). This estimate is computed when the node is generated. The estimate of the objective at a solution used in choosing the node is the objective at the node + the value of Rdegscale multiplied by the estimated degradation. This is computed when the node choice is made.

A small value for Rdegscale causes nodes with a good objective, but possibly far away from a valid solution to be chosen. A large value biases the choice towards nodes that are closer to a valid solution.

Setting Rdegscale to zero has special significance. After computation of the estimated degradation, a value for Rdegscale is computed such that the estimated objective at a solution used in choosing the node (the objective at the node + the value of Rdegscale multiplied by the estimated degradation) is exactly the value of Rtarget. This is a quick way of getting reasonable estimates.

One way of using Rdegscale is to set a reasonable value for Rtarget, and then allow the MIP solver to compute Rdegscale to give a plausible search. When a solution is found, Rdegscale could be set to a small value to search using just the objective.

ekk_setRdensethr

Function prototype:
int ekk_setRdensethr( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRdensethr.
Rdensethr Range: -maxreal, maxreal Default: 0.7
Description: The density threshold for Cholesky processing. When the symbolic factorization encounters a column of L that has Rdensethr proportion of nonzeros and the remaining part of L is at least 12 × 12, the remainder of L is treated as dense. In practice, the lower right part of the Cholesky triangular factor L is quite dense and it can be computationally more efficient to treat it as 100% dense.

Rdensethr 0.0 causes all dense processing.
Rdensethr 1.0 causes all sparse processing.

ekk_setRdualPerturbation

Function prototype:
int ekk_setRdualPerturbation( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRdualPerturbation.
RdualPerturbation Range: -10 10, 10 10 Default: 0.0
Description: Normally when perturbation is applied in the primal or dual simplex method the amount is determined by OSL. This allows the user to influence this amount. If the value is negative then perturbation is applied immediately.

ekk_setRdweight

Function prototype:
int ekk_setRdweight( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRdweight.
Rdweight Range: 0.0, 1.0 Default: 0.1
Description: The proportion of the feasible objective that is used when the current solution is dual infeasible in the dual simplex method.

ekk_setRimprove

Function prototype:
int ekk_setRimprove( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRimprove.
Rimprove Range: -maxreal, maxreal Default: 10 -5
Description: The amount by which a new solution must be better.

When a valid solution is obtained, Rbbcutoff is set to the objective minus Rimprove. Because the default value is small this only stops alternative solutions with the same value.

If Rimprove is set to a large negative value all solutions of any value will be allowed.

Rimprove can be set to a large positive value if you are not interested in solutions with values close together.

Rimprove can be set to 0.9999 if the only variables with costs are integer variables, and the costs have integer values. This can be useful in pruning the tree earlier than would otherwise be the case.

ekk_setRiweight

Function prototype:
int ekk_setRiweight( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRiweight.
Riweight Range: 0.0, maxreal Default: 1.0
Description: The weight for each integer infeasibility. For some types of integer problems, the values of fractional variables are of use. For example, if one variable is greater than another it is more likely to be in the optimal solution. But for many pure 0-1 problems, only the number of variables at fractional values are important. By changing Riweight the balance between the contribution of the pseudocosts and the contribution of the number of fractional variables can be changed.

ekk_setRmaxmin

Function prototype:
int ekk_setRmaxmin( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRmaxmin. See also ekk_setMaximize and ekk_setMinimize.
Rmaxmin Range: -1.0, 1.0 Default: 1.0
Description: The weight of the linear objective.

Rmaxmin=1.0 minimizes the objective function.
Rmaxmin=-1.0 maximizes the objective function.
Rmaxmin=0.0 causes the objective function to be ignored, and optimality to be declared as soon as a feasible solution is found.

ekk_setRmulinfac

Function prototype:
int ekk_setRmulinfac( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRmulinfac.
Rmulinfac Range: 0.0, 1.0 >Default:0.0
Description: The multiple of &mu. to add to the linear objective. Adding a small multiple of &mu. to each coefficient of the true objective can help prevent models from becoming unbounded if they have constraint sets that are not closed. Normally, this multiple is 0.

ekk_setRnetsamp

Function prototype:
int ekk_setRnetsamp( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRnetsamp.
Rnetsamp Range: 0.0, 1.0 Default:0.05
Description: The sample size for the network pricing algorithm. Rnetsamp gives the percent of arcs for which reduced costs are computed during the pricing step. This is used if Ipricetype is set to 1.

ekk_setRobjectiveOffset

Function prototype:
int ekk_setRobjectiveOffset( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRobjectiveOffset.
RobjectiveOffset Range: -maxreal, maxreal Default: 0.0
Description: This is a constant to be subtracted from objective value whenever it is printed. ekk_preSolve may compute this (or an MPS file may have a value in the rhs of the objective row). Also the user may modify the problem in such a way that the objective function needs this offset (e.g. adding a multiple of an equality constraint to objective does not change problem but does change objective).

ekk_setRobjvalue

Function prototype:
int ekk_setRobjvalue( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRobjvalue.
Robjvalue Range: -maxreal, maxreal Default: n/a
Description: The value of the objective function.

ekk_setRowacts

Function prototype:
int ekk_setRowacts( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the Row activities are to be set.

This function
sets the values of the row activities in the model identified by model to the values in the array pointed to by fromArray. ekk_setRowacts does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setRowacts returns a nonzero value, otherwise it returns zero.

ekk_setRowduals

Function prototype:
int ekk_setRowduals( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the row dual values are to be set.

This function
sets the values of the row dual activities in the model identified by model to the values in the array pointed to by fromArray. ekk_setRowduals does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setRowduals returns a nonzero value, otherwise it returns zero.

ekk_setRowlower

Function prototype:
int ekk_setRowlower( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the Row lower bounds are to be set.

This function
sets the values of the row lower bounds in the model identified by model to the values in the array pointed to by fromArray. ekk_setRowlower does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setRowlower returns a nonzero value, otherwise it returns zero.

ekk_setRowupper

Function prototype:
int ekk_setRowupper( EKKModel * model , const double * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the Row upper bounds are to be set.

This function
sets the values of the row upper bounds in the model identified by model to the values in the array pointed to by fromArray. ekk_setRowupper does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setRowupper returns a nonzero value, otherwise it returns zero.

ekk_setRowstat

Function prototype:
int ekk_setRowstat( EKKModel * model , const int * fromArray );

Where:
model
is a pointer to the current model,
fromArray
is a pointer to an array that contains the values to which the row status elements are to be set.

This function
sets the values of the row status elements in the model identified by model to the values in the array pointed to by fromArray. ekk_setRowstatus does not clear, or deallocate, this array. The array can be (and ultimately should be) deallocated with ekk_free. If an error occurred, ekk_setRowstat returns a nonzero value, otherwise it returns zero.

ekk_setRowsNonBasicAtLower

Function prototype:
int ekk_setRowsNonBasicAtLower( EKKModel * model , int numberToMark , const int * which);

Where:
model
is a pointer to the current model,
numberToMark
is the number of rows to be marked,
which
is a pointer to a list of the C indices of the rows to be marked as being at their lower bound.

This function
sets the status of selected rows to their lower bound. If an error occurred, ekk_setRowsNonBasicAtLower returns a nonzero value, otherwise it returns zero.

ekk_setRowsNonBasicAtUpper

Function prototype:
int ekk_setRowsNonBasicAtUpper( EKKModel * model , int numberToMark , const int * which);

Where:
model
is a pointer to the current model,
numberToMark
is the number of rows to be marked as being at upper bound,
which
is a pointer to a list of the C indices of the rows to be marked.

This function
sets the status of selected rows to their upper bound. If an error occurred, ekk_setRowsNonBasicAtUpper returns a nonzero value, otherwise it returns zero.

ekk_setRowStatus

Function prototype:
int ekk_setRowStatus( EKKModel * model , int numberToMark , const int * which , const int * usrstatus );

Where:
model
is a pointer to the current model,
numberToMark
is the number of rows whose status vectors are to be updated,
which
is a pointer to an array of indices (of numberToMark elements) containing the C indices of the rows whose status vectors are to be updated,
usrstatus
is a pointer to an array of row status values to be used to update the indicated rows' status vectors,

This function
Sets new row status values for the indicated rows. If an error occurred, ekk_setRowStatus returns a nonzero value, otherwise it returns zero.

ekk_setRpdgaptol

Function prototype:
int ekk_setRpdgaptol( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRpdgaptol.
Rpdgaptol Range: 10 -12, 10 -1 Default: 10 -7
Description: The barrier method primal-dual gap tolerance. The relative gap between the primal and dual objectives that will be accepted for optimality when both the primal and dual problems are feasible.

ekk_setRpertdiag

Function prototype:
int ekk_setRpertdiag( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRpertdiag.
Rpertdiag Range: 0.0, 10 -6 Default: 10 -12
Description: The diagonal perturbation for Cholesky factorization. Rpertdiag is added to the diagonal matrix used in forming the normal matrix whose Cholesky factors are computed in the interior point solver. This helps avoid spurious indications of rank deficiency.

ekk_setRprimalPerturbation

Function prototype:
int ekk_setRprimalPerturbation( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRprimalPerturbation.
RprimalPerturbation Range: -10 10, 10 10 Default: 0.0
Description: Normally when perturbation is applied in the primal or dual simplex method the amount is determined by OSL. This allows the user to influence this amount. If the value is negative then perturbation is applied immediately.

ekk_setRprintcpu

Function prototype:
int ekk_setRprintcpu( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRprintcpu.
Rprintcpu Range: 0.0, maxreal Default: 0.1
Description: Switch to print CPU time used by Library functions. If Rprintcpu is set to a positive value x.xx, then any Optimization Library function that takes more than x.xx seconds will print a message indicating how much time the function took, and the total CPU time used thus far. The times are printed to two decimal places, and so a zero may be printed, if the value of Rprintcpu is small. Also, the computing time may not be correct, after the value of Rprintcpu has been changed by ekk_setRprintcpu In particular, if Rprintcpu has been set to 0.0, no messages about CPU time will be issued.

For some platforms elapsed time may be returned.

ekk_setRpweight

Function prototype:
int ekk_setRpweight( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRpweight.
Rpweight Range: 10 -12, 10 10 Default: 0.1
Description: The multiplier of the feasible objective that is used when the current solution is primal infeasible. It starts as 0.1, but is decreased continually. It is decreased by a large amount if the infeasibilities increase, and by small amounts if progress to feasibility is slow. You may want to set Rpweight to a smaller value when the problem begins as feasible, for example, after a values pass of the simplex solver where the parameter init is set to 3.

ekk_setRregularizedDelta

Function prototype:
int ekk_setRregularizedDelta( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRregularizedDelta.
RregularizedDelta Range: 10 -8, 10 8 Default: 10 -3
Description: This perturbation is applied on the dual side in ekk_regularized. If this is too small there may a fatal loss of rank. If too big then the answer may be slightly inaccurate. If you are going to do crossover then for a first try leave at default safe values (1.0e-3). To use less perturbation set smaller e.g. 1.0e-6.

ekk_setRregularizedGamma

Function prototype:
int ekk_setRregularizedGamma( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRregularizedGamma.
RregularizedGamma Range: 10 -8, 10 8 Default: 10 -3
Description: This perturbation is applied on the primal side in ekk_regularized. If this is too small there may a fatal loss of rank. If too big then the answer may be slightly inaccurate. If you are going to do crossover then for a first try leave at default safe values (1.0e-3). To use less perturbation set smaller e.g. 1.0e-6.

ekk_setRsumdinf

Function prototype:
int ekk_setRsumdinf( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRsumdinf.
Rsumdinf Range: -maxreal, maxreal Default: n/a
Description: The sum of the dual infeasibilities.

ekk_setRsumpinf

Function prototype:
int ekk_setRsumpinf( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRsumpinf.
Rsumpinf Range: -maxreal, maxreal Default: n/a
Description: The sum of the primal infeasibilities.

ekk_setRtarget

Function prototype:
int ekk_setRtarget( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRtarget.
Rtarget Range: -maxreal, maxreal Default: 5% worse than the continuous solution
Description: This is a target value of the objective for a valid solution. In choosing a node to evaluate, preference is given to those with objective function values better than Rtarget, even if their estimated value is worse than a node whose objective is worse than the Rtarget.

Rtarget is also used if Rdegscale is zero. If you do not set Rtarget, then it will be set to 5% worse than the continuous solution.

ekk_setRthreshold

Function prototype:
int ekk_setRthreshold( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRthreshold.
Rthreshold Range: 0.0, maxreal Default: 0.0
Description: The supernode processing threshold. If Rthreshold is 0.0, the default, then the MIP presolver sets it to the smaller of 10 -4 × objective function + 10 -12 and 10 -3 × distance from the continuous solution to the cutoff, and the solver sets Rthreshold to 10 times this value.

In the presolver, the current phase ends and one or more variables are fixed before the next phase begins. In the solver, a branch is performed if both of the following are true:

The number of integer variables fixed is less than Ithreshold.
The improvement to the objective function is less than Rthreshold.

ekk_setRtoldinf

Function prototype:
int ekk_setRtoldinf( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRtoldinf.
Rtoldinf Range: 10 -12, 10 -1 Default: 10 -7
Description: The allowed amount of dual infeasibility. This variable is the dual equivalent to the primal variable Rtolpinf.

ekk_setRtolint

Function prototype:
int ekk_setRtolint( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRtolint.
Rtolint Range: 10 -12, 10 -1 Default: 10 -6
Description: The integer tolerance. In some problems for which the accuracy of the data is questionable, it may not be worth forcing all variables exactly to integer values. It may be better to declare the solution valid when all fractional values are less than a moderate tolerance, and then get an integer solution by rounding.

ekk_setRtolmps

Function prototype:
int ekk_setRtolmps( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRtolmps.
Rtolmps Range: -maxreal, maxreal Default: 10 -12
Description: The zero tolerance for MPS and spreadsheet data.

If the absolute value of any of the following is less than Rtolmps, then that coefficient is not included in the matrix.

a coefficient in the COLUMNS section of an MPS file
a coefficient in a constraint cell in a spreadsheet work file
a coefficient in an objective cell in a spreadsheet work file

Setting Rtolmps to a negative value allows all the elements in an MPS file to remain in the matrix.
A value of zero allows all nonzero elements and coefficients in an MPS file or spreadsheet work file to remain in the matrix. A small positive value screens out elements and coefficients of small magnitude.
For elements in the RHS, RANGES, or BOUNDS sections of an MPS file, for objective row coefficients in an MPS file or an objective row cell of a spreadsheet work file, and for row and column bounds in a constraint cell in a spreadsheet work file, if the absolute value of an element is less than Rtolmps, it is set to zero.

ekk_setRtolpinf

Function prototype:
int ekk_setRtolpinf( EKKModel * model , double value );

Where:
model
is a pointer to the current model,
value
is the new value.

This function
sets the value of the corresponding real control variable which may be retrieved by ekk_getRtolpinf.
Rtolpinf Range: 10 -12, 10 -1 Default: 10 -8
Description: The allowed amount of primal infeasibility. For most problems, the default value of Rtolpinf is adequate, but it might be necessary to increase its value, if ekk_preSolve finds a small infeasibility, or if the solution is slightly infeasible. If possible, the problem definition should be corrected, but in some cases this is impractical because of the limitations of finite precision.
Increasing Rtolpinf too much may lead to instability, but a modest increase can give the algorithm added flexibility and decrease the iteration count.

ekk_setUserData

Function prototype:
int ekk_setUserData( EKKModel * model , void * const userData );

Where:
model
is a pointer to the current model,
userData
is a pointer to something to which the user may later want to refer.

This function
saves a generic pointer supplied by the user, which can later be retrieved by using ekk_userData. This could be used to provide a communication link to (or between) user exit functions, or in any other manner of the user's choosing. If an error occurred, ekk_setUserData returns a nonzero value, otherwise it returns zero.


[ Top of Page | Overview of the C API | Sample code ]