<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hi Stefan,</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thanks, that is useful info. It may be that I will have to implement some of what is normally done as "dual presolving" (whether in the dualfix propagator or within the setppc constraint handler) during solving to get the propagations that follow from local
removal of locks.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
James</div>
<div id="Signature" class="elementToProof">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
James Cussens</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Room MVB 3.26</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
School of Computer Science, University of Bristol</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Phone: +44 (0)117 455 8723</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<a href="https://jcussens.github.io/" id="OWA1df45bd0-d485-b064-89bc-2410796b6a1c" class="OWAAutoLink">https://jcussens.github.io/</a><br>
</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Stefan Vigerske <svigerske@gams.com><br>
<b>Sent:</b> 20 February 2025 08:53<br>
<b>To:</b> James Cussens <james.cussens@bristol.ac.uk>; scip@zib.de <scip@zib.de><br>
<b>Subject:</b> Re: [SCIP] local unlocking</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi,<br>
<br>
recreating a constraint seems a lot of effort indeed. I also don't think <br>
that anything uses information about which constraints use which <br>
variables during solve.<br>
But you can update variable locks via SCIPaddVarLocksType(). You just <br>
should also make sure to put the locks back when the locally fixed <br>
variables are unfixed when SCIP moves to a different part of the tree. <br>
The variable localboundchange events are useful for that.<br>
My guess is that it isn't too harmful if the locks are wrong during <br>
solve, though, since variable fixings based on information from locks <br>
happens only during presolve, and during solve the locks are mainly used <br>
to guide primal heuristics. But I may have forgotten about something.<br>
<br>
Stefan<br>
<br>
<br>
On 19/02/2025 15:57, James Cussens wrote:<br>
> Hi all,<br>
> <br>
> I have a constraint handler with the following property: when some variables in a constraint are locally fixed (to appropriate values) then some other variables can be (locally) removed from the constraint. Note that this is different from propagation (sometimes
these removable-from-the-constraint variables can have their domains reduced, sometimes not). I'm thinking about how to implement this. One option would be to remove the original constraint and then replace it with a local version of the constraint with the
removable-from-the-constraint variables no longer present. Is this the best approach? I'm worried that I'll end up spending a lot of time creating new local constraints. I guess I'm interested if there is a 'nice' way of locally removing locks on variables.<br>
> <br>
> James<br>
> <br>
> James Cussens<br>
> Room MVB 3.26<br>
> School of Computer Science, University of Bristol<br>
> Phone: +44 (0)117 455 8723<br>
> <a href="https://jcussens.github.io/">https://jcussens.github.io/</a><br>
> <br>
> <br>
> _______________________________________________<br>
> Scip mailing list<br>
> Scip@zib.de<br>
> <a href="https://listserv.zib.de/mailman/listinfo/scip">https://listserv.zib.de/mailman/listinfo/scip</a><br>
<br>
</div>
</span></font></div>
</body>
</html>