<html>
  <head>
    <meta http-equiv="content-type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hello Dip/Dippy Community,<br>
    I am currently working on my master's thesis in mathematics. First
    of all, I want to express my appreciation for the efforts of the Dip
    team. I'm happy to be able to rely on such a comprehensive
    framework. To implement a Dantzig-Wolfe decomposition with custom
    initial solution and custom solver for the subproblems, I used the
    Dippy package in Python. During the process, I stumbled upon some
    lines of code in Dippy that I wonder about. The version that I run
    is 0.91.5 compiled with MSVC 2015 for Python 2.7.10 x64 on Windows.
    Even though I have not yet been able to use 0.92.1, the following
    comments refer to its source.<br>
    <ol>
      <li>DippyPythonUtils.cpp, line 274: The method  <tt>pyColDict_AsPackedArrays</tt>
        calls <tt>getVarType</tt> on a Python object of type <tt>pulp.LpVariable

        </tt>which I found to have no such method. This produces an
        error when I try to supply an initial solution. As the result of
        the call to <tt>getVarType</tt> is not used anyway, maybe the
        line can be deleted.</li>
      <li>DippySolve.cpp, line 31: The definition of <tt>DecompInf</tt>
        leads to a compiler error as it is also globally defined in
        DecompAlgo.cpp, line 43. It does not seem to be used in
        DippySolve.cpp, though.</li>
      <li>DippyDecompAlgo.cpp, line 47: The assertion in this line does
        not allow the fallback to the default implementation of <tt>DecompAlgo::chooseBranchSet</tt>
        to return <tt>false</tt>. This yields an error if the column
        generation is stopped due to lacking improvement and <tt>chooseBranchSet</tt>
        is called for an integer solution. In general, the usage of <tt>chooseBranchSet</tt>
        in <tt>AlpsDecompTreeNode::chooseBranchingObject</tt>
        (AlpsDecompTreeNode, line 379) suggests that the return value <tt>false

        </tt>would also be acceptable. However, I could not figure out
        what happens to a node if this is the case and the status is set
        to <tt>AlpsNodeStatusEvaluated</tt>. Does it proceed with
        column generation? Maybe, the failure of <tt>chooseBranchSet</tt>
        should be allowed in Dippy and be propagated to DIP.</li>
      <li>dippy.py, line 852 sqq.: As I understand the cost and reduced
        cost for a column is computed here if <tt>relaxed_solver</tt>
        returns a dictionary for the variable values without including
        those corresponding costs. The value of <tt>target</tt>,
        however, is not taken account of in this calculation. This would
        mean incorrect testing for negative reduced costs in my opinion.
        To what extent are the cost values returned by <tt>DipProblem.solveRelaxed

        </tt>used by DIP? I took from a thread of the mailing list in
        July that there are cases where DIP solves the subproblem as
        MILP. Is it possible to prevent DIP from doing so completely? Is
        returning an optimal solution with an appropriate status from <tt>relaxed_solver

        </tt>enough to do so? Is it valid to return a set of several
        solutions containing an optimal as well as many non-optimal
        solutions while specifing the status as optimal? The reason why
        I would like to know is that my subproblems are quite large when
        formulated as MILP. Therefore, at the moment I provide DIP with
        dummy MILPs for the subproblems which serve the only purpose of
        establishing the assignment of variables to their subproblem.
        They do not make any sense, though. That is why I would like to
        make sure that DIP relies on the custom <tt>solveRelaxed</tt>
        method only and does not use more information from the MILP
        formulation than the occurence of variables.</li>
    </ol>
    <p>Thanks in advance for your help,<br>
      Marcus<br>
    </p>
  </body>
</html>