mt_SL.c File Reference


Detailed Description

Definition in file mt_SL.c.

#include "mt_SL.h"
#include "mt_cplex_cbk.h"

Include dependency graph for mt_SL.c:

Go to the source code of this file.

Functions

int MTsl1 (const double *const ineq, MTrowmatrix_t *const tb, double *const work, const char *const vtype, const int mode)
 compute in work the value ineq * r_i as described by the given inequality and tableau, we assume that work is zero, moreover, given the variable status (interger/binary) and an operation mode, try to do nothing (mode 0), try to get ineq*r[i] >0 (mode 1) or try to get ineq*r[i] < 0 (mode 2), note that mode != 0 will modify the tableau
int MTsl2 (const double *const ineq, double *const cutval, double *const work, const int *const active, const int nactive)
 , set cutval[i] = max(cutval[i],work[i] > 0 ? work[i]/ineq[3]: 0); and reset work to zero
int MTsl3 (const double *const f, double *const ineq, const int dim)
 given an inequality and f compute ineq[dim+1] and (possible change signs) to ensure that ineq[dim+1] > 0;
int MTsl4 (double *const ineq, const double x0, const double _y0, const double x1, const double _y1)
 compute the line that pases through the two given points
int MTsl5 (int *const nactive, int *const active, const int nvars, const int nz, const double *const compval, const int *const compind)
 compute active set from the given compresed vector set
int MTsl_ccbk (CPXCENVptr env, void *cbdata, int wherefrom, void *cbhandle, int *useraction_p)
 Interface for the CPLEX-callback for the MTt1Cut function.
int MTslCut (MTgomory_ccbk_t *const data, CPXCENVptr env, CPXLPptr lp)
 The idea of these cuts is to use some ideas from the paper ``On the relative strengt of split, triangle and cuadrilateral cuts'' from Cornuejols et. al. The main point is that splits are bad (compared against triangles or quadrilaterals) whenever we have (an almost) integer part in $f_i$ for some coordiante $i$, and a wide base, this can be seen on the following figure: $ \hspace*{\textwidth} \vspace*{2in} x_1 = 1 \psset{arrows=->,fillstyle=solid,fillcolor=black,linecolor=black} \begin{pspicture}(0,0)(5,3) \multido{\i=0+1}{6}{{ \pscircle(\i,0){1mm} }} \multido{\i=0+1}{6}{{ \pscircle(\i,1){1mm} }} \multido{\i=0+1}{6}{{ \pscircle(\i,2){1mm} }} \multido{\i=0+1}{6}{{ \pscircle(\i,3){1mm} }} \rput(2.5,2){$f$} \psline(2.5,2)(0,.5)\nbput{$r_1$} \psline(2.5,2)(4,1)\nbput{$r_2$} \psline[arrows=|-|](1,1)(4,1)\nbput{M} \end{pspicture} $.


Generated on Mon Oct 26 09:16:45 2009 for MTgomory by  doxygen 1.4.6