<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Dear Behrouz,<br>
<br>
unfortunately, it is currently not possible to modify the
objective coefficients of variables during the search, because
this would mean that all previously computed dual bounds become
invalid.<br>
I assume you want to do this for implementing a dual variable
stabilization? We are currently evaluating possibilities to
implement this within SCIP such that you continue pricing even if
you did not find an improving variable as long as the
stabilization is active. But until now, this is not supported by
SCIP.<br>
<br>
However, you could try a dual variable smoothing technique, which
does not need auxiliary variables.<br>
<br>
The way you do it right now should also work, but has some
drawbacks. It probably consumes a lot of memory, because all the
old variables are kept. You could try to not only set the
variables removable (from the LP), but also deletable (from the
complete problem) by calling SCIPvarMarkDeletable(), see
<a class="moz-txt-link-freetext" href="http://scip.zib.de/doc/html/pub__var_8h.shtml#a3f47c9e7e057200e54e1b5858f5ca428">http://scip.zib.de/doc/html/pub__var_8h.shtml#a3f47c9e7e057200e54e1b5858f5ca428</a><br>
Furthermore, you could set lp/cleanupcols and lp/cleanupcolsroot
to TRUE, which - in addition to the colage limit - removes all
non-basic variables from the LP (and then also the problem), at
the end of the processing of one node. Please note that a variable
that is in the LP after this cleanup phase will be part of the
basis information and therefore cannot be removed from the LP
afterwards. Additionally, fixing the old auxiliary variables to 0
and introducing new ones destroys both primal as well as dual
feasibility of you basis information, so the simplex algorithm
cannot be warmstarted.<br>
<br>
Therefore, I would recommend to better try a dual variable
smoothing technique, which often gives very good results as well.<br>
<br>
Best,<br>
Gerald<br>
<br>
On 12.09.2013 17:11, Behrouz Babaki wrote:<br>
</div>
<blockquote
cite="mid:CAGUjNwmyjk6G0sp6AFQHdX+JVHbZjJ3s_4mnQFJUzeOUwDbo1g@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>Dear SCIP community,<br>
<br>
In my branch-and-price implementation in SCIP, I have a number
of continuous variables that I have to modify multiple times.
This should happen once every number of times that the pricing
function is called. So, these variables are meant to be
modified several times while the (progressively growing) LP is
being solved. <br>
<br>
The modification involves changing the objective function
values as well as variable bounds. I know that I can change
the bounds using SCIPchgVarLb(...) and SCIPchgVarUb(...).
However, I don't know how to change the objective function
value while in SCIP_STAGE_SOLVING, especially when the lp has
not been solved to optimality yet. <br>
<br>
So far, the only safe way that I have found for doing so is to
fix all these variables to zero, and create another set with
different objective function coefficients and different bounds
within the pricing function. Also, By setting these variables
as removable and reducing "lp/colagelimit" I hope that they
are removed from the LP soon enough after they are fixed to
zero. <br>
<br>
My question is that whether there is a better way for
modifying the objective function values without having to
remove and re-create the variables?<br>
<br>
</div>
Behrouz<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Scip mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Scip@zib.de">Scip@zib.de</a>
<a class="moz-txt-link-freetext" href="http://listserv.zib.de/mailman/listinfo/scip">http://listserv.zib.de/mailman/listinfo/scip</a>
</pre>
</blockquote>
<br>
</body>
</html>