<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" 'JATS-journalpublishing1-3-mathml3.dtd'>
<article article-type="research-article" dtd-version="1.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title-group>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1656564</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2025.1656564</article-id>
<article-version article-version-type="Version of Record" vocab="NISO-RP-8-2008"/>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Original Research</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Data-driven acceleration of mixed-integer bilinear programs: a comparative study for robot motion planning</article-title>
<alt-title alt-title-type="left-running-head">Lin</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2025.1656564">10.3389/frobt.2025.1656564</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Lin</surname>
<given-names>Xuan</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/3056667"/>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing - original draft</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &#x26; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/">Writing - review and editing</role>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<label>1</label>
<institution>Robotics and Mechanisms Laboratory, Department of Mechanical and Aerospace Engineering, University of California</institution>, <city>Los Angeles</city>, <state>CA</state>, <country country="US">United States</country>
</aff>
<aff id="aff2">
<label>2</label>
<institution>The Laboratory for Intelligent Decision and Autonomous Robots, George W. Woodruf School of Mechanical Engineering, Georgia Institute of Technology</institution>, <city>Atlanta</city>, <state>GA</state>, <country country="US">United States</country>
</aff>
<author-notes>
<corresp id="c001">
<label>&#x2a;</label>Correspondence: Xuan Lin, <email xlink:href="mailto:maynight@ucla.edu">maynight@ucla.edu</email>
</corresp>
</author-notes>
<pub-date publication-format="electronic" date-type="pub" iso-8601-date="2026-01-08">
<day>08</day>
<month>01</month>
<year>2026</year>
</pub-date>
<pub-date publication-format="electronic" date-type="collection">
<year>2025</year>
</pub-date>
<volume>12</volume>
<elocation-id>1656564</elocation-id>
<history>
<date date-type="received">
<day>30</day>
<month>06</month>
<year>2025</year>
</date>
<date date-type="rev-recd">
<day>13</day>
<month>10</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>27</day>
<month>10</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2026 Lin.</copyright-statement>
<copyright-year>2026</copyright-year>
<copyright-holder>Lin</copyright-holder>
<license>
<ali:license_ref start_date="2026-01-08">https://creativecommons.org/licenses/by/4.0/</ali:license_ref>
<license-p>This is an open-access article distributed under the terms of the <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution License (CC BY)</ext-link>. The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</license-p>
</license>
</permissions>
<abstract>
<p>This paper presents a comparative study of data-driven acceleration techniques for mixed-integer bilinear programs (MIBLPs) applied to robot motion planning. MIBLPs combine discrete decision variables and nonlinear constraints, making them computationally challenging for real-time robotics applications. We investigate two reformulation strategies: (1) converting binary variables into continuous variables with complementarity constraints (MPCC), and (2) converting bilinear constraints into mixed-integer linear constraints using McCormick envelopes (MICP). Using offline computed solutions as datasets, we apply K-nearest neighbor methods to warm-start both reformulations. We experimented with the proposed data-driven MIBLP formulation for motion planning on a linear inverted pendulum with contacts, and planning motion using a single rigid body model with mode transitions and contacts. Our results demonstrate that when sufficient data is available, MICP achieves consistently fast solving speeds that are suitable for real-time computation, while MPCC achieves higher success rates with limited amount of data. Our approach is capable of planning motions for the SCALER robot platform to transition between bipedal and quadrupedal configurations to navigate around obstacles without pre-specified gaits. Code for reproducing our results is available at <ext-link ext-link-type="uri" xlink:href="https://github.com/XuanLin/MIBLP_benchmark">https://github.com/XuanLin/MIBLP_benchmark</ext-link>.</p>
</abstract>
<kwd-group>
<kwd>trajectory optimization</kwd>
<kwd>robot motion planning</kwd>
<kwd>optimal control</kwd>
<kwd>mixed-integer bilinear programs</kwd>
<kwd>mathematical programs with complementarity constraints</kwd>
</kwd-group>
<funding-group>
<funding-statement>The author(s) declare that no financial support was received for the research and/or publication of this article.</funding-statement>
</funding-group>
<counts>
<fig-count count="2"/>
<table-count count="5"/>
<equation-count count="17"/>
<ref-count count="60"/>
<page-count count="12"/>
</counts>
<custom-meta-group>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Field Robotics</meta-value>
</custom-meta>
</custom-meta-group>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<label>1</label>
<title>Introduction</title>
<p>Optimization-based methods are powerful tools for solving robotic motion planning problems. For problems involving discrete decisions and nonlinear constraints, typical approaches include mixed-integer convex programs (MICPs) (<xref ref-type="bibr" rid="B14">Deits and Tedrake, 2014</xref>; <xref ref-type="bibr" rid="B31">Lin et al., 2019</xref>), which explicitly handle discrete variables using techniques like Branch and Bound (<xref ref-type="bibr" rid="B5">Boyd and Mattingley, 2007</xref>) or Benders Decomposition (<xref ref-type="bibr" rid="B23">Geoffrion, 1972</xref>; <xref ref-type="bibr" rid="B30">Lin, 2024</xref>), and nonlinear programs (NLPs) (<xref ref-type="bibr" rid="B11">Dai et al., 2014</xref>; <xref ref-type="bibr" rid="B57">Winkler et al., 2018</xref>; <xref ref-type="bibr" rid="B47">Shirai et al., 2020</xref>), which deal with nonconvex constraints. Each approach has distinct advantages and limitations when solved with off-the-shelf solvers. MICP solvers can find global optimal solutions without any initial guess but often require prohibitively long solving times for problems with numerous integer variables. NLPs, while computationally more efficient when solved with e.g., interior point methods (<xref ref-type="bibr" rid="B55">Wachter, 2002</xref>), tend to converge to local optimal solutions that may exhibit inconsistent behavior sensitive to initial guesses. To introduce discrete variables, NLPs require complementary constraints (<xref ref-type="bibr" rid="B58">Yunt and Glocker, 2006</xref>; <xref ref-type="bibr" rid="B43">Posa et al., 2014</xref>), which is numerically challenging as it violates the majority of Constraint Qualifications established for standard nonlinear optimization (<xref ref-type="bibr" rid="B35">Luo et al., 1996</xref>). Combining MICPs and NLPs leads to mixed-integer nonlinear programs (MINLPs), such as mixed-integer bilinear programs (MIBLPs), which offer greater descriptive power for formulating complex problems but become computationally intractable unless the problem size is very small (<xref ref-type="bibr" rid="B37">Marcucci, 2024</xref>). This limits the practical implementation of MINLPs in online applications.</p>
<p>Researchers have been investigating machine learning methods to accelerate optimization solving procedures. Data can be gathered to enhance both general-purpose solvers and problem-specific approaches. For example, MIP solvers such as Gurobi (<xref ref-type="bibr" rid="B25">Gurobi Optimization, LLC, 2024</xref>) use branch-and-bound algorithms that heavily rely on cutting planes and heuristics to discover better solutions and eliminate infeasible ones. These techniques used inside solvers can be aided by machine learning methods (<xref ref-type="bibr" rid="B40">Nair et al., 2020</xref>; <xref ref-type="bibr" rid="B51">Tang et al., 2020</xref>). While these approaches aim to improve general solver performance, they require modifying solver internals and typically demand large-scale training datasets spanning many problem classes. Additionally, recent work has also explored neural network-based warm-starting for trajectory optimization in robotics, such as using diffusion models (<xref ref-type="bibr" rid="B7">Carvalho et al., 2023</xref>; <xref ref-type="bibr" rid="B29">Li et al., 2024</xref>), constraint-informed learning (<xref ref-type="bibr" rid="B6">Briden et al., 2025</xref>), and applications including navigating challenging obstacles in unfamiliar environments (<xref ref-type="bibr" rid="B13">Dalal et al., 2024</xref>) and trajectory generation on the International Space Station (<xref ref-type="bibr" rid="B3">Banerjee et al., 2025</xref>).</p>
<p>On the other hand, for parametric optimization problems where parameters follow specific distributions, solved problem instances can be collected offline to learn problem-solution mappings that accelerate online solving. In this problem-specific setting, simpler learning schemes such as K-nearest neighbors can be effective. This approach has been investigated for MICPs (<xref ref-type="bibr" rid="B60">Zhu and Martius, 2020</xref>; <xref ref-type="bibr" rid="B8">Cauligi et al., 2021</xref>), and NLPs (<xref ref-type="bibr" rid="B26">Hauser, 2016</xref>). These data-driven methods have demonstrated potential in reducing computation time for complex optimization problems. However, considerably less work has been done on applying these data-driven techniques to mixed-integer nonlinear programs (MINLPs) (<xref ref-type="bibr" rid="B18">Dua and Pistikopoulos, 1999</xref>), particularly in comparing different reformulation strategies.</p>
<p>In this paper, we investigate data-driven techniques for accelerating mixed-integer bilinear programs (MIBLPs), a common class of MINLPs, for robotics applications. Rather than developing an entirely new approach, we examine how to reformulate MIBLPs into alternative, more tractable formulations such as MICPs or NLPs, then apply simple-yet-effective KNN-based data-driven methods. We systematically compare the performance of these reformulations in terms of solving speed, success rate, solution quality, and data requirements&#x2014;a comparative perspective that has received limited attention in prior works.</p>
<p>Several established approaches to reformulate MIBLPs exists in the literature. In this paper, we investigate two widely-accepted formulations:<list list-type="simple">
<list-item>
<p>1. Turning binary variables into continuous variables with complementarity constraints, transforming the problem into a mathematical program with complementarity constraints (MPCC) (<xref ref-type="bibr" rid="B41">Park and Boyd, 2018</xref>). This formulation has been used in previous works such as (<xref ref-type="bibr" rid="B43">Posa et al., 2014</xref>). This formulation enables the direct application of data-driven methods such as (<xref ref-type="bibr" rid="B26">Hauser, 2016</xref>; <xref ref-type="bibr" rid="B33">Lin et al., 2022</xref>).</p>
</list-item>
<list-item>
<p>2. Converting bilinear constraints into mixed-integer linear constraints using McCormick envelopes (<xref ref-type="bibr" rid="B24">Gupte et al., 2013</xref>), which transforms the problem into an MICP. This formulation has been used in previous work such as (<xref ref-type="bibr" rid="B12">Dai et al., 2019</xref>). This formulation enables the direct application of data-driven methods such as (<xref ref-type="bibr" rid="B60">Zhu and Martius, 2020</xref>; <xref ref-type="bibr" rid="B8">Cauligi et al., 2021</xref>).</p>
</list-item>
</list>
</p>
<p>Given these reformulation options, we ask a natural question: <italic>Given a certain amount of problems solved offline as warm-start data, which re-formulation can solve the original MIBLP faster and more reliably? How much data is needed to achieve such performances?</italic>
</p>
<p>To answer these questions, we conduct a comparison of different MIBLP reformulations in the context of robotic motion planning and control. We experiment with motion planning problems formulated as MINLPs on two models: a linear inverted pendulum with soft contact walls, and a single rigid body with contact. The inverted pendulum problem allows us to study the performance of reformulations in a lower-dimensional setting, while the single rigid body control problem with contact represents a more complex scenario commonly seen in legged locomotion (<xref ref-type="bibr" rid="B16">Ding et al., 2022</xref>) and manipulation (<xref ref-type="bibr" rid="B27">Hogan and Rodriguez, 2020</xref>) tasks. In this paper, we use the single rigid body model to study a locomotion problem where the robot must change its mobility mode from biped to quadruped to overcome an obstacle, as illustrated in <xref ref-type="fig" rid="F1">Figure 1</xref>. For each problem, we apply data-driven methods to both the MPCC and MICP reformulations, comparing their success rate, computational speed, and solution quality as the amount of training data increases.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Experimental demonstration: SCALER robot transitions from bipedal to quadrupedal form to navigate beneath an obstacle, then returns to bipedal form to reach an elevated target position (illustrated by a button-pushing task).</p>
</caption>
<graphic xlink:href="frobt-12-1656564-g001.tif">
<alt-text content-type="machine-generated">A robotic system transitions between biped and quadruped modes to overcome an obstacle. The upper section shows the robot in biped and quadruped modes. The lower section diagrams its movement along a path, indicating mode changes and the ability to clear a 0.15-meter-high obstacle. Arrows illustrate transitions at approximately 1 meter and 2.5 meters along the x-axis, labeled in meters.</alt-text>
</graphic>
</fig>
<p>To summarize, our contributions are as follows:<list list-type="simple">
<list-item>
<p>1. Formulate two robotics control problems (inverted pendulum and single rigid body with mode transitions and contacts) as MIBLPs and solve them with data-driven methods.</p>
</list-item>
<list-item>
<p>2. Benchmark the data-driven performance of different MIBLP re-formulations across these robotic problems.</p>
</list-item>
</list>
</p>
<p>A preliminary version of this work was published (<xref ref-type="bibr" rid="B34">Lin et al., 2024</xref>). While the conference paper introduced the comparative study of MICP and NLP reformulations for MIBLPs, it was limited to the simplified Book Placement Planning problem without dynamics. The current paper significantly extends this work by evaluating the reformulation strategies on more challenging robotic systems with complex dynamics, including an inverted pendulum and single rigid body with contacts.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Related works</title>
<sec id="s2-1">
<label>2.1</label>
<title>Parametric programming</title>
<p>The field of parametric programming focuses on constructing mappings from optimization problem parameters to their corresponding solutions (<xref ref-type="bibr" rid="B20">Fiacco, 1983</xref>; <xref ref-type="bibr" rid="B42">Pistikopoulos et al., 2002</xref>). This approach has been explored across various optimization domains, including linear programming (<xref ref-type="bibr" rid="B22">Gal, 2010</xref>), quadratic programming (<xref ref-type="bibr" rid="B4">Bemporad et al., 2002</xref>), and mixed-integer nonlinear programming (<xref ref-type="bibr" rid="B18">Dua and Pistikopoulos, 1999</xref>). A notable application of parametric programming appears in controller design through explicit Model Predictive Control (MPC) (<xref ref-type="bibr" rid="B4">Bemporad et al., 2002</xref>; <xref ref-type="bibr" rid="B52">T&#xf8;ndel et al., 2003</xref>), which involves solving MPC problems offline and storing the resulting active constraint sets. During online computation, the current system parameters are used to identify the appropriate pre-computed solution. <xref ref-type="bibr" rid="B4">Bemporad et al. (2002)</xref> demonstrated that for constrained linear quadratic regulator problems, these active sets form polyhedrons. <xref ref-type="bibr" rid="B19">Dua and Pistikopoulos (2000)</xref> further proposed efficient parameter space partitioning algorithms to construct those polyhedrons.</p>
<p>For non-convex optimization problems, where active sets generally do not form polyhedrons, researchers have developed different approaches. Several studies (<xref ref-type="bibr" rid="B26">Hauser, 2016</xref>; <xref ref-type="bibr" rid="B50">Tang and Hauser, 2019</xref>; <xref ref-type="bibr" rid="B60">Zhu and Martius, 2020</xref>) employ non-parametric learning techniques such as K-nearest neighbor (KNN) to directly leverage stored solution data for generating warm-start solutions online. A more recent research has expanded these methods by incorporating neural networks to learn embeddings that map from larger parameter sets to optimization solutions (<xref ref-type="bibr" rid="B8">Cauligi et al., 2021</xref>). A significant advantage of neural network methods is their capability to generalize to out-of-distribution problem instances that lie considerably outside the training dataset (<xref ref-type="bibr" rid="B44">Power and Berenson, 2022</xref>).</p>
</sec>
<sec id="s2-2">
<label>2.2</label>
<title>Mixed-integer convex programs</title>
<p>Mixed-integer convex programs (MICPs) integrate both continuous and discrete decision variables within an optimization framework. Their formal mathematical definition hinges on the property that if all binary variables are relaxed (i.e., replaced by continuous variables between 0 and 1), the resulting problem must be convex (<xref ref-type="bibr" rid="B10">Conforti et al., 2014</xref>). Standard MICP solvers such as Gurobi leverage branch-and-bound methods (<xref ref-type="bibr" rid="B5">Boyd and Mattingley, 2007</xref>) and cutting plane techniques (<xref ref-type="bibr" rid="B36">Marchand et al., 2002</xref>). Although MICPs face exponential worst-case computational complexity with respect to the number of binary variables, practical experience reveals that many real-world problems can be solved by exploring only a small portion of the potential search tree (<xref ref-type="bibr" rid="B56">Williams, 2013</xref>). This has facilitated the deployment of mixed-integer approaches in time-sensitive robotics applications such as online motion planning (<xref ref-type="bibr" rid="B53">Tordesillas et al., 2019</xref>). Nevertheless, as problem complexity increases, solution times can still extend to minutes or even hours (<xref ref-type="bibr" rid="B32">Lin et al., 2021</xref>), presenting significant challenges for real-time implementation.</p>
</sec>
<sec id="s2-3">
<label>2.3</label>
<title>Mathematical programming with complementary constraints</title>
<p>Mathematical programs with complementarity constraints (MPCCs) offer an alternative approach to handling discrete variables by reformulating them as continuous variables with additional complementarity conditions. These complementarity constraints enforce that when one variable takes a non-zero value, the other must be exactly zero. This formulation, while compact, presents significant computational challenges because it violates the majority of Constraint Qualifications established for standard nonlinear optimization (<xref ref-type="bibr" rid="B35">Luo et al., 1996</xref>). To address these difficulties, researchers have developed specialized algorithms including time-stepping methods (<xref ref-type="bibr" rid="B1">Anitescu and Potra, 1997</xref>), pivoting algorithms (<xref ref-type="bibr" rid="B17">Drumwright, 2015</xref>), and central path approaches (<xref ref-type="bibr" rid="B28">Kojima et al., 1991</xref>). In robotics applications, complementarity constraints have proven valuable for trajectory optimization across different locomotion gaits and implicit contact dynamics (<xref ref-type="bibr" rid="B58">Yunt and Glocker, 2006</xref>; <xref ref-type="bibr" rid="B43">Posa et al., 2014</xref>; <xref ref-type="bibr" rid="B59">Zhang et al., 2021</xref>; <xref ref-type="bibr" rid="B9">Le Cleac&#x2019;h et al., 2024</xref>), where they capture the complementary relationship between contact forces and surface distances. Complementarity constraints can also be used to model binary decision variables (<xref ref-type="bibr" rid="B41">Park and Boyd, 2018</xref>).</p>
</sec>
</sec>
<sec sec-type="materials|methods" id="s3">
<label>3</label>
<title>Materials and methods</title>
<sec id="s3-1">
<label>3.1</label>
<title>Data-driven parametric MIBLPs</title>
<p>Consider a set of optimization problems parameterized by <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, drawn from a distribution <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. We aim to solve a parameterized mixed-integer bilinear program (MIBLP) (<xref ref-type="bibr" rid="B21">Fischetti and Monaci, 2020</xref>):<disp-formula id="e1a">
<mml:math id="m3">
<mml:mrow>
<mml:munder>
<mml:mrow>
<mml:mtext>minimize</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
<label>(1a)</label>
</disp-formula>
<disp-formula id="e1b">
<mml:math id="m4">
<mml:mrow>
<mml:mtext>s.t.</mml:mtext>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(1b)</label>
</disp-formula>
<disp-formula id="e1c">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mtext>dim</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(1c)</label>
</disp-formula>
<disp-formula id="e1d">
<mml:math id="m6">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mspace width="0.3333em"/>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">J</mml:mi>
</mml:mrow>
</mml:math>
<label>(1d)</label>
</disp-formula>
<disp-formula id="e1e">
<mml:math id="m7">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:mi>s</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:math>
<label>(1e)</label>
</disp-formula>
</p>
<p>where <inline-formula id="inf3">
<mml:math id="m8">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>dim</mml:mtext>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> includes both continuous and binary variables, <inline-formula id="inf4">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the desired target values as a function of the parameters, and <inline-formula id="inf5">
<mml:math id="m10">
<mml:mrow>
<mml:mi mathvariant="script">J</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> specifies the index set for binary variables in <inline-formula id="inf6">
<mml:math id="m11">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Constraints (1b) are mixed-integer linear, meaning that if the binary variables are relaxed to continuous domains (i.e., replacing <inline-formula id="inf7">
<mml:math id="m12">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> with <inline-formula id="inf8">
<mml:math id="m13">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">J</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), these constraints become linear. Note that equality constraints can be incorporated into (1b) by expressing them as pairs of opposing inequality constraints. Constraints (1c) provide simple bounds on the variables, while (1d) enforces the binary requirements. Finally, (1e) introduces bilinear constraints, the distinguishing feature of MIBLPs compared to mixed-integer linear or quadratic programs.</p>
<p>As introduced in <xref ref-type="sec" rid="s1">Section 1</xref>, we compare the data-driven performance of two reformulation approaches: converting problem (1) into either an MICP or an MPCC, and solving these reformulations with data-driven methods. For the MICP reformulation, when a learning algorithm can predict binary variable assignments based on problem parameters <inline-formula id="inf9">
<mml:math id="m14">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the original problem (1) reduces to a convex optimization problem that can be efficiently solved with standard convex program solvers. Alternatively, for the MPCC reformulation (leading to an NLP with complementary constraints), when a learning algorithm provides high-quality initial guesses for all variables, it can significantly improve computational performance.</p>
<p>To implement these data-driven approaches, we first construct a dataset of size <inline-formula id="inf10">
<mml:math id="m15">
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> consisting of tuples <inline-formula id="inf11">
<mml:math id="m16">
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for <inline-formula id="inf12">
<mml:math id="m17">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The parameters <inline-formula id="inf13">
<mml:math id="m18">
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are drawn from <inline-formula id="inf14">
<mml:math id="m19">
<mml:mrow>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, and each corresponding solution <inline-formula id="inf15">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is obtained by solving the original problem using conventional non-data-driven methods. This offline computation, while potentially time-consuming, needs to be performed only once.</p>
<p>We then use this dataset to train models that can either predict binary variables for the MICP reformulation, or generate initial guesses for all variables for the MPCC reformulation. The MICP approach only requires binary variable prediction since fixing these variables yields a convex programming problem that can be solved efficiently without warm-starting. Formally, we seek to approximate the problem-solution map <inline-formula id="inf16">
<mml:math id="m21">
<mml:mrow>
<mml:mi mathvariant="script">F</mml:mi>
<mml:mo>:</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
<mml:mo>&#x21a6;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> using the collected data. For binary variable prediction, we focus on learning <inline-formula id="inf17">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
<mml:mo>&#x21a6;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">J</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, while for initial guess generation, we approximate the full mapping <inline-formula id="inf18">
<mml:math id="m23">
<mml:mrow>
<mml:mi mathvariant="script">F</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. In the following sections, we describe the implementation details for each reformulation approach.</p>
<sec id="s3-1-1">
<label>3.1.1</label>
<title>MPCC Re-formulation</title>
<p>One approach to reformulating problem (1) involves converting all binary variables into continuous variables with complementarity constraints, transforming (1) into MPCCs that can be solved using NLP solvers. In this reformulation, we remove constraint (1d) and instead impose the equivalent complementarity constraint proposed by <xref ref-type="bibr" rid="B41">Park and Boyd (2018)</xref>:<disp-formula id="e2">
<mml:math id="m24">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>&#x3f5;</mml:mi>
<mml:mspace width="1em"/>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">J</mml:mi>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>where <inline-formula id="inf19">
<mml:math id="m25">
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> is a small constant that slightly relaxes the constraint to improve numerical convergence properties. We have also experimented with alternative complementarity formulations from <xref ref-type="bibr" rid="B48">Stein et al. (2004)</xref> but observed similar or worse computational performance.</p>
<p>Using our constructed dataset, we implement the approach proposed by <xref ref-type="bibr" rid="B26">Hauser (2016)</xref> which utilizes a K-nearest-neighbor (KNN) algorithm to generate multiple candidate initial guesses <inline-formula id="inf20">
<mml:math id="m26">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> for a given online problem with parameters <inline-formula id="inf21">
<mml:math id="m27">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Specifically, for each new problem instance, we identify the <inline-formula id="inf22">
<mml:math id="m28">
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> most similar problem instances in our dataset based on Euclidean distances in the parameter space and use their solutions as initial guesses. These initial guesses are used for solving the MPCC one by one until a feasible solution is found or all candidates are exhausted. This complete algorithm is presented in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>.</p>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p>MPCC Online Solving Procedure.<list list-type="simple">
<list-item>
<p>Input:&#x2003;<inline-formula id="inf23">
<mml:math id="m29">
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf24">
<mml:math id="m30">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>1:&#x2003;&#x2003;Find the K-nearest-neighbors <inline-formula id="inf25">
<mml:math id="m31">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, &#x2026;, <inline-formula id="inf26">
<mml:math id="m32">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> in <inline-formula id="inf27">
<mml:math id="m33">
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, sorted in order of increasing Euclidean distance <inline-formula id="inf28">
<mml:math id="m34">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. Retrieve <inline-formula id="inf29">
<mml:math id="m35">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, &#x2026;, <inline-formula id="inf30">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>2:&#x2003;for <inline-formula id="inf31">
<mml:math id="m37">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> do</p>
</list-item>
<list-item>
<p>3:&#x2003;&#x2003;Solve the MPCC re-formulation of (<xref ref-type="disp-formula" rid="e1a">1</xref>) that replaces constraint (<xref ref-type="disp-formula" rid="e1d">1d</xref>) with constraint (<xref ref-type="disp-formula" rid="e2">2</xref>) using applicable NLP solvers with <inline-formula id="inf32">
<mml:math id="m38">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as initial guess.</p>
</list-item>
<list-item>
<p>4:&#x2003;&#x2003;if <italic>successful</italic> then</p>
</list-item>
<list-item>
<p>5:&#x2003;&#x2003;&#x2003;&#x2003;return <inline-formula id="inf33">
<mml:math id="m39">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>6:&#x2003;return <italic>nil</italic>
</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
<sec id="s3-1-2">
<label>3.1.2</label>
<title>MICP Re-formulation</title>
<p>Another reformulation approach converts bilinear constraints into mixed-integer linear constraints. The key idea is to partition the ranges of the variables in each constraint (1e) into small intervals, then approximate the constraint within each interval using the linear McCormick envelope relaxation (<xref ref-type="bibr" rid="B39">McCormick, 1976</xref>). For the bilinear constraint <inline-formula id="inf51">
<mml:math id="m58">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, we divide the range of <inline-formula id="inf52">
<mml:math id="m59">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> into <inline-formula id="inf53">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> intervals with breakpoints <inline-formula id="inf54">
<mml:math id="m61">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, and similarly divide <inline-formula id="inf55">
<mml:math id="m62">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> into <inline-formula id="inf56">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> intervals with breakpoints <inline-formula id="inf57">
<mml:math id="m64">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>We then use the Special Ordered Set of type 2 (SOS2) formulation introduced by <xref ref-type="bibr" rid="B54">Vielma and Nemhauser (2011)</xref>. This approach introduces additional continuous variables <inline-formula id="inf58">
<mml:math id="m65">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf59">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf60">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf61">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> additional binary variables <inline-formula id="inf62">
<mml:math id="m69">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf63">
<mml:math id="m70">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>&#x2308;</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>log</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2309;</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. The bilinear constraint <inline-formula id="inf64">
<mml:math id="m71">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is then reformulated into the following mixed-integer linear constraints:<disp-formula id="e3">
<mml:math id="m72">
<mml:mrow>
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mtext>are&#x2009;in&#x2009;SOS</mml:mtext>
<mml:mn>2</mml:mn>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>enforced&#x2009;by</mml:mtext>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>We refer readers to <xref ref-type="bibr" rid="B54">Vielma and Nemhauser (2011)</xref> for more details on SOS2 enforcement using binary variables. Briefly speaking, SOS2 constraint ensures that only two consecutive values in a vector can be non-zero, and these non-zero values must sum to 1. When applied to <inline-formula id="inf65">
<mml:math id="m73">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, this constraint ensures that only two adjacent elements (e.g., <inline-formula id="inf66">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf67">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>) can be non-zero, effectively identifying the specific interval <inline-formula id="inf68">
<mml:math id="m76">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> where the variable <inline-formula id="inf69">
<mml:math id="m77">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> lies within. The exact pair of consecutive non-zero elements is determined by the binary variables <inline-formula id="inf70">
<mml:math id="m78">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>For our data-driven approach, we use offline solved problems to train the learner. During online execution, the learner provides a complete set of binary variables that both fixes the binary variables in (1d) and identifies the appropriate intervals for <inline-formula id="inf71">
<mml:math id="m79">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf72">
<mml:math id="m80">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> through predicting <inline-formula id="inf73">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>&#x2019;s, such that the bilinear constraints in (1e) are replaced with their linear approximations. This reformulation transforms the problem into a quadratic program (QP) that can be solved efficiently with fast convex optimization solvers. For the learning component, we have implemented the K-nearest neighbor approach proposed by <xref ref-type="bibr" rid="B60">Zhu and Martius (2020)</xref>. The complete KNN-based algorithm is detailed in <xref ref-type="statement" rid="Algorithm_2">Algorithm 2</xref>.</p>
<p>
<statement content-type="algorithm" id="Algorithm_2">
<label>Algorithm 2</label>
<p>MICP Online Solving Procedure.<list list-type="simple">
<list-item>
<p>Input:&#x2003;<inline-formula id="inf34">
<mml:math id="m40">
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf35">
<mml:math id="m41">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>1:&#x2003;&#x2003;Find the K-nearest-neighbors <inline-formula id="inf36">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, &#x2026;, <inline-formula id="inf37">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>in <inline-formula id="inf38">
<mml:math id="m44">
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, sorted in order of increasing Euclidean distance <inline-formula id="inf39">
<mml:math id="m45">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. Retrieve <inline-formula id="inf40">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, &#x2026;, <inline-formula id="inf41">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>2:&#x2003;&#x2003;<bold>for</bold> <inline-formula id="inf42">
<mml:math id="m48">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>do</p>
</list-item>
<list-item>
<p>3:&#x2003;&#x2003;&#x2003;for <inline-formula id="inf43">
<mml:math id="m49">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>do</p>
</list-item>
<list-item>
<p>4:&#x2003;&#x2003;&#x2003;&#x2003;Identify <inline-formula id="inf44">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, through finding the interval <inline-formula id="inf45">
<mml:math id="m51">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>and <inline-formula id="inf46">
<mml:math id="m52">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>that <inline-formula id="inf47">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf48">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>stays within. Replace (<xref ref-type="disp-formula" rid="e1e">1e</xref>) with the linear constraints derived from (<xref ref-type="disp-formula" rid="e3">3</xref>) for the identified intervals, where the SOS2 constraints are satisfied by fixing the binary variables.<disp-formula id="equ1">
<mml:math id="m55">
<mml:mrow>
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>x</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
</list-item>
<list-item>
<p>6:&#x2003;&#x2003;&#x2003;Fix <inline-formula id="inf49">
<mml:math id="m56">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mo>&#x2200;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">J</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>7:&#x2003;&#x2003;&#x2003;Solve the resultant QP using applicable solvers.</p>
</list-item>
<list-item>
<p>8:&#x2003;&#x2003;&#x2003;if <italic>successful</italic>then</p>
</list-item>
<list-item>
<p>9:&#x2003;&#x2003;&#x2003;&#x2003;return <inline-formula id="inf50">
<mml:math id="m57">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>
<bold>10</bold>:&#x2003;&#x2003;return<italic>nil</italic>
</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
</sec>
<sec id="s3-2">
<label>3.2</label>
<title>Experimental problem formulations</title>
<p>In this section, we present two problems with two different robotic models that will serve as benchmarks for evaluating the data-driven MIBLP reformulation approaches described in <xref ref-type="sec" rid="s3-1">Section 3.1</xref>. The first model is a linear inverted pendulum with soft contact walls. The second model is a single rigid body with mode switching and contact constraints. For each problem, we detail how they can be formulated as MIBLPs following the structure of problem (1).</p>
<sec id="s3-2-1">
<label>3.2.1</label>
<title>Linear inverted pendulum with soft contacts</title>
<p>For this problem, we model a linear inverted pendulum on a cart that can make contact with soft walls on either side. This example is a standard benchmark problem used to verify linear controllers with discrete contacts (<xref ref-type="bibr" rid="B2">Aydinoglu et al., 2023</xref>; <xref ref-type="bibr" rid="B38">Marcucci and Tedrake, 2020</xref>; <xref ref-type="bibr" rid="B8">Cauligi et al., 2021</xref>; <xref ref-type="bibr" rid="B45">Quirynen and Di Cairano, 2023</xref>).</p>
<p>The state vector is <inline-formula id="inf74">
<mml:math id="m82">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3em"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3em"/>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf75">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the cart position, <inline-formula id="inf76">
<mml:math id="m84">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the cart velocity, <inline-formula id="inf77">
<mml:math id="m85">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the pendulum angle measured from the vertical upward direction, and <inline-formula id="inf78">
<mml:math id="m86">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is the angular velocity. The control input <inline-formula id="inf79">
<mml:math id="m87">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the horizontal force applied to the cart.</p>
<p>We use the standard linearized dynamics for the inverted pendulum around its unstable equilibrium point (<xref ref-type="bibr" rid="B38">Marcucci and Tedrake, 2020</xref>). When the pendulum tip makes contact with walls on either side, contact forces are generated according to a soft-contact model. We implement this using two binary variables indicating contact with the left or right wall at a given time, respectively. The contact force is modeled as a linear spring with contact forces proportional to the penetration depth.</p>
<p>This problem introduces binary variables, but does not introduce bilinear constraints. Nevertheless, it still fits the MIBLP framework given by (1) and therefore serves as a valid benchmark problem here. In this formulation, the parameter <inline-formula id="inf80">
<mml:math id="m88">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the initial state of the system, including cart position, velocity, pole orientation, and angular velocity.</p>
</sec>
<sec id="s3-2-2">
<label>3.2.2</label>
<title>Single rigid body with mode switching and contacts</title>
<p>For this problem, we adopt the standard single rigid body dynamics formulation (<xref ref-type="bibr" rid="B15">Di Carlo et al., 2018</xref>), including translational and rotational dynamics. However, MIBLP formulation (1) allows arbitrary rotation angles and can model contact decisions as binary variables, avoiding the small angle approximation and pre-planned contacts used in <xref ref-type="bibr" rid="B15">Di Carlo et al. (2018)</xref>. This enhanced formulation enables the planning of more aggressive and versatile motions, including transitions between quadrupedal and bipedal locomotion modes, as demonstrated in our experiments.</p>
<p>The continuous variables in this single rigid body formulation include position of geometric center of body <inline-formula id="inf81">
<mml:math id="m89">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, velocity <inline-formula id="inf82">
<mml:math id="m90">
<mml:mrow>
<mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, Z-Y-X Euler angles <inline-formula id="inf83">
<mml:math id="m91">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, angular velocity <inline-formula id="inf84">
<mml:math id="m92">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, contact positions <inline-formula id="inf85">
<mml:math id="m93">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and contact forces <inline-formula id="inf86">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. One key aspect of MIBLP formulation is that it allows bilinear terms from the moment computation <inline-formula id="inf87">
<mml:math id="m95">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, which represents the cross product between the moment arm and contact force for each toe. Another source of bilinear terms comes from the usage of full rotation matrix using Z-Y-X Euler angles <inline-formula id="inf88">
<mml:math id="m96">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>:<disp-formula id="e4">
<mml:math id="m97">
<mml:mrow>
<mml:mi mathvariant="bold-italic">R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>s</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>s</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>s</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>c</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>s</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>c</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>And the transformation from Euler angle rates to angular velocities <inline-formula id="inf89">
<mml:math id="m98">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>:<disp-formula id="e5">
<mml:math id="m99">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>For the remaining dynamics equations, discretization using Euler forward integration, friction cone constraints, and leg workspace approximation as a box-shaped region, we follow the approach in <xref ref-type="bibr" rid="B15">Di Carlo et al. (2018)</xref>.</p>
<p>For each bilinear term that appears in the dynamics, rotation matrix, and angular velocity computations, we augment the optimization variable <inline-formula id="inf90">
<mml:math id="m100">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> with a term that equals the multiplication of those variables (e.g., <inline-formula id="inf91">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>). This single term replaces the bilinear expression, such that the equation is linearized. In the case where there is a trilinear term such as <inline-formula id="inf92">
<mml:math id="m102">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, we do this recursively by introducing two auxiliary variables: first one representing the bilinear term (e.g., <inline-formula id="inf93">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>&#x3d5;</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), turning the trilinear term into a bilinear one, then apply the same approach again. We apply standard piecewise linear approximations (<xref ref-type="bibr" rid="B14">Deits and Tedrake, 2014</xref>) to <inline-formula id="inf94">
<mml:math id="m104">
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf95">
<mml:math id="m105">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> via introducing additional binary variables. Through these techniques, constraints (4), (5), and the moment equation become linear and fit into the form of constraint (1b), while the bilinear equalities are captured in constraint (1e).</p>
<p>The robot is assumed to walk on flat terrain. For contact modeling, we introduce binary variables <inline-formula id="inf96">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> for each toe <inline-formula id="inf97">
<mml:math id="m107">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf98">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> indicates the toe is in contact with the ground (toe height &#x3d; 0) and <inline-formula id="inf99">
<mml:math id="m109">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> indicates the toe is in the air. When a toe is not in contact <inline-formula id="inf100">
<mml:math id="m110">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, its contact force is constrained to zero using:<disp-formula id="e6">
<mml:math id="m111">
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>On the other hand, when the leg is in contact <inline-formula id="inf101">
<mml:math id="m112">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, the <inline-formula id="inf102">
<mml:math id="m113">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>-height of its toe position is constrained to the ground:<disp-formula id="e7">
<mml:math id="m114">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>M</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>where <inline-formula id="inf103">
<mml:math id="m115">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a constant large enough such that when <inline-formula id="inf104">
<mml:math id="m116">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, the z-height of the toe is unconstrained.</p>
<p>To enable multi-modal locomotion, we define two distinct modes: quadrupedal and bipedal locomotion, represented by a binary variable <inline-formula id="inf105">
<mml:math id="m117">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> at each timestep <inline-formula id="inf106">
<mml:math id="m118">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. In quadrupedal mode <inline-formula id="inf107">
<mml:math id="m119">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, all four legs follow an alternating contact pattern where legs lift to a predefined height <inline-formula id="inf108">
<mml:math id="m120">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and make periodic ground contact with the ground. In bipedal locomotion mode <inline-formula id="inf109">
<mml:math id="m121">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, the body is oriented with a pitch angle above a minimum threshold to maintain an upright posture, and the two front limbs are lifted above the predefined height and remain in the air, while only the two back legs alternate between contact and lift phases periodically.</p>
<p>These mode-dependent behaviors are enforced through the following constraints. For front legs <inline-formula id="inf110">
<mml:math id="m122">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, the contact sequence constraints are:<disp-formula id="e8a">
<mml:math id="m123">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(8a)</label>
</disp-formula>
<disp-formula id="e8b">
<mml:math id="m124">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(8b)</label>
</disp-formula>
</p>
<p>Which enforces periodic contact only in quadrupedal mode. For back legs <inline-formula id="inf111">
<mml:math id="m125">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>2,3</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, periodic contact constraints apply regardless of mode.</p>
<p>To enforce the upright orientation in bipedal mode, we add the constraint:<disp-formula id="e9">
<mml:math id="m126">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>M</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>where <inline-formula id="inf112">
<mml:math id="m127">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the minimum pitch angle threshold and <inline-formula id="inf113">
<mml:math id="m128">
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a large constant. This constraint is active only when <inline-formula id="inf114">
<mml:math id="m129">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> (bipedal mode), enforcing <inline-formula id="inf115">
<mml:math id="m130">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The toe position constraints are:<disp-formula id="e10a">
<mml:math id="m131">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(10a)</label>
</disp-formula>
<disp-formula id="e10b">
<mml:math id="m132">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(10b)</label>
</disp-formula>
</p>
<p>These constraints implement the mode-dependent toe lifting behavior: in quadrupedal mode, legs alternate between ground contact (<inline-formula id="inf116">
<mml:math id="m133">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> when <inline-formula id="inf117">
<mml:math id="m134">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>) and lift height (<inline-formula id="inf118">
<mml:math id="m135">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> when <inline-formula id="inf119">
<mml:math id="m136">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>), while in bipedal mode, front legs are allowed to lift higher than the standard lift height.</p>
<p>The complete formulation incorporates standard single rigid body dynamics with rotational kinematics described by <xref ref-type="disp-formula" rid="e4">Equations 4</xref>, <xref ref-type="disp-formula" rid="e5">5</xref>, and leg feasible kinematic region is approximated using box constraints, following (<xref ref-type="bibr" rid="B15">Di Carlo et al., 2018</xref>). Contact modeling constraints (<xref ref-type="disp-formula" rid="e6">Equations 6</xref>, <xref ref-type="disp-formula" rid="e7">7</xref>) enforce the complementary relationship between contact forces and toe heights. Mode-dependent locomotion behaviors are captured through contact sequence constraints (<xref ref-type="disp-formula" rid="e8a">Equation 8</xref>) for front legs, body orientation requirements (<xref ref-type="disp-formula" rid="e9">Equation 9</xref>) for bipedal mode, and toe position constraints (<xref ref-type="disp-formula" rid="e10a">Equation 10</xref>) that implement mode-dependent prescribed lift heights. The objective function consists of multiple weighted terms to achieve stable locomotion and reach the target position. The primary goal is to minimize the squared distance between the body center and target position <inline-formula id="inf120">
<mml:math id="m137">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>target</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>target</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> throughout the trajectory with a term <inline-formula id="inf121">
<mml:math id="m138">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>target</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>target</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>. To ensure smooth motion, we add penalizations on control effort (squared accelerations in <inline-formula id="inf122">
<mml:math id="m139">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf123">
<mml:math id="m140">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and pitch angle <inline-formula id="inf124">
<mml:math id="m141">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), body height variations between consecutive timesteps, and excessive foot movement during swing phases. Finally, to avoid unnecessary mode transitions between quadrupedal and bipedal configurations, we add a term <inline-formula id="inf125">
<mml:math id="m142">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> that penalizes mode switching.</p>
<p>The complete formulation results in an MIBLP of the form given in <xref ref-type="disp-formula" rid="e1a">Equation 1</xref>. In this formulation, the parameter <inline-formula id="inf126">
<mml:math id="m143">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the initial state of the system, including position, velocity, orientation, and angular velocity.</p>
</sec>
</sec>
</sec>
<sec sec-type="results|discussion" id="s4">
<label>4</label>
<title>Results and discussion</title>
<sec id="s4-1">
<label>4.1</label>
<title>Experiment on linear inverted pendulum with contacts</title>
<p>For our first benchmark problem, we implemented a linearized cart-pole system with soft contact walls on either side. The system consists of a cart with mass <inline-formula id="inf127">
<mml:math id="m144">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">cart</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1.0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> kg and an inverted pendulum with mass <inline-formula id="inf128">
<mml:math id="m145">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">pole</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.4</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> kg and length <inline-formula id="inf129">
<mml:math id="m146">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.6</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> m. The system includes walls on both sides at distances <inline-formula id="inf130">
<mml:math id="m147">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">right</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> m from the origin. When the pendulum tip contacts these walls, a soft contact force is generated proportional to the penetration depth, with stiffness coefficients <inline-formula id="inf131">
<mml:math id="m148">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>50</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> N/m for the right and left walls, respectively. The control input is limited to <inline-formula id="inf132">
<mml:math id="m149">
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mspace width="-0.10em"/>
<mml:mn>20</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> N, and the pendulum angle is constrained to <inline-formula id="inf133">
<mml:math id="m150">
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. The control objective is to stabilize the pendulum in the upright position <inline-formula id="inf134">
<mml:math id="m151">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,0,0,0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. We use a quadratic cost function with state cost matrix <inline-formula id="inf135">
<mml:math id="m152">
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>diag</mml:mtext>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1,50,1,50</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, control cost <inline-formula id="inf136">
<mml:math id="m153">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>diag</mml:mtext>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1,0.1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0.1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, and terminal cost <inline-formula id="inf137">
<mml:math id="m154">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ter</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> computed from the Discrete Algebraic Riccati equation.</p>
<p>To build our dataset for data-driven acceleration, we created a dataset with 50 and 500 samples distributed across the state space. We generated solutions for a grid of initial conditions, varying cart position: <inline-formula id="inf138">
<mml:math id="m155">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0.3</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> m, pendulum angle: <inline-formula id="inf139">
<mml:math id="m156">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> rad, cart velocity: <inline-formula id="inf140">
<mml:math id="m157">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.5</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> m/s, and angular velocity: <inline-formula id="inf141">
<mml:math id="m158">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.5</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> rad/s. For each set of initial conditions, we solved the complete MIBLP formulation using Gurobi (<xref ref-type="bibr" rid="B25">Gurobi Optimization, LLC, 2024</xref>) to obtain warm-start solutions.</p>
<p>For testing, we generated 200 random initial conditions different from the training set but drawn from the same distribution. These solutions were stored and used to warm-start both reformulation approaches. For the MPCC reformulation, we use IPOPT (<xref ref-type="bibr" rid="B55">Wachter, 2002</xref>) as the NLP solver for the complete formulation with complementary constraints. For the MICP reformulation, we use Gurobi as the convex optimization solver after fixing the binary variables.</p>
<p>
<bold>Results</bold> <xref ref-type="table" rid="T1">Table 1</xref> shows the computational performance comparison between different solving approaches. The &#x201c;No Initial Guess MPCC&#x201d; column represents solving the MPCC formulation with default zero initialization. The &#x201c;Manual Initial Guess MPCC&#x201d; column represents solving MPCC with a straight-line trajectory initialization that linearly interpolates all state variables from the initial state to the final upright equilibrium, with all control inputs and binary variables initialized to zero. The &#x201c;Enhanced Manual Initial Guess MPCC&#x201d; column represents solving MPCC with a physics-informed warm-start: if the pole is angling toward a wall, the trajectory assumes the pole tip will first move toward the wall at constant velocity, remain in contact for a specified duration, then move away from the wall at constant velocity; otherwise, it uses the straight-line interpolation. Our data-driven approaches included &#x201c;Data-driven MPCC&#x201d; using KNN to generate initial guesses for the MPCC formulation, and &#x201c;Data-driven MICP&#x201d; using KNN to predict binary variables for the MICP reformulation.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Performance comparison of different solving methods for the cart-pole problem.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th rowspan="2" align="left">Metric</th>
<th rowspan="2" align="center">No initial MPCC</th>
<th rowspan="2" align="center">Manual initial MPCC</th>
<th rowspan="2" align="center">Enhanced initial MPCC</th>
<th colspan="2" align="center">Data-driven (50)</th>
<th colspan="2" align="center">Data-driven (500)</th>
</tr>
<tr>
<th align="center">MPCC</th>
<th align="center">MICP</th>
<th align="center">MPCC</th>
<th align="center">MICP</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Amount of data</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">50</td>
<td align="center">50</td>
<td align="center">500</td>
<td align="center">500</td>
</tr>
<tr>
<td align="left">Success rate (%)<sup>&#x2a;</sup>
</td>
<td align="center">0</td>
<td align="center">42.5</td>
<td align="center">58.0</td>
<td align="center">63/74/76</td>
<td align="center">43/54/56</td>
<td align="center">78/88/90</td>
<td align="center">55/63/71</td>
</tr>
<tr>
<td align="left">Avg. solve time (ms)</td>
<td align="center">N/A</td>
<td align="center">22.0</td>
<td align="center">22.0</td>
<td align="center">25.0</td>
<td align="center">0.6</td>
<td align="center">25.0</td>
<td align="center">0.6</td>
</tr>
<tr>
<td align="left">Avg. &#x23; of neighbors</td>
<td align="center">N/A</td>
<td align="center">N/A</td>
<td align="center">N/A</td>
<td align="center">1.28</td>
<td align="center">1.30</td>
<td align="center">1.26</td>
<td align="center">1.28</td>
</tr>
<tr>
<td align="left">Avg. objective value</td>
<td align="center">N/A</td>
<td align="center">250.0</td>
<td align="center">250.0</td>
<td align="center">978.49</td>
<td align="center">1,358.15</td>
<td align="center">741.68</td>
<td align="center">1,518.59</td>
</tr>
<tr>
<td align="left">Solver</td>
<td align="center">IPOPT</td>
<td align="center">IPOPT</td>
<td align="center">IPOPT</td>
<td align="center">IPOPT</td>
<td align="center">Gurobi</td>
<td align="center">IPOPT</td>
<td align="center">Gurobi</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn>
<p>&#x2a;Success rates shown for K &#x3d; 1/2/3 KNN, neighbors for data-driven methods.</p>
</fn>
</table-wrap-foot>
</table-wrap>
<p>We evaluated the success rate, solving time, and solution quality for each method. The &#x201c;Amount of data&#x201d; row indicates the number of offline-solved problem instances in the dataset (zero for non-data-driven methods). The &#x201c;Success rate&#x201d; row shows the percentage of test problems solved successfully: for manual initialization methods, this represents a single solving attempt; for data-driven methods, the format <inline-formula id="inf142">
<mml:math id="m159">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> indicates cumulative success rates when trying <inline-formula id="inf143">
<mml:math id="m160">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> nearest neighbors sequentially until a solution is found. The &#x201c;Average solve time&#x201d; represents the mean computational time across successful problem instances, including all KNN neighbor attempts until success. We also provide a histogram showing the distribution of solving times in subplot (A) of <xref ref-type="fig" rid="F1">Figure 1</xref>, indicating how many problem instances are solved within each time interval for data-driven MPCC with 50 training samples. The distribution for 500 training samples exhibits a similar pattern. For data-driven MICP, all problem instances are solved within 1 m. The &#x201c;Avg. &#x23; of neighbors&#x201d; indicates the average number of KNN neighbors attempted before finding a successful solution. The remaining rows show the average objective value among successful solutions and the solver used.</p>
<p>
<bold>Analysis</bold> First, MPCC with default zero initialization completely fails to find feasible solutions (0% success rate), while manual straight-line initialization achieves moderate success (42.5%). The enhanced manual initialization achieves a higher success rate of 58.0%. However, designing such heuristics requires problem-specific insight and manual effort that may not scale to more complex robotic systems with higher-dimensional state spaces. The data-driven MPCC approach significantly improves performance, achieving a 76% success rate with just 50 data samples. The data-driven MICP formulation achieves a lower success rate (56%) with the same amount of data. When increasing the dataset to 500 samples, both approaches improve further, with MPCC reaching a 90% success rate and MICP improving to 71.0%. The MICP approach offers nearly a 100 <inline-formula id="inf144">
<mml:math id="m161">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> speedup with 50 samples and 45 <inline-formula id="inf145">
<mml:math id="m162">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> with 500 samples, partly due to the commercial Gurobi solver compared to the open-source IPOPT solver used for the MPCC approach.</p>
<p>It is important to note that the relaxation parameter <inline-formula id="inf146">
<mml:math id="m163">
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> plays a crucial role in the MPCC formulation to trade off success rate with numerical accuracy. In this experiment, we selected <inline-formula id="inf147">
<mml:math id="m164">
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.005</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> for a good balance. All the resultant binary variables are within 0.01 of their true binary values, and the success rate is reasonable. If we were to reduce this value to <inline-formula id="inf148">
<mml:math id="m165">
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.001</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, the accuracy of binary solutions is higher at the cost of decreasing the success rate.</p>
</sec>
<sec id="s4-2">
<label>4.2</label>
<title>Experiment on single rigid body with contacts</title>
<p>For this experiment, we evaluate our MIBLP motion planner on a quadrupedal robot model. We use the Spine-enhanced Climbing Autonomous Legged Exploration Robot (SCALER) for demonstration, and implement an SRB model that matches the robot&#x2019;s physical properties. The total mass is set to 10.0 <inline-formula id="inf149">
<mml:math id="m166">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the moment of inertia is <inline-formula id="inf150">
<mml:math id="m167">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0.15</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0.30</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0.35</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <inline-formula id="inf151">
<mml:math id="m168">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>g</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, and the body dimensions are 0.5 <inline-formula id="inf152">
<mml:math id="m169">
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mn>0.3</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mi>m</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mn>0.2</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. For detailed descriptions of this platform, we refer readers to <xref ref-type="bibr" rid="B49">Tanaka et al. (2022)</xref>. The SCALER robot is equipped with 6-axis force-torque sensors at each limb, allowing us to implement admittance control that enables tracking of the planned contact forces (<xref ref-type="bibr" rid="B46">Schperberg et al., 2023</xref>).</p>
<p>To showcase the advantages of our MIBLP formulation, which can plan trajectories without pre-assigned gait sequences or small angle approximations, we design a challenging scenario. The environment contains a low-clearance obstacle positioned at height <inline-formula id="inf153">
<mml:math id="m170">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>obs</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> between <inline-formula id="inf154">
<mml:math id="m171">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1.5</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf155">
<mml:math id="m172">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2.5</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> that requires the robot to pass underneath. The target is an elevated platform located at height <inline-formula id="inf156">
<mml:math id="m173">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>target</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>obs</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, requiring the robot to reach upward to achieve the goal position. The robot begins in bipedal configuration with an upright posture, then transition into quadrupedal mode to crawl beneath the low-clearance obstacle, and finally return to bipedal configuration to reach the elevated target position. The scenario is shown in <xref ref-type="fig" rid="F2">Figure 2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Solving time distribution for data-driven MPCC. <bold>(A)</bold> Cart-pole with 50 samples. <bold>(B)</bold> SRB with contacts using 30 samples.</p>
</caption>
<graphic xlink:href="frobt-12-1656564-g002.tif">
<alt-text content-type="machine-generated">Histogram showing two distributions of solving times. (A) Cart-pole distribution, solving time in milliseconds, mean at 25.1 milliseconds. (B) SRB with Contact distribution, solving time in seconds, mean at 4.031 seconds. Both indicated with a red dashed line showing the mean.</alt-text>
</graphic>
</fig>
<p>We sampled 30 and 80 initial conditions with horizontal positions spanning a 1-m range and initial orientation varying within <inline-formula id="inf157">
<mml:math id="m174">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>6</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> from the vertical orientation. We solved these problems using a two-stage approach: first, we solve a low-accuracy MICP formulation using coarser McCormick envelopes indicated in <xref ref-type="table" rid="T2">Table 2</xref> (column &#x201c;data collection&#x201d;, <inline-formula id="inf158">
<mml:math id="m175">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>sh</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the shoulder position for leg <inline-formula id="inf159">
<mml:math id="m176">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> relative to the center of mass) to generate initial solutions, then refine them through the MPCC formulation using the MICP solution as a warm-start to ensure bilinear constraints are exactly satisfied. This approach can be viewed as a simplified single-iteration case of iterative schemes such as Alternating Direction Method of Multipliers (ADMM) and Generalized Benders Decomposition (GBD). For applications requiring higher accuracy or when the initial MICP solution fails to converge in the MPCC refinement step, these full iterative schemes can be utilized.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Segmentations of the nonconvex variables.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Variable</th>
<th align="center">Range</th>
<th align="center">&#x23; Intervals data collection</th>
<th align="center">&#x23; Intervals testing</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<inline-formula id="inf160">
<mml:math id="m177">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (rad)</td>
<td align="center">
<inline-formula id="inf161">
<mml:math id="m178">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">4</td>
<td align="center">5</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf162">
<mml:math id="m179">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> (m)</td>
<td align="center">
<inline-formula id="inf163">
<mml:math id="m180">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>sh</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xb1;</mml:mo>
<mml:mn>0.16</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">2</td>
<td align="center">3</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf164">
<mml:math id="m181">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (N)</td>
<td align="center">
<inline-formula id="inf165">
<mml:math id="m182">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>150,150</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">2</td>
<td align="center">4</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>For testing, we generated 100 random initial conditions that were different from the training dataset and used them to evaluate both the MPCC and MICP formulations. Higher accuracy McCormick envelopes are used in these MICP tests to ensure accurate approximation of the bilinear constraints, with the number of segmentations given in <xref ref-type="table" rid="T2">Table 2</xref> (column &#x201c;testing&#x201d;).</p>
<p>
<bold>Results</bold> <xref ref-type="table" rid="T3">Table 3</xref> shows the computational performances of different solving methods. &#x201c;Manual Initial Guess MPCC&#x201d; uses a common straight-line trajectory to connect the initial and goal configurations as the initial guess for the MPCC solver. All binary variables are initialized to 0.5 to provide a neutral starting point without biasing toward any particular contact mode. &#x201c;Two-stage MICP-MPCC&#x201d; refers to the two-stage approach used for data collection described previously: first solving a coarse MICP formulation, then refining through MPCC with the MICP solution as warm-start. &#x201c;Data-driven MPCC&#x201d; uses our KNN approach to generate initial guesses for the MPCC formulation, while &#x201c;Data-driven MICP&#x201d; uses KNN to predict binary variables for the MICP reformulation.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Performance comparison of different solving methods for SRB with mode transitions and contacts.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th rowspan="2" align="left">Metric</th>
<th align="center">Manual initial</th>
<th align="center">Two-stage</th>
<th colspan="2" align="center">Data-driven (30)</th>
<th colspan="2" align="center">Data-driven (80)</th>
</tr>
<tr>
<th align="center">Guess MPCC</th>
<th align="center">MICP-MPCC</th>
<th align="center">MPCC</th>
<th align="center">MICP</th>
<th align="center">MPCC</th>
<th align="center">MICP</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Amount of data</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">30</td>
<td align="center">30</td>
<td align="center">80</td>
<td align="center">80</td>
</tr>
<tr>
<td align="left">&#x23; of KNN neighbors <inline-formula id="inf166">
<mml:math id="m183">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">N/A</td>
<td align="center">N/A</td>
<td align="center">2</td>
<td align="center">3</td>
<td align="center">2</td>
<td align="center">3</td>
</tr>
<tr>
<td align="left">Success rate (%)<sup>&#x2a;</sup>
</td>
<td align="center">0.0</td>
<td align="center">N/A</td>
<td align="center">58/84</td>
<td align="center">5/16/29</td>
<td align="center">50/86</td>
<td align="center">21/35/47</td>
</tr>
<tr>
<td align="left">Avg. solve time (s)</td>
<td align="center">N/A</td>
<td align="center">13.25</td>
<td align="center">8.13</td>
<td align="center">0.19</td>
<td align="center">6.91</td>
<td align="center">0.19</td>
</tr>
<tr>
<td align="left">Avg. &#x23; of neighbors</td>
<td align="center">N/A</td>
<td align="center">N/A</td>
<td align="center">1.32</td>
<td align="center">1.72</td>
<td align="center">1.32</td>
<td align="center">1.91</td>
</tr>
<tr>
<td align="left">Avg. objective value</td>
<td align="center">N/A</td>
<td align="center">598</td>
<td align="center">622</td>
<td align="center">608</td>
<td align="center">629</td>
<td align="center">608</td>
</tr>
<tr>
<td align="left">Solver</td>
<td align="center">IPOPT</td>
<td align="center">Gurobi &#x2b; IPOPT</td>
<td align="center">IPOPT</td>
<td align="center">Gurobi</td>
<td align="center">IPOPT</td>
<td align="center">Gurobi</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn>
<p>&#x2a;Success rates shown for K &#x3d; 1/2 (MPCC) or K &#x3d; 1/2/3 (MICP) KNN neighbors.</p>
</fn>
</table-wrap-foot>
</table-wrap>
<p>
<bold>Analysis</bold> We observe that both data-driven approaches benefit substantially from warm-starting with the collected dataset. Manual initialization achieves a 0% success rate, failing to find feasible solutions for any test cases. The two-stage MICP-MPCC approach used for data collection demonstrates feasibility but requires <inline-formula id="inf167">
<mml:math id="m184">
<mml:mrow>
<mml:mn>13.25</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> on average to solve. In contrast, with 30 training samples, MPCC achieves up to 84% success rate while MICP reaches 29%; with 80 training samples, MPCC improves to 86% while MICP achieves 47%.</p>
<p>Given the same amount of data, MPCC shows higher success rates, matching the trend observed in the cart-pole experiment where MPCC also outperformed MICP with limited training data. For computational speed, MICP demonstrates a significant advantage, solving problems in approximately <inline-formula id="inf168">
<mml:math id="m185">
<mml:mrow>
<mml:mn>0.19</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> compared to <inline-formula id="inf169">
<mml:math id="m186">
<mml:mrow>
<mml:mn>6.91</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>8.13</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> for MPCC, more than 35 <inline-formula id="inf170">
<mml:math id="m187">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> faster. This speedup makes MICP particularly suitable for real-time applications.</p>
</sec>
<sec id="s4-3">
<label>4.3</label>
<title>Discussion on experiment results</title>
<p>According to our experiments on both the linear inverted pendulum and single rigid body control problems, data-driven methods significantly improve the performance of both MPCC and MICP reformulations. As we increased the amount of data, we observed a general trend of improvement in success rates for both approaches. The key distinction between MPCC and MICP reformulations lies in the solving speeds and the amount of data used to achieve similar success rates.</p>
<p>For both the linear inverted pendulum problem and the single rigid body problem, the MPCC formulation achieves higher success rates than the MICP formulation with the same amount of data. We noticed that IPOPT rarely modifies the initial binary guesses for <inline-formula id="inf171">
<mml:math id="m188">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">J</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Therefore, this difference stems from how the bilinear constraints (1e) are handled. The MICP reformulation converts them into multiple linear envelopes with additional binary variables <inline-formula id="inf172">
<mml:math id="m189">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The learner directly provides <inline-formula id="inf173">
<mml:math id="m190">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, which fixes the intervals <inline-formula id="inf174">
<mml:math id="m191">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf175">
<mml:math id="m192">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> within which <inline-formula id="inf176">
<mml:math id="m193">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf177">
<mml:math id="m194">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> must lie. The convex solver then finds <inline-formula id="inf178">
<mml:math id="m195">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf179">
<mml:math id="m196">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> inside these intervals. If the learner predicts incorrect intervals, the resulting problem becomes infeasible, requiring the learner to try alternative neighbors. Thus, a sufficiently large dataset is necessary to train the learner to predict the correct intervals consistently. In contrast, for MPCC re-formulation, KNN provides initial guesses for <inline-formula id="inf180">
<mml:math id="m197">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf181">
<mml:math id="m198">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, then the NLP solver uses numerical schemes to satisfy (1e) and other constraints. Since NLP solvers are designed to satisfy nonlinear constraints, even restoring from infeasible initial guesses, the MPCC approach demonstrates greater robustness with limited data, resulting in higher success rates.</p>
<p>On the other hand, the MICP formulation demonstrates significantly faster solving speeds when provided with sufficient data. This advantage likely stems from the efficiency of modern convex optimization solvers. For MPCC problems solved with IPOPT, even when we relax the complementarity constraint (2) to values between 0.005 and 0.01 and provide quality warm-start solutions, the solver frequently encounters numerical difficulties and shows slow convergence. The complementarity constraint (2) remains inherently challenging to satisfy. Notably, for the linear inverted pendulum with contact, directly solving using MICP with Gurobi can achieve global optimality at 300 Hz without any data-driven acceleration (<xref ref-type="bibr" rid="B30">Lin, 2024</xref>). In addition, numerical accuracy remains a concern with the MPCC approach. Although we only relax constraint (2) to values between 0.005 and 0.01, less than 1% of the binary values, these small relaxations can still lead to accuracy issues in certain cases.</p>
<p>The amount of training data required for effective data-driven MIBLP acceleration depends on the dimensionality of <inline-formula id="inf182">
<mml:math id="m199">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and the problem complexity, such as the number of constraints. Previous theoretical work by <xref ref-type="bibr" rid="B26">Hauser (2016)</xref> has established worst-case bounds for data requirements in parametric optimization problems, showing that the amount of data needed scales exponentially with the dimensionality of <inline-formula id="inf183">
<mml:math id="m200">
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. While <xref ref-type="bibr" rid="B26">Hauser (2016)</xref> assume globally optimal solutions, they provide useful guidance for understanding scaling behavior when using locally optimal warm-start solutions. In practice, the data requirements can be significantly better than these theoretical bounds, especially for the MPCC formulation since NLP solvers are often capable of converging from poor initial guesses to feasible solutions.</p>
<p>Therefore, despite the benefits of data-driven acceleration for solving optimization problems, different formulations exhibit distinct performance characteristics and dataset requirements. The choice of problem formulation is crucial for maximizing the effectiveness of data-driven optimization methods.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<label>5</label>
<title>Conclusion</title>
<p>In this paper, we present a comparative study of different reformulation strategies for solving MIBLPs aided by data for robot motion planning applications. We conducted numerical experiments on two motion planning problems for a linear inverted pendulum with contact walls and for quadrupedal locomotion involving quadruped-bipedal mode transformations.</p>
<p>While this work focuses on reformulating the MIBLP problem into more tractable problem types such that existing methods can directly apply, future work can focus on developing innovative data-driven methods tailored specifically to MIBLPs.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/supplementary material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>XL: Writing &#x2013; original draft, Writing &#x2013; review and editing.</p>
</sec>
<ack>
<title>Acknowledgements</title>
<p>The author thanks Yusuke Tanaka for providing materials and assistance with figure preparation and visualization.</p>
</ack>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The author declares that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="ai-statement" id="s10">
<title>Generative AI statement</title>
<p>The author(s) declare that no Generative AI was used in the creation of this manuscript.</p>
<p>Any alternative text (alt text) provided alongside figures in this article has been generated by Frontiers with the support of artificial intelligence and reasonable efforts have been made to ensure accuracy, including review by the authors wherever possible. If you identify any issues, please contact us.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<fn-group>
<fn id="n1" fn-type="custom" custom-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2367409/overview">Yanran Ding</ext-link>, University of Michigan, United States</p>
</fn>
<fn id="n2" fn-type="custom" custom-type="reviewed-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2185765/overview">Roohollah Barzamini</ext-link>, Islamic Azad University Central Tehran Branch, Iran</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3193439/overview">Antony Thomas</ext-link>, International Institute of Information Technology, Hyderabad, India</p>
</fn>
</fn-group>
<ref-list>
<title>References</title>
<ref id="B1">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Anitescu</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Potra</surname>
<given-names>F. A.</given-names>
</name>
</person-group> (<year>1997</year>). <article-title>Formulating dynamic multi-rigid-body contact problems with friction as solvable linear complementarity problems</article-title>. <source>Nonlinear Dyn.</source> <volume>14</volume>, <fpage>231</fpage>&#x2013;<lpage>247</lpage>. <pub-id pub-id-type="doi">10.1023/a:1008292328909</pub-id>
</mixed-citation>
</ref>
<ref id="B2">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Aydinoglu</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Wei</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Posa</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Consensus complementarity control for multi-contact mpc</article-title>. <source>arXiv Prepr. arXiv:2304</source>. <pub-id pub-id-type="doi">10.1109/TRO.2024.3435423</pub-id>
</mixed-citation>
</ref>
<ref id="B3">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Banerjee</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Cauligi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Pavone</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Deep learning warm starts for trajectory optimization on the international space station</article-title>
</mixed-citation>
</ref>
<ref id="B4">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bemporad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Morari</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Dua</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Pistikopoulos</surname>
<given-names>E. N.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>The explicit linear quadratic regulator for constrained systems</article-title>. <source>Automatica</source> <volume>38</volume>, <fpage>3</fpage>&#x2013;<lpage>20</lpage>. <pub-id pub-id-type="doi">10.1016/s0005-1098(01)00174-1</pub-id>
</mixed-citation>
</ref>
<ref id="B5">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Boyd</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Mattingley</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2007</year>). <source>Branch and bound methods</source>. <publisher-name>Stanford University</publisher-name>.</mixed-citation>
</ref>
<ref id="B6">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Briden</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Choi</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Yun</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Linares</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Cauligi</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Constraint-informed learning for warm-starting trajectory optimization</article-title>. <source>J. Guid. Control, Dyn.</source> <volume>48</volume>, <fpage>2272</fpage>&#x2013;<lpage>2287</lpage>. <pub-id pub-id-type="doi">10.2514/1.g008791</pub-id>
</mixed-citation>
</ref>
<ref id="B7">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Carvalho</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Le</surname>
<given-names>A. T.</given-names>
</name>
<name>
<surname>Baierl</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Koert</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Peters</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2023</year>). <source>Motion planning diffusion: learning and planning of robot motions with diffusion models</source> in <conf-name>2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name> (<publisher-name>IEEE</publisher-name>),<fpage>1916</fpage>&#x2013;<lpage>1923</lpage>.</mixed-citation>
</ref>
<ref id="B8">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cauligi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Culbertson</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Schmerling</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Schwager</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Stellato</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Pavone</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Coco: online mixed-integer control via supervised learning</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>7</volume>, <fpage>1447</fpage>&#x2013;<lpage>1454</lpage>. <pub-id pub-id-type="doi">10.1109/lra.2021.3135931</pub-id>
</mixed-citation>
</ref>
<ref id="B10">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Conforti</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Cornu&#xe9;jols</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Zambelli</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Conforti</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Cornu&#xe9;jols</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Zambelli</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2014</year>). <source>Integer programming models</source>. <publisher-name>Springer</publisher-name>.</mixed-citation>
</ref>
<ref id="B11">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Dai</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Valenzuela</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Tedrake</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Whole-body motion planning with centroidal dynamics and full kinematics</article-title>,&#x201d; in <conf-name>IEEE RAS Int. Conf. on Humanoid Robots</conf-name>, <fpage>295</fpage>&#x2013;<lpage>302</lpage>. <pub-id pub-id-type="doi">10.1109/humanoids.2014.7041375</pub-id>
</mixed-citation>
</ref>
<ref id="B12">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dai</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Izatt</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Tedrake</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Global inverse kinematics via mixed-integer convex optimization</article-title>. <source>Int. J. Robotics Res.</source> <volume>38</volume>, <fpage>1420</fpage>&#x2013;<lpage>1441</lpage>. <pub-id pub-id-type="doi">10.1177/0278364919846512</pub-id>
</mixed-citation>
</ref>
<ref id="B13">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dalal</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Mendonca</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Khaky</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Salakhutdinov</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Pathak</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Neural mp: a generalist neural motion planner</article-title>. <source>arXiv Prepr. arXiv:2409.05864</source>. <pub-id pub-id-type="doi">10.48550/arXiv.2409.05864</pub-id>
</mixed-citation>
</ref>
<ref id="B14">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Deits</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Tedrake</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Footstep planning on uneven terrain with mixed-integer convex optimization</article-title>,&#x201d; in <conf-name>2014 IEEE-RAS international conference on humanoid robots (IEEE)</conf-name>, <fpage>279</fpage>&#x2013;<lpage>286</lpage>.</mixed-citation>
</ref>
<ref id="B15">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Di Carlo</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wensing</surname>
<given-names>P. M.</given-names>
</name>
<name>
<surname>Katz</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Bledt</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Dynamic locomotion in the mit cheetah 3 through convex model-predictive control</article-title>,&#x201d; in <conf-name>2018 IEEE/RSJ international conference on intelligent robots and systems (IROS)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>9</lpage>.</mixed-citation>
</ref>
<ref id="B16">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Ding</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Khazoom</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Chignoli</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2022</year>). &#x201c;<article-title>Orientation-aware model predictive control with footstep adaptation for dynamic humanoid walking</article-title>,&#x201d; in <conf-name>2022 IEEE-RAS 21st International Conference on Humanoid Robots (Humanoids)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>299</fpage>&#x2013;<lpage>305</lpage>.</mixed-citation>
</ref>
<ref id="B17">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Drumwright</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Rapidly computable viscous friction and no-slip rigid contact models</article-title>. <source>arXiv Prepr. arXiv:1504.00719</source>. <pub-id pub-id-type="doi">10.48550/arXiv.1504.00719</pub-id>
</mixed-citation>
</ref>
<ref id="B18">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dua</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Pistikopoulos</surname>
<given-names>E. N.</given-names>
</name>
</person-group> (<year>1999</year>). <article-title>Algorithms for the solution of multiparametric mixed-integer nonlinear optimization problems</article-title>. <source>Industrial and Eng. Chem. Res.</source> <volume>38</volume>, <fpage>3976</fpage>&#x2013;<lpage>3987</lpage>. <pub-id pub-id-type="doi">10.1021/ie980792u</pub-id>
</mixed-citation>
</ref>
<ref id="B19">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dua</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Pistikopoulos</surname>
<given-names>E. N.</given-names>
</name>
</person-group> (<year>2000</year>). <article-title>An algorithm for the solution of multiparametric mixed integer linear programming problems</article-title>. <source>Ann. Operations Res.</source> <volume>99</volume>, <fpage>123</fpage>&#x2013;<lpage>139</lpage>. <pub-id pub-id-type="doi">10.1023/a:1019241000636</pub-id>
</mixed-citation>
</ref>
<ref id="B20">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Fiacco</surname>
<given-names>A. V.</given-names>
</name>
</person-group> (<year>1983</year>). <source>Ntroduction to sensitivity and stability analysis in nonlinear programming</source> <source>I</source>, <volume>165</volume>. <publisher-name>Academic Press</publisher-name>.</mixed-citation>
</ref>
<ref id="B21">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fischetti</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Monaci</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A branch-and-cut algorithm for mixed-integer bilinear programming</article-title>. <source>Eur. J. Operational Res.</source> <volume>282</volume>, <fpage>506</fpage>&#x2013;<lpage>514</lpage>. <pub-id pub-id-type="doi">10.1016/j.ejor.2019.09.043</pub-id>
</mixed-citation>
</ref>
<ref id="B22">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Gal</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2010</year>). <source>Postoptimal analyses in Parametric Programming, and Related Topics: degeneracy, multicriteria decision making, redundancy (Walter de Gruyter)</source>.</mixed-citation>
</ref>
<ref id="B23">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Geoffrion</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>1972</year>). <article-title>Generalized benders decomposition</article-title>. <source>J. Optim. Theory Appl.</source> <volume>10</volume>, <fpage>237</fpage>&#x2013;<lpage>260</lpage>. <pub-id pub-id-type="doi">10.1007/bf00934810</pub-id>
</mixed-citation>
</ref>
<ref id="B24">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gupte</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ahmed</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Cheon</surname>
<given-names>M. S.</given-names>
</name>
<name>
<surname>Dey</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Solving mixed integer bilinear problems using milp formulations</article-title>. <source>SIAM J. Optim.</source> <volume>23</volume>, <fpage>721</fpage>&#x2013;<lpage>744</lpage>. <pub-id pub-id-type="doi">10.1137/110836183</pub-id>
</mixed-citation>
</ref>
<ref id="B25">
<mixed-citation publication-type="book">
<collab>Gurobi Optimization, LLC</collab> (<year>2024</year>). <source>Gurobi optimizer reference manual</source>.</mixed-citation>
</ref>
<ref id="B26">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hauser</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Learning the problem-optimum map: analysis and application to global optimization in robotics</article-title>. <source>IEEE Trans. Robotics</source> <volume>33</volume>, <fpage>141</fpage>&#x2013;<lpage>152</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2016.2623345</pub-id>
</mixed-citation>
</ref>
<ref id="B27">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hogan</surname>
<given-names>F. R.</given-names>
</name>
<name>
<surname>Rodriguez</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Reactive planar non-prehensile manipulation with hybrid model predictive control</article-title>. <source>Int. J. Robotics Res.</source> <volume>39</volume>, <fpage>755</fpage>&#x2013;<lpage>773</lpage>. <pub-id pub-id-type="doi">10.1177/0278364920913938</pub-id>
</mixed-citation>
</ref>
<ref id="B28">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kojima</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Megiddo</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Noma</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Yoshise</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>1991</year>). <article-title>A unified approach to interior point algorithms for linear complementarity problems: a summary</article-title>. <source>Operations Res. Lett.</source> <volume>10</volume>, <fpage>247</fpage>&#x2013;<lpage>254</lpage>. <pub-id pub-id-type="doi">10.1016/0167-6377(91)90010-m</pub-id>
</mixed-citation>
</ref>
<ref id="B9">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Le Cleac&#x2019;h</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Howell</surname>
<given-names>T. A.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>C.-Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Bishop</surname>
<given-names>A.</given-names>
</name>
<etal/>
</person-group>(<year>2024</year>). <article-title>Fast contact-implicit model predictive control</article-title>. <source>IEEE Transactions on Robotics</source> <volume>40</volume>, <fpage>1617</fpage>&#x2013;<lpage>1629</lpage>. <pub-id pub-id-type="doi">10.1109/TRO.2024.3351554</pub-id>
</mixed-citation>
</ref>
<ref id="B29">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Dieng</surname>
<given-names>A. B.</given-names>
</name>
<name>
<surname>Beeson</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2024</year>). &#x201c;<article-title>Constraint-aware diffusion models for trajectory optimization</article-title>,&#x201d; in <conf-name>International Conference on Dynamic Data Driven Applications Systems</conf-name> (<publisher-name>Springer</publisher-name>), <fpage>308</fpage>&#x2013;<lpage>316</lpage>.</mixed-citation>
</ref>
<ref id="B30">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Accelerate hybrid model predictive control using generalized benders decomposition</article-title>. <source>arXiv Prepr. arXiv:2406.00780</source>. <pub-id pub-id-type="doi">10.48550/arXiv.2406.00780</pub-id>
</mixed-citation>
</ref>
<ref id="B31">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Shen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Fernandez</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>D. W.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Optimization based motion planning for multi-limbed vertical climbing robots</article-title>,&#x201d; in <conf-name>2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1918</fpage>&#x2013;<lpage>1925</lpage>.</mixed-citation>
</ref>
<ref id="B32">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Ahn</surname>
<given-names>M. S.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Designing multi-stage coupled convex programming with data-driven mccormick envelope relaxations for motion planning</article-title>,&#x201d; in <conf-name>2021 IEEE/RSJ International Conference on Robotics and Automation (ICRA)</conf-name> (<publisher-name>IEEE</publisher-name>).</mixed-citation>
</ref>
<ref id="B33">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Fernandez</surname>
<given-names>G. I.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>D. W.</given-names>
</name>
</person-group> (<year>2022</year>). &#x201c;<article-title>Reduce: reformulation of mixed integer programs using data from unsupervised clusters for learning efficient strategies</article-title>,&#x201d; in <conf-name>2022 International Conference on Robotics and Automation (ICRA)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>4459</fpage>&#x2013;<lpage>4465</lpage>.</mixed-citation>
</ref>
<ref id="B34">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Fernandez</surname>
<given-names>G. I.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>D. W.</given-names>
</name>
</person-group> (<year>2024</year>). &#x201c;<article-title>Evaluating data-driven performances of mixed integer bilinear formulations for book placement planning</article-title>,&#x201d; in <conf-name>2024 21st International Conference on Ubiquitous Robots (UR)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>482</fpage>&#x2013;<lpage>490</lpage>.</mixed-citation>
</ref>
<ref id="B35">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>Z.-Q.</given-names>
</name>
<name>
<surname>Pang</surname>
<given-names>J.-S.</given-names>
</name>
<name>
<surname>Ralph</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>1996</year>). <source>Mathematical programs with equilibrium constraints</source>. <publisher-name>Cambridge University Press</publisher-name>.</mixed-citation>
</ref>
<ref id="B36">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Marchand</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Martin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Weismantel</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Wolsey</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Cutting planes in integer and mixed integer</article-title>. <source>Discrete Optim. State Art</source> <volume>11</volume>, <fpage>397</fpage>. <pub-id pub-id-type="doi">10.1016/S0166-218X(01)00348-1</pub-id>
</mixed-citation>
</ref>
<ref id="B37">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Marcucci</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2024</year>). <source>Graphs of convex sets with applications to optimal control and motion planning</source>. <publisher-loc>Cambridge, MA</publisher-loc>: <publisher-name>Massachusetts Institute of Technology</publisher-name>.</mixed-citation>
</ref>
<ref id="B38">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Marcucci</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Tedrake</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Warm start of mixed-integer programs for model predictive control of hybrid systems</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>66</volume>, <fpage>2433</fpage>&#x2013;<lpage>2448</lpage>. <pub-id pub-id-type="doi">10.1109/tac.2020.3007688</pub-id>
</mixed-citation>
</ref>
<ref id="B39">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>McCormick</surname>
<given-names>G. P.</given-names>
</name>
</person-group> (<year>1976</year>). <article-title>Computability of global solutions to factorable nonconvex programs: part i&#x2014;convex underestimating problems</article-title>. <source>Math. Program.</source> <volume>10</volume>, <fpage>147</fpage>&#x2013;<lpage>175</lpage>. <pub-id pub-id-type="doi">10.1007/bf01580665</pub-id>
</mixed-citation>
</ref>
<ref id="B40">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nair</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Bartunov</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Gimeno</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>von Glehn</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Lichocki</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Lobov</surname>
<given-names>I.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Solving mixed integer programs using neural networks</article-title>. <source>arXiv Prepr. arXiv:2012.13349</source>. <pub-id pub-id-type="doi">10.48550/arXiv.2012.13349</pub-id>
</mixed-citation>
</ref>
<ref id="B41">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Park</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Boyd</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>A semidefinite programming method for integer convex quadratic minimization</article-title>. <source>Optim. Lett.</source> <volume>12</volume>, <fpage>499</fpage>&#x2013;<lpage>518</lpage>. <pub-id pub-id-type="doi">10.1007/s11590-017-1132-y</pub-id>
</mixed-citation>
</ref>
<ref id="B42">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pistikopoulos</surname>
<given-names>E. N.</given-names>
</name>
<name>
<surname>Dua</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Bozinis</surname>
<given-names>N. A.</given-names>
</name>
<name>
<surname>Bemporad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Morari</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>On-line optimization via off-line parametric optimization tools</article-title>. <source>Comput. and Chem. Eng.</source> <volume>26</volume>, <fpage>175</fpage>&#x2013;<lpage>185</lpage>. <pub-id pub-id-type="doi">10.1016/s0098-1354(01)00739-6</pub-id>
</mixed-citation>
</ref>
<ref id="B43">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Posa</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Cantu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Tedrake</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>A direct method for trajectory optimization of rigid bodies through contact</article-title>. <source>Int. J. Robotics Res.</source> <volume>33</volume>, <fpage>69</fpage>&#x2013;<lpage>81</lpage>. <pub-id pub-id-type="doi">10.1177/0278364913506757</pub-id>
</mixed-citation>
</ref>
<ref id="B44">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Power</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Berenson</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Variational inference mpc using normalizing flows and out-of-distribution projection</article-title>. <source>arXiv Prepr. arXiv:2205.04667</source>. <pub-id pub-id-type="doi">10.48550/arXiv.2205.04667</pub-id>
</mixed-citation>
</ref>
<ref id="B45">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Quirynen</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Di Cairano</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Tailored presolve techniques in branch-and-bound method for fast mixed-integer optimal control applications</article-title>. <source>Optim. Control Appl. Methods</source> <volume>44</volume>, <fpage>3139</fpage>&#x2013;<lpage>3167</lpage>. <pub-id pub-id-type="doi">10.1002/oca.3030</pub-id>
</mixed-citation>
</ref>
<ref id="B46">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Schperberg</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Shirai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Tanaka</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2023</year>). &#x201c;<article-title>Adaptive force controller for contact-rich robotic systems using an unscented kalman filter</article-title>,&#x201d; in <conf-name>2023 IEEE-RAS 22nd International Conference on Humanoid Robots (Humanoids)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>8</lpage>.</mixed-citation>
</ref>
<ref id="B47">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shirai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Tanaka</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Mehta</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Risk-aware motion planning for a limbed robot with stochastic gripping forces using nonlinear programming</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>5</volume>, <fpage>4994</fpage>&#x2013;<lpage>5001</lpage>. <pub-id pub-id-type="doi">10.1109/lra.2020.3001503</pub-id>
</mixed-citation>
</ref>
<ref id="B48">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Stein</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Oldenburg</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Marquardt</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Continuous reformulations of discrete&#x2013;continuous optimization problems</article-title>. <source>Comput. and Chem. Eng.</source> <volume>28</volume>, <fpage>1951</fpage>&#x2013;<lpage>1966</lpage>. <pub-id pub-id-type="doi">10.1016/j.compchemeng.2004.03.011</pub-id>
</mixed-citation>
</ref>
<ref id="B49">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tanaka</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Shirai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Schperberg</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kato</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Swerdlow</surname>
<given-names>A.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). &#x201c;<article-title>Scaler: a tough versatile quadruped free-climber robot</article-title>,&#x201d; in <conf-name>2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>5632</fpage>&#x2013;<lpage>5639</lpage>.</mixed-citation>
</ref>
<ref id="B50">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tang</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Hauser</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>A data-driven indirect method for nonlinear optimal control</article-title>. <source>Astrodynamics</source> <volume>3</volume>, <fpage>345</fpage>&#x2013;<lpage>359</lpage>. <pub-id pub-id-type="doi">10.1007/s42064-019-0051-3</pub-id>
</mixed-citation>
</ref>
<ref id="B51">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Agrawal</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Faenza</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Reinforcement learning for integer programming: learning to cut</article-title>,&#x201d; in <conf-name>International Conference on Machine Learning</conf-name> (<publisher-name>PMLR</publisher-name>), <fpage>9367</fpage>&#x2013;<lpage>9376</lpage>.</mixed-citation>
</ref>
<ref id="B52">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>T&#xf8;ndel</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Johansen</surname>
<given-names>T. A.</given-names>
</name>
<name>
<surname>Bemporad</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2003</year>). <article-title>An algorithm for multi-parametric quadratic programming and explicit mpc solutions</article-title>. <source>Automatica</source> <volume>39</volume>, <fpage>489</fpage>&#x2013;<lpage>497</lpage>. <pub-id pub-id-type="doi">10.1016/s0005-1098(02)00250-9</pub-id>
</mixed-citation>
</ref>
<ref id="B53">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tordesillas</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Lopez</surname>
<given-names>B. T.</given-names>
</name>
<name>
<surname>How</surname>
<given-names>J. P.</given-names>
</name>
</person-group> (<year>2019</year>). <source>Faster: fast and safe trajectory planner for flights in unknown environments</source> in <conf-name>2019 IEEE/RSJ international conference on intelligent robots and systems (IROS)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1934</fpage>&#x2013;<lpage>1940</lpage>.</mixed-citation>
</ref>
<ref id="B54">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vielma</surname>
<given-names>J. P.</given-names>
</name>
<name>
<surname>Nemhauser</surname>
<given-names>G. L.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Modeling disjunctive constraints with a logarithmic number of binary variables and constraints</article-title>. <source>Math. Program.</source> <volume>128</volume>, <fpage>49</fpage>&#x2013;<lpage>72</lpage>. <pub-id pub-id-type="doi">10.1007/s10107-009-0295-4</pub-id>
</mixed-citation>
</ref>
<ref id="B55">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Wachter</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2002</year>). <source>An interior point algorithm for large-scale nonlinear optimization with applications in process engineering</source>. <publisher-name>Carnegie Mellon University</publisher-name>.</mixed-citation>
</ref>
<ref id="B56">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Williams</surname>
<given-names>H. P.</given-names>
</name>
</person-group> (<year>2013</year>). <source>Model building in mathematical programming</source>. <publisher-name>John Wiley and Sons</publisher-name>.</mixed-citation>
</ref>
<ref id="B57">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Winkler</surname>
<given-names>A. W.</given-names>
</name>
<name>
<surname>Bellicoso</surname>
<given-names>C. D.</given-names>
</name>
<name>
<surname>Hutter</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Buchli</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Gait and trajectory optimization for legged systems through phase-based end-effector parameterization</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>3</volume>, <fpage>1560</fpage>&#x2013;<lpage>1567</lpage>. <pub-id pub-id-type="doi">10.1109/lra.2018.2798285</pub-id>
</mixed-citation>
</ref>
<ref id="B58">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Yunt</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Glocker</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2006</year>). &#x201c;<article-title>Trajectory optimization of mechanical hybrid systems using sumt</article-title>,&#x201d; in <conf-name>9th IEEE International Workshop on Advanced Motion Control, 2006</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>665</fpage>&#x2013;<lpage>671</lpage>.</mixed-citation>
</ref>
<ref id="B59">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>D. W.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Transition motion planning for multi-limbed vertical climbing robots using complementarity constraints</article-title>,&#x201d; in <conf-name>2021 IEEE International Conference on Robotics and Automation (ICRA)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>2033</fpage>&#x2013;<lpage>2039</lpage>.</mixed-citation>
</ref>
<ref id="B60">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhu</surname>
<given-names>J.-J.</given-names>
</name>
<name>
<surname>Martius</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Fast non-parametric learning to accelerate mixed-integer programming for hybrid model predictive control</article-title>. <source>IFAC-Papers Online</source> <volume>53</volume>, <fpage>5239</fpage>&#x2013;<lpage>5245</lpage>. <pub-id pub-id-type="doi">10.1016/j.ifacol.2020.12.1200</pub-id>
</mixed-citation>
</ref>
</ref-list>
</back>
</article>