<?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">1667688</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2025.1667688</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>Design of modified fractional-order PID controller for lower limb rehabilitation exoskeleton robot based on an improved elk herd hybridized with grey wolf and multi-verse optimization algorithms</article-title>
<alt-title alt-title-type="left-running-head">Mohammed Ali et al.</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.1667688">10.3389/frobt.2025.1667688</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Mohammed Ali</surname>
<given-names>Noor Sabah</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<xref ref-type="author-notes" rid="fn1">
<sup>&#x2020;</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/3110588"/>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Conceptualization" vocab-term-identifier="https://credit.niso.org/contributor-roles/conceptualization/">Conceptualization</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Data curation" vocab-term-identifier="https://credit.niso.org/contributor-roles/data-curation/">Data curation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Formal analysis" vocab-term-identifier="https://credit.niso.org/contributor-roles/formal-analysis/">Formal Analysis</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Investigation" vocab-term-identifier="https://credit.niso.org/contributor-roles/investigation/">Investigation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Methodology" vocab-term-identifier="https://credit.niso.org/contributor-roles/methodology/">Methodology</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Project administration" vocab-term-identifier="https://credit.niso.org/contributor-roles/project-administration/">Project administration</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Resources" vocab-term-identifier="https://credit.niso.org/contributor-roles/resources/">Resources</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Software" vocab-term-identifier="https://credit.niso.org/contributor-roles/software/">Software</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Validation" vocab-term-identifier="https://credit.niso.org/contributor-roles/validation/">Validation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Visualization" vocab-term-identifier="https://credit.niso.org/contributor-roles/visualization/">Visualization</role>
<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>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Saleh</surname>
<given-names>Muna Hadi</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Supervision" vocab-term-identifier="https://credit.niso.org/contributor-roles/supervision/">Supervision</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>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Abbas</surname>
<given-names>Nizar Hadi</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Supervision" vocab-term-identifier="https://credit.niso.org/contributor-roles/supervision/">Supervision</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>
</contrib>
</contrib-group>
<aff id="aff1">
<label>1</label>
<institution>Department of Electrical Engineering, College of Engineering, University of Baghdad</institution>, <city>Baghdad</city>, <country country="IQ">Iraq</country>
</aff>
<aff id="aff2">
<label>2</label>
<institution>Department of Electrical Engineering, College of Engineering, University of Wasit</institution>, <city>Wasit</city>, <country country="IQ">Iraq</country>
</aff>
<author-notes>
<corresp id="c001">
<label>&#x2a;</label>Correspondence: Noor Sabah Mohammed Ali, <email xlink:href="mailto:Noor.Ali2302p@coeng.uobaghdad.edu.iq">Noor.Ali2302p@coeng.uobaghdad.edu.iq</email>, <email xlink:href="mailto:noors@uowasit.edu.iq">noors@uowasit.edu.iq</email>
</corresp>
<fn fn-type="other" id="fn1">
<label>
<sup>&#x2020;</sup>
</label>
<p>ORCID: Noor Sabah Mohammed Ali, <ext-link ext-link-type="uri" xlink:href="https://orcid.org/0000-0003-1512-1158">orcid.org/0000-0003-1512-1158</ext-link>
</p>
</fn>
</author-notes>
<pub-date publication-format="electronic" date-type="pub" iso-8601-date="2025-11-27">
<day>27</day>
<month>11</month>
<year>2025</year>
</pub-date>
<pub-date publication-format="electronic" date-type="collection">
<year>2025</year>
</pub-date>
<volume>12</volume>
<elocation-id>1667688</elocation-id>
<history>
<date date-type="received">
<day>17</day>
<month>07</month>
<year>2025</year>
</date>
<date date-type="rev-recd">
<day>01</day>
<month>09</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>04</day>
<month>09</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Mohammed Ali, Saleh and Abbas.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Mohammed Ali, Saleh and Abbas</copyright-holder>
<license>
<ali:license_ref start_date="2025-11-27">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>Rehabilitation robots are widely recognized as vital for restoring motor function in patients with lower-limb impairments. A Modified Fractional-Order Proportional-Integral-Derivative (MFOPID) controller is proposed to improve trajectory tracking of a 2-DoF Lower Limb Rehabilitation Exoskeleton Robot (LLRER). The classical FOPID is augmented with a modified control formulation by which steady-state error is reduced and the transient response is sharpened. Controller gains and fractional orders were tuned offline using a hybrid metaheuristic Improved Elk Herd Optimization hybridized with Grey Wolf and Multi-Verse Optimization algorithms (IElk-GM) so that exploration and exploitation are balanced. Superiority over the classical FOPID was demonstrated in simulations under linear and nonlinear trajectories, with disturbances and parametric uncertainty: 0% overshoot was achieved at both hip and knee joints; settling time was reduced from 6.998 s to 0.430 s (hip) and from 7.150 s to 0.829 s (knee); ITAE was reduced from 23.39 to 2.694 (hip) and from 16.95 to 3.522 (knee); and the hip steady-state error decreased from 0.018 Rad to 0.0015 Rad, while the knee steady-state error remained within 0.011 Rad. Control torques remained bounded under linear tracking (&#x3c;345 N&#xb7;m at the hip; &#x3c;95 N&#xb7;m at the knee) and under nonlinear cosine tracking (&#x3c;350 N&#xb7;m at the hip; &#x3c;100 N&#xb7;m at the knee). These results indicate that safer, smoother, and more effective robot-assisted rehabilitation can be supported by the proposed controller.</p>
</abstract>
<kwd-group>
<kwd>modified controller</kwd>
<kwd>FOPID controller</kwd>
<kwd>MFOPID controller</kwd>
<kwd>rehabilitation robots</kwd>
<kwd>lower limb</kwd>
<kwd>improved algorithm</kwd>
<kwd>hybrid algorithm</kwd>
<kwd>EHO algorithm</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="17"/>
<table-count count="10"/>
<equation-count count="41"/>
<ref-count count="25"/>
<page-count count="25"/>
</counts>
<custom-meta-group>
<custom-meta>
<meta-name>section-in-acceptance</meta-name>
<meta-value>Robotic Control Systems</meta-value>
</custom-meta>
</custom-meta-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>Strokes are among the primary causes of long-term disability and mortality among cardiovascular diseases, often resulting in hemiplegia and severe motor dysfunction (<xref ref-type="bibr" rid="B15">Roth et al., 2020</xref>; <xref ref-type="bibr" rid="B21">Wang et al., 2020</xref>). Rehabilitation plays a crucial role in restoring motor function in stroke patients, particularly in improving lower limb mobility. Traditional rehabilitation methods typically rely on manual interventions by therapists, which are labour-intensive, subjective, and limited in precision and repeatability (<xref ref-type="bibr" rid="B20">Volpe et al., 2001</xref>; <xref ref-type="bibr" rid="B16">Sabah et al., 2021</xref>). These limitations have accelerated the development of robotic rehabilitation systems, which provide consistent, repeatable training sessions, real-time monitoring, and objective assessments of motor recovery (<xref ref-type="bibr" rid="B10">Kiyono et al., 2024</xref>; <xref ref-type="bibr" rid="B17">Su et al., 2023</xref>). Lower limb rehabilitation exoskeletons offer significant promise in supporting patient recovery by facilitating gait training through programmable motion patterns (<xref ref-type="bibr" rid="B2">Aguirre-Ollinger et al., 2024</xref>; <xref ref-type="bibr" rid="B25">Zhang, 2025</xref>). However, due to the interaction between human limbs and robotic actuators, the system dynamics are extremely non-linear and subject to parametric uncertainties and external disturbances (<xref ref-type="bibr" rid="B18">Torabi et al., 2017</xref>). The FOPID controllers are gaining increasingly wider acceptance among control strategies due to their application of fractional integral and fractional derivative terms to produce better performances for nonlinear systems (<xref ref-type="bibr" rid="B1">Abdulwahhab and Abbas, 2020</xref>). The inclusion of the fractional integral and derivative orders (<inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) in the FOPID controller introduces two additional tuning parameters beyond those in the classical PID controller. These additional control orders provide greater flexibility in shaping the control response, enabling more precise adjustment of the system&#x2019;s dynamic behaviour. However, determining the optimal values for all five parameters, proportional gain (<inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>), integral gain (<inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>I</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>), derivative gain (<inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>D</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>), integral order (<inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), and derivative order (<inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), is a complex task. Improper tuning may lead to degraded performance or even instability, making the controller design process significantly more challenging than that of traditional PID controllers (<xref ref-type="bibr" rid="B19">Vanchinathan and Selvaganesan, 2021</xref>).</p>
<p>Single-heuristic metaheuristics (e.g., PSO, GWO, MVO, and standard EHO) frequently suffer from premature convergence and an exploration-exploitation imbalance population diversity collapses early, the search stalls near local minima, and performance becomes hyper-parameter sensitive and landscape dependent. GWO tends to emphasize leader-driven exploitation at the expense of global exploration; MVO provides stochastic global jumps but may converge slowly; and EHO preserves diversity yet can lack late-stage intensification. These drawbacks are critical when tuning the parameters of FOPID/MFOPID. To address this, the proposed IElk-GM hybrid combines Improved EHO (diversity preservation &#x2b; elitism) with GWO (structured local refinement) and MVO (probabilistic space warping), with adaptive coefficients and elitism to sustain exploration early and accelerate exploitation late reducing stagnation and improving reproducible convergence for MFOPID tuning.</p>
<p>Several researchers have explored FOPID controllers in rehabilitation robotics. For instance:</p>
<p>(<xref ref-type="bibr" rid="B6">Ayas et al., 2016</xref>) Proposed a FOPID controller for enhanced trajectory tracking of a 2-DoF parallel ankle rehabilitation robot in the presence of disturbances. Their results demonstrate that the optimally tuned FOPID controller considerably enhances tracking performance of the ankle rehabilitation robot in the presence of external disturbances and reduces more steady-state tracking errors than the optimally tuned PID controller.</p>
<p>(<xref ref-type="bibr" rid="B22">Wang et al., 2022</xref>) Proposed a fractional order <inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:msup>
<mml:mi>I</mml:mi>
<mml:mi mathvariant="normal">&#x3bb;</mml:mi>
</mml:msup>
<mml:msup>
<mml:mi>D</mml:mi>
<mml:mi mathvariant="normal">&#x3bc;</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> for tracking and control of an innovative rehabilitation robot using the Improved Ions Motion Optimization Back Propagation (IIMO-BP) neural network method. Their results demonstrate that the robust control strategy guarantees a stable environment for rehabilitation training, as well as the rationality and effectiveness of trajectory planning.</p>
<p>(<xref ref-type="bibr" rid="B8">Faraj et al., 2023</xref>) proposed an Adaptive Optimal Fractional-order Super-Twisting Sliding-Mode (AOFSTSM) controller for lower-limb rehabilitation under constrained motion with ground contact, combining fractional operators with a super-twisting algorithm for chatter mitigation and an adaptive bound estimator; controller gains were tuned via Grey Wolf Optimization (GWO) algorithm. Their results show robust tracking under disturbances and parametric uncertainties. In contrast, the present work adopts a different control paradigm: a Modified Fractional-Order PID (MFOPID) with nonlinear error shaping that yields continuous control torques (no discontinuous switching), aiming at smoothness and patient comfort together with embedded simplicity. The MFOPID gains and fractional orders are tuned offline using hybrid IElk-GM optimizer (Improved Elk Herd Optimization &#x2b; Grey Wolf Optimization &#x2b; Multi-Verse Optimization), which improves exploration-exploitation balance relative to single-population GWO while keeping the run-time controller fixed-structure (no online adaptive laws). This positions our contribution as complementary to AOFSTSM: while AOFSTSM prioritizes invariance through sliding-mode mechanisms, our MFOPID targets overshoot-free, smooth transients and low implementation burden. To operationalize this contrast, <xref ref-type="sec" rid="s6">Section 6</xref> reports standard time-domain indices <xref ref-type="table" rid="T6">Table 6</xref>, a qualitative smoothness summary <xref ref-type="table" rid="T7">Table 7</xref> and an implementation-complexity comparison <xref ref-type="table" rid="T8">Table 8</xref>. (Where numeric data are unavailable in (<xref ref-type="bibr" rid="B8">Faraj et al., 2023</xref>), comparisons are made from the published plots).</p>
<p>(<xref ref-type="bibr" rid="B13">Ning et al., 2024</xref>) Proposed a multi-objective inverse kinematics model for redundant rehabilitation robots, solved using an Improved Equilibrium Optimization (IEO) algorithm. Their results show higher accuracy, robustness, and more human-like rehabilitation trajectories compared to conventional optimization methods.</p>
<p>(<xref ref-type="bibr" rid="B9">He et al., 2024</xref>) Proposed a Fractional-Order ultra-local model-based Finite-Time Robust Controller (FO-FTRC) for trajectory tracking of rehabilitation robots under uncertainties and disturbances. Their results demonstrate that the model-free robust strategy ensures accurate tracking performance and superior robustness compared to conventional adaptive and sliding mode methods.</p>
<p>(<xref ref-type="bibr" rid="B24">Xie et al., 2025</xref>) Proposed a motion control framework for lower limb rehabilitation robots by integrating optimal S-type trajectory planning, zero-force control using the LuGre friction model, and a singular perturbation-based control strategy. Their results demonstrate that the proposed approach significantly improves trajectory smoothness, tracking accuracy, and robustness against external disturbances, thereby providing patients with safer and more effective rehabilitation training.</p>
<p>Despite the diversity of fractional-order control strategies applied in rehabilitation robotics, certain limitations remain unresolved particularly regarding adaptability to nonlinear trajectory tracking, dynamic patient-robot interaction, and robustness against model uncertainties. Most prior studies have concentrated on parameter optimization of FOPID controllers while retaining a fixed control structure, which inherently restricts their flexibility in complex rehabilitation scenarios.</p>
<p>To address these challenges, this paper introduces a Modified Fractional-Order PID (MFOPID) controller that extends the classical FOPID by incorporating a nonlinear error formulation. This structural enhancement is designed to improve transient response, suppress overshoot, and minimize steady-state error, thereby offering a more effective control solution for lower-limb rehabilitation robots. The MFOPID design is inspired by the conventional FOPID formulation in (<xref ref-type="bibr" rid="B19">Vanchinathan and Selvaganesan, 2021</xref>), but it incorporates structural modifications that enhance control performance in the context of rehabilitation robotics. To further improve the controller&#x2019;s effectiveness, an improved hybrid metaheuristic algorithm, the Improved Elk Herd Optimization hybridized with Grey Wolf Optimization and Multi-Verse Optimization (IElk-GM), is employed for parameter tuning. By combining the exploration-exploitation capabilities of three nature-inspired optimizers, the IElk-GM algorithm achieves faster convergence and improved robustness compared to individual optimization methods. The proposed MFOPID controller is implemented on a 2-DoF lower limb rehabilitation robot modelled using dynamic equations that capture the biomechanical behaviour of a human lower limb during walking. Lyapunov stability is used for stability analysis of both system joints under the dynamic equations of the robot&#x2019;s control closed-loop.</p>
<p>The key contributions can be described as follows: a modify FOPID controller structure has been suggested to improve steady and transient characteristics in the lower limb rehabilitation tasks, an improved hybrid metaheuristic algorithm (IElk-GM) is developed for efficient and accurate controller parameter tuning, the proposed controller is validated through dynamic simulations under both linear and non-linear trajectory conditions, with disturbances and uncertainties, a comparative performance analysis is conducted against the classical FOPID controller to demonstrate the improvements in tracking accuracy, stability, and control smoothness.</p>
<p>This paper is organized into seven sections. <xref ref-type="sec" rid="s2">Section 2</xref> presents the mathematical significance of the proposed framework. <xref ref-type="sec" rid="s3">Section 3</xref> describes the dynamic mathematical model of the two-link LLRER. <xref ref-type="sec" rid="s4">Section 4</xref> details the design of the modified fractional-order PID controller. <xref ref-type="sec" rid="s5">Section 5</xref> introduces the hybrid optimization algorithm used for controller tuning. <xref ref-type="sec" rid="s6">Section 6</xref> discusses the simulation results under various conditions. Finally, the last section concludes and proposes future work areas.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Mathematical significance of the proposed framework</title>
<p>The proposed framework presents substantial mathematical contributions to the field of intelligent control and optimization. Firstly, the Modified Fractional Order PID (MFOPID) controller introduces a non-linear error formulation that extends the classical FOPID structure by incorporating additional control parameters and non-linear terms. This modification enables finer control of system dynamics, which is analytically validated through Lyapunov-based stability analysis. The stability proof ensures that the proposed controller achieves global convergence with reduced overshoot and improved transient performance. Secondly, the hybrid IElk-GM algorithm constitutes a mathematically rich integration of three nature-inspired metaheuristics: Improved Elk Herd Optimization (EHO), Grey Wolf Optimization (GWO), and Multi-Verse Optimization (MVO). Each component contributes distinct mathematical operators, leadership-based exploration, social hierarchy modelling, and probabilistic space warping, resulting in a balanced global-local search mechanism. The formulation of the algorithm includes adaptive control coefficients, elitism preservation, and probabilistic wormhole operations, all of which are mathematically defined and governed by time-varying parameters. Moreover, the control design and optimization process are formalized through the minimization of a Time Integrated Absolute Error <inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> cost function, which is a classical yet mathematically rigorous performance criterion. The convergence behaviour of the algorithm and the smoothness of the control response further highlight the analytical soundness of the method. Taken together, the controller design and the optimization algorithm proposed in this study form a cohesive mathematical model for intelligent control systems, providing both theoretical insights and practical performance enhancements in non-linear robotic rehabilitation systems.</p>
</sec>
<sec id="s3">
<label>3</label>
<title>Dynamic model of LLRER</title>
<sec id="s3-1">
<label>3.1</label>
<title>Physical exoskeleton and control architecture</title>
<p>The target platform is configured as a planar 2-DoF lower limb rehabilitation exoskeleton operating in the sagittal plane. Hip flexion extension is denoted by <inline-formula id="inf9">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and knee flexion extension by <inline-formula id="inf10">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>; the joint coordinate vector is <inline-formula id="inf11">
<mml:math id="m11">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mtext>&#x2002;</mml:mtext>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> with velocities <inline-formula id="inf12">
<mml:math id="m12">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and accelerations <inline-formula id="inf13">
<mml:math id="m13">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. Rigid thigh and shank frames are attached to the patient via adjustable cuffs and quick-release straps, and link lengths are adjusted to the user&#x2019;s anthropometry. Typical range of motion envelopes are considered to guide control and safety limits (<inline-formula id="inf14">
<mml:math id="m14">
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>p</mml:mi>
<mml:mo>&#x2248;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>20</mml:mn>
<mml:mo>&#xb0;</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>120</mml:mn>
<mml:mo>&#xb0;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#x2248;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>&#xb0;</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>130</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>), and mechanical end-stops are provided near the extremes to prevent over-travel. Each joint is actuated by an electric drive with high-ratio transmission (e.g., harmonic or planetary gearing), by which motor torque is amplified while reflected inertia is kept within clinically acceptable limits. Optional series elasticity or software torque limiting is employed to improve comfort during therapy. Joint-level torque and speed limits are enforced in firmware to maintain operation within safe bounds consistent with the limits used in the results section. Joint angles are measured using high-resolution absolute encoders, and joint velocities are obtained by numerical differentiation with appropriate filtering. Drive currents are monitored for torque estimation; inertial measurement units may be mounted on the thigh and shank for segment level orientation, and foot-contact sensing (e.g., insole force sensors) can be used for gait-phase or state detection. All safety critical signals (emergency stop, over-current, over-temperature) are handled by hardware interlocks in parallel with software supervision. Control is executed on a real-time embedded controller. A cascaded structure is adopted: an inner current/torque loop runs at high frequency to regulate actuator torque; a joint-position loop implements the MFOPID at a lower, yet real-time, rate; and a high-level trajectory generator with a safety supervisor coordinates task execution and enforces limits. The MFOPID parameters (gains and fractional orders) are tuned offline using a hybrid metaheuristic Improved Elk Herd Optimization hybridized with Grey Wolf and Multi-Verse Optimization algorithms (IElk-GM) so that exploration and exploitation are balanced during tuning while runtime complexity remains minimal.</p>
</sec>
<sec id="s3-2">
<label>3.2</label>
<title>Dynamic modeling</title>
<p>The LLRER considered in this study is a planar 2-DoF structure consisting of two rigid links and two revolute joints, which correspond to the hip and knee joints of the human body. This configuration is designed to facilitate flexion and extension movement in the sagittal plane, thereby enabling gait rehabilitation for stroke and mobility-impaired patients (<xref ref-type="bibr" rid="B3">Al Rezage and Tokhi, 2016</xref>). The mechanical structure of the robot is shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. A dynamic model based on the anthropometric features of a human lower limb is used to describe the mobility of the robot. The model assumes a subject with a body mass of 74 kg and height of 1.69 m, with segment properties obtained from winter&#x2019;s anthropometric data (<xref ref-type="bibr" rid="B5">Alshatti, 2019</xref>; <xref ref-type="bibr" rid="B23">Winter 2009</xref>). The robot dynamics are derived using the Euler-Lagrange method, capturing the effects of joint inertia, Coriolis and centrifugal forces, gravitational torque, control inputs, and external disturbances.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>2-DoF hip-knee schematic for the LLRER.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g001.tif">
<alt-text content-type="machine-generated">2-DoF leg schematic with hip/knee joints; X-Y frame at hip; link1 (thigh) and link2 (shank) in blue; angles theta1, theta2 and lengths l1, l2 indicated; dashed outlines show reference positions.</alt-text>
</graphic>
</fig>
<p>The general 2-DoF dynamics are given in <xref ref-type="disp-formula" rid="e1">Equation 1</xref>:<disp-formula id="e1">
<mml:math id="m15">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>G</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>The angle, angular velocity, and acceleration of a robot joint vector are denoted by the variables <inline-formula id="inf15">
<mml:math id="m16">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf16">
<mml:math id="m17">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. For every inertia <inline-formula id="inf17">
<mml:math id="m18">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, Coriolis, and centrifugal torque <italic>C</italic> (<italic>&#x3b8;</italic>, <inline-formula id="inf18">
<mml:math id="m19">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>) &#x2208; <inline-formula id="inf19">
<mml:math id="m20">
<mml:mrow>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> in human limb matrices. The one-dimensional vector of the torque of gravity <inline-formula id="inf20">
<mml:math id="m21">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> is &#x2208; <inline-formula id="inf21">
<mml:math id="m22">
<mml:mrow>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, the control signal is represented by <inline-formula id="inf22">
<mml:math id="m23">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, and the vector of external disturbances is <inline-formula id="inf23">
<mml:math id="m24">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mi>n</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The dynamics of the robot are indicated by <xref ref-type="disp-formula" rid="e2">Equation 2</xref>:<disp-formula id="e2">
<mml:math id="m25">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>21</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>21</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>The components of the inertia matrix M(&#x3b8;) are depicted in <xref ref-type="disp-formula" rid="e3">Equation 3</xref>:<disp-formula id="e3">
<mml:math id="m26">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>21</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>The elements of <inline-formula id="inf24">
<mml:math id="m29">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are determined by <xref ref-type="disp-formula" rid="e4">Equation 4</xref>:<disp-formula id="e4">
<mml:math id="m28">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>21</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>The parameters of the gravitational vector <inline-formula id="inf25">
<mml:math id="m34">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are specified by <xref ref-type="disp-formula" rid="e5">Equation 5</xref>:<disp-formula id="e5">
<mml:math id="m30">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>g</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>g</mml:mi>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>g</mml:mi>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>g</mml:mi>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>The variables of these equations are delineated by specific parameters presented in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Physical parameters and variables of LLRER.</p>
</caption>
<table>
<thead valign="top">
<tr style="background-color:#D9D9D9">
<th align="left">Parameters</th>
<th align="left">Value</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Length of link 1 (L<sub>1</sub>)</td>
<td align="left">0.54 m</td>
</tr>
<tr>
<td align="left">Length of link 2 (L<sub>2</sub>)</td>
<td align="left">0.48 m</td>
</tr>
<tr>
<td align="left">Link (1) centre of mass (<inline-formula id="inf26">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="left">0.2338 m</td>
</tr>
<tr>
<td align="left">Link (2) centre of mass (<inline-formula id="inf27">
<mml:math id="m38">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="left">0.241 m</td>
</tr>
<tr>
<td align="left">Link 1 mass (m<sub>1</sub>)</td>
<td align="left">8 Kg</td>
</tr>
<tr>
<td align="left">Link 2 mass (m<sub>2</sub>)</td>
<td align="left">3.72 Kg</td>
</tr>
<tr>
<td align="left">Link 1 inertia (I<sub>1</sub>)</td>
<td align="left">0.42 kg.m<sup>2</sup>
</td>
</tr>
<tr>
<td align="left">Link 2 inertia (I<sub>2</sub>)</td>
<td align="left">0.07 kg.m<sup>2</sup>
</td>
</tr>
<tr>
<td align="left">Acceleration by gravity (g)</td>
<td align="left">9.8 m/s<sup>2</sup>
</td>
</tr>
<tr>
<td align="left">Link 1 angular displacement (<inline-formula id="inf28">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="left">N/A Rad</td>
</tr>
<tr>
<td align="left">Link 2 angular displacement (<inline-formula id="inf29">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="left">N/A Rad</td>
</tr>
<tr>
<td align="left">Link 1 angular velocity (<inline-formula id="inf30">
<mml:math id="m41">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="left">N/A Rad/s</td>
</tr>
<tr>
<td align="left">Link 2 angular velocity (<inline-formula id="inf31">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="left">N/A Rad/s</td>
</tr>
<tr>
<td align="left">Angular acceleration (<inline-formula id="inf32">
<mml:math id="m43">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="left">N/A Rad/s<sup>2</sup>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Fractional order PID controller (FOPID) design</title>
<p>The structures of the Adaptive PID and FOPID controllers suggested in (<xref ref-type="bibr" rid="B19">Vanchinathan and Selvaganesan, 2021</xref>; <xref ref-type="bibr" rid="B14">Noordin et al., 2023</xref>) are used for building a controller for the two-link LLRER. <xref ref-type="fig" rid="F2">Figure 2</xref> illustrates a block diagram of the designed controller.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>The block diagram of the FOPID.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g002.tif">
<alt-text content-type="machine-generated">Diagram of a control system for a lower limb rehabilitation robot. It includes desired angle inputs, error calculations, and a FOPID controller, connected to a robotic figure. The system is optimized using the IEIk-GM algorithm. Arrows indicate flow of information between components.</alt-text>
</graphic>
</fig>
<p>
<xref ref-type="disp-formula" rid="e6">Equation 6</xref> defines the Alpha function as follows:<disp-formula id="e6">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>where <inline-formula id="inf33">
<mml:math id="m45">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; 1, 2 is the link number. <inline-formula id="inf34">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the instantaneous error, which shows the difference between the current desired trajectory <inline-formula id="inf35">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and actual output <inline-formula id="inf36">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of link (<inline-formula id="inf37">
<mml:math id="m49">
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) as in <xref ref-type="disp-formula" rid="e7">Equation 7</xref>:<disp-formula id="e7">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e8">Equation 8</xref> describes the control law for this controller:<disp-formula id="e8">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2a;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>Also, <inline-formula id="inf38">
<mml:math id="m52">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is defined in <xref ref-type="disp-formula" rid="e9">Equation 9</xref>:<disp-formula id="e9">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x222b;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>where the parameters <inline-formula id="inf39">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are those obtained from <xref ref-type="disp-formula" rid="e10">Equation 10</xref> through <xref ref-type="disp-formula" rid="e12">Equation 12</xref>:<disp-formula id="e10">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x222b;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x27f9;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
<disp-formula id="e11">
<mml:math id="m56">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x222b;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x27f9;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x222b;</mml:mo>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
<disp-formula id="e12">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>K</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x27f9;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mover accent="true">
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>where <inline-formula id="inf40">
<mml:math id="m58">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf41">
<mml:math id="m59">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf42">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> stand for positive learning rate. For the controller gains, choosing suitable learning rates and initial values is essential.</p>
<p>The IElk-GM algorithm will determine the optimal parameters of the FOPID controller <inline-formula id="inf43">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> for link1 (<inline-formula id="inf44"> <mml:math id="m62"> <mml:mrow> <mml:mo>(</mml:mo> <mml:mrow> <mml:msub> <mml:mi>H</mml:mi> <mml:mrow> <mml:mi>P</mml:mi> <mml:mn>1</mml:mn> </mml:mrow> </mml:msub> <mml:mo>,</mml:mo> <mml:msub> <mml:mi>H</mml:mi> <mml:mrow> <mml:mi>D</mml:mi> <mml:mn>1</mml:mn> </mml:mrow> </mml:msub> <mml:mo>,</mml:mo> </mml:mrow> </mml:mrow> </mml:math> </inline-formula> <inline-formula id="inf144"> <mml:math id="m162"> <mml:mrow> <mml:msub> <mml:mi>&#x3b2;</mml:mi> <mml:mn>11</mml:mn> </mml:msub> <mml:mo>,</mml:mo> <mml:msub> <mml:mi>&#x3b2;</mml:mi> <mml:mn>21</mml:mn> </mml:msub> <mml:mo>,</mml:mo> <mml:msub> <mml:mi>&#x3b2;</mml:mi> <mml:mn>31</mml:mn> </mml:msub> <mml:mo>,</mml:mo> <mml:msub> <mml:mi>&#x3bb;</mml:mi> <mml:mn>1</mml:mn> </mml:msub> <mml:mo>,</mml:mo> <mml:mi>a</mml:mi> <mml:mi>n</mml:mi> <mml:mi>d</mml:mi> <mml:mtext>&#x2009;</mml:mtext> <mml:msub> <mml:mi>&#x3bc;</mml:mi> <mml:mn>1</mml:mn> </mml:msub> <mml:mo>)</mml:mo> </mml:mrow> </mml:math> </inline-formula>, and link2 (<inline-formula id="inf45">
<mml:math id="m63">
<mml:mrow>
<mml:mfenced open="" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>32</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<sec id="s4-1">
<label>4.1</label>
<title>Modified fractional order PID controller (MFOPID) design</title>
<p>To improve performance and efficiency, a modified fractional order PID controller is suggested to reduce overshoot and steady-state error. <xref ref-type="disp-formula" rid="e13">Equation 13</xref> shows the modified alpha function from <xref ref-type="disp-formula" rid="e6">Equation 6</xref>:<disp-formula id="e13">
<mml:math id="m64">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x222b;</mml:mo>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>Accordingly, <xref ref-type="disp-formula" rid="e8">Equation 8</xref> is to be modified in <xref ref-type="disp-formula" rid="e14">Equation 14</xref> for the control law:<disp-formula id="e14">
<mml:math id="m65">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>where <xref ref-type="disp-formula" rid="e15">Equation 15</xref> defines <inline-formula id="inf46">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<disp-formula id="e15">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="italic">tanh</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2a;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>The IElk-GM algorithm is utilized to get system parameters for the MFOPID controller. The control goals are accomplished by the way this algorithm&#x2019;s fitness function is set up. The candidate Lyapunov function is given by <xref ref-type="disp-formula" rid="e16">Equations 16</xref>, <xref ref-type="disp-formula" rid="e17">17</xref> as follows:<disp-formula id="e16">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msup>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
<disp-formula id="e17">
<mml:math id="m69">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>,</mml:mo>
<mml:mi>w</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>when <inline-formula id="inf47">
<mml:math id="m70">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> it is guaranteed that <inline-formula id="inf48">
<mml:math id="m71">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> as <inline-formula id="inf49">
<mml:math id="m72">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. From <xref ref-type="disp-formula" rid="e13">Equation 13</xref>, it can be written:<disp-formula id="e18">
<mml:math id="m73">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x222b;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mover accent="true">
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>Substituting <xref ref-type="disp-formula" rid="e18">Equation 18</xref> into <xref ref-type="disp-formula" rid="e17">Equation 17</xref>:<disp-formula id="e19">
<mml:math id="m74">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x222b;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mover accent="true">
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>The negativity condition used in the stability proof is expressed in <xref ref-type="disp-formula" rid="e19">Equation 19</xref>.</p>
<p>Since <inline-formula id="inf50">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> <inline-formula id="inf51">
<mml:math id="m76">
<mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf52">
<mml:math id="m77">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, hence, according to the Lyapunov direct method, the system is Lyapunov globally stable. Moreover, due to the structure of <inline-formula id="inf53">
<mml:math id="m78">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the convergence of <inline-formula id="inf54">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> is smooth and without overshoot, as confirmed in simulation.</p>
<p>The IElk-GM algorithm is also used to calculate the optimal parameters of the controller <inline-formula id="inf55">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi mathvariant="italic">mod</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> of link1 (<inline-formula id="inf56">
<mml:math id="m81">
<mml:mrow>
<mml:mfenced open="" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>21</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>31</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">mod</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, and link2 (<inline-formula id="inf57">
<mml:math id="m82">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>32</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">mod</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>)</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</sec>
<sec id="s4-2">
<label>4.2</label>
<title>Theoretical gaps in stability analysis</title>
<p>The nominal Lyapunov analysis in <xref ref-type="sec" rid="s4">Section 4</xref> establishes stability under ideal conditions. In rehabilitation, however, three non-ideal effects are unavoidable: (i) actuator saturation (torque limits and anti-windup), (ii) small I/O delays from sensing/actuation, and (iii) patient-induced disturbances (matched torques at the joints). Let <inline-formula id="inf58">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denote the MFOPID control before limits and <inline-formula id="inf59">
<mml:math id="m84">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> the applied torque after saturation. Let <inline-formula id="inf60">
<mml:math id="m85">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>:</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> be the saturation mismatch; <inline-formula id="inf61">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> bounded patient torque disturbances; and <inline-formula id="inf62">
<mml:math id="m87">
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> a constant small delay in the loop (sensing/actuation). We use the same Lyapunov candidate <inline-formula id="inf63">
<mml:math id="m88">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#xb7;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> as in <xref ref-type="sec" rid="s4">Section 4</xref> and the same error vector <inline-formula id="inf64">
<mml:math id="m89">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Closed-loop maps are locally Lipschitz.</p>
<sec id="s4-2-1">
<label>4.2.1</label>
<title>Actuator saturation</title>
<p>Assume the saturator is sector-bounded. The static nonlinearity <inline-formula id="inf65">
<mml:math id="m90">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#xb7;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> lies in sector <inline-formula id="inf66">
<mml:math id="m91">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> for some <inline-formula id="inf67">
<mml:math id="m92">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="(" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf68">
<mml:math id="m93">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:msup>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>v</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="script">K</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> Equivalently, <inline-formula id="inf69">
<mml:math id="m94">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="script">K</mml:mi>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The MFOPID closed loop admits constants <inline-formula id="inf70">
<mml:math id="m95">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>u</mml:mi>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> such that along solutions<disp-formula id="equ7">
<mml:math id="m96">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x2264;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>u</mml:mi>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>Hence the system is Input-to-State Stable (ISS) w.r.t. the input <inline-formula id="inf71">
<mml:math id="m97">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>; the tracking error is ultimately bounded with a radius that scales monotonically with <inline-formula id="inf72">
<mml:math id="m98">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. In practice, torque limiting and anti-windup (as used in our simulations) keep <inline-formula id="inf73">
<mml:math id="m99">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> small, so the residual set is tight and nominal convergence is recovered away from the limits. A standard anti-windup clamp on the fractional integral action preserves the above bound and prevents drift when <inline-formula id="inf74">
<mml:math id="m100">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> sticks to its limits.</p>
</sec>
<sec id="s4-2-2">
<label>4.2.2</label>
<title>Small I/O delays</title>
<p>A constant delay <inline-formula id="inf75">
<mml:math id="m101">
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> affects either sensing or actuation; the delay-free closed loop is exponentially stable in the nominal sense of <xref ref-type="sec" rid="s4">Section 4</xref>. Suppose there exist <inline-formula id="inf76">
<mml:math id="m102">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf77">
<mml:math id="m103">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> such that the Razumikhin condition holds:<disp-formula id="equ8">
<mml:math id="m104">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x27f9;</mml:mo>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b7;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>Then the MFOPID closed loop is robust to delays for all <inline-formula id="inf78">
<mml:math id="m105">
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (with <inline-formula id="inf79">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> determined by local Lipschitz bounds). Convergence degrades smoothly as <inline-formula id="inf80">
<mml:math id="m107">
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> increases, but boundedness and asymptotic decay to a small residual set are preserved.</p>
</sec>
<sec id="s4-2-3">
<label>4.2.3</label>
<title>Patient-induced disturbances</title>
<p>For bounded matched torque. The disturbance enters the torque channel and satisfies <inline-formula id="inf81">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. There exist <inline-formula id="inf82">
<mml:math id="m109">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> such that<disp-formula id="equ9">
<mml:math id="m110">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x2264;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>Therefore, the closed loop is ISS w.r.t. <inline-formula id="inf83">
<mml:math id="m111">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, i.e., <inline-formula id="inf84">
<mml:math id="m112">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, for class-for class-<inline-formula id="inf85">
<mml:math id="m113">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
<mml:mi mathvariant="script">L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and class-<inline-formula id="inf86">
<mml:math id="m114">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> functions <inline-formula id="inf87">
<mml:math id="m115">
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. When the disturbance vanishes, the nominal convergence of <xref ref-type="sec" rid="s4">Section 4</xref> is recovered.</p>
<p>Under (i-iii) and the nominal hypotheses of <xref ref-type="sec" rid="s4">Section 4</xref>, there exist <inline-formula id="inf88">
<mml:math id="m116">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and constants <inline-formula id="inf89">
<mml:math id="m117">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>u</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>&#x3c4;</mml:mi>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> such that<disp-formula id="equ10">
<mml:math id="m118">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x2264;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>u</mml:mi>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>&#x3c4;</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>&#x3c4;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>Consequently, the MFOPID closed loop is ISS with respect to saturation mismatch, patient-induced torques, and small delays, and the tracking error is ultimately bounded by a radius that scales with <inline-formula id="inf90">
<mml:math id="m119">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf91">
<mml:math id="m120">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf92">
<mml:math id="m121">
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. This upgrades the ideal analysis to practical stability in the sense most relevant to rehabilitation robotics. Keeping the anti-windup gain sufficiently strong (small effective <inline-formula id="inf93">
<mml:math id="m122">
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), minimizing sensor/actuator latency <inline-formula id="inf94">
<mml:math id="m123">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, and attenuating predictable patient torques (small <inline-formula id="inf95">
<mml:math id="m124">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) make the residual bound negligible, consistent with the robustness outcomes summarized in <xref ref-type="table" rid="T6">Tables 6</xref>, <xref ref-type="table" rid="T9">9</xref>, and <xref ref-type="table" rid="T10">10</xref> and the time-responses in <xref ref-type="fig" rid="F10">Figures 10</xref>&#x2013;<xref ref-type="fig" rid="F17">17</xref>. The same bounds apply on the reduced constrained dynamics used for ground-contact walking, making the guarantees directly comparable to <xref ref-type="bibr" rid="B8">Faraj et al. (2023)</xref>.</p>
<p>Relation to (<xref ref-type="bibr" rid="B8">Faraj et al., 2023</xref>), Faraj et al. derive a constrained-motion model for ground contact and prove sliding-mode convergence for their fractional super-twisting controller tuned by GWO, emphasizing invariance against uncertainties and disturbances along the sliding manifold (finite-time/strong robustness on the manifold). While their analysis focuses on constrained dynamics and sliding invariance, it does not explicitly treat actuator saturation or I/O delays. The results above complement that line of work for PID-type continuous control: MFOPID remains non-switching, and its stability is now guaranteed under torque limits, small delays, and bounded patient torques via ISS/ultimate-boundedness. This addresses the practical conditions critical for rehabilitation sessions and aligns the theory with our robustness experiments.</p>
</sec>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Optimization algorithm/IElk-GM</title>
<p>Optimization is the selection of the best element, based on some criterion, from a set of available alternatives (<xref ref-type="bibr" rid="B7">Chen et al., 2023</xref>). Optimal tuning of the MFOPID controller parameters is critical to ensuring robust trajectory tracking and system stability. To address the challenges of high-dimensional, non-linear optimization inherent in FOPID-based control design, this study proposes an improved hybrid metaheuristic algorithm: Improved Elk Herd Optimization hybridized with Grey Wolf Optimization and Multi-Verse Optimization Algorithms (IElk-GM). <xref ref-type="disp-formula" rid="e20">Equation 20</xref> provides the Integral Time Absolute Errors (ITAE), the IElk-GM fitness function is:<disp-formula id="e20">
<mml:math id="m125">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>I</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x222b;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mi>&#x221e;</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>This cost function penalizes significant errors over time, encouraging fast settling and minimal steady-state deviation.</p>
<sec id="s5-1">
<label>5.1</label>
<title>An improved elk herd optimization algorithm hybridized with grey wolf and multi-verse algorithms (IElk-GM)</title>
<p>The proposed IElk-GM algorithm is a hybrid metaheuristic that integrates three nature-inspired optimization strategies to balance global exploration and local exploitation.<list list-type="simple">
<list-item>
<p>&#x2022; Improved Elk Herd Optimization (IElk-GM): The algorithm forms the backbone of the search process, offering enhanced population diversity and a structured Herd-based exploration mechanism. Unlike the standard EHO, the improved version incorporates elitism preservation, adaptive parameter control, and balanced harem assignment, which significantly enhance convergence speed and solution quality.</p>
</list-item>
<list-item>
<p>&#x2022; Grey Wolf Optimization (GWO) is employed to introduce local refinement by simulating leadership-based social hierarchy through <inline-formula id="inf96">
<mml:math id="m126">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> wolves, enabling precise tuning in the vicinity of promising solutions. To avoid stagnation in local optima.</p>
</list-item>
<list-item>
<p>&#x2022; Multi-Verse Optimization (MVO) is integrated via a stochastic wormhole mechanism, promoting global search through probabilistic space jumps.</p>
</list-item>
</list>
</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>The IElk-GM algorithm phases.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g003.tif">
<alt-text content-type="machine-generated">Flowchart illustration depicting optimization stages using animals. Initialization shows deer; guiding features wolves leading a moose; the wormhole phase depicts a moose with a vortex. Convergence concludes with a moose reaching a trophy. Labels: Initialization, Guiding, Wormhole, Convergence.</alt-text>
</graphic>
</fig>
<p>This hybridization of IEHO, GWO, and MVO capitalizes on the strengths of each algorithm: diversity, leadership-based exploitation, and randomness, resulting in a more robust and efficient optimization framework for tuning complex control parameters.</p>
<p>For more information about the Elk Herd Optimization Algorithm, the Grey Wolf Optimization Algorithm, and the Multi-Verse Optimization Algorithm, see (<xref ref-type="bibr" rid="B4">Al-Betar et al., 2024</xref>; <xref ref-type="bibr" rid="B11">Mirjalili et al., 2014</xref>; <xref ref-type="bibr" rid="B12">Mirjalili et al., 2016</xref>).</p>
<p>The overall working process of the proposed IElk-GM algorithm is presented in <xref ref-type="fig" rid="F3">Figure 3</xref>.</p>
<sec id="s5-1-1">
<label>5.1.1</label>
<title>Population initialization</title>
<p>Let <inline-formula id="inf97">
<mml:math id="m127">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> be the total population size (elk Herd size), and <inline-formula id="inf98">
<mml:math id="m128">
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> be the problem dimensionality (number of decision variables). Each solution vector <inline-formula id="inf99">
<mml:math id="m523">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi mathvariant="double-struck">R</mml:mi>
<mml:mi>D</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is initialized uniformly within the lower (<inline-formula id="inf100">
<mml:math id="m130">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) and upper (<inline-formula id="inf101">
<mml:math id="m131">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) bounds of the research space:<disp-formula id="e21">
<mml:math id="m132">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>D</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>and&#x2009;</mml:mtext>
<mml:msub>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>The IElk-GM update rules are summarized in <xref ref-type="disp-formula" rid="e21">Equations 21</xref>&#x2013;<xref ref-type="disp-formula" rid="e35">35</xref>.</p>
<p>Every individual is evaluated by the fitness function <inline-formula id="inf102">
<mml:math id="m133">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:munder>
<mml:mo>&#x2192;</mml:mo>
<mml:mi>x</mml:mi>
</mml:munder>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> in order to think about the solutions.</p>
</sec>
<sec id="s5-1-2">
<label>5.1.2</label>
<title>Elitism strategy</title>
<p>To preserve the best performing individuals, the top <inline-formula id="inf103">
<mml:math id="m134">
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> individuals are retained across generations, where:<disp-formula id="e22">
<mml:math id="m135">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>where <inline-formula id="inf104">
<mml:math id="m136">
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of elite individuals preserved per generation.</p>
<p>Let <inline-formula id="inf105">
<mml:math id="m531">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>E</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> be the elite set such that:<disp-formula id="e23">
<mml:math id="m532">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>E</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>
</p>
<p>These elites are directly passed to the next-generation.</p>
</sec>
<sec id="s5-1-3">
<label>5.1.3</label>
<title>Harem assignment (rutting season)</title>
<p>The top <inline-formula id="inf106">
<mml:math id="m139">
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> individuals are selected as the number of bulls (leaders):<disp-formula id="e24">
<mml:math id="m140">
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>where <inline-formula id="inf107">
<mml:math id="m141">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the bull rate, <inline-formula id="inf108">
<mml:math id="m142">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> typically in the range [0.1, 0.3].</p>
<p>The remaining (<inline-formula id="inf109">
<mml:math id="m143">
<mml:mrow>
<mml:mfenced open="" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> are designated as harems. The probability of a harem being assigned to a specific bull <inline-formula id="inf110">
<mml:math id="m144">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is based on inverse fitness:<disp-formula id="e25">
<mml:math id="m539">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mfrac bevelled="true">
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>B</mml:mi>
</mml:msubsup>
</mml:mstyle>
<mml:mfrac bevelled="true">
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(25)</label>
</disp-formula>
</p>
<p>Harems are probabilistically assigned to bulls using a roulette wheel selection mechanism based on <inline-formula id="inf111">
<mml:math id="m146">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s5-1-4">
<label>5.1.4</label>
<title>Calving process with GWO</title>
<p>Each bull and its harem generate new offspring (calves). The GWO-inspired model is used to refine calf positions using the top three global solutions, known as Alpha (<inline-formula id="inf112">
<mml:math id="m541">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, Beta (<inline-formula id="inf113">
<mml:math id="m542">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b2;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, and Delta (<inline-formula id="inf114">
<mml:math id="m543">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> wolves. The standard GWO equations are:<disp-formula id="e26">
<mml:math id="m544">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>
<disp-formula id="e27">
<mml:math id="m145">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(27)</label>
</disp-formula>
<disp-formula id="e28">
<mml:math id="m546">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b2;</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b2;</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(28)</label>
</disp-formula>
<disp-formula id="e29">
<mml:math id="m147">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b2;</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b2;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(29)</label>
</disp-formula>
<disp-formula id="e30">
<mml:math id="m148">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b4;</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b4;</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(30)</label>
</disp-formula>
<disp-formula id="e31">
<mml:math id="m149">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b4;</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b4;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(31)</label>
</disp-formula>where: <inline-formula id="inf115">
<mml:math id="m150">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b2;</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>&#x3b4;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the distance vector between alpha, beta, and delta solution and current, <inline-formula id="inf116">
<mml:math id="m151">
<mml:mrow>
<mml:mover>
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is current solution position, <inline-formula id="inf117">
<mml:math id="m152">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is intermediate updated positions computed based on alpha, beta, delta wolves, <inline-formula id="inf118">
<mml:math id="m153">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a coefficient vector used in GWO to control the influence of leader wolves (the current best solution) during the position update of a search agent (calf in IElk-GM) defined as <inline-formula id="inf119">
<mml:math id="m154">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> where <inline-formula id="inf120">
<mml:math id="m161">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is random number sampled from uniform distribution in [0, 1], and <inline-formula id="inf121">
<mml:math id="m156">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the adaptive control coefficient in GWO defined as <inline-formula id="inf122">
<mml:math id="m157">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>a</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> where <inline-formula id="inf123">
<mml:math id="m164">
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is linearly decreasing parameter from 2 to 0 over iterations defined as <inline-formula id="inf124">
<mml:math id="m165">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> where <inline-formula id="inf125">
<mml:math id="m166">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is current iteration number and <inline-formula id="inf126">
<mml:math id="m167">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is maximum number of iterations.</p>
<p>The updated position of the calf is given by:<disp-formula id="e32">
<mml:math id="m562">
<mml:mrow>
<mml:msub>
<mml:mover>
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(32)</label>
</disp-formula>where <inline-formula id="inf127">
<mml:math id="m163">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the final updated position of the calf after the GWO-based update.</p>
</sec>
<sec id="s5-1-5">
<label>5.1.5</label>
<title>Wormhole mechanizm via MVO</title>
<p>To introduce global stochasticity and enhance exploration, the MVO wormhole mechanism is applied to each calf with a probability <inline-formula id="inf128">
<mml:math id="m170">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>:<disp-formula id="e33">
<mml:math id="m171">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xb1;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>R</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo mathvariant="script">&#xb7;</mml:mo>
<mml:mi mathvariant="script">N</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(33)</label>
</disp-formula>where: <inline-formula id="inf129">
<mml:math id="m172">
<mml:mrow>
<mml:mi mathvariant="script">N</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is standard Gaussian noise. <inline-formula id="inf130">
<mml:math id="m173">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is wormhole Existence Probability, increasing over time, defined as:<disp-formula id="e34">
<mml:math id="m174">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(34)</label>
</disp-formula>
<inline-formula id="inf131">
<mml:math id="m175">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>R</mml:mi>
<mml:mo>:</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is travelling Distance Rate, decreasing over time, defined as:<disp-formula id="e35">
<mml:math id="m176">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(35)</label>
</disp-formula>
</p>
</sec>
<sec id="s5-1-6">
<label>5.1.6</label>
<title>Population merging and survival selection</title>
<p>The original Herd and the newly generated calves are merged. After sorting all individuals by fitness, the elite solutions <inline-formula id="inf132">
<mml:math id="m177">
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> from the previous generation are preserved, and the remaining (<inline-formula id="inf133">
<mml:math id="m178">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) individuals are selected from the best-performing candidates in the merged set.</p>
</sec>
<sec id="s5-1-7">
<label>5.1.7</label>
<title>Termination</title>
<p>The algorithm proceeds iteratively until the predefined maximum number of iterations (<inline-formula id="inf134">
<mml:math id="m179">
<mml:mrow>
<mml:mfenced open="" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> is reached. At termination, the best solution <inline-formula id="inf135">
<mml:math id="m574">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is returned.</p>
<p>A complete pseudocode of the IElk-GM is shown in <xref ref-type="table" rid="T2">Table 2</xref>, and the flowchart is illustrated in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Pseudocode of the IElk-GM algorithm.</p>
</caption>
<table>
<tbody valign="top">
<tr>
<td align="left">Algorithm IElk-GM (<inline-formula id="inf136">
<mml:math id="m181">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf137">
<mml:math id="m182">
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf138">
<mml:math id="m183">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf139">
<mml:math id="m184">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf140">
<mml:math id="m185">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf141">
<mml:math id="m186">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf142">
<mml:math id="m187">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>)<break/>Input:<break/>&#x2003;<inline-formula id="inf143">
<mml:math id="m188">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Population size (Herd size).<break/>&#x2003;<inline-formula id="inf544">
<mml:math id="m189">
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Problem dimensionality.<break/>&#x2003;<inline-formula id="inf145">
<mml:math id="m190">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Maximum number of iterations.<break/>&#x2003;<inline-formula id="inf146">
<mml:math id="m191">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Bull rate (e.g., 0.2).<break/>&#x2003;<inline-formula id="inf147">
<mml:math id="m192">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Elitism rate (e.g., 0.1).<break/>&#x2003;<inline-formula id="inf148">
<mml:math id="m193">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf149">
<mml:math id="m194">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Lower and upper bounds for variables.<break/>Output:<break/>&#x2003;<inline-formula id="inf150">
<mml:math id="m195">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Best solution found.<break/>&#x2003;<inline-formula id="inf151">
<mml:math id="m196">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x2190; Best fitness value.<break/>Begin<break/>1. Initialize Herd <inline-formula id="inf152">
<mml:math id="m197">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> randomly in [<inline-formula id="inf153">
<mml:math id="m198">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>], for <inline-formula id="inf154">
<mml:math id="m199">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>t</mml:mi>
<mml:mi>o</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>N</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>2. Evaluate fitness <inline-formula id="inf155">
<mml:math id="m200">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> for each individual.<break/>3. Sort <inline-formula id="inf156">
<mml:math id="m201">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> by ascending fitness.<break/>4. Preserve the top <inline-formula id="inf157">
<mml:math id="m202">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> individuals as Elites.<break/>5. For <inline-formula id="inf158">
<mml:math id="m203">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> to <inline-formula id="inf159">
<mml:math id="m204">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> do:<break/>&#x2003;a. Select top <inline-formula id="inf160">
<mml:math id="m205">
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> individuals as Bulls.<break/>&#x2003;b. Assign remaining <inline-formula id="inf161">
<mml:math id="m206">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>B</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> individuals as Harems.<break/>&#x2003;c. Assign a harem to bulls using a roulette wheel:<break/>&#x2003;&#x2003;For each harem <inline-formula id="inf162">
<mml:math id="m207">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;&#x2003;Choose bull <inline-formula id="inf163">
<mml:math id="m208">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> with probability:<break/>&#x2003;&#x2003;&#x2003;&#x2003;<inline-formula id="inf164">
<mml:math id="m209">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>/</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>/</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>K</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;d. For each harem <inline-formula id="inf165">
<mml:math id="m210">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> assigned to bull <inline-formula id="inf166">
<mml:math id="m211">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;i. Generate initial calf <inline-formula id="inf167">
<mml:math id="m212">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> using:<break/>&#x2003;&#x2003;&#x2003;<inline-formula id="inf168">
<mml:math id="m213">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;&#x2003;ii. Apply GWO update on <inline-formula id="inf169">
<mml:math id="m214">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;&#x2003;- Select <inline-formula id="inf170">
<mml:math id="m215">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>alpha</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf171">
<mml:math id="m216">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>beta</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf172">
<mml:math id="m217">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>delta</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> from the best three solutions<break/>&#x2003;&#x2003;&#x2003;- Compute:<break/>&#x2003;&#x2003;&#x2003;<inline-formula id="inf173">
<mml:math id="m218">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>a</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#xb7;</mml:mo>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;&#x2003;&#x2003;<inline-formula id="inf174">
<mml:math id="m219">
<mml:mrow>
<mml:mfenced open="" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>alpha</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#xb7;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>alpha</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;&#x2003;&#x2003;<inline-formula id="inf175">
<mml:math id="m220">
<mml:mrow>
<mml:mfenced open="" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>beta</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#xb7;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>beta</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;&#x2003;&#x2003;<inline-formula id="inf176">
<mml:math id="m221">
<mml:mrow>
<mml:mfenced open="" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>delta</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#xb7;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">X</mml:mi>
<mml:mtext>delta</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;&#x2003;&#x2003;<inline-formula id="inf177">
<mml:math id="m222">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;e. For each calf <inline-formula id="inf178">
<mml:math id="m223">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;i. Apply MVO wormhole mechanism with probability <inline-formula id="inf179">
<mml:math id="m224">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;&#x2003;For each dimension <inline-formula id="inf180">
<mml:math id="m225">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;&#x2003;&#x2003;If <inline-formula id="inf181">
<mml:math id="m226">
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;&#x2003;&#x2003;&#x2003;<inline-formula id="inf182">
<mml:math id="m227">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>R</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;&#x2003;&#x2003;&#x2003;Else:<break/>&#x2003;&#x2003;&#x2003;&#x2003;&#x2003;<inline-formula id="inf183">
<mml:math id="m228">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>R</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;f. Combine Herd and Calves into <inline-formula id="inf184">
<mml:math id="m229">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.<break/>&#x2003;g. Evaluate fitness of all individuals in <inline-formula id="inf185">
<mml:math id="m230">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.<break/>&#x2003;h. Sort <inline-formula id="inf186">
<mml:math id="m231">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and select:<break/>&#x2003;&#x2003;- Top <inline-formula id="inf187">
<mml:math id="m232">
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> elites from the previous generation.<break/>&#x2003;&#x2003;- Best <inline-formula id="inf188">
<mml:math id="m233">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> from <inline-formula id="inf189">
<mml:math id="m234">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to form a new Herd.<break/>&#x2003;i. Update <inline-formula id="inf190">
<mml:math id="m235">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf191">
<mml:math id="m236">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>R</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>:<break/>&#x2003;&#x2003;<inline-formula id="inf192">
<mml:math id="m237">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>&#x2003;&#x2003;<inline-formula id="inf193">
<mml:math id="m238">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>D</mml:mi>
<mml:mi>R</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<break/>6. Return the best individual <inline-formula id="inf194">
<mml:math id="m239">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and its fitness <inline-formula id="inf195">
<mml:math id="m240">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> from the final Herd.<break/>End</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>The flowchart of the IElk-GM algorithm.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g004.tif">
<alt-text content-type="machine-generated">Diagram showing a control system for a lower limb rehabilitation robot. On the left, the desired joint angles (&#x3B8;_d1 and &#x3B8;_d2) generate errors (e_1(t) and e_2(t)) fed into a proposed controller. The controller outputs control signals (u_1(t) and u_2(t)) to the robot, adjusting the hip and knee angles. On the right, a flowchart details the optimization process: initializing a herd, updating parameters, evaluating fitness, sorting, assigning harems, generating calves using GWO, modifying with MVO wormholes, merging populations, and checking iterations. The process concludes with either returning the best solution or continuing iterations.</alt-text>
</graphic>
</fig>
<p>The pseudo code of the IElk-GM is shown in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
</sec>
</sec>
</sec>
<sec id="s6">
<label>6</label>
<title>Simulation results</title>
<p>By using the facility of MATLAB software version (R2021b), simulating various LLRER for linear and non-linear desired trajectories with 10% uncertainties and disturbances (<inline-formula id="inf196">
<mml:math id="m241">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0.2</mml:mn>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>) were carried out to demonstrate the efficiency of FOPID and MFOPID based on the IElk-GM algorithm. <xref ref-type="table" rid="T3">Table 3</xref> provides the IElk-GM parameters for each rehabilitation exoskeleton robot link (1, 2), and the final optimal parameters for FOPID and MFOPID are shown in <xref ref-type="table" rid="T4">Table 4</xref>.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>The parameters of the IElk-GM algorithm.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">(IElk-GM) parameters</th>
<th align="center">FOPID</th>
<th align="center">MFOPID</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Maximum Number of Iterations <inline-formula id="inf197">
<mml:math id="m242">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">50</td>
<td align="center">50</td>
</tr>
<tr>
<td align="left">Population Size or Herd size (<inline-formula id="inf198">
<mml:math id="m243">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">20</td>
<td align="center">20</td>
</tr>
<tr>
<td align="left">Problem Dimension (<inline-formula id="inf199">
<mml:math id="m244">
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">14</td>
<td align="center">18</td>
</tr>
<tr>
<td align="left">Bull Rate (<inline-formula id="inf200">
<mml:math id="m245">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">0.2</td>
<td align="center">0.2</td>
</tr>
<tr>
<td align="left">Elitism Rate (<inline-formula id="inf201">
<mml:math id="m246">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">0.1</td>
<td align="center">0.1</td>
</tr>
<tr>
<td align="left">Lower bound (<inline-formula id="inf202">
<mml:math id="m247">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">[7; 7; 1; 7; 0.5; 0.3; 0.3; 6.5; 6.5; 1; 7; 0.5; 0.3; 0.3]</td>
<td align="center">[7; 7; 1; 7; 0.5; 0.1; 0.3; 0.3; 77; 6.5; 6.5; 1; 7; 0.005; 0.5; 0.3; 0.3; 97]</td>
</tr>
<tr>
<td align="left">Upper bound (<inline-formula id="inf203">
<mml:math id="m248">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">[14; 14; 3; 14; 2.5; 0.6; 0.6; 14; 14; 4; 14; 2.5; 0.6; 0.6]</td>
<td align="center">[14; 14; 3; 14; 2.5; 1.5; 0.6; 0.6; 86; 14; 14; 4; 14; 0.05; 2.5; 0.6; 0.6; 106]</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Optimal parameters of the FOPID and MFOPID obtained by the IElk-GM algorithm.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th rowspan="2" align="center">Links</th>
<th rowspan="2" align="center">Controller parameters</th>
<th colspan="2" align="center">Values</th>
</tr>
<tr>
<th align="center">FOPID</th>
<th align="center">MFOPID</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="9" align="center">Link1 (hip)</td>
<td align="center">
<inline-formula id="inf204">
<mml:math id="m249">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">8.73664</td>
<td align="center">9.26000</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf205">
<mml:math id="m250">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>21</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">11.74400</td>
<td align="center">13.00100</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf206">
<mml:math id="m251">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>31</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">2.37727</td>
<td align="center">1.03700</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf207">
<mml:math id="m252">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">11.69000</td>
<td align="center">13.00100</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf208">
<mml:math id="m253">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">N/A</td>
<td align="center">1.30000</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf209">
<mml:math id="m254">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">2.32938</td>
<td align="center">0.94400</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf210">
<mml:math id="m255">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.50000</td>
<td align="center">0.50000</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf211">
<mml:math id="m256">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.50000</td>
<td align="center">0.50000</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf212">
<mml:math id="m257">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">mod</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">N/A</td>
<td align="center">83.00100</td>
</tr>
<tr>
<td rowspan="9" align="center">Link2 (knee)</td>
<td align="center">
<inline-formula id="inf213">
<mml:math id="m258">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">13.00000</td>
<td align="center">10.78870</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf214">
<mml:math id="m259">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">7.00000</td>
<td align="center">13.0010</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf215">
<mml:math id="m260">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>32</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">1.00000</td>
<td align="center">3.09700</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf216">
<mml:math id="m261">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">13.00000</td>
<td align="center">13.00020</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf217">
<mml:math id="m262">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">N/A</td>
<td align="center">0.02330</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf218">
<mml:math id="m263">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.62792</td>
<td align="center">2.05000</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf219">
<mml:math id="m264">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bb;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.50000</td>
<td align="center">0.50000</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf220">
<mml:math id="m265">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.50000</td>
<td align="center">0.50000</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf221">
<mml:math id="m266">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">mod</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">N/A</td>
<td align="center">103.00020</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s6-1">
<label>6.1</label>
<title>Linear trajectory simulation results</title>
<p>The step response performance of the controlled LLRER subjected to a positive unit step input at link 1 (hip joint) and a negative unit step input at link 2 (knee joint) is illustrated in <xref ref-type="fig" rid="F5">Figures 5</xref>, <xref ref-type="fig" rid="F6">6</xref> for both FOPID and MFOPID controllers.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>The Position tracking error of hip and knee joints for linear trajectory with FOPID and MFOPID. <bold>(a)</bold> Hip joint response. <bold>(b)</bold> Knee joint response.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g005.tif">
<alt-text content-type="machine-generated">Two graphs labeled a and b show position versus time. Graph a depicts two lines: a smooth magenta line for FOPID and an oscillating red line for MFOPID converging to the reference in blue. Graph b shows a similar pattern with both lines converging to a negative reference position. Both graphs span ten seconds on the time axis.</alt-text>
</graphic>
</fig>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>The control inputs for linear trajectory with FOPID and MFOPID. <bold>(a)</bold> The control signal of the hip joint. <bold>(b)</bold> The control signal of the knee joint.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g006.tif">
<alt-text content-type="machine-generated">Two line graphs, labeled &#x22;a&#x22; and &#x22;b&#x22;, show control signals over time in seconds. Graph &#x22;a&#x22; presents Control Signal1 ranging from -200 to 400 N.m, and graph &#x22;b&#x22; shows Control Signal2 from -50 to 100 N.m. Both graphs compare two curves labeled &#x22;Based on FOPID&#x22; in red and &#x22;Based on MFOPID&#x22; in green. The FOPID shows more oscillation initially, settling at zero after a few seconds in both graphs, while MFOPID stabilizes faster with less oscillation.</alt-text>
</graphic>
</fig>
<p>The results demonstrate that the MFOPID controller significantly enhances system performance, enabling the robot to accurately follow the desired trajectory with fast transient response, zero overshoot, and negligible steady-state tracking error. Specifically, the settling times are reduced (from 6.998 s to 0.430 s for the hip joint and from 7.150 s to 0.829 s for the knee joint). Moreover, the control signals remain smooth and within acceptable torque limits of less than 345 Nm for link 1 and less than 95 Nm for link 2. In contrast, the FOPID controller exhibits slower convergence, minor overshoot, and less stable control signals, indicating inferior performance under the same conditions. <xref ref-type="table" rid="T5">Table 5</xref> lists the simulation results&#x2019; evaluation parameters for the FOPID and MFOPID.</p>
<table-wrap id="T5" position="float">
<label>TABLE 5</label>
<caption>
<p>The evaluation parameters of the simulation results for the FOPID and MFOPID.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th rowspan="2" align="center">Links</th>
<th rowspan="2" align="center">Parameter</th>
<th colspan="2" align="center">Value</th>
</tr>
<tr>
<th align="center">FOPID</th>
<th align="center">MFOPID</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="5" align="center">Link1 (hip)</td>
<td align="center">Overshoot <italic>M</italic>
<sub>
<italic>p</italic>
</sub> (%)</td>
<td align="center">0.138</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">Settling time <italic>t</italic>
<sub>
<italic>s</italic>
</sub> (<italic>sec.</italic>)</td>
<td align="center">6.998</td>
<td align="center">0.430</td>
</tr>
<tr>
<td align="center">Steady-state error <italic>e</italic>
<sub>
<italic>s.s</italic>
</sub> (Rad)</td>
<td align="center">0.018</td>
<td align="center">0.0015</td>
</tr>
<tr>
<td align="center">Rise time <italic>t</italic>
<sub>
<italic>r</italic>
</sub> (<italic>sec.</italic>)</td>
<td align="center">1.066</td>
<td align="center">0.485</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf222">
<mml:math id="m267">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">23.39</td>
<td align="center">2.694</td>
</tr>
<tr>
<td rowspan="5" align="center">Link2 (knee)</td>
<td align="center">Overshoot <italic>M</italic>
<sub>
<italic>p</italic>
</sub> (%)</td>
<td align="center">&#x2212;1.189</td>
<td align="center">0</td>
</tr>
<tr>
<td align="center">Settling time <italic>t</italic>
<sub>
<italic>s</italic>
</sub> (<italic>sec.</italic>)</td>
<td align="center">7.150</td>
<td align="center">0.829</td>
</tr>
<tr>
<td align="center">Steady-state error <italic>e</italic>
<sub>
<italic>s.s</italic>
</sub> (Rad)</td>
<td align="center">0.00001</td>
<td align="center">0.011</td>
</tr>
<tr>
<td align="center">Rise time <italic>t</italic>
<sub>
<italic>r</italic>
</sub> (<italic>sec.</italic>)</td>
<td align="center">0.157</td>
<td align="center">0.675</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf223">
<mml:math id="m268">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">16.95</td>
<td align="center">3.522</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s6-2">
<label>6.2</label>
<title>Non-linear trajectory simulation results</title>
<p>The simulation results of the LLRER using the FOPID and MFOPID, tested with the non-linear cosine input signal (<inline-formula id="inf224">
<mml:math id="m269">
<mml:mrow>
<mml:mfenced open="" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mn>1</mml:mn>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac bevelled="true">
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> for link1 and (<inline-formula id="inf225">
<mml:math id="m270">
<mml:mrow>
<mml:mfenced open="" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac bevelled="true">
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> for link2, are shown in <xref ref-type="fig" rid="F7">Figures 7</xref>, <xref ref-type="fig" rid="F8">8</xref>; these results demonstrate the performance to be reliable, despite the non-linearity of the input signal. The results demonstrate excellent performance parameters, negligible error, and a smooth control signal (less than 350 Nm for link 1 and less than 100 Nm for link 2) with MFOPID. In contrast, the standard FOPID controller exhibits inefficient tracking, with visible deviations from the reference trajectory and more oscillatory control actions, indicating its limited robustness under non-linear operating conditions.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>The Position tracking error of hip and knee joints for non-linear trajectory with FOPID and MFOPID. <bold>(a)</bold> Hip joint response. <bold>(b)</bold> Knee joint response.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g007.tif">
<alt-text content-type="machine-generated">Two line graphs labeled a and b compare position in radians over time in seconds, showing three lines: reference (blue), based on FOPID (red), and based on MFOPID (magenta). Graph a shows more variance between lines compared to graph b, where lines converge more closely. Both cover a time span from zero to ten seconds, with position varying from zero to 3.5 radians in a and negative one to 2.5 radians in b. A legend identifies each line style.</alt-text>
</graphic>
</fig>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>The control inputs for non-linear trajectory with FOPID and MFOPID. <bold>(a)</bold> The control signal of the hip joint. <bold>(b)</bold> The control signal of the knee joint.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g008.tif">
<alt-text content-type="machine-generated">Two graphs compare control signals over time. Graph (a) shows the control signal one, ranging from negative fifty to positive three hundred fifty Newton-meters. Graph (b) shows the control signal two, ranging from negative twenty to positive one hundred Newton-meters. Both graphs display results based on FOPID (red line) and MFOPID (green line) controllers over ten seconds, demonstrating similar trends with notable variations in amplitude and initial spikes.</alt-text>
</graphic>
</fig>
<p>To further validate the performance of the proposed MFOPID controller optimized via the IElk-GM algorithm, we conducted a direct comparison with the Adaptive Optimal Fractional-order Super-Twisting Sliding Mode (AOFSTSM) controller optimized using GWO, as proposed by <xref ref-type="bibr" rid="B8">Faraj et al. (2023)</xref>. We benchmarked MFOPID &#x2b; IElk-GM against AOFSTSM &#x2b; GWO along four dimensions: robustness, control-signal smoothness, constraint handling, and computational burden.<list list-type="simple">
<list-item>
<p>i. Robustness: AOFSTSM attains high disturbance rejection via super-twisting on a fractional sliding surface and adaptive bound estimation, as reported in Faraj et al. (<xref ref-type="bibr" rid="B8">Faraj et al., 2023</xref>), whereas MFOPID achieves comparable tracking envelopes under parametric variations using smoothly shaped fractional actions without signum-type injections.</p>
</list-item>
<list-item>
<p>ii. Smoothness (chattering/torque ripple): AOFSTSM is designed to be chatter-free relative to classical SMC, yet it still relies on high-gain equivalent dynamics; by construction, MFOPID produces continuously valued torques with lower total-variation/jerk an advantage for exoskeleton comfort and actuator wear during repeated therapy cycles.</p>
</list-item>
<list-item>
<p>iii. Constraint awareness: AOFSTSM explicitly treats ground-contact constrained motion in the model; MFOPID pipeline complements this by reference shaping and torque bounding within the PID-type framework to remain constraint-compatible while keeping the controller structure simple.</p>
</list-item>
<list-item>
<p>iv. Computational burden and tuning: AOFSTSM entails online adaptive updates and super-twisting logic tuned by GWO; MFOPID uses fixed-structure fractional filters and is tuned offline by IElk-GM (IEHO &#x2b; GWO &#x2b; MVO), yielding a lighter real-time implementation and improved optimizer convergence over single-algorithm GWO.</p>
</list-item>
</list>
</p>
<p>In summary, the AOFSTSM remains preferable when maximal invariance to severe uncertainties is paramount, whereas MFOPID &#x2b; IElk-GM is advantageous when smooth control, embedded simplicity, and energy/comfort metrics are prioritized while maintaining competitive tracking accuracy. <xref ref-type="table" rid="T6">Table 6</xref> summarizes the standard time-domain indices and control signals for hip and knee joints. MFOPID values come from our step-response results (<xref ref-type="table" rid="T5">Table 5</xref>), and AOFSTSM values are obtained from Faraj et al.&#x2018;s published plots by careful digitization (their paper does not tabulate these time-indices explicitly). In the last column of <xref ref-type="table" rid="T6">Table 6</xref> we additionally report the percent improvement of MFOPID relative to the AOFSTSMC baseline, computed for lower-is-better indices as<disp-formula id="equ11">
<mml:math id="m271">
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>v</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mo>%</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>F</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>D</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>A</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>F</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>F</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>T</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2a;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>%</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<table-wrap id="T6" position="float">
<label>TABLE 6</label>
<caption>
<p>Comparison (hip and knee).</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Joint</th>
<th align="center">Metric</th>
<th align="center">MFOPID</th>
<th align="center">AOFSTSM (<xref ref-type="bibr" rid="B8">Faraj et al., 2023</xref>)</th>
<th align="center">Improvement (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="6" align="center">Hip</td>
<td align="center">Overshoot <inline-formula id="inf226">
<mml:math id="m272">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (%)</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf227">
<mml:math id="m273">
<mml:mrow>
<mml:mo>&#x223c;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 3.4</td>
<td align="center">&#x2b;100%</td>
</tr>
<tr>
<td align="center">Settling time <inline-formula id="inf228">
<mml:math id="m274">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.430</td>
<td align="center">&#x223c;1.95</td>
<td align="center">&#x2b;77.9%</td>
</tr>
<tr>
<td align="center">Rise time <inline-formula id="inf229">
<mml:math id="m275">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.485</td>
<td align="center">&#x223c;0.028</td>
<td align="center">&#x2212;1,632.1%</td>
</tr>
<tr>
<td align="center">Steady-state error <inline-formula id="inf230">
<mml:math id="m276">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (Rad)</td>
<td align="center">0.0015</td>
<td align="center">
<inline-formula id="inf231">
<mml:math id="m277">
<mml:mrow>
<mml:mo>&#x223c;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.0242</td>
<td align="center">&#x2b;93.8%</td>
</tr>
<tr>
<td align="center">Control Signal (Torque (N.m))</td>
<td align="center">
<inline-formula id="inf232">
<mml:math id="m278">
<mml:mrow>
<mml:mo>
</mml:mo>
<mml:mn>345</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2248;80</td>
<td align="center">&#x2212;331.3%</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf233">
<mml:math id="m279">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">2.694</td>
<td align="center">N/A</td>
<td align="center">N/A</td>
</tr>
<tr>
<td rowspan="6" align="center">Knee</td>
<td align="center">Overshoot <inline-formula id="inf234">
<mml:math id="m280">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (%)</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf235">
<mml:math id="m281">
<mml:mrow>
<mml:mo>&#x223c;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.53</td>
<td align="center">&#x2b;100%</td>
</tr>
<tr>
<td align="center">Settling time <inline-formula id="inf236">
<mml:math id="m282">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.829</td>
<td align="center">
<inline-formula id="inf237">
<mml:math id="m283">
<mml:mrow>
<mml:mo>&#x223c;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.059</td>
<td align="center">&#x2212;1,305.1%</td>
</tr>
<tr>
<td align="center">Rise time <inline-formula id="inf238">
<mml:math id="m284">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.675</td>
<td align="center">
<inline-formula id="inf239">
<mml:math id="m285">
<mml:mrow>
<mml:mo>&#x223c;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.030</td>
<td align="center">&#x2212;2,150%</td>
</tr>
<tr>
<td align="center">Steady-state error <inline-formula id="inf240">
<mml:math id="m286">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (Rad)</td>
<td align="center">0.011</td>
<td align="center">
<inline-formula id="inf241">
<mml:math id="m287">
<mml:mrow>
<mml:mo>&#x223c;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.0071</td>
<td align="center">&#x2212;54.9%</td>
</tr>
<tr>
<td align="center">Control Signal (Torque (N.m))</td>
<td align="center">&#x2264;90</td>
<td align="center">
<inline-formula id="inf242">
<mml:math id="m288">
<mml:mrow>
<mml:mo>&#x2248;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 60</td>
<td align="center">&#x2212;50%</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf243">
<mml:math id="m289">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">3.522</td>
<td align="center">N/A</td>
<td align="center">N/A</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Positive values indicate that MFOPID is lower/better than the AOFSTSMC baseline; negative values indicate the opposite. The same improvements are shown in <xref ref-type="fig" rid="F9">Figure 9</xref> for clarity.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Percent improvement of MFOPID &#x2b; IElk-GM relative to AOFSTSMC &#x2b; GWO.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g009.tif">
<alt-text content-type="machine-generated">Bar chart comparing performance metrics for hip and knee, shown in blue and pink, respectively. Metrics include Overshoot, Settling Time, Rise Time, Steady-State Error, Peak Control Torque, and ITAE. The hip shows higher values in Rise Time and ITAE, while the knee shows higher values in others, notably high Overshoot and Rise Time percentages.</alt-text>
</graphic>
</fig>
<p>The MFOPID was tuned with an ITAE-centric objective plus mild penalties on overshoot and torque bounds to favor comfort-oriented transients and smooth actuation. On Link 2 (knee), the combination of nonlinearities and anti-windup under actuator limits attenuates the effective integral action near steady state, yielding a small residual offset (<inline-formula id="inf244">
<mml:math id="m290">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> <inline-formula id="inf245">
<mml:math id="m291">
<mml:mrow>
<mml:mo>&#x2248;</mml:mo>
<mml:mn>0.011</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> rad <inline-formula id="inf246">
<mml:math id="m292">
<mml:mrow>
<mml:mo>&#x2248;</mml:mo>
<mml:mn>0.63</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>). This trade-off is intentional, it yields zero overshoot, short/competitive settling times, and non-switching, low-ripple control torques (see <xref ref-type="table" rid="T6">Tables 6</xref>&#x2013;<xref ref-type="table" rid="T8">8</xref>), which are clinically more relevant for repeated therapy than pushing <inline-formula id="inf247">
<mml:math id="m293">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to machine precision. If needed, the offset can be further reduced without altering the main conclusions by (i) slightly increasing the integral weight for Link 2 within the same torque limits, (ii) adding light feedforward compensation (gravity/friction), or (iii) adopting a 2-DoF set-point weighting that preserves the overshoot-free transient while tightening steady-state accuracy.</p>
<table-wrap id="T7" position="float">
<label>TABLE 7</label>
<caption>
<p>Qualitative smoothness/comfort comparison.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Criterion</th>
<th align="center">AOFSTSM</th>
<th align="center">MFOPID &#x2b; IElk-GM</th>
<th align="center">Evidence</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">High-frequency ripple in torque</td>
<td align="center">Mitigated but can appear in bursts</td>
<td align="center">Absent (continuous)</td>
<td align="center">Overlaid torque plots</td>
</tr>
<tr>
<td align="center">Sharp switching edges</td>
<td align="center">Possible</td>
<td align="center">None</td>
<td align="center">Torque time histories</td>
</tr>
<tr>
<td align="center">Overshoot in joint angles</td>
<td align="center">Possible</td>
<td align="center">None observed</td>
<td align="center">Tracking plots</td>
</tr>
<tr>
<td align="center">Patient comfort/actuator stress</td>
<td align="center">Acceptable</td>
<td align="center">Improved</td>
<td align="center">Smoother control action</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T8" position="float">
<label>TABLE 8</label>
<caption>
<p>Implementation complexity.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Aspect</th>
<th align="center">AOFSTSM</th>
<th align="center">MFOPID &#x2b; IElk-GM</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Online adaptation</td>
<td align="center">Required (bound estimator)</td>
<td align="center">Not required (offline tuning)</td>
</tr>
<tr>
<td align="center">Discontinuous/switching term</td>
<td align="center">Yes (super-twisting)</td>
<td align="center">No (continuous)</td>
</tr>
<tr>
<td align="center">Runtime states</td>
<td align="center">Sliding-surface &#x2b; ST/adaptation</td>
<td align="center">Fixed fractional filters only</td>
</tr>
<tr>
<td align="center">Embedded tuning workload</td>
<td align="center">Higher</td>
<td align="center">Lower</td>
</tr>
<tr>
<td align="center">Deployment/verification effort</td>
<td align="center">Higher</td>
<td align="center">Lower</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The data in <xref ref-type="table" rid="T6">Table 6</xref> quantitatively substantiates the qualitative contrast above. For smoothness and comfort, MFOPID &#x2b; IElk-GM yields overshoot-free transients in both joints with short settling times (<inline-formula id="inf248">
<mml:math id="m294">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.430</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for hip; <inline-formula id="inf249">
<mml:math id="m295">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.829</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for knee), despite the absence of any switching terms. Tracking accuracy remains competitive: steady-state errors are small for both controllers; in the hip joint, AOFSTSM achieves a slightly lower <inline-formula id="inf250">
<mml:math id="m296">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (as expected for a sliding-mode design), while MFOPID maintains comparable accuracy without chattering mechanisms. Regarding control effort, MFOPID&#x2019;s step-test peaks are bounded (<inline-formula id="inf251">
<mml:math id="m297">
<mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>345</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> N.m for hip; &#x2264;90 N m for knee) and decay rapidly, whereas the peaks read for AOFSTSM in the uncertainty-case plots are <inline-formula id="inf252">
<mml:math id="m298">
<mml:mrow>
<mml:mo>&#x2248;</mml:mo>
<mml:mn>80</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> N.m for hip, and <inline-formula id="inf253">
<mml:math id="m299">
<mml:mrow>
<mml:mo>&#x2248;</mml:mo>
<mml:mn>60</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> N.m for knee; because the experimental contexts differ, these magnitudes are reported for completeness rather than as a like-for-like torque comparison, and the time-domain indices (<inline-formula id="inf254">
<mml:math id="m300">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf255">
<mml:math id="m301">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf256">
<mml:math id="m302">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf257">
<mml:math id="m303">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) should be taken as the primary evidence. Finally, the implementation burden of MFOPID remains lower due to its fixed, continuous fractional-PID structure with offline IElk-GM tuning, which simplifies embedded deployment while preserving the favorable transients summarized above.</p>
<p>Beyond the indices in <xref ref-type="table" rid="T6">Table 6</xref>, the benefits of MFOPID &#x2b; IElk-GM can be assessed without relying on unavailable numeric data from (<xref ref-type="bibr" rid="B8">Faraj et al., 2023</xref>). First, MFOPID is continuous and non-switching, which is reflected in smoother torque traces (no high-frequency flicker or sharp corners) and is desirable for patient comfort and actuator longevity. Second, the overshoot-free transients observed in our plots indicate comfort-oriented behavior while maintaining competitive steady-state accuracy. Third, implementation is lighter: MFOPID uses a fixed-structure fractional PID tuned offline, whereas AOFSTSM requires super-twisting and online adaptive bounds. These points are summarized in <xref ref-type="table" rid="T7">Tables 7</xref>, <xref ref-type="table" rid="T8">8</xref>.</p>
<p>Beyond the FOPID, we include two hybrid-optimized classical FOPID baselines: FOPID &#x2b; PSO-GWO (PSO phase for global exploration followed by GWO refinement) and FOPID &#x2b; GWO-MVO (GWO coarse search followed by MVO fine search). All controllers are evaluated under the same plant, references, actuator limits, and disturbance/uncertainty scenarios. The composite objective is ITAE with mild penalties on overshoot, settling time, and torque bounds; the optimization budget (population size &#xd7; iterations) is matched across methods. We report settling time, overshoot, rising time, steady-state error, and control torque. For readability, we also provide percent improvements of MFOPID relative to each baseline using:<disp-formula id="equ12">
<mml:math id="m304">
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>v</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mo>%</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>F</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>D</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2a;</mml:mo>
<mml:mn>100</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>%</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>For all lower-is-better indices. Positive values indicate MFOPID is lower/better. Additionally, <xref ref-type="table" rid="T9">Tables 9</xref>, <xref ref-type="table" rid="T10">10</xref> summarize the robustness results, while <xref ref-type="fig" rid="F10">Figures 10</xref>&#x2013;<xref ref-type="fig" rid="F17">17</xref> depict the joint-position and control-torque responses for linear and nonlinear trajectories.</p>
<table-wrap id="T9" position="float">
<label>TABLE 9</label>
<caption>
<p>Robustness Summary based on FOPID &#x2b; PSO-GWO.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Joint</th>
<th align="center">Metric</th>
<th align="center">MFOPID</th>
<th align="center">FOPID &#x2b; PSO-GWO</th>
<th align="center">Improvement (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="6" align="center">Hip</td>
<td align="center">Overshoot <inline-formula id="inf258">
<mml:math id="m305">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (%)</td>
<td align="center">0</td>
<td align="center">12.8</td>
<td align="center">&#x2b;100%</td>
</tr>
<tr>
<td align="center">Settling time <inline-formula id="inf259">
<mml:math id="m306">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.430</td>
<td align="center">6.702</td>
<td align="center">&#x2b;93.6%</td>
</tr>
<tr>
<td align="center">Rise time <inline-formula id="inf260">
<mml:math id="m307">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.485</td>
<td align="center">1.022</td>
<td align="center">&#x2b;52.5%</td>
</tr>
<tr>
<td align="center">Steady-state error <inline-formula id="inf261">
<mml:math id="m308">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (Rad)</td>
<td align="center">0.0015</td>
<td align="center">
<inline-formula id="inf262">
<mml:math id="m309">
<mml:mrow>
<mml:mn>0.029</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2b;94.8%</td>
</tr>
<tr>
<td align="center">Control Signal (Torque (N.m))</td>
<td align="center">
<inline-formula id="inf263">
<mml:math id="m310">
<mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>345</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">96</td>
<td align="center">&#x2212;259.4%</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf264">
<mml:math id="m311">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">2.694</td>
<td align="center">22.91</td>
<td align="center">&#x2b;88.2</td>
</tr>
<tr>
<td rowspan="6" align="center">Knee</td>
<td align="center">Overshoot <inline-formula id="inf265">
<mml:math id="m312">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (%)</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf266">
<mml:math id="m313">
<mml:mrow>
<mml:mn>119.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2b;100%</td>
</tr>
<tr>
<td align="center">Settling time <inline-formula id="inf267">
<mml:math id="m314">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.829</td>
<td align="center">
<inline-formula id="inf268">
<mml:math id="m315">
<mml:mrow>
<mml:mn>6.545</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2b;78.3%</td>
</tr>
<tr>
<td align="center">Rise time <inline-formula id="inf269">
<mml:math id="m316">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.675</td>
<td align="center">
<inline-formula id="inf270">
<mml:math id="m317">
<mml:mrow>
<mml:mn>0.157</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2212;330%</td>
</tr>
<tr>
<td align="center">Steady-state error <inline-formula id="inf271">
<mml:math id="m318">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (Rad)</td>
<td align="center">0.011</td>
<td align="center">
<inline-formula id="inf272">
<mml:math id="m319">
<mml:mrow>
<mml:mn>0.034</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2b;67.6.3%</td>
</tr>
<tr>
<td align="center">Control Signal (Torque (N.m))</td>
<td align="center">&#x2264;90</td>
<td align="center">38.3</td>
<td align="center">&#x2212;135%</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf273">
<mml:math id="m320">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">3.522</td>
<td align="center">17.5</td>
<td align="center">&#x2b;80</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T10" position="float">
<label>TABLE 10</label>
<caption>
<p>Robustness Summary based on FOPID &#x2b; GWO-MVO.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Joint</th>
<th align="center">Metric</th>
<th align="center">MFOPID</th>
<th align="center">FOPID &#x2b; PSO-GWO</th>
<th align="center">Improvement (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="6" align="center">Hip</td>
<td align="center">Overshoot <inline-formula id="inf274">
<mml:math id="m321">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (%)</td>
<td align="center">0</td>
<td align="center">65.7</td>
<td align="center">&#x2b;100%</td>
</tr>
<tr>
<td align="center">Settling time <inline-formula id="inf275">
<mml:math id="m322">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.430</td>
<td align="center">4.265</td>
<td align="center">&#x2b;90%</td>
</tr>
<tr>
<td align="center">Rise time <inline-formula id="inf276">
<mml:math id="m323">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.485</td>
<td align="center">0.278</td>
<td align="center">&#x2212;26.5%</td>
</tr>
<tr>
<td align="center">Steady-state error <inline-formula id="inf277">
<mml:math id="m324">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (Rad)</td>
<td align="center">0.0015</td>
<td align="center">
<inline-formula id="inf278">
<mml:math id="m325">
<mml:mrow>
<mml:mn>0.011</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2b;86.4%</td>
</tr>
<tr>
<td align="center">Control Signal (Torque (N.m))</td>
<td align="center">
<inline-formula id="inf279">
<mml:math id="m326">
<mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>345</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">100</td>
<td align="center">&#x2212;295%</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf280">
<mml:math id="m327">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">2.694</td>
<td align="center">20.75</td>
<td align="center">&#x2b;87</td>
</tr>
<tr>
<td rowspan="6" align="center">Knee</td>
<td align="center">Overshoot <inline-formula id="inf281">
<mml:math id="m328">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (%)</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf282">
<mml:math id="m329">
<mml:mrow>
<mml:mn>87.6</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2b;100%</td>
</tr>
<tr>
<td align="center">Settling time <inline-formula id="inf283">
<mml:math id="m330">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.829</td>
<td align="center">
<inline-formula id="inf284">
<mml:math id="m331">
<mml:mrow>
<mml:mn>4.067</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2b;80%</td>
</tr>
<tr>
<td align="center">Rise time <inline-formula id="inf285">
<mml:math id="m332">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (sec.)</td>
<td align="center">0.675</td>
<td align="center">
<inline-formula id="inf286">
<mml:math id="m333">
<mml:mrow>
<mml:mn>0.157</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2212;330%</td>
</tr>
<tr>
<td align="center">Steady-state error <inline-formula id="inf287">
<mml:math id="m334">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (Rad)</td>
<td align="center">0.011</td>
<td align="center">
<inline-formula id="inf288">
<mml:math id="m335">
<mml:mrow>
<mml:mn>0.004</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2212;175%</td>
</tr>
<tr>
<td align="center">Control Signal (Torque (N.m))</td>
<td align="center">&#x2264;90</td>
<td align="center">37</td>
<td align="center">&#x2212;143.2%</td>
</tr>
<tr>
<td align="center">ITAE (Rad. <inline-formula id="inf289">
<mml:math id="m336">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">sec</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">3.522</td>
<td align="center">27.26</td>
<td align="center">&#x2b;87</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>The Position tracking error of hip and knee joints for linear trajectory with FOPID &#x2b; PSO-GWO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> Hip joint response. <bold>(b)</bold> Knee joint response.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g010.tif">
<alt-text content-type="machine-generated">Two graphs labeled &#x22;a&#x22; and &#x22;b&#x22; show position versus time. Both compare a reference line with two control methods: FOPID&#x2b;PSO-GWO and MFOPID&#x2b;IEIk-GM. Graph &#x22;a&#x22; shows oscillations stabilizing around 1 radian, while graph &#x22;b&#x22; shows oscillations stabilizing around -1 radian over 10 seconds. The reference line remains constant in both graphs.</alt-text>
</graphic>
</fig>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>The control inputs for linear trajectory with FOPID &#x2b; PSO-GWO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> The control signal of the hip joint. <bold>(b)</bold> The control signal of the knee joint.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g011.tif">
<alt-text content-type="machine-generated">Two line graphs labeled &#x22;a&#x22; and &#x22;b&#x22; show control signals over time in seconds, with Newton-meters as the unit. Both graphs compare FOPID&#x2b;PSO-GWO (red line) and MFOPID&#x2b;IElk-GM (green line) methods. The graphs illustrate oscillations and eventual stabilization, with the green line stabilizing more quickly.</alt-text>
</graphic>
</fig>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>The Position tracking error of hip and knee joints for non-linear trajectory with FOPID &#x2b; PSO-GWO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> Hip joint response. <bold>(b)</bold> Knee joint response.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g012.tif">
<alt-text content-type="machine-generated">Two graphs labeled &#x22;a&#x22; and &#x22;b&#x22; display position over time in radians for three methods: Ref. (blue), FOPID&#x2b;PSO-GWO (red), and MFOPID&#x2b;IEIk-GM (purple). The time axis ranges from zero to ten seconds. In both graphs, the three lines exhibit a periodic wave pattern, with variations in amplitude and phase alignment among the methods.</alt-text>
</graphic>
</fig>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>The control inputs for non-linear trajectory with FOPID &#x2b; PSO-GWO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> The control signal of the hip joint. <bold>(b)</bold> The control signal of the knee joint.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g013.tif">
<alt-text content-type="machine-generated">Two line graphs labeled &#x22;a&#x22; and &#x22;b&#x22; compare control signals over time for two methods: FOPID&#x2b;PSO-GWO (red) and MFOPID&#x2b;IElK-GM (green). Both graphs display oscillations from 0 to 10 seconds, with graph &#x22;a&#x22; showing a larger range of control signals than graph &#x22;b&#x22;.</alt-text>
</graphic>
</fig>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>The Position tracking error of hip and knee joints for linear trajectory with FOPID &#x2b; GWO-MVO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> Hip joint response. <bold>(b)</bold> Knee joint response.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g014.tif">
<alt-text content-type="machine-generated">Graph with two plots labeled &#x22;a&#x22; and &#x22;b&#x22;. Both show position in radians versus time in seconds. Plot &#x22;a&#x22; compares a blue reference curve with red and magenta lines using FOPID&#x2b;GWO-MVO and MFOPID&#x2b;IELk-GM methods, respectively. Plot &#x22;b&#x22; mirrors these comparisons but with different initial conditions. Legend indicates line color meaning.</alt-text>
</graphic>
</fig>
<fig id="F15" position="float">
<label>FIGURE 15</label>
<caption>
<p>The control inputs for linear trajectory with FOPID &#x2b; GWO-MVO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> The control signal of the hip joint. <bold>(b)</bold> The control signal of the knee joint.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g015.tif">
<alt-text content-type="machine-generated">Two line graphs compare control signals over time for two methods: FOPID&#x2b;GWO-MVO (red line) and MFOPID&#x2b;IEIk-GM (green line). Graph (a) shows control signals from approximately -200 to 400 N.m, stabilizing near zero. Graph (b) shows control signals ranging from -50 to 100 N.m, also stabilizing near zero. Both graphs are plotted over a ten-second period.</alt-text>
</graphic>
</fig>
<fig id="F16" position="float">
<label>FIGURE 16</label>
<caption>
<p>The Position tracking error of hip and knee joints for non-linear trajectory with FOPID &#x2b; GWO-MVO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> Hip joint response. <bold>(b)</bold> Knee joint response.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g016.tif">
<alt-text content-type="machine-generated">Graph with two plots, labeled as &#x22;a&#x22; and &#x22;b&#x22;, comparing control strategies over time. The x-axis represents time in seconds from 0 to 10, and the y-axis represents position in radians from -1 to 3.5. Three lines are shown: a blue line as the reference, a red line based on FOPID&#x2b;GWO-MVO, and a magenta line based on MFOPID&#x2b;IEk-GM. Both plots show similar periodic wave patterns.</alt-text>
</graphic>
</fig>
<fig id="F17" position="float">
<label>FIGURE 17</label>
<caption>
<p>The control inputs for non-linear trajectory with FOPID &#x2b; GWO-MVO and MFOPID &#x2b; IElk-GM. <bold>(a)</bold> The control signal of the hip joint. <bold>(b)</bold> The control signal of the knee joint.</p>
</caption>
<graphic xlink:href="frobt-12-1667688-g017.tif">
<alt-text content-type="machine-generated">Two graphs, labeled (a) and (b), plot control signals over time for two methods: FOPID with GWO-MVO (red) and MFOPID with IEk-GM (green). Graph (a) shows fluctuating signals from negative to positive, peaking early, then oscillating until stabilizing. Graph (b) shows similar but reduced intensity fluctuations, also stabilizing over time. Both graphs cover a time span of zero to ten seconds.</alt-text>
</graphic>
</fig>
</sec>
</sec>
<sec sec-type="conclusion" id="s7">
<label>7</label>
<title>Conclusion</title>
<p>This study presented the design and implementation of a Modified Fractional Order Proportional-Integral-Derivative (MFOPID) controller for a 2-DoF lower limb rehabilitation exoskeleton robot. The proposed MFOPID structure introduces a non-linear error formulation aimed at improving transient response, eliminating overshoot, and reducing steady-state error compared to the conventional FOPID controller. To efficiently tune the controller&#x2019;s parameters, an improved hybrid metaheuristic algorithm, Improved Elk Herd Optimization combined with Grey Wolf Optimization and Multi-Verse Optimization (IElk-GM), was developed to balance exploration and exploitation during the search process. The proposed control framework was evaluated through extensive simulations under both linear and non-linear trajectory tracking tasks, with parametric uncertainties and external disturbances. Results demonstrate that the MFOPID controller significantly outperforms the classical FOPID in terms of response speed, tracking accuracy, overshoot suppression, and control smoothness. Specifically, the MFOPID achieved zero overshoot, reduced settling times (from 6.998 s to 0.430 s for the hip joint and from 7.150 s to 0.829 s for the knee joint), and delivered smoother control signals. These results confirm the potential of the MFOPID controller, optimized via hybrid evolutionary techniques, as a promising solution for improving the performance, safety, and reliability of robot-assisted rehabilitation systems. Future work may involve the real-time implementation on a physical exoskeleton prototype, the inclusion of the patient in loop testing, and comparison with adaptive and learning-based control strategies.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s8">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article; further inquiries can be directed to the corresponding author.</p>
</sec>
<sec sec-type="author-contributions" id="s9">
<title>Author contributions</title>
<p>NM: Conceptualization, Data curation, Formal Analysis, Investigation, Methodology, Project administration, Resources, Software, Validation, Visualization, Writing &#x2013; original draft, Writing &#x2013; review and editing. MS: Supervision, Writing &#x2013; review and editing. NA: Supervision, Writing &#x2013; review and editing.</p>
</sec>
<sec sec-type="COI-statement" id="s11">
<title>Conflict of interest</title>
<p>The authors declare 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="s12">
<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="s13">
<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/2850612/overview">Shiqi Zheng</ext-link>, China University of Geosciences Wuhan, China</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/2007068/overview">Naifar Omar</ext-link>, National Engineering School of Sfax, Tunisia</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3154177/overview">Ram Kumar</ext-link>, Government Engineering College, Khagaria, India</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3186143/overview">Yixuan Guo</ext-link>, Shenzhen People&#x2019;s Hospital (The Second Clinical Medical College, Jinan University; The First Affiliated Hospital, Southern University of Science and Technology), China</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>Abdulwahhab</surname>
<given-names>O. W.</given-names>
</name>
<name>
<surname>Abbas</surname>
<given-names>N. H.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Survey study of factional order controllers</article-title>. <source>J. Eng.</source> <volume>26</volume> (<issue>4</issue>), <fpage>188</fpage>&#x2013;<lpage>201</lpage>. <pub-id pub-id-type="doi">10.31026/j.eng.2020.04.13</pub-id>
</mixed-citation>
</ref>
<ref id="B2">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Aguirre-Ollinger</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Chua</surname>
<given-names>K. S. G.</given-names>
</name>
<name>
<surname>Ong</surname>
<given-names>P. L.</given-names>
</name>
<name>
<surname>Kuah</surname>
<given-names>C. W. K.</given-names>
</name>
<name>
<surname>Plunkett</surname>
<given-names>T. K.</given-names>
</name>
<name>
<surname>Ng</surname>
<given-names>C. Y.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>Telerehabilitation using a 2-D planar arm rehabilitation robot for hemiparetic stroke: a feasibility study of clinic-to-home exergaming therapy</article-title>. <source>J. NeuroEng. Rehabil.</source> <volume>21</volume> (<issue>207</issue>), <fpage>207</fpage>. <pub-id pub-id-type="doi">10.1186/s12984-024-01496-6</pub-id>
<pub-id pub-id-type="pmid">39593101</pub-id>
</mixed-citation>
</ref>
<ref id="B3">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Al Rezage</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Tokhi</surname>
<given-names>M. O.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Fuzzy PID control of lower limb exoskeleton for elderly mobility</article-title>. In: <conf-name>Proc. IEEE int. Conf. Control, automation and systems (ICCAS)</conf-name>; <conf-loc>Cluj-Napoca, Romania</conf-loc>: <publisher-name>IEEE</publisher-name>. p. <fpage>1</fpage>&#x2013;<lpage>6</lpage>. <pub-id pub-id-type="doi">10.1109/AQTR.2016.7501310</pub-id>
</mixed-citation>
</ref>
<ref id="B4">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Al-Betar</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Awadallah</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Braik</surname>
<given-names>M. S.</given-names>
</name>
<name>
<surname>Makhadmeh</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Doush</surname>
<given-names>I. A.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Elk herd optimizer: a novel nature-inspired metaheuristic algorithm</article-title>. <source>Artif. Intell. Rev.</source> <volume>57</volume> (<issue>48</issue>), <fpage>48</fpage>&#x2013;<lpage>60</lpage>. <pub-id pub-id-type="doi">10.1007/s10462-023-10680-4</pub-id>
</mixed-citation>
</ref>
<ref id="B5">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Alshatti</surname>
<given-names>A. K.</given-names>
</name>
</person-group> (<year>2019</year>). <source>Design and control of lower limb assistive exoskeleton for hemiplegia mobility</source>,. <publisher-loc>Sheffield, United Kingdom</publisher-loc>: <publisher-name>University of Sheffield</publisher-name>. <comment>Available online at: <ext-link ext-link-type="uri" xlink:href="http://etheses.whiterose.ac.uk/24891/">http://etheses.whiterose.ac.uk/24891/</ext-link> (Accessed September 29, 2025).</comment>
</mixed-citation>
</ref>
<ref id="B6">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ayas</surname>
<given-names>M. S.</given-names>
</name>
<name>
<surname>Altas</surname>
<given-names>I. H.</given-names>
</name>
<name>
<surname>Sahin</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Fractional order based trajectory tracking control of an ankle rehabilitation robot</article-title>. <source>Trans. Inst. Meas. Control</source> <volume>39</volume> (<issue>12</issue>), <fpage>550</fpage>&#x2013;<lpage>564</lpage>. <pub-id pub-id-type="doi">10.1177/0142331216667810</pub-id>
</mixed-citation>
</ref>
<ref id="B7">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>An effective surrogate model assisted algorithm for multi-objective optimization: application to wind farm layout design</article-title>. <source>Front. Energy Res.</source> <volume>11</volume>, <fpage>1239332</fpage>. <pub-id pub-id-type="doi">10.3389/fenrg.2023.1239332</pub-id>
</mixed-citation>
</ref>
<ref id="B8">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Faraj</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Maalej</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Derbel</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Naifar</surname>
<given-names>O.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Adaptive fractional&#x2010;order super&#x2010;twisting sliding mode controller for lower limb rehabilitation exoskeleton in constraint circumstances based on the grey wolf optimization algorithm</article-title>. <source>Math. Problems Eng.</source> <volume>2023</volume>, <fpage>9641673</fpage>. <pub-id pub-id-type="doi">10.1155/2023/9641673</pub-id>
</mixed-citation>
</ref>
<ref id="B9">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Tian</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ma</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Model-free finite-time robust control using fractional-order ultra-local model and prescribed performance sliding surface for upper-limb rehabilitation exoskeleton</article-title>. <source>ISA Trans.</source> <volume>147</volume>, <fpage>511</fpage>&#x2013;<lpage>526</lpage>. <pub-id pub-id-type="doi">10.1016/j.isatra.2024.02.002</pub-id>
<pub-id pub-id-type="pmid">38336511</pub-id>
</mixed-citation>
</ref>
<ref id="B10">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kiyono</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Tanabe</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hirano</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Ii</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Nakagawa</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>K.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>Effectiveness of robotic devices for medical rehabilitation: an umbrella review</article-title>. <source>J. Clin. Med.</source> <volume>13</volume> (<issue>21</issue>), <fpage>6616</fpage>. <pub-id pub-id-type="doi">10.3390/jcm13216616</pub-id>
<pub-id pub-id-type="pmid">39518755</pub-id>
</mixed-citation>
</ref>
<ref id="B11">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mirjalili</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Mirjalili</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Lewis</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Grey wolf optimizer</article-title>. <source>Adv. Eng. Softw.</source> <volume>69</volume>, <fpage>46</fpage>&#x2013;<lpage>61</lpage>. <pub-id pub-id-type="doi">10.1016/j.advengsoft.2013.12.007</pub-id>
</mixed-citation>
</ref>
<ref id="B12">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mirjalili</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Mirjalili</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Hatamlou</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Multi-verse optimizer: a nature-inspired algorithm for global optimization</article-title>. <source>Neural Comput. Appl.</source> <volume>27</volume>, <fpage>495</fpage>&#x2013;<lpage>513</lpage>. <pub-id pub-id-type="doi">10.1007/s00521-015-1870-7</pub-id>
</mixed-citation>
</ref>
<ref id="B13">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ning</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Sang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Vladareanu</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Niu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Upper limb exoskeleton rehabilitation robot inverse kinematics modeling and solution method based on multi-objective optimization</article-title>. <source>Sci. Rep.</source> <volume>14</volume> (<issue>25476</issue>), <fpage>25476</fpage>&#x2013;<lpage>16</lpage>. <pub-id pub-id-type="doi">10.1038/s41598-024-77137-8</pub-id>
<pub-id pub-id-type="pmid">39462117</pub-id>
</mixed-citation>
</ref>
<ref id="B14">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Noordin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Basri</surname>
<given-names>M. A. M.</given-names>
</name>
<name>
<surname>Mohamed</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Adaptive PID control via sliding mode for position tracking of quadrotor MAV: simulation and real-time experiment evaluation</article-title>. <source>Aerospace</source> <volume>10</volume> (<issue>6</issue>), <fpage>512</fpage>. <pub-id pub-id-type="doi">10.3390/aerospace10060512</pub-id>
</mixed-citation>
</ref>
<ref id="B15">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Roth</surname>
<given-names>G. A.</given-names>
</name>
<name>
<surname>Mensah</surname>
<given-names>G. A.</given-names>
</name>
<name>
<surname>Johnson</surname>
<given-names>C. O.</given-names>
</name>
<name>
<surname>Addolorato</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Ammirati</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Baddour</surname>
<given-names>L. M.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Global burden of cardiovascular diseases and risk factors, 1990&#x2013;2019: update from the GBD 2019 study</article-title>. <source>J. Am. Coll. Cardiol.</source> <volume>76</volume> (<issue>25</issue>), <fpage>2982</fpage>&#x2013;<lpage>3021</lpage>. <pub-id pub-id-type="doi">10.1016/j.jacc.2020.11.010</pub-id>
<pub-id pub-id-type="pmid">33309175</pub-id>
</mixed-citation>
</ref>
<ref id="B16">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sabah</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Hameed</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Al-Huseiny</surname>
<given-names>M. S.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Optimal sliding mode controller design based on whale optimization algorithm for lower limb rehabilitation robot</article-title>. <source>Appl. Comput. Sci.</source> <volume>17</volume> (<issue>3</issue>), <fpage>47</fpage>&#x2013;<lpage>59</lpage>. <pub-id pub-id-type="doi">10.35784/acs-2021-20</pub-id>
</mixed-citation>
</ref>
<ref id="B17">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Su</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Shang</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Luo</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Review of adaptive control for stroke lower limb exoskeleton rehabilitation robot based on motion intention recognition</article-title>. <source>Front. Neurorobotics</source> <volume>17</volume>, <fpage>1186175</fpage>. <pub-id pub-id-type="doi">10.3389/fnbot.2023.1186175</pub-id>
<pub-id pub-id-type="pmid">37465413</pub-id>
</mixed-citation>
</ref>
<ref id="B18">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Torabi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Sharifi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Vossoughi</surname>
<given-names>G. R.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Robust adaptive sliding mode admittance control of exoskeleton rehabilitation robots</article-title>. <source>Sci. Iran.</source> <volume>24</volume> (<issue>5</issue>), <fpage>0</fpage>&#x2013;<lpage>2464</lpage>. <pub-id pub-id-type="doi">10.24200/sci.2017.4512</pub-id>
</mixed-citation>
</ref>
<ref id="B19">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vanchinathan</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Selvaganesan</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Adaptive fractional order PID controller tuning for brushless DC motor using artificial bee colony algorithm</article-title>. <source>Results Control Optim.</source> <volume>4</volume>, <fpage>100032</fpage>. <pub-id pub-id-type="doi">10.1016/j.rico.2021.100032</pub-id>
</mixed-citation>
</ref>
<ref id="B20">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Volpe</surname>
<given-names>B. T.</given-names>
</name>
<name>
<surname>Krebs</surname>
<given-names>H. I.</given-names>
</name>
<name>
<surname>Hogan</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>Is robot-aided sensorimotor training in stroke rehabilitation a realistic option?</article-title> <source>Curr. Opin. Neurol.</source> <volume>14</volume> (<issue>6</issue>), <fpage>745</fpage>&#x2013;<lpage>752</lpage>. <pub-id pub-id-type="doi">10.1097/00019052-200112000-00011</pub-id>
<pub-id pub-id-type="pmid">11723383</pub-id>
</mixed-citation>
</ref>
<ref id="B21">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>Y.-J.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.-X.</given-names>
</name>
<name>
<surname>Gu</surname>
<given-names>H.-Q.</given-names>
</name>
<name>
<surname>Zhai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Jiang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>X.-Q.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>China stroke statistics 2019: a report from the national center for healthcare quality management in neurological diseases, China national clinical research center for neurological diseases, the Chinese stroke association, national center for chronic and non-communicable disease control and prevention, Chinese center for disease control and prevention and institute for global neuroscience and stroke collaborations</article-title>. <source>Stroke Vasc. Neurol.</source> <volume>5</volume> (<issue>3</issue>), <fpage>211</fpage>&#x2013;<lpage>239</lpage>. <pub-id pub-id-type="doi">10.1136/svn-2020-000457</pub-id>
<pub-id pub-id-type="pmid">32826385</pub-id>
</mixed-citation>
</ref>
<ref id="B22">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Fractional order PI<sup>&#x3bb;</sup>D<sup>&#x3bc;</sup> for tracking control of a novel rehabilitation robot based on IIMO-BP neural network algorithm</article-title>. <source>J. Mech. Med. Biol.</source> <volume>23</volume> (<issue>1</issue>), <fpage>2350010</fpage>. <pub-id pub-id-type="doi">10.1142/S0219519423500100</pub-id>
</mixed-citation>
</ref>
<ref id="B23">
<mixed-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Winter</surname>
<given-names>D. A.</given-names>
</name>
</person-group> (<year>2009</year>). <source>Biomechanics and motor control of human movement</source>. <publisher-loc>Hoboken, New Jersey</publisher-loc>: <publisher-name>John Wiley &#x26; Sons</publisher-name>. <edition>Fourth Edition</edition>. <pub-id pub-id-type="doi">10.1002/9780470549148</pub-id>
</mixed-citation>
</ref>
<ref id="B24">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xie</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Jiang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Motion control and singular perturbation algorithms for lower limb rehabilitation robots</article-title>. <source>Front. Neurorobotics</source> <volume>19</volume>, <fpage>1562519</fpage>. <pub-id pub-id-type="doi">10.3389/fnbot.2025.1562519</pub-id>
<pub-id pub-id-type="pmid">40417707</pub-id>
</mixed-citation>
</ref>
<ref id="B25">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Structural design and clinical application research of upper limb rehabilitation robots</article-title>. <source>Appl. Computat. Eng</source> <volume>125</volume>, <fpage>173</fpage>&#x2013;<lpage>179</lpage>. <pub-id pub-id-type="doi">10.54254/2755-2721/125/2025.21285</pub-id>
</mixed-citation>
</ref>
</ref-list>
</back>
</article>