<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Dear Emily,<br>
      <br>
      I have an idea what might be the problem. Some presolvers remember
      which presolving steps they did already on which constraints in
      order to not do the same work again and again. Only after the
      constraint or the variables in there were changed, this step will
      be done again. I fear that setting a constraint to not being
      modifiable anymore is not counted as a change in the constraint
      (because originally, this was not supposed to be done during
      solving). Therefore, please disable presolving in the first phase
      (where the constraints are modifiable anyway) by setting
      "presolving/maxrounds" to 0. When doing the restart, reset this
      parameter to -1. I hope this should give the same behaviour in the
      second run as you expect.<br>
      <br>
      After that, please:<br>
      <br>
      1) disable lpinfo in the second run, such that the output is not
      spammed with LP solver output?<br>
      2) send us the complete log of run 2 (which should be much smaller
      without LP output). Currently, I can only use the statistics, but
      don't see any information about how much presolving was done in
      which phase, which you see roughly in the log.<br>
      3) best send the log files to Jakob and me directly to not spam
      the mailing list.<br>
      <br>
      Best,<br>
      Gerald<br>
      <br>
      On 02.09.2015 22:25, Aao Du wrote:<br>
    </div>
    <blockquote
cite="mid:CAEa_GvPmb2Y3vwyYnS5FfNQ0rqA3KeiznFyigULOFkXzcDVBNw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>Dear Gerald,<br>
            <br>
          </div>
          I attached the log files. The second method's log file is
          after setting the parameter "presolving/restartminred" to 0. 
          Unfortunately, it did not make a difference. I appreciate your
          time.<br>
        </div>
        <div><br>
          <br>
          <br>
        </div>
        <div>Regards,<br>
        </div>
        <div>Emily<br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Wed, Sep 2, 2015 at 5:20 AM, Gerald
          Gamrath <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:gamrath@zib.de" target="_blank">gamrath@zib.de</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000">
              <div>Dear Emiliy,<br>
                <br>
              </div>
              <span class="">
                <blockquote type="cite">I made the change to the
                  SCIPdeactivatepricer. Now based on the statistics,
                  restarting is performed and there are 2 runs. However,
                  compared to the method 1, it is still slower. What I
                  see in the first method,s logfile, there are several
                  round of presolving performed and several runs(which I
                  think it means aeveral restarts happen?). It looks to
                  me the second method does only the first round of
                  presolving that is performed in method 1. Is there a
                  reason to expect this? I could not figure if there is
                  any parameter that I need to adjust in oreder to have
                  several restarts?</blockquote>
              </span> Indeed, the effect of the first restart is
              measured (in terms of fixed variables) and more restarts
              are only allowed if at least 10% of the variables were
              removed. It may be that this is not the case for the
              restart you trigger and thus, no second restart will be
              performed. You can change the parameter
              "presolving/restartminred" to adjust this behaviour, e.g.,
              just set it to 0.0 to see if another restart is then
              performed.<br>
              <br>
              If there is still a significant difference afterwards,
              please send us the log files again. If you do so, please
              include also the SCIP output during solving.<span class=""><br>
                <br>
                <blockquote type="cite">
                  <div class="gmail_extra"><br>
                  </div>
                  <div class="gmail_extra">Also, i am changing the
                    modifiable flags and deactivating pricer in the
                    redcost method. Doing it in the exitsol method did
                    not perform restrating as it enters the exitsol
                    method only when the whole problem is solved. I am
                    not sure if this is what is supposed to happen.</div>
                </blockquote>
                <br>
              </span> Did you change the lines in solve.c? Without this,
              the restart will not be triggered. If a restart is
              triggered, the exitsol method should be called, so that
              you can disable the pricer and mark the constraints
              unmodifiable.<br>
              <br>
              <br>
              Best,<br>
              Gerald
              <div>
                <div class="h5"><br>
                  <br>
                  <blockquote type="cite">
                    <div class="gmail_extra"><br>
                    </div>
                    <div class="gmail_extra">Thanks in advance,</div>
                    <div class="gmail_extra"><br>
                    </div>
                    <div class="gmail_extra">Emily<br>
                      <div class="gmail_quote">On Tue, Sep 1, 2015 at
                        1:35 PM, Gerald Gamrath <span dir="ltr"><<a
                            moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:gamrath@zib.de">gamrath@zib.de</a></a>></span>
                        wrote:<br>
                        <blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
                          <div bgcolor="#FFFFFF" text="#000000">
                            <div>Hi Emily,<br>
                              <br>
                              it looks like in the second log file, no
                              restart is performed at all. As far as I
                              can see in your code snippet, you did not
                              deactivate the pricer using
                              SCIPdeactivatePricer(), but just
                              internally set a flag such that it always
                              just returns.<br>
                              <br>
                              However, with an active pricer, restarts
                              are not allowed, so SCIP just does not do
                              a restart ("number of runs" is 1) and just
                              continues solving. This was changed
                              compared to the old mails you are
                              referencing. Therefore, you do not do
                              presolving again, and if you did not set
                              the result pointer to SCIP_SUCCESS before
                              returning in the pricer while it is
                              pseudo-deactivated, SCIP might even not be
                              able to use the node LP relaxation values
                              as lower bound (because your pricer
                              returns SCIP_DIDNOTRUN by default, meaning
                              that there might still be improving
                              columns and the dual bound must not be
                              used).<br>
                              <br>
                              The problem is that you are currently not
                              allowed to deactivate a pricer during
                              solving. You could try to change this by
                              changing line 5048 in src/scip/scip.c from<br>
                                 SCIP_CALL( checkStage(scip,
                              "SCIPdeactivatePricer", FALSE, TRUE,
                              FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
                              FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)
                              );<br>
                              to<br>
                                 SCIP_CALL( checkStage(scip,
                              "SCIPdeactivatePricer", FALSE, TRUE,
                              FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
                              FALSE, TRUE, FALSE, TRUE, FALSE, FALSE) );<br>
                              (set the fifth-last parameter to TRUE).
                              However, I'm not completely sure if
                              deactivating a pricer during solving may
                              corrupt internal data structures.<br>
                              <br>
                              If you run into any troubles after the
                              change, please try the following:<br>
                              In src/scip/solve.c lines 3605 and 3609,
                              change <br>
                              "set->nactivepricers == 0" to
                              "(set->nactivepricers == 0 ||
                              stat->userrestart)".<br>
                              <br>
                              This will allow a user restart even if
                              pricers are active. Then, you need to
                              follow the advice given in the old mail
                              and implement the exitsol callback to
                              change the modifiable flags and deactivate
                              your pricer.<br>
                              <br>
                              Best,<br>
                              Gerald
                              <div>
                                <div><br>
                                  <br>
                                  On 01.09.2015 17:50, Aao Du wrote:<br>
                                </div>
                              </div>
                            </div>
                            <blockquote type="cite">
                              <div>
                                <div>
                                  <div dir="ltr">
                                    <div>
                                      <div>Hi Jakob,<br>
                                      </div>
                                      <div><br>
                                      </div>
                                      I have attached the log files. For
                                      the instance solved by the first
                                      method, the log file is for the
                                      second part of the solving process
                                      where the final master problem is
                                      fed to SCIP. (So the time does not
                                      include the root node time)<br>
                                      For the instance solved by the
                                      second method, the solving time
                                      does include the root node time
                                      (which is around ~100 seconds).<br>
                                    </div>
                                    <div>Note that in larger instances.
                                      the difference become more
                                      significant. <br>
                                    </div>
                                    <div><br>
                                    </div>
                                    <div>Just to check whether the way I
                                      am doing is correct. In the
                                      scip_redcost method, I have the
                                      following code lines at the
                                      beginning: <br>
                                    </div>
                                    <div>if(SCIPgetDepth(scip) == 1)<br>
                                    </div>
                                    <div>    Change the modifiable flag
                                      of the constraints, and<br>
                                          SCIPrestartSolve(scip)<br>
                                    </div>
                                    <div>    isrestart = true;  
                                      (isrestart is a pricer variable
                                      which is initialized to false) <br>
                                    </div>
                                    <div>    return SCIP_OKAY<br>
                                    </div>
                                    <div>if (isrestart)<br>
                                    </div>
                                    <div>    return<br>
                                      <br>
                                      <br>
                                    </div>
                                    <div>In the previous emails, it was
                                      instructed to change the flag of
                                      constraints at the scip_exitsol
                                      method, but that method is not
                                      entered until the mixed integer
                                      master problem is solved
                                      optimally. So trying that did not
                                      work either. (<a
                                        moz-do-not-send="true"
                                        href="http://listserv.zib.de/pipermail/scip/2011-September/000754.html"
                                        target="_blank"><a class="moz-txt-link-freetext" href="http://listserv.zib.de/pipermail/scip/2011-September/000754.html">http://listserv.zib.de/pipermail/scip/2011-September/000754.html</a></a>)<br>
                                    </div>
                                    <div><br>
                                    </div>
                                    <div>Emily<br>
                                    </div>
                                    <br>
                                  </div>
                                  <div class="gmail_extra"><br>
                                    <div class="gmail_quote">On Tue, Sep
                                      1, 2015 at 3:41 AM, Jakob Witzig <span
                                        dir="ltr"><<a
                                          moz-do-not-send="true"
                                          href="mailto:witzig@zib.de"
                                          target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:witzig@zib.de">witzig@zib.de</a></a>></span>
                                      wrote:<br>
                                      <blockquote class="gmail_quote"
                                        style="margin:0 0 0
                                        .8ex;border-left:1px #ccc
                                        solid;padding-left:1ex">Hi
                                        Emily,<br>
                                        <br>
                                        probably the presolving in the
                                        second case is finished earlier
                                        because [i] presolving after a
                                        restarts is reduced (but I'm not
                                        sure) [ii] the presolver itself
                                        remember that they could not
                                        find anything (because your
                                        constraints were modifiable) and
                                        they do not run.<br>
                                        <br>
                                        If you want, you can send me
                                        your two log-files and I will
                                        have a look at it.<br>
                                        <br>
                                        Best,<br>
                                        Jakob<span><br>
                                          <br>
                                          On 08/31/15 15:57, Aao Du
                                          wrote:<br>
                                        </span>
                                        <blockquote class="gmail_quote"
                                          style="margin:0 0 0
                                          .8ex;border-left:1px #ccc
                                          solid;padding-left:1ex"><span>
                                            Hi Jacob,<br>
                                            <br>
                                            I believe I did not explain
                                            my question well. Here are
                                            the two methods I<br>
                                            have tried:<br>
                                            1) Solve the master problem
                                            at the root node. Change the
                                            variables type<br>
                                            and write it as an lp
                                            file.Then solve the MIP
                                            separately with SCIP.<br>
                                            2) Define the variables as
                                            integer from the beginning.
                                            After the root<br>
                                            node, restart the scip and
                                            change the modifiable flag
                                            of constraints.<br>
                                            <br>
                                            Now these two methods solve
                                            in two significantly
                                            different solution<br>
                                            time. From the log files, I
                                            figured the number of
                                            variables in the final<br>
                                            master problem is decreased
                                            in the first method after
                                            presolving by<br>
                                            SCIP. However, in the second
                                            method, after the scip is
                                            restarted(which I<br>
                                            think does the presolving
                                            too), the number of
                                            variables stay the same.<br>
                                            I would appreciate if you
                                            can help me figure out the
                                            reason<br>
                                            <br>
                                            Thanks,<br>
                                            Emily<br>
                                            <br>
                                            On Mon, Aug 31, 2015 at 4:19
                                            AM, Jakob Witzig <<a
                                              moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:witzig@zib.de">witzig@zib.de</a></a><br>
                                          </span>
                                          <div>
                                            <div> <mailto:<a
                                                moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:witzig@zib.de">witzig@zib.de</a></a>>>


                                              wrote:<br>
                                              <br>
                                                  Hi Jens,<br>
                                              <br>
                                                  what do you mean was
                                              'differ in the results'?
                                              Only solving time and<br>
                                                  nodes? The problem is,
                                              that the variable order
                                              can change if you<br>
                                                  write the problem is
                                              an lp file. You can try to
                                              write your problem<br>
                                                  as an mps or cip file.<br>
                                              <br>
                                                  If you want, you can
                                              send me the log-files
                                              including the statistics<br>
                                                  of the two solves (1:
                                              copy into a subscip, 2:
                                              write as an lp and<br>
                                                  solve separately) and
                                              I will have a look on it.<br>
                                              <br>
                                                  Best,<br>
                                                  Jakob<br>
                                              <br>
                                              <br>
                                                  On 08/31/15 08:33,
                                              Jens Leoff wrote:<br>
                                              <br>
                                                      Hi,<br>
                                              <br>
                                                      I also tried to
                                              write a heuristic to solve
                                              my Branch & Price<br>
                                                      problem as<br>
                                                      Price &
                                              Branch. I tried to copy
                                              the node problem to a
                                              subscip<br>
                                                      where I<br>
                                                      change the
                                              constraints to be
                                              non-modifiable. Apart from
                                              that the<br>
                                                      scips<br>
                                                      differ in what
                                              plugins are included (no
                                              pricer, but e.g.<br>
                                                      separators).<br>
                                                      However, I also
                                              wasn't able to produce the
                                              same results this way<br>
                                                      as one<br>
                                                      can obtain by
                                              writing the node problem
                                              as a MIP and solving this<br>
                                                      separately with
                                              scip.<br>
                                              <br>
                                                      I guess this kind
                                              of heuristic would be
                                              interesting for lots of<br>
                                                      Branch &<br>
                                                      Price
                                              applications.<br>
                                                      So, I would like
                                              to know how to do this
                                              properly as well.<br>
                                              <br>
                                                      Best,<br>
                                              <br>
                                                      Jens<br>
                                              <br>
                                              <br>
                                            </div>
                                          </div>
                                          <div>
                                            <div>         On <a
                                                moz-do-not-send="true"
                                                href="tel:31.08.2015%2008"
                                                value="+13108201508"
                                                target="_blank">31.08.2015

                                                08</a>
                                              <tel:31.08.2015%2008>:06,
                                              Jakob Witzig wrote:<br>
                                              <br>
                                                          Hi Emily,<br>
                                              <br>
                                                          you can use
                                              the method SCIPvarChgType
                                              to convert the<br>
                                                          variables into<br>
                                                          integers, but
                                              the method can only be
                                              called if the variables<br>
                                                          are not<br>
                                                          part of the
                                              problem, e.g., before you
                                              call<br>
                                                         
                                              SCIPtransformProb. Do you<br>
                                                          use sub-SCIPs
                                              to solve your subproblems?
                                              If yes, than you<br>
                                                          can call the<br>
                                                          method
                                              mentioned above before you
                                              start solving the
                                              subproblem.<br>
                                              <br>
                                                          I don't get
                                              the connection between
                                              your two ways. Why is<br>
                                                          changing the<br>
                                                          variables and
                                              changing the modifiability
                                              flag of the constraint<br>
                                                          equivalent?<br>
                                              <br>
                                                          If you restart
                                              your problem SCIP tries to
                                              transform cuts<br>
                                                          into globally<br>
                                                          valid
                                              constraints and will fix
                                              all variables that have
                                              equal<br>
                                                          global<br>
                                                          upper and
                                              lower bounds, i.e., the
                                              variables can removed from
                                              the<br>
                                                          problem.
                                              Hence, if you could not
                                              tighten the bounds of your<br>
                                                          variables<br>
                                                          enough or you
                                              didn't found global valid
                                              cuts a restart<br>
                                                          directly after<br>
                                                          the root will
                                              give you the same problem
                                              as before.<br>
                                              <br>
                                                          I think
                                              changing the flags of a
                                              constraint should be done<br>
                                                          before you<br>
                                                          start solving
                                              your subproblem.<br>
                                              <br>
                                                          Best,<br>
                                                          Jakob<br>
                                              <br>
                                              <br>
                                                          On 08/31/15
                                              04:38, Aao Du wrote:<br>
                                              <br>
                                                              Dear all,<br>
                                              <br>
                                                              I have a
                                              decomposed model, a master
                                              problem and<br>
                                                             
                                              subproblems. I am trying<br>
                                                              to perform
                                              pricing only at the root
                                              node, and then<br>
                                                              change the
                                              variables<br>
                                                              to integer
                                              and solve it again. I have
                                              tried two ways.<br>
                                                              One is to
                                              print<br>
                                                              the lp
                                              format of the problem
                                              after root node, with<br>
                                                              variables
                                              as integer,<br>
                                                              and give
                                              it to SCIP binaries. In
                                              this way, the second<br>
                                                              part of
                                              the<br>
                                                              solving
                                              process ( solving the
                                              final master problem with<br>
                                                              binaries)
                                              is<br>
                                                              performed
                                              fast.<br>
                                                              The other
                                              way, is to define the
                                              variables as integer<br>
                                                              from
                                              begining, and<br>
                                                              stop
                                              pricing at the root node,
                                              and change the constarints
                                              to<br>
                                                             
                                              unmodifiable. In this way,
                                              after the lp of master<br>
                                                              problem is
                                              solved, it<br>
                                                              takes way
                                              more than the first method
                                              to solve it.<br>
                                                              Following
                                              a previous<br>
                                                              email, I
                                              tried to restart the
                                              master problem after root<br>
                                                              node, but
                                              it did<br>
                                                              not make
                                              any change in the time. I
                                              thought maybe i am<br>
                                                              doing sth
                                              wrong.<br>
                                                              What is
                                              the proper place in the
                                              pricerobj to change the<br>
                                                              modifiable
                                              flag<br>
                                                              of
                                              constraints? I think it
                                              should be somewhere before<br>
                                                              redcost,
                                              or maybe<br>
                                                              in it.<br>
                                              <br>
                                                              Sorry for
                                              the long email.<br>
                                              <br>
                                                              Thanks,<br>
                                                              Emily<br>
                                              <br>
                                              <br>
                                                             
                                              _______________________________________________<br>
                                                              Scip
                                              mailing list<br>
                                            </div>
                                          </div>
                                                          <a
                                            moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:Scip@zib.de">Scip@zib.de</a></a>
                                          <mailto:<a
                                            moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:Scip@zib.de">Scip@zib.de</a></a>><span><br>
                                                            <a
                                              moz-do-not-send="true"
                                              href="http://listserv.zib.de/mailman/listinfo/scip"
                                              rel="noreferrer"
                                              target="_blank"><a class="moz-txt-link-freetext" href="http://listserv.zib.de/mailman/listinfo/scip">http://listserv.zib.de/mailman/listinfo/scip</a></a><br>
                                            <br>
                                            <br>
                                            <br>
                                            <br>
                                            <br>
                                            <br>
                                                --<br>
                                                Jakob Witzig<br>
                                            <br>
                                                Konrad-Zuse-Zentrum für<br>
                                                Informationstechnik
                                            Berlin (ZIB)<br>
                                            <br>
                                                Division Mathematical
                                            Optimization and Scientific
                                            Information<br>
                                                Research Group
                                            Mathematical Optimization
                                            Methods<br>
                                            <br>
                                                Takustrasse 7<br>
                                                14195 Berlin<br>
                                            <br>
                                          </span>     Tel. : <a
                                            moz-do-not-send="true"
                                            href="tel:%2B49%20%280%2930%2084185-416"
                                            value="+493084185416"
                                            target="_blank">+49 (0)30
                                            84185-416</a>
                                          <tel:%2B49%20%280%2930%2084185-416><br>
                                              Fax  : <a
                                            moz-do-not-send="true"
                                            href="tel:%2B49%20%280%2930%2084185-269"
                                            value="+493084185269"
                                            target="_blank">+49 (0)30
                                            84185-269</a>
                                          <tel:%2B49%20%280%2930%2084185-269><br>
                                              email: <a
                                            moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:witzig@zib.de">witzig@zib.de</a></a>
                                          <mailto:<a
                                            moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:witzig@zib.de">witzig@zib.de</a></a>><br>
                                             
                                          _______________________________________________<br>
                                              Scip mailing list<br>
                                              <a moz-do-not-send="true">Scip@zib.de</a>
                                          <mailto:<a
                                            moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:Scip@zib.de">Scip@zib.de</a></a>><br>
                                              <a moz-do-not-send="true"
href="http://listserv.zib.de/mailman/listinfo/scip" rel="noreferrer"
                                            target="_blank">http://listserv.zib.de/mailman/listinfo/scip</a><br>
                                          <br>
                                          <br>
                                        </blockquote>
                                        <div>
                                          <div> <br>
                                            <br>
                                            -- <br>
                                            Jakob Witzig<br>
                                            <br>
                                            Konrad-Zuse-Zentrum für<br>
                                            Informationstechnik Berlin
                                            (ZIB)<br>
                                            <br>
                                            Division Mathematical
                                            Optimization and Scientific
                                            Information<br>
                                            Research Group Mathematical
                                            Optimization Methods<br>
                                            <br>
                                            Takustrasse 7<br>
                                            14195 Berlin<br>
                                            <br>
                                            Tel. : <a
                                              moz-do-not-send="true"
                                              href="tel:%2B49%20%280%2930%2084185-416"
                                              value="+493084185416"
                                              target="_blank">+49 (0)30
                                              84185-416</a><br>
                                            Fax  : <a
                                              moz-do-not-send="true"
                                              href="tel:%2B49%20%280%2930%2084185-269"
                                              value="+493084185269"
                                              target="_blank">+49 (0)30
                                              84185-269</a><br>
                                            email: <a
                                              moz-do-not-send="true"><a class="moz-txt-link-abbreviated" href="mailto:witzig@zib.de">witzig@zib.de</a></a><br>
                                          </div>
                                        </div>
                                      </blockquote>
                                    </div>
                                    <br>
                                  </div>
                                  <br>
                                  <fieldset></fieldset>
                                  <br>
                                </div>
                              </div>
                              <pre><div><div>_______________________________________________
Scip mailing list
<a moz-do-not-send="true">Scip@zib.de</a>
</div></div><a moz-do-not-send="true" href="http://listserv.zib.de/mailman/listinfo/scip" target="_blank">http://listserv.zib.de/mailman/listinfo/scip</a></pre>
                            </blockquote>
                            <br>
                          </div>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>