<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Aptos;}
@font-face
{font-family:"Rotis Sans Serif Std";
panose-1:2 11 5 3 3 2 2 2 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;
mso-fareast-language:EN-US;}
span.E-MailFormatvorlage17
{mso-style-type:personal-compose;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:11.0pt;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1027" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link="#467886" vlink="#96607D" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>Hello SCIP-Enthusiasts, <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>I have a question about combining a heuristic pricer with a delayed exact pricer for the same family of variables. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>The intended setup is: <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>1. A heuristic pricer is called first. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>2. If it finds an improving column, the LP is re-solved. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>3. If it finds no column, a delayed exact pricer is called automatically. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>4. The exact pricer either adds a column or proves that no improving column exists. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>According to type_pricer.h, a heuristic pricer that finds no column but cannot prove that none exists return SCIP_DIDNOTRUN. Returning SCIP_SUCCESS would appear incorrect because the heuristic has neither added a variable nor completed pricing exactly. And I thought, that in older versions of SCIP, that was the case, but maybe a gaslight myself here.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>However, in solve.c, any SCIP_DIDNOTRUN result immediately sets: <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>```c <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> *aborted = TRUE; <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>``` <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>SCIP continues with the remaining pricers, so the delayed exact pricer is still called if no column has been generated. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>If that exact pricer returns SCIP_SUCCESS and certifies that no improving column exists, the aborted flag nevertheless appears to remain set. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>Consequently, the LP solution is not treated as a valid lower bound even though pricing was subsequently <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>completed exactly. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>A simplified callback setup is: <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> ```cpp <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> // Heuristic pricer <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> if( improvingColumnFound ) <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> { <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> addColumn(); <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> *result = SCIP_SUCCESS; <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> } <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> else <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> { <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> *result = SCIP_DIDNOTRUN; <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> } <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> // Delayed exact pricer <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> if( improvingColumnFound ) <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> addColumn(); <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> *result = SCIP_SUCCESS; // column found or absence proved <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>``` <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>Is this behavior intentional? <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>I understand that different pricers may be responsible for disjoint variable families. In that case, a later <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>successful pricer cannot compensate for an earlier incomplete one. However, in this setup, the exact pricer <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>covers the same variable family as the heuristic pricer and therefore subsumes its search. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>Is there a supported way to tell SCIP that the delayed exact pricer certifies the same variable family as the <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>heuristic pricer? Alternatively, should heuristic and exact pricing always be implemented inside one pricer <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>callback? Currently I just use a Lagrangian-Bound in the exact pricer, so there is no problem, but I was working on a teaching example and stumbled upon this. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>If there is currently no way to express this relationship, could SCIP defer the final aborted decision until all <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>active pricers have run, or provide a mechanism through which an exact pricer can supersede an earlier <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>SCIP_DIDNOTRUN result? Maybe we could use the SCIP_DIDNOTFIND flag for that behavior?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>Thank you for your help.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-ligatures:none;mso-fareast-language:DE'>Best regards, <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:12.0pt;mso-fareast-language:DE'>Lars<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Rotis Sans Serif Std",sans-serif;color:#2F5496;mso-fareast-language:DE'>___________________________________________________<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Rotis Sans Serif Std",sans-serif;color:#2F5496;mso-fareast-language:DE'><o:p> </o:p></span></p><p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="Grafik_x0020_1" o:spid="_x0000_s1026" type="#_x0000_t75" style='position:absolute;margin-left:0;margin-top:58.55pt;width:94.5pt;height:93.05pt;z-index:251659264;visibility:visible;mso-wrap-style:square;mso-width-percent:0;mso-height-percent:0;mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;mso-wrap-distance-bottom:0;mso-position-horizontal:left;mso-position-horizontal-relative:text;mso-position-vertical:absolute;mso-position-vertical-relative:text;mso-width-percent:0;mso-height-percent:0;mso-width-relative:margin;mso-height-relative:margin'>
<v:imagedata src="cid:image001.png@01DD443B.568F6420" o:title="" />
<w:wrap type="square"/>
</v:shape><![endif]--><![if !vml]><img width=126 height=124 style='width:1.3125in;height:1.2916in' src="cid:image002.png@01DD443B.568F6420" align=left hspace=12 v:shapes="Grafik_x0020_1"><![endif]><b><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>Lars Jäger, M.Sc.</span></b><span style='font-size:8.0pt;font-family:"Calibri",sans-serif;color:#2F5496;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>Wissenschaftlicher Mitarbeiter<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>Leibniz Universität Hannover<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>Institut für Produktionswirtschaft<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>Königsworther Platz 1<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>D-30167 Hannover<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>Büro: I-125<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>E-Mail: </span><span style='font-size:8.0pt;mso-fareast-language:DE'><a href="mailto:lars.jaeger@prod.uni-hannover.de"><span style='color:blue'>lars.jaeger@prod.uni-hannover.de</span></a><span style='color:#2F5496'><o:p></o:p></span></span></p><p class=MsoNormal><span style='font-size:8.0pt;color:#2F5496;mso-fareast-language:DE'>Tel: +49 (0)511 762 - 5649<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>