<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>