Estimation of the size of Branch-and-Bound trees using MLBranching rules in commercial MIP solversUsing CPLEX “solution pool” to count feasible pointsWhat are the tradeoffs between “exact” and Reinforcement Learning methods for solving optimization problemsWhen to use indicator constraints versus big-M approaches in solving (mixed-)integer programsWhy is it important to choose big-M carefully and what are the consequences of doing it badly?Has the expressibility of 'non-integrality testing' as extension to MILP been studied before?“Best practices” for formulating MIPsGood resources for solving techniques (Metaheuristics, MILP, CP etc)Querying attributes of LP relaxation at MIP-optimality in GurobiAre there examples of spatially explicit MIP problems?

How to disable "Completion time:..." in SQL Server Messages window

The cat ate your input again!

How would timezones work on a planet 100 times the size of our Earth

Not going forward with internship interview process

Solution to German Tank Problem

How to write hyperlinks to local files in GeoJSON properties?

How can I categorize files in a directory based on their content?

Are employers legally allowed to pay employees in goods and services equal to or greater than the minimum wage?

How do some PhD students get 10+ papers? Is that what I need for landing good faculty position?

Can sampling rate be a floating point number?

How can I decide if my homebrew item should require attunement?

If clocks themselves are based on light signals, wouldn't we expect the measured speed of light to always be the same constant?

Breadcrumb history decision

Is it legal for a company to enter an agreement not to hire employees from another company?

Is it feasible to get a hash collision for CRC32, MD-5 and SHA-1 on one file?

Is God unknowable?

What does the phrase "pull off sick wheelies and flips" mean here?

How can this older-style irrigation tee be replaced?

Why does the standard fingering / strumming for a D maj chord leave out the 5th string?

How to take the beginning and end parts of a list with simpler syntax?

Why are Gatwick's runways too close together?

How can Radagast come across Gandalf and Thorin's company?

What gave Harry Potter the idea of writing in Tom Riddle's diary?

Why did Gandalf use a sword against the Balrog?



Estimation of the size of Branch-and-Bound trees using ML


Branching rules in commercial MIP solversUsing CPLEX “solution pool” to count feasible pointsWhat are the tradeoffs between “exact” and Reinforcement Learning methods for solving optimization problemsWhen to use indicator constraints versus big-M approaches in solving (mixed-)integer programsWhy is it important to choose big-M carefully and what are the consequences of doing it badly?Has the expressibility of 'non-integrality testing' as extension to MILP been studied before?“Best practices” for formulating MIPsGood resources for solving techniques (Metaheuristics, MILP, CP etc)Querying attributes of LP relaxation at MIP-optimality in GurobiAre there examples of spatially explicit MIP problems?













14












$begingroup$


A short background:



A paper [1] published in 2006 intends to show that the time needed to solve mixed-integer programming problems by branch and bound can be roughly predicted early in the solution process. Authors mentioned that "The application of the branch-and-bound algorithm can be limited by both the computing time and the storage space required (even when storing nodes on a hard disk). The solution process may take hours or days and there is very little a priori indication of how difficult a model will be to solve. Unfortunately, there is no known method to extract this information from the problem formulation."



on the other hand, commercial solvers are like black boxes, from which extracting useful data about the number of nodes, number of branches and so on, is very hard (I tried to extract related data from Cplex callback functions in Matlab but the trial was unsuccessful). My question is:



Is there any way to use ML techniques to estimate the branch and bound tree size? Are open-source solvers provide such data that can be used to train an ML model and then test the model on benchmark problems?



Doing my homework on searching for answers before asking the question, I can mention the following papers that also aimed to tackle the problem:



  • Knuth's method: In [2], two new online methods for estimating the size of backtracking search tree are proposed. They mentioned that, "Knuth’s method estimates $N$, the size of a backtrack tree as $1 + b_1 + b_1.b_2 + . . .$ where $b_i$ is the branching rate observed at depth $i$ using random probing".


  • Mentioning the effect of choosing the right variable to branch on, the authors in [3] mentioned that "branching on a variable that does not lead to any serious simplifications on any of the (two) children can be seen as doubling the size of the tree with no improvement, thus leading to extremely large (out of control) search trees."


[1] Cornuéjols, Gérard, Miroslav Karamanov, and Yanjun Li. "Early estimates of the size of branch-and-bound trees." INFORMS Journal on Computing 18.1 (2006): 86-96.



[2] Kilby, Philip, et al. "Estimating search tree size." Proc. of the 21st National Conf. of Artificial Intelligence, AAAI, Menlo Park. 2006.



[3] Lodi, Andrea, and Giulia Zarpellon. "On learning and branching: a survey." Top 25.2 (2017): 207-236.










share|improve this question









$endgroup$


















    14












    $begingroup$


    A short background:



    A paper [1] published in 2006 intends to show that the time needed to solve mixed-integer programming problems by branch and bound can be roughly predicted early in the solution process. Authors mentioned that "The application of the branch-and-bound algorithm can be limited by both the computing time and the storage space required (even when storing nodes on a hard disk). The solution process may take hours or days and there is very little a priori indication of how difficult a model will be to solve. Unfortunately, there is no known method to extract this information from the problem formulation."



    on the other hand, commercial solvers are like black boxes, from which extracting useful data about the number of nodes, number of branches and so on, is very hard (I tried to extract related data from Cplex callback functions in Matlab but the trial was unsuccessful). My question is:



    Is there any way to use ML techniques to estimate the branch and bound tree size? Are open-source solvers provide such data that can be used to train an ML model and then test the model on benchmark problems?



    Doing my homework on searching for answers before asking the question, I can mention the following papers that also aimed to tackle the problem:



    • Knuth's method: In [2], two new online methods for estimating the size of backtracking search tree are proposed. They mentioned that, "Knuth’s method estimates $N$, the size of a backtrack tree as $1 + b_1 + b_1.b_2 + . . .$ where $b_i$ is the branching rate observed at depth $i$ using random probing".


    • Mentioning the effect of choosing the right variable to branch on, the authors in [3] mentioned that "branching on a variable that does not lead to any serious simplifications on any of the (two) children can be seen as doubling the size of the tree with no improvement, thus leading to extremely large (out of control) search trees."


    [1] Cornuéjols, Gérard, Miroslav Karamanov, and Yanjun Li. "Early estimates of the size of branch-and-bound trees." INFORMS Journal on Computing 18.1 (2006): 86-96.



    [2] Kilby, Philip, et al. "Estimating search tree size." Proc. of the 21st National Conf. of Artificial Intelligence, AAAI, Menlo Park. 2006.



    [3] Lodi, Andrea, and Giulia Zarpellon. "On learning and branching: a survey." Top 25.2 (2017): 207-236.










    share|improve this question









    $endgroup$
















      14












      14








      14





      $begingroup$


      A short background:



      A paper [1] published in 2006 intends to show that the time needed to solve mixed-integer programming problems by branch and bound can be roughly predicted early in the solution process. Authors mentioned that "The application of the branch-and-bound algorithm can be limited by both the computing time and the storage space required (even when storing nodes on a hard disk). The solution process may take hours or days and there is very little a priori indication of how difficult a model will be to solve. Unfortunately, there is no known method to extract this information from the problem formulation."



      on the other hand, commercial solvers are like black boxes, from which extracting useful data about the number of nodes, number of branches and so on, is very hard (I tried to extract related data from Cplex callback functions in Matlab but the trial was unsuccessful). My question is:



      Is there any way to use ML techniques to estimate the branch and bound tree size? Are open-source solvers provide such data that can be used to train an ML model and then test the model on benchmark problems?



      Doing my homework on searching for answers before asking the question, I can mention the following papers that also aimed to tackle the problem:



      • Knuth's method: In [2], two new online methods for estimating the size of backtracking search tree are proposed. They mentioned that, "Knuth’s method estimates $N$, the size of a backtrack tree as $1 + b_1 + b_1.b_2 + . . .$ where $b_i$ is the branching rate observed at depth $i$ using random probing".


      • Mentioning the effect of choosing the right variable to branch on, the authors in [3] mentioned that "branching on a variable that does not lead to any serious simplifications on any of the (two) children can be seen as doubling the size of the tree with no improvement, thus leading to extremely large (out of control) search trees."


      [1] Cornuéjols, Gérard, Miroslav Karamanov, and Yanjun Li. "Early estimates of the size of branch-and-bound trees." INFORMS Journal on Computing 18.1 (2006): 86-96.



      [2] Kilby, Philip, et al. "Estimating search tree size." Proc. of the 21st National Conf. of Artificial Intelligence, AAAI, Menlo Park. 2006.



      [3] Lodi, Andrea, and Giulia Zarpellon. "On learning and branching: a survey." Top 25.2 (2017): 207-236.










      share|improve this question









      $endgroup$




      A short background:



      A paper [1] published in 2006 intends to show that the time needed to solve mixed-integer programming problems by branch and bound can be roughly predicted early in the solution process. Authors mentioned that "The application of the branch-and-bound algorithm can be limited by both the computing time and the storage space required (even when storing nodes on a hard disk). The solution process may take hours or days and there is very little a priori indication of how difficult a model will be to solve. Unfortunately, there is no known method to extract this information from the problem formulation."



      on the other hand, commercial solvers are like black boxes, from which extracting useful data about the number of nodes, number of branches and so on, is very hard (I tried to extract related data from Cplex callback functions in Matlab but the trial was unsuccessful). My question is:



      Is there any way to use ML techniques to estimate the branch and bound tree size? Are open-source solvers provide such data that can be used to train an ML model and then test the model on benchmark problems?



      Doing my homework on searching for answers before asking the question, I can mention the following papers that also aimed to tackle the problem:



      • Knuth's method: In [2], two new online methods for estimating the size of backtracking search tree are proposed. They mentioned that, "Knuth’s method estimates $N$, the size of a backtrack tree as $1 + b_1 + b_1.b_2 + . . .$ where $b_i$ is the branching rate observed at depth $i$ using random probing".


      • Mentioning the effect of choosing the right variable to branch on, the authors in [3] mentioned that "branching on a variable that does not lead to any serious simplifications on any of the (two) children can be seen as doubling the size of the tree with no improvement, thus leading to extremely large (out of control) search trees."


      [1] Cornuéjols, Gérard, Miroslav Karamanov, and Yanjun Li. "Early estimates of the size of branch-and-bound trees." INFORMS Journal on Computing 18.1 (2006): 86-96.



      [2] Kilby, Philip, et al. "Estimating search tree size." Proc. of the 21st National Conf. of Artificial Intelligence, AAAI, Menlo Park. 2006.



      [3] Lodi, Andrea, and Giulia Zarpellon. "On learning and branching: a survey." Top 25.2 (2017): 207-236.







      mixed-integer-programming machine-learning branch-and-bound






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Aug 1 at 2:33









      Oguz ToragayOguz Toragay

      2,0602 silver badges24 bronze badges




      2,0602 silver badges24 bronze badges























          1 Answer
          1






          active

          oldest

          votes


















          12












          $begingroup$

          Great question. You might be interested in this paper here:



          Learning MILP Resolution Outcomes Before Reaching Time-Limit by Martina Fischetti, Andrea Lodi, and Giulia Zarpellon.



          They don't exactly answer your question but you may see why the question is hard to answer and what partial progress can be made.



          A priori estimating the tree size is estimating whether a model is hard to solve or not. From the static features of the instance, without any runtime knowledge (and even with it!), I personally deem this task virtually undoable. But this is just gut feeling.



          edit concerning the data: B&B solvers do not provide such data, but of course you can collect this from B&B runs a posteriori.






          share|improve this answer











          $endgroup$










          • 1




            $begingroup$
            Thanks for the suggestion @Marco Lübbecke, I will check the paper but I believe any progress in estimating the tree size, as you said, will reveal a great detail on how hard the problem is and how to allocate memory and time on solving that.
            $endgroup$
            – Oguz Toragay
            Aug 1 at 15:02






          • 2




            $begingroup$
            I therefore thought it would be great to "only" be able to classify, maybe into "short, medium, long", but even this seems to be not reliable. With runtime information, however, there might be more hope. Fascinating area at any rate.
            $endgroup$
            – Marco Lübbecke
            Aug 2 at 10:57













          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "700"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          noCode: true, onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2for.stackexchange.com%2fquestions%2f1122%2festimation-of-the-size-of-branch-and-bound-trees-using-ml%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          12












          $begingroup$

          Great question. You might be interested in this paper here:



          Learning MILP Resolution Outcomes Before Reaching Time-Limit by Martina Fischetti, Andrea Lodi, and Giulia Zarpellon.



          They don't exactly answer your question but you may see why the question is hard to answer and what partial progress can be made.



          A priori estimating the tree size is estimating whether a model is hard to solve or not. From the static features of the instance, without any runtime knowledge (and even with it!), I personally deem this task virtually undoable. But this is just gut feeling.



          edit concerning the data: B&B solvers do not provide such data, but of course you can collect this from B&B runs a posteriori.






          share|improve this answer











          $endgroup$










          • 1




            $begingroup$
            Thanks for the suggestion @Marco Lübbecke, I will check the paper but I believe any progress in estimating the tree size, as you said, will reveal a great detail on how hard the problem is and how to allocate memory and time on solving that.
            $endgroup$
            – Oguz Toragay
            Aug 1 at 15:02






          • 2




            $begingroup$
            I therefore thought it would be great to "only" be able to classify, maybe into "short, medium, long", but even this seems to be not reliable. With runtime information, however, there might be more hope. Fascinating area at any rate.
            $endgroup$
            – Marco Lübbecke
            Aug 2 at 10:57















          12












          $begingroup$

          Great question. You might be interested in this paper here:



          Learning MILP Resolution Outcomes Before Reaching Time-Limit by Martina Fischetti, Andrea Lodi, and Giulia Zarpellon.



          They don't exactly answer your question but you may see why the question is hard to answer and what partial progress can be made.



          A priori estimating the tree size is estimating whether a model is hard to solve or not. From the static features of the instance, without any runtime knowledge (and even with it!), I personally deem this task virtually undoable. But this is just gut feeling.



          edit concerning the data: B&B solvers do not provide such data, but of course you can collect this from B&B runs a posteriori.






          share|improve this answer











          $endgroup$










          • 1




            $begingroup$
            Thanks for the suggestion @Marco Lübbecke, I will check the paper but I believe any progress in estimating the tree size, as you said, will reveal a great detail on how hard the problem is and how to allocate memory and time on solving that.
            $endgroup$
            – Oguz Toragay
            Aug 1 at 15:02






          • 2




            $begingroup$
            I therefore thought it would be great to "only" be able to classify, maybe into "short, medium, long", but even this seems to be not reliable. With runtime information, however, there might be more hope. Fascinating area at any rate.
            $endgroup$
            – Marco Lübbecke
            Aug 2 at 10:57













          12












          12








          12





          $begingroup$

          Great question. You might be interested in this paper here:



          Learning MILP Resolution Outcomes Before Reaching Time-Limit by Martina Fischetti, Andrea Lodi, and Giulia Zarpellon.



          They don't exactly answer your question but you may see why the question is hard to answer and what partial progress can be made.



          A priori estimating the tree size is estimating whether a model is hard to solve or not. From the static features of the instance, without any runtime knowledge (and even with it!), I personally deem this task virtually undoable. But this is just gut feeling.



          edit concerning the data: B&B solvers do not provide such data, but of course you can collect this from B&B runs a posteriori.






          share|improve this answer











          $endgroup$



          Great question. You might be interested in this paper here:



          Learning MILP Resolution Outcomes Before Reaching Time-Limit by Martina Fischetti, Andrea Lodi, and Giulia Zarpellon.



          They don't exactly answer your question but you may see why the question is hard to answer and what partial progress can be made.



          A priori estimating the tree size is estimating whether a model is hard to solve or not. From the static features of the instance, without any runtime knowledge (and even with it!), I personally deem this task virtually undoable. But this is just gut feeling.



          edit concerning the data: B&B solvers do not provide such data, but of course you can collect this from B&B runs a posteriori.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Aug 1 at 6:01

























          answered Aug 1 at 5:55









          Marco LübbeckeMarco Lübbecke

          2,2335 silver badges30 bronze badges




          2,2335 silver badges30 bronze badges










          • 1




            $begingroup$
            Thanks for the suggestion @Marco Lübbecke, I will check the paper but I believe any progress in estimating the tree size, as you said, will reveal a great detail on how hard the problem is and how to allocate memory and time on solving that.
            $endgroup$
            – Oguz Toragay
            Aug 1 at 15:02






          • 2




            $begingroup$
            I therefore thought it would be great to "only" be able to classify, maybe into "short, medium, long", but even this seems to be not reliable. With runtime information, however, there might be more hope. Fascinating area at any rate.
            $endgroup$
            – Marco Lübbecke
            Aug 2 at 10:57












          • 1




            $begingroup$
            Thanks for the suggestion @Marco Lübbecke, I will check the paper but I believe any progress in estimating the tree size, as you said, will reveal a great detail on how hard the problem is and how to allocate memory and time on solving that.
            $endgroup$
            – Oguz Toragay
            Aug 1 at 15:02






          • 2




            $begingroup$
            I therefore thought it would be great to "only" be able to classify, maybe into "short, medium, long", but even this seems to be not reliable. With runtime information, however, there might be more hope. Fascinating area at any rate.
            $endgroup$
            – Marco Lübbecke
            Aug 2 at 10:57







          1




          1




          $begingroup$
          Thanks for the suggestion @Marco Lübbecke, I will check the paper but I believe any progress in estimating the tree size, as you said, will reveal a great detail on how hard the problem is and how to allocate memory and time on solving that.
          $endgroup$
          – Oguz Toragay
          Aug 1 at 15:02




          $begingroup$
          Thanks for the suggestion @Marco Lübbecke, I will check the paper but I believe any progress in estimating the tree size, as you said, will reveal a great detail on how hard the problem is and how to allocate memory and time on solving that.
          $endgroup$
          – Oguz Toragay
          Aug 1 at 15:02




          2




          2




          $begingroup$
          I therefore thought it would be great to "only" be able to classify, maybe into "short, medium, long", but even this seems to be not reliable. With runtime information, however, there might be more hope. Fascinating area at any rate.
          $endgroup$
          – Marco Lübbecke
          Aug 2 at 10:57




          $begingroup$
          I therefore thought it would be great to "only" be able to classify, maybe into "short, medium, long", but even this seems to be not reliable. With runtime information, however, there might be more hope. Fascinating area at any rate.
          $endgroup$
          – Marco Lübbecke
          Aug 2 at 10:57

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Operations Research Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2for.stackexchange.com%2fquestions%2f1122%2festimation-of-the-size-of-branch-and-bound-trees-using-ml%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Category:9 (number) SubcategoriesMedia in category "9 (number)"Navigation menuUpload mediaGND ID: 4485639-8Library of Congress authority ID: sh85091979ReasonatorScholiaStatistics

          Circuit construction for execution of conditional statements using least significant bitHow are two different registers being used as “control”?How exactly is the stated composite state of the two registers being produced using the $R_zz$ controlled rotations?Efficiently performing controlled rotations in HHLWould this quantum algorithm implementation work?How to prepare a superposed states of odd integers from $1$ to $sqrtN$?Why is this implementation of the order finding algorithm not working?Circuit construction for Hamiltonian simulationHow can I invert the least significant bit of a certain term of a superposed state?Implementing an oracleImplementing a controlled sum operation

          Magento 2 “No Payment Methods” in Admin New OrderHow to integrate Paypal Express Checkout with the Magento APIMagento 1.5 - Sales > Order > edit order and shipping methods disappearAuto Invoice Check/Money Order Payment methodAdd more simple payment methods?Shipping methods not showingWhat should I do to change payment methods if changing the configuration has no effects?1.9 - No Payment Methods showing upMy Payment Methods not Showing for downloadable/virtual product when checkout?Magento2 API to access internal payment methodHow to call an existing payment methods in the registration form?