12 #include "CglCutGenerator.hpp"
13 #include "CoinHelperFunctions.hpp"
27 if (cs.sizeColCuts ()) {
31 for (
int i = cs.sizeColCuts (); i--;) {
35 const CoinPackedVector &lbs = cs.colCutPtr (i) -> lbs ();
36 const int *lindices = lbs.getIndices ();
37 const double *lvalues = lbs.getElements ();
39 for (
int j = lbs.getNumElements ();
j--;) {
40 register double lb = *lvalues++;
41 register int ind = *lindices++;
44 printf (
"################################## new lb [%d] = %g cuts opt %g by %g\n",
45 ind, lb, opt [ind], lb - opt [ind]);
52 const CoinPackedVector &ubs = cs.colCutPtr (i) -> ubs ();
53 const int *uindices = ubs.getIndices ();
54 const double *uvalues = ubs.getElements ();
56 for (
int j = ubs.getNumElements ();
j--;) {
57 register double ub = *uvalues++;
58 register int ind = *uindices++;
61 printf (
"################################## new ub [%d] = %g cuts opt %g by %g\n",
62 ind, ub, opt [ind], opt [ind] - ub);
71 if (cs.sizeRowCuts ()) {
75 for (
int jj=0; jj < cs.sizeRowCuts (); jj++) {
77 OsiRowCut *cut = cs.rowCutPtr (jj);
78 CoinPackedVector row = cut -> row ();
80 int n = cut -> row (). getNumElements();
81 const double *el = row. getElements ();
82 const int *ind = row. getIndices ();
84 double lb = cut -> lb ();
85 double ub = cut -> ub ();
90 lhs += el [
n] * opt [ind [
n]];
96 printf (
"################################## new cut [%d] [%g,%g] cuts opt %g by %g:",
97 jj, lb, ub, lhs, CoinMax (lb - lhs, lhs - ub));
107 printf (
"== genrowcuts on LP =============");
109 for (
int i = 0; i < p -> nVars (); i++) {
112 if (p -> Var (i) -> Multiplicity () > 0)
113 printf (
"%3d %+10.3g [%+10.3g,%+10.3g] ", i,
119 printf (
"\n=============================\n");
Class for MINLP problems with symbolic information.
bool isOptimumCut(const CouNumber *opt, OsiCuts &cs, CouenneProblem *p)
double CouNumber
main number type in Couenne