[Dip] issues with print, dual values etc

Shahin Gelareh shahin.gelareh at gmail.com
Sun Mar 16 04:38:42 EDT 2014


Dear all

1) There is a function in DIP called print, which prints the variables. It
is implemented by starting as follows:

  double lb = getLowerBound();
   double ub = getUpperBound();
   (*os) << "\nVAR c: "   << m_origCost
         << " rc: "       << m_redCost
         << " eff: "      << m_effCnt
         << " block: "    << m_blockId
          << " colIndex: " << m_colMasterIndex;
.........
in the output always colIndex: always appears to be -1.  I have no idea
what is this and why always appears as -1.
VAR c: 231 rc: 0 eff: 0 block: 0 *colIndex: -1*

why m_colMasterIndex is always -1? Is that okay? something is missing?

2) When one initialized CG with initial columns, then one expects that dual
values in the first iteration become meaningful (i.e. the redCost become
meaningful).
But I always get  my redCost == OrgCost and the dual variable associated to
the convex combination is always infinity in the first call to the
solveRelaxed.

Moreover, it takes a lot of iterations until DIP show that it reports the
initial columns as upper bound solution for the problem. Up to that point,
the upper bound is always infinity.

3)  in DecompAlgo.cpp (6631)

   if ((!m_isColGenExact && nNewVars <= 0) || (m_param.SolveRelaxAsIp ==
2)) {
.......
      assert(subprobSI);
      double   rcBestCol    = DecompInf;

a) If in at least one block I do not generate any further column, then this
assert is hit and the program terminates.
But it seems logical to me that sometime one block does not generate any
column but the other blocks keep proposing other improving solutions.

b) How DIP knows whether I the column generated in solveRelaxed is an
optimal column or just an improving one?

Thank you
Shahin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/dip/attachments/20140316/6662712b/attachment.html>


More information about the Dip mailing list