<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Mech. Eng.</journal-id>
<journal-title>Frontiers in Mechanical Engineering</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Mech. Eng.</abbrev-journal-title>
<issn pub-type="epub">2297-3079</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1646395</article-id>
<article-id pub-id-type="doi">10.3389/fmech.2025.1646395</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Mechanical Engineering</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A control method for center-of-gravity deviation in locomotive bogies based on an improved Grey Wolf Optimization algorithm</article-title>
<alt-title alt-title-type="left-running-head">Zhu 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/fmech.2025.1646395">10.3389/fmech.2025.1646395</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Zhu</surname>
<given-names>Renzun</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/3098297/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/data-curation/"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Chen</surname>
<given-names>Jinhe</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/3143968/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Li</surname>
<given-names>Simin</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Tianyou College, East China Jiaotong University</institution>, <addr-line>Nanchang</addr-line>, <addr-line>Jiangxi</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>School of Civil Engineering and Architecture, East China Jiaotong University</institution>, <addr-line>Nanchang</addr-line>, <addr-line>Jiangxi</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1933026/overview">Kanak Kalita</ext-link>, Vel Tech Dr. RR and Dr. SR Technical University, India</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1739393/overview">Chengxing Yang</ext-link>, Central South University, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3044000/overview">Fuqiang Lu</ext-link>, Yanshan University, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Jinhe Chen, <email>juanjuan@ecjtu.edu.cn</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>30</day>
<month>09</month>
<year>2025</year>
</pub-date>
<pub-date pub-type="collection">
<year>2025</year>
</pub-date>
<volume>11</volume>
<elocation-id>1646395</elocation-id>
<history>
<date date-type="received">
<day>18</day>
<month>06</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>13</day>
<month>08</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Zhu, Chen and Li.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Zhu, Chen and Li</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). 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.</p>
</license>
</permissions>
<abstract>
<p>As high-speed rail networks continue to expand, the workload for train maintenance has risen correspondingly, and the conventional experience&#x2212;based manual adjustment of spring compression during bogie overhauls introduces significant uncertainty and safety risks. To address this challenge, we develop a theoretical model for static spring-load adjustment in two-axle railway vehicles, applicable to all four-axle bogie configurations, including locomotives, urban metro cars, high-speed passenger units, and freight wagons. By idealizing the bogie as a planar rigid body, we derive a coupling matrix that relates the loads among the springs. To solve this model, we propose an enhanced Grey Wolf Optimizer (S-GWO) designed to rapidly and accurately identify the optimal adjustment strategy. Specifically, S-GWO introduces three key enhancements to the standard Grey Wolf Optimizer: a Gaussian-distributed nonlinear convergence factor that promotes extensive global exploration in early iterations and rapid, precise convergence in later stages, thereby improving both speed and accuracy; an adaptive learning and exploration scheme that strengthens global search capabilities; and a Cauchy perturbation mechanism applied to the &#x3b1;-wolf, which effectively balances local search refinement with global jumping behavior. We validate the algorithm&#x2019;s performance by benchmarking S-GWO against several state-of-the-art metaheuristics on twelve classical test functions and the engineering spring function, employing rank-sum tests to confirm the superiority of our enhancements. An ablation study is conducted to isolate and quantify the independent contributions of each proposed modification. We apply the model to the CRH2 bogie parameters and compare S-GWO&#x2019;s performance with that of several widely cited optimization algorithms. Experimental results demonstrate that S-GWO offers significant advantages in convergence speed, solution accuracy, practicality of shim placement schemes, and robustness. These improvements further enhance the efficiency of controlling static bogie center-of-gravity deviations. This study thus provides robust technical support for precise center-of-gravity adjustment and prediction in four-axle rail vehicles.</p>
</abstract>
<kwd-group>
<kwd>control method for locomotive center-of-gravity deviation</kwd>
<kwd>spring-load correlation matrix</kwd>
<kwd>Gaussian distribution-enhanced nonlinear convergence factor</kwd>
<kwd>opposition-based learning and exploration</kwd>
<kwd>Cauchy perturbation mechanism for the &#x3b1; wolf</kwd>
</kwd-group>
<counts>
<page-count count="17"/>
</counts>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Digital Manufacturing</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>According to the International Union of Railways (UIC) statistics for 2024, the global railway network spans 1,305,000&#xa0;km, of which 48,000&#xa0;km are high&#x2010;speed lines, representing approximately 68% of the world&#x2019;s total high&#x2010;speed railway mileage (<xref ref-type="bibr" rid="B22">Malott, 2023</xref>). Against this macro backdrop, the large&#x2010;scale operation and maintenance demands of high&#x2010;speed electric multiple units (EMUs; CRH series) have also grown explosively. By 2024, the fleet of EMUs had rapidly risen to over 4,000 trainsets, and the total volume of corresponding maintenance operations had increased several&#x2010;fold (<xref ref-type="bibr" rid="B14">Tong et al., 2016</xref>). Roughly estimated, each CRH trainset requires approximately 180 first&#x2010;level inspections and 12 second&#x2010;level inspections per year, amounting to tens of thousands of first&#x2010; and second&#x2010;level maintenance operations system-wide annually (<xref ref-type="bibr" rid="B5">Hong et al., 2014</xref>). Such immense maintenance demands pose unprecedented challenges to repair efficiency, technical workforce capacity, and equipment performance stability.</p>
<p>During EMU maintenance, the load distribution of the vehicle suspension system critically affects wheel&#x2013;rail forces, dynamic performance, and passenger ride comfort. In particular, precise adjustment of the secondary suspension load is crucial, as it directly relates to optimizing vehicle dynamic performance and ensuring running stability (<xref ref-type="bibr" rid="B16">Wickens, 1991</xref>). However, most current methods for adjusting EMU suspension loads rely on manually adding shims to regulate spring deflection, a process characterized by high randomness and trial and error, often failing to meet design specifications in one iteration and thus significantly extending maintenance time (<xref ref-type="bibr" rid="B3">Ao and Wu, 2023</xref>). Moreover, the exponential increase in the electric multiple-unit fleet has precipitated a pronounced shortage of skilled technicians, rendering it difficult to satisfy the substantial demands of both manufacturing and maintenance markets and thereby further exacerbating the bottleneck in overhaul efficiency.</p>
<p>In recent years, researchers have conducted comprehensive investigations into rail vehicle safety and maintenance from a variety of perspectives. Xu et al. carried out a multi-objective optimization and decision-making study on metal/CFRP hybrid energy-absorbing structures, leveraging a hyper-volume/energy absorption (HFEAS) model together with a gain matrix&#x2013;cloud model best&#x2013;worst (G-CBW) method to deliver an efficient Pareto-optimal solution screening strategy for absorber design and demonstrated exceptional performance in localized impact response (<xref ref-type="bibr" rid="B18">Xu et al., 2024</xref>). Yang et al. conducted a systematic investigation into the fatigue damage behavior of subway platform screen doors under aerodynamic loads induced by passing trains, integrating wind-tunnel experiments with finite-element fatigue simulations. They proposed an enhanced hinge design and localized reinforcement scheme, achieving an average increase in fatigue life exceeding 20% (<xref ref-type="bibr" rid="B20">Yang et al., 2025a</xref>). Chengxing Yang et al. drew inspiration from the biomimetic cross&#x2013;hexagonal lattice (HQLS) configuration to propose a novel energy-absorbing concept based on steel/CFRP-filled square tubes. They developed a high-precision parametric model that exhibits simulation errors below 4% and applied a design-of-experiments coupled with a surrogate-model approach to optimize wall thickness and unit-cell height, thereby achieving a remarkable 24.6% increase in total energy absorption and an 8% improvement in specific energy absorption (SEA) (<xref ref-type="bibr" rid="B21">Yang et al., 2025b</xref>).</p>
<p>Despite the significant advances in structural energy absorption and fatigue-life prediction, the rapid and precise control of static spring-load deviations during EMU bogie maintenance still relies predominantly on manual trial and error, resulting in low efficiency, high variability, and numerous iterative cycles. To address this bottleneck, intelligent optimization algorithms have been introduced for load-distribution modeling and adjustment in rail vehicle suspension systems, thereby enhancing both adjustment efficiency and model accuracy. <xref ref-type="bibr" rid="B4">Bajpai (2014)</xref> investigated the impact of suspension spring parameters on ride comfort; Abhishek et al. used the Grasshopper algorithm to optimize the snubber&#x2010;spring structure (<xref ref-type="bibr" rid="B12">Neve et al., 2020</xref>); <xref ref-type="bibr" rid="B17">Xiao and Wu (2025)</xref> employed a high-power Harris Hawk optimization algorithm for bogie load deviation control.</p>
<p>This study proposes an improved Grey Wolf Optimization algorithm (S-GWO) with strong global search capabilities, which has attracted widespread scholarly attention for its proficiency in solving nonlinear optimization problems. To address the static&#x2010;spring load adjustment problem in rail vehicles presented here, we made targeted enhancements to the standard GWO: we improved the nonlinear convergence factor via a Gaussian distribution (<xref ref-type="bibr" rid="B6">Hou et al., 2022</xref>), enabling extensive early exploration and rapid late&#x2010;stage convergence to boost both speed and accuracy; second, this article integrates opposition&#x2010;based learning and exploration strategies (<xref ref-type="bibr" rid="B2">Adegboye et al., 2024</xref>) to enhance global search; finally, we introduce a Cauchy&#x2010;perturbation mechanism for the &#x3b1; wolves (<xref ref-type="bibr" rid="B8">Liu et al., 2023</xref>), effectively balancing local search. Experimental evidence confirms that the proposed enhanced Grey Wolf Optimizer (S-GWO) possesses strong global search capabilities. Both simulation and on-site validations demonstrate that, relative to comparative algorithms, S-GWO delivers faster convergence, improved load-distribution accuracy, and superior shim count and thickness optimization across twelve benchmark functions, the spring function (<xref ref-type="bibr" rid="B13">Paredes et al., 2002</xref>), and the actual parameters of the CRH2 bogie, achieving design specifications in a single run without iterative stacking trials.<list list-type="simple">
<list-item>
<p>1. We develop a theoretical model for the static adjustment of spring loads in twin-axle railway vehicles. This modeling methodology is universally applicable to all four-axle bogie platforms, including locomotives, urban metro cars, high-speed passenger units, and freight wagons, and markedly streamlines the computational procedure.</p>
</list-item>
<list-item>
<p>2. By improving the linear convergence factor with a Gaussian distribution, this strategy ensures thorough early exploration and rapid late convergence, enhancing both convergence speed and accuracy.</p>
</list-item>
<list-item>
<p>3. The integration of opposition&#x2010;based learning with exploration not only broadens the search space via opposite solutions but also injects fresh diversity through random perturbations, markedly improving global optimization capability.</p>
</list-item>
<list-item>
<p>4. The Cauchy perturbation mechanism for &#x3b1; wolves is simple to implement and computationally inexpensive yet effectively balances local search and global jumps.</p>
</list-item>
<list-item>
<p>5. This study evaluates the enhanced algorithm on three categories of problems: twelve classical benchmark functions, the engineering spring function, and a bogie-specific engineering function, and compares its performance against several highly cited classical algorithms to verify the superiority of the proposed enhancements, followed by ablation studies to demonstrate the independent contributions of each enhancement.</p>
</list-item>
<list-item>
<p>6. We integrate the CRH2 bogie parameters into the static spring-load adjustment model for twin-axle railway vehicles. Experimental results demonstrate that the enhanced Grey Wolf Optimizer (S-GWO) offers marked improvements in convergence speed, solution accuracy, and robustness. Moreover, its minimal-shim-quantity scheme proves the most rational, enabling rapid and precise resolution of bogie spring-load adjustment challenges, thereby underscoring the algorithm&#x2019;s theoretical significance and engineering value in practical applications.</p>
</list-item>
</list>
</p>
</sec>
<sec id="s2">
<title>2 Standards and applications of shim-load adjustment in railway bogies</title>
<sec id="s2-1">
<title>2.1 National standards for shim usage specifications</title>
<p>The railway industry and national standards provide explicit requirements and guidelines for bogie height and load adjustment via shim placement (<xref ref-type="bibr" rid="B1">TB/T 1490&#x2010;2004, 2025</xref>). This document stipulates that the bogie structure must allow for the adjustment of coupler height, carbody tilt, and wheel-load differences. Under the vehicle&#x2019;s dead-weight condition, the height difference between the first-stage and second-stage coil springs must remain within the standard&#x2019;s prescribed limits (which vary by speed classification) and may be corrected by inserting shims, with shim thickness accounted for in the spring-seat height calculation. This provision thus recognizes shim placement beneath the spring seats as an approved means of eliminating corner-height deviations in the bogie.</p>
</sec>
<sec id="s2-2">
<title>2.2 Shim thickness specifications and permissible tolerances</title>
<p>Shim stacks used for bogie adjustment are typically manufactured in standardized thicknesses to facilitate combination and stacking to achieve the required correction. Common shim thicknesses include 0.2&#xa0;mm, 0.5&#xa0;mm, 1&#xa0;mm, and 2&#xa0;mm. In practice, various thicknesses may be paired and layered to obtain the desired total height. To ensure adjustment precision, maintenance regulations limit both the maximum total shim-stack height and the individual shim thickness: for CRH-series EMUs, the total shim stack must not exceed 21&#xa0;mm, and thick shims are placed beneath thinner ones when stacking (<xref ref-type="bibr" rid="B9">Maintenance regulations for Harmony 2C/CRH380A EMUs, excerpted from a document issued by the National Railway Administration, 2025</xref>).</p>
</sec>
<sec id="s2-3">
<title>2.3 Investigation of suspension spring parameters in CRH2 EMU bogies</title>
<p>The primary suspension of the CRH2 high-speed EMU is located between the wheelset and the bogie frame, employing metallic helical cylindrical coil springs to bear vertical loads (<xref ref-type="bibr" rid="B7">Jia et al., 2023</xref>).</p>
</sec>
<sec id="s2-4">
<title>2.4 Thresholds of shim-stack adjustments and their nonlinear response characteristics</title>
<p>According to the CRH2 EMU maintenance regulations, newly manufactured vehicles shall employ no more than three spring shims per axle&#x2010;box assembly, whereas vehicles following a Level-3 overhaul may use up to five shims. Each adjustment shim is approximately 2&#xa0;mm thick, resulting in a maximum total stack height of approximately 10&#xa0;mm when five shims are applied (<xref ref-type="bibr" rid="B15">Wang et al., 2014</xref>).</p>
</sec>
</sec>
<sec id="s3">
<title>3 Modeling of bogie load distribution and establishment of kinematic equations</title>
<p>The bogie is a running gear that supports, guides, and brakes the carbody while permitting relative rotation, featuring vibration buffering and steering functions, and plays a key role in train operation safety, reliability, and ride quality. It is chiefly assembled from the frame, primary suspension, secondary suspension, and traction and braking units. The support structure of the CRH3 bogie is shown in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Bogie of the CRH-type EMU.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g001.tif">
<alt-text content-type="machine-generated">Illustration of a railway bogie with a colorful design. Various components are highlighted in green, blue, and pink. The structure includes wheels, suspension systems, and air springs, showcasing intricate mechanical detailing.</alt-text>
</graphic>
</fig>
<p>The primary suspension system consists of the first-stage suspension and the second-stage suspension. The primary suspension is shown in <xref ref-type="fig" rid="F2">Figure 2</xref>, and the secondary suspension is shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. The first-stage suspension (axle&#x2212;box suspension assembly) is comprised of the axle&#x2212;box spring, the vertical damper, and the axial locating device. The axial locating device transmits and cushions loads between the wheel and the frame, affecting the system&#x2019;s critical speed and hunting stability; the vertical damper reduces vertical vibrations, improving dynamic performance; the circular axle spring transmits and cushions vertical loads between the wheel and frame, influencing ride comfort. Because the effect of the axle&#x2212;box locating device on vertical load transmission is negligible, it is omitted in this study.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Components of the primary suspension in a rail vehicle.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g002.tif">
<alt-text content-type="machine-generated">Line drawing of an automotive suspension shock absorber system featuring a coil spring, a cylindrical piston, and structural support components. The design includes various mechanical parts such as brackets and bolts.</alt-text>
</graphic>
</fig>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Components of the secondary suspension in a rail vehicle.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g003.tif">
<alt-text content-type="machine-generated">Illustration of a mechanical assembly featuring multiple components, including circular discs, housings, and connecting rods. The components appear interconnected and are presented in a linear configuration, possibly representing a system or mechanism.</alt-text>
</graphic>
</fig>
<p>The secondary suspension comprises a central coil spring, lateral dampers, lateral buffers, and anti-hunting dampers, with the vertical damper transmitting vertical forces between the bogie frame and the carbody..</p>
<p>In summary, the primary suspension of a two-axle bogie is located at the connection between each wheelset and the frame, with one axle&#x2212;box coil spring installed per wheelset, totaling four; the secondary suspension is a central spring assembly comprising two central coil springs.</p>
<p>This study focuses on the issue of center-of-gravity shift caused by vertical load distribution in the bogie and puts forward the following assumptions:<list list-type="simple">
<list-item>
<p>1. The dual-axle bogie contains six springs that influence the vertical load distribution;</p>
</list-item>
<list-item>
<p>2. Neglecting the vertical height differences among the six springs, we assume they all lie in a common horizontal plane. We then model the four-wheel, two-axle bogie as a homogeneous, planar rectangular rigid body of length 2&#xa0;b and width 2&#xa0;a (with negligible thickness), with vertices labeled A, B, C, and D. The carbody&#x2019;s weight F is represented as a concentrated force acting at the center of gravity, whose initial eccentricity is defined as <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, as illustrated in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
</list-item>
</list>
</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Equivalent mechanical model of the bogie.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g004.tif">
<alt-text content-type="machine-generated">Diagram depicting a rectangular plane labeled ABCD with dimensions &#x22;a&#x22; and &#x22;b.&#x22; The plane includes axes X and Y at the center and points E and F at the midpoint of two sides. Distances along the axes are indicated as &#x22;m_x&#x22; and &#x22;m_y.&#x22;</alt-text>
</graphic>
</fig>
<p>The springs are arranged at the suspension load application points, with coordinates in sequence: (&#x2212;b, &#x2212;a), (0, &#x2212;a), (b, &#x2212;a), (b, a), (0, a), and (&#x2212;b, a). Fi denotes the force of the spring (for i &#x3d; 1, 2, 3, 4, 5, and 6 corresponding to A, B, C, D, E, and F, respectively), in N; the spring stiffness coefficient is k, in N/mm. Each spring is fitted with a shim to adjust its compression, having a thickness <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (in mm), with the initial state <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. The calculation formula for k is shown in <xref ref-type="disp-formula" rid="e1">Equation 1</xref>. This theoretical model aims to correct the center-of-gravity position of the rectangular rigid plate by adjusting spring compression with the minimal number of shims, neglecting any shift in the plate&#x2019;s center of gravity along the Z-axis. Taking the CRH2 bogie as an example for calculation (<xref ref-type="bibr" rid="B19">Yang and Liu, 2017</xref>), its structural parameters are shown in <xref ref-type="table" rid="T1">Table 1</xref>.<disp-formula id="e1">
<mml:math id="m4">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi mathvariant="normal">y</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">G</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">y</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Structural parameters of the CRH2 vehicle.</p>
</caption>
<table>
<tbody valign="top">
<tr>
<td align="center">Lateral span of the air spring</td>
<td align="center">A</td>
<td align="center">2460&#xa0;mm</td>
</tr>
<tr>
<td align="center">Lateral span of the primary suspension</td>
<td align="center">B</td>
<td align="center">2000&#xa0;mm</td>
</tr>
<tr>
<td align="center">Mass of the carbody</td>
<td align="center">G</td>
<td align="center">261,000&#xa0;N</td>
</tr>
<tr>
<td align="center">Longitudinal spring stiffness</td>
<td align="center">K</td>
<td align="center">0.0137&#xa0;N/mm</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The theoretical model of the static suspension system load for the two-axle EMU bogie is as follows:</p>
<p>According to Hooke&#x2019;s law, as shown in <xref ref-type="disp-formula" rid="e2">Equation 2</xref>
<disp-formula id="e2">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">h</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>where <inline-formula id="inf4">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the spring stiffness, with units of <inline-formula id="inf5">
<mml:math id="m7">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>m</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Spring load <inline-formula id="inf6">
<mml:math id="m8">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a multivariate linear function of the shim thicknesses <inline-formula id="inf7">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> at the six suspension load points; therefore, then the load variation is as shown in <xref ref-type="disp-formula" rid="e3">Equation 3</xref> (<xref ref-type="bibr" rid="B5">Hong et al., 2014</xref>)<disp-formula id="e3">
<mml:math id="m10">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="normal">j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>The physical meaning of this equation (<xref ref-type="bibr" rid="B5">Hong et al., 2014</xref>) is that the combined change resulting from adjusting multiple shim thicknesses corresponds to the load variation caused at a single support point. The initial load on each spring is <inline-formula id="inf8">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (in kN). Define <inline-formula id="inf9">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as the ratio of the deflection of the <italic>j</italic>th spring to the thickness of the shim added at the <italic>i</italic>th spring position.</p>
<p>The matrix <inline-formula id="inf10">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is shown in <xref ref-type="table" rid="T2">Table 2</xref>. The calculation formula for the relationship of <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the following formula (<xref ref-type="bibr" rid="B22">Malott, 2023</xref>), <inline-formula id="inf12">
<mml:math id="m15">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, which indicates that the sum of all vertical force vectors is zero. <inline-formula id="inf13">
<mml:math id="m16">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:mo>&#x2211;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> indicates that the load forces produce a zero net moment about the X and Y-axes.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>
<inline-formula id="inf14">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> matrix of shim thickness versus spring deformation.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">i<break/>j</th>
<th align="left">
<inline-formula id="inf15">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf16">
<mml:math id="m19">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf17">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf18">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf19">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf20">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<inline-formula id="inf21">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.5835</td>
<td align="center">&#x2212;0.1667</td>
<td align="center">0.0831</td>
<td align="center">&#x2212;0.0834</td>
<td align="center">0.1663</td>
<td align="center">0.4161</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf22">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2212;0.1667</td>
<td align="center">0.8333</td>
<td align="center">&#x2212;0.1667</td>
<td align="center">0.1663</td>
<td align="center">0.1663</td>
<td align="center">0.1663</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf23">
<mml:math id="m26">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.0831</td>
<td align="center">&#x2212;0.1667</td>
<td align="center">0.5835</td>
<td align="center">0.4161</td>
<td align="center">0.1663</td>
<td align="center">&#x2212;0.0834</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf24">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">&#x2212;0.0834</td>
<td align="center">0.1663</td>
<td align="center">0.4161</td>
<td align="center">0.5835</td>
<td align="center">&#x2212;0.1667</td>
<td align="center">0.0831</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf25">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.1663</td>
<td align="center">0.1663</td>
<td align="center">0.1663</td>
<td align="center">&#x2212;0.1667</td>
<td align="center">0.0833</td>
<td align="center">&#x2212;0.1667</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf26">
<mml:math id="m29">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.4161</td>
<td align="center">0.1663</td>
<td align="center">&#x2212;0.0834</td>
<td align="center">0.0831</td>
<td align="center">&#x2212;0.1667</td>
<td align="center">0.5835</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>After changing the shims, the load distribution of each spring is given by <xref ref-type="disp-formula" rid="e4">Equation 4</xref>.<disp-formula id="e4">
<mml:math id="m30">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>i</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold">h</mml:mi>
<mml:mi mathvariant="normal">j</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:msub>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mtext>ij</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>
<xref ref-type="bibr" rid="B16">Wickens (1991)</xref> represents the load-adjustment formula of the static suspension system for a dual-axle EMU bogie and serves as a key theoretical basis for center-of-gravity deviation control. By combining the equations of <xref ref-type="bibr" rid="B14">Tong et al. (2016)</xref> and <xref ref-type="bibr" rid="B16">Wickens (1991)</xref>, <xref ref-type="disp-formula" rid="e5">Equation 5</xref> is obtained<disp-formula id="e5">
<mml:math id="m31">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>G</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>G</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>G</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">b</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>Meanwhile, because the rectangular plate model is simply supported in its connection to the bogie, the springs cannot provide tensile force along the Z-axis; thus, constraint <xref ref-type="disp-formula" rid="e6">Equation 6</xref> is proposed as follows<disp-formula id="e6">
<mml:math id="m32">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>G</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>Define <inline-formula id="inf27">
<mml:math id="m33">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> as the variance of the loads at the six support points in <xref ref-type="fig" rid="F5">Figure 5</xref> relative to a uniformly distributed load. The static load is denoted by F. The smaller F is, the smaller the load deviation at the support points and the more uniform the load distribution. F represents the average load, as shown in <xref ref-type="disp-formula" rid="e7">Equations 7</xref>, <xref ref-type="disp-formula" rid="e8">8</xref> is the objective function.<disp-formula id="e7">
<mml:math id="m34">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>F</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m35">
<mml:mrow>
<mml:mi mathvariant="script">S</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:msubsup>
</mml:mstyle>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Simplified suspension model of the CRH2 bogie.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g005.tif">
<alt-text content-type="machine-generated">Diagram of a rectangular frame ABCDEF with measurements along the sides. The sides are labeled with lengths: a and b. The interior shows axes X and Y with a point marked Y_c. The frame appears to have springs along edges, indicated by jagged lines. Positions mx and my are marked along the E and D sides.</alt-text>
</graphic>
</fig>
<p>By substituting <xref ref-type="disp-formula" rid="e5">Equation 5</xref> into <xref ref-type="disp-formula" rid="e8">Equation 8</xref>, <xref ref-type="disp-formula" rid="e9">Equation 9</xref> (<xref ref-type="bibr" rid="B4">Bajpai, 2014</xref>) is obtained.<disp-formula id="e9">
<mml:math id="m36">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>minS</mml:mtext>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>4</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="script">M</mml:mi>
</mml:mrow>
<mml:mi>X</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi mathvariant="script">M</mml:mi>
</mml:mrow>
<mml:mi>Y</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>The physical meaning of <xref ref-type="disp-formula" rid="e9">Equation 9</xref> (<xref ref-type="bibr" rid="B4">Bajpai, 2014</xref>) is that the static load on each spring satisfies the static equilibrium equations, and <inline-formula id="inf28">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> serves as the objective function for optimization.</p>
</sec>
<sec id="s4">
<title>4 Optimization scheme for the mathematical model</title>
<sec id="s4-1">
<title>4.1 Penalty for exceeding limits</title>
<p>In the section on shim-stack thresholds and nonlinear behavior, it is noted that, during actual bogie production and machining, the total shim thickness typically does not exceed 10&#xa0;mm. Therefore, any solution proposing a shim stack greater than 10&#xa0;mm should incur a penalty to prevent the algorithm from selecting such boundary cases, thereby ensuring that the springs remain within their linear operating range.</p>
<p>Define the shim adjustment vector as <inline-formula id="inf29">
<mml:math id="m38">
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. If any component of this vector falls outside the [&#x2212;10,10] range, a penalty is applied immediately, and the out-of-bounds condition is reported. The mathematical derivation is shown in <xref ref-type="disp-formula" rid="e10">Equations 10</xref>, <xref ref-type="disp-formula" rid="e11">11</xref>.<disp-formula id="e10">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>If <inline-formula id="inf30">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">max</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> exists, then<disp-formula id="e11">
<mml:math id="m41">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mn>0</mml:mn>
<mml:mn>8</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<sec id="s4-1-1">
<title>4.1.1 Priority penalty</title>
<sec id="s4-1-1-1">
<title>4.1.1.1 First priority</title>
<p>Once the load variance requirement is met, if two or more shim-position&#x2013;thickness combinations are available, select the solution with the smaller total shim thickness as the secondary optimization objective. The mathematical derivation is shown in <xref ref-type="disp-formula" rid="e12">Equations 12</xref>&#x2013;<xref ref-type="disp-formula" rid="e14">14</xref>.</p>
<p>The aim is to minimize the number of nonzero components in <inline-formula id="inf31">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, thereby reducing the number of shims that are modified.<disp-formula id="e12">
<mml:math id="m43">
<mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mi mathvariant="normal">1</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="I">
<mml:mrow>
<mml:mi mathvariant="normal">&#x007C;</mml:mi>
<mml:msub>
<mml:mi mathvariant="normal">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mi mathvariant="normal">&#x007C;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
</sec>
<sec id="s4-1-1-2">
<title>4.1.1.2 Second priority</title>
<p>After the variance requirement is met, select the scheme with the smallest total shim thickness.<disp-formula id="e13">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
</sec>
<sec id="s4-1-1-3">
<title>4.1.1.3 Third priority</title>
<p>Once the above priorities are met, ensure that the loads at the six suspension support points are as close to one another as possible, thereby minimizing their dispersion.<disp-formula id="e14">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi>j</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>F</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
</sec>
</sec>
</sec>
</sec>
<sec id="s5">
<title>5 Improvement strategies for the Grey Wolf algorithm</title>
<sec id="s5-1">
<title>5.1 Introduction to the standard Grey Wolf algorithm</title>
<p>The Grey Wolf Optimizer (GWO) is a population-based intelligence optimization algorithm inspired by the social behaviors of gray wolves in nature, particularly their hunting, encircling, and social interactions (<xref ref-type="bibr" rid="B10">Mirjalili et al., 2014</xref>). The core idea of the GWO algorithm is to simulate how a pack of gray wolves encircles and cooperates to capture prey. The algorithm performs optimization search by mimicking the hunting behaviors of gray wolves; the specific process is as follows:<list list-type="simple">
<list-item>
<p>Step 1: Prey encirclement</p>
</list-item>
</list>
</p>
<p>Wolves encircle prey by gradually approaching it, a process analogous to information exchange among individuals. In this manner, agents update their positions and progressively converge toward the target solution.<list list-type="simple">
<list-item>
<p>Step 2: Prey tracking</p>
</list-item>
</list>
</p>
<p>Once the prey&#x2019;s position is determined, wolves commence tracking it. During the optimization process, the algorithm continuously adjusts agent positions to approach the optimal solution. This tracking behavior represents an intensive exploration of the solution space.<list list-type="simple">
<list-item>
<p>Step 3: Prey attack</p>
</list-item>
</list>
</p>
<p>After encirclement and tracking, the wolf pack ultimately captures the prey, analogous to the algorithm&#x2019;s combination of global and local searches to find the global optimum. The GWO algorithm updates agent positions using the following mathematical model to simulate wolf hunting behavior: Assume there are nnn gray wolves in the population, and their positions are denoted by <inline-formula id="inf32">
<mml:math id="m46">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> The position of each wolf is evaluated by the objective function to determine fitness; the smaller (or larger, depending on the problem type) the objective value, the higher the fitness. The GWO update primarily depends on the positions of the three roles <inline-formula id="inf33">
<mml:math id="m47">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>; the position update formula is shown in <xref ref-type="disp-formula" rid="e15">Equation 15</xref>.<disp-formula id="e15">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:msup>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:msup>
<mml:mi>X</mml:mi>
<mml:mrow>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi>A</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msup>
<mml:mi>D</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
</sec>
<sec id="s5-2">
<title>5.2 Algorithm improvement strategies</title>
<sec id="s5-2-1">
<title>5.2.1 Nonlinear convergence factor based on a Gaussian distribution</title>
<p>In the original GWO, the convergence factor <inline-formula id="inf34">
<mml:math id="m49">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> decreases linearly from 2 to 0 over the iterations, serving to control the search radius. The decay formula for the convergence factor after the update is given by <xref ref-type="disp-formula" rid="e16">Equation 16</xref>.<disp-formula id="e16">
<mml:math id="m50">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="normal">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>Here, t represents the current iteration, T is the maximum number of iterations, and <inline-formula id="inf35">
<mml:math id="m51">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> determines the shape of the Gaussian curve. The curve is relatively flat during the early iterations, maintaining a larger <inline-formula id="inf36">
<mml:math id="m52">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to ensure global exploration, and then drops sharply in later iterations, accelerating local convergence. This strategy allows the algorithm to perform extensive exploration early on and quickly converge later, improving both convergence speed and accuracy.</p>
</sec>
<sec id="s5-2-2">
<title>5.2.2 Opposition-based learning and exploration strategy</title>
<p>To enhance global search capability, we integrate opposite-based learning (OBL) with stochastic exploration. Specifically, for a subset of the population (e.g., the 50% of individuals with the lowest fitness), we compute their opposite solutions as shown in <xref ref-type="disp-formula" rid="e17">Equation 17</xref>
<disp-formula id="e17">
<mml:math id="m53">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="normal">x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>U</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>To enhance global search performance, we integrate opposite&#x2010;based learning (OBL) with stochastic exploration. Specifically, for a subset of the population (e.g., the 50% of individuals exhibiting the poorest fitness), we compute their opposite solutions as follows: As shown in <xref ref-type="disp-formula" rid="e18">Equation 18</xref>
<disp-formula id="e18">
<mml:math id="m54">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3f5;</mml:mi>
<mml:mo>&#x2a;</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="|">
<mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf37">
<mml:math id="m55">
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> denotes the perturbation amplitude, and <inline-formula id="inf38">
<mml:math id="m56">
<mml:mrow>
<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="|">
<mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is a random variable drawn from the standard normal distribution. This mechanism simulates minor perturbations in the solution space, thereby enhancing the algorithm&#x2019;s capability to escape local optima.</p>
</sec>
<sec id="s5-2-3">
<title>5.2.3 The alpha wolf&#x2019;s Cauchy perturbation mechanism</title>
<p>For the optimal solution (&#x3b1; wolf) within the Grey Wolf social hierarchy, we introduce a Cauchy&#x2010;perturbation mechanism. The probability density function of the Cauchy distribution is shown in <xref ref-type="disp-formula" rid="e19">Equation 19</xref>.<disp-formula id="e19">
<mml:math id="m57">
<mml:mrow>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>&#x3bb;</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3c0;</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>
</p>
<p>Here, &#x3bb; serves as a scaling factor that governs the tail &#x201c;thickness.&#x201d; Compared with the Gaussian distribution, the heavy-tail characteristic of the Cauchy distribution entails occasional large perturbations, thereby enabling the &#x3b1;-wolf to escape from local optima.</p>
<p>After each iteration, a Cauchy&#x2010;distributed perturbation is applied. The perturbation formula is as shown in <xref ref-type="disp-formula" rid="e20">Equation 20</xref>
<disp-formula id="e20">
<mml:math id="m58">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>Here, C denotes the perturbation vector randomly sampled from the Cauchy distribution. The heavy-tail property of the Cauchy distribution entails occasional large jumps, aiding the &#x3b1;-wolf in escaping local traps and discovering new advantageous regions. If <inline-formula id="inf39">
<mml:math id="m59">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, then update <inline-formula id="inf40">
<mml:math id="m60">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. This mechanism is simple to control and incurs minimal computational overhead yet effectively enhances the balance between local search and global exploration.</p>
</sec>
</sec>
<sec id="s5-3">
<title>5.3 Workflow of the enhanced algorithm</title>
<p>The algorithm&#x2019;s parameters are listed in <xref ref-type="table" rid="T3">Table 3</xref>. All values were determined through extensive preliminary tuning experiments to strike a balance between search capability and convergence efficiency. When transferring the method to other optimization problems, these parameters may be fine-tuned as appropriate to the problem&#x2019;s complexity.<list list-type="simple">
<list-item>
<p>Step 1: Randomly generate N wolf pack individuals <inline-formula id="inf41">
<mml:math id="m61">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>X</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> within the range [L,U]. Then compute the fitness <inline-formula id="inf42">
<mml:math id="m62">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<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> of each individual and select the top three performers as <inline-formula id="inf43">
<mml:math id="m63">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>Step 2: Calculate the Gaussian-based nonlinear convergence factor.</p>
</list-item>
<list-item>
<p>Step 3: Opposition-based learning and exploration. Generate opposite solutions <inline-formula id="inf44">
<mml:math id="m64">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>U</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> for roughly the bottom 50% of individuals by fitness; if condition <inline-formula id="inf45">
<mml:math id="m65">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<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> is met, replace them; apply small-scale random chaotic perturbations to a subset of individuals (selected randomly or according to a strategy).</p>
</list-item>
<list-item>
<p>Step 4: Traditional encirclement and position update&#x2014;compute three candidate positions for each non-leader wolf X and update its position.</p>
</list-item>
<list-item>
<p>Step 5: Alpha wolf Cauchy perturbation&#x2014;sample vector C from a Cauchy distribution, compute candidate <inline-formula id="inf46">
<mml:math id="m66">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and if <inline-formula id="inf47">
<mml:math id="m67">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, update <inline-formula id="inf48">
<mml:math id="m68">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>Step 6: Reevaluate the fitness of the entire wolf pack and update individuals <inline-formula id="inf49">
<mml:math id="m69">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3001;</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mo>&#x3001;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>Step 7: Output the results.</p>
</list-item>
</list>
</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Algorithm parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Parameter</th>
<th align="left">Value</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Population size N</td>
<td align="left">100</td>
<td align="left">Number of wolves in the population</td>
</tr>
<tr>
<td align="left">Maximum iterations T</td>
<td align="left">100 (engineering experiments)/200 (theoretical functions)</td>
<td align="left">Upper limit of iterations</td>
</tr>
<tr>
<td align="left">Cauchy perturbation scale factor <inline-formula id="inf50">
<mml:math id="m70">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3bb;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">0.5</td>
<td align="left">Controls the perturbation amplitude of &#x3b1;-wolves</td>
</tr>
<tr>
<td align="left">Standard deviation of the Gaussian distribution &#x3c3;</td>
<td align="left">0.3</td>
<td align="left">Controls the smoothness of the nonlinear convergence factor&#x2019;s decline curve</td>
</tr>
<tr>
<td align="left">Opposition-based learning replacement ratio</td>
<td align="left">50%</td>
<td align="left">Selects the latter half of individuals ranked by fitness for the opposition-based update</td>
</tr>
<tr>
<td align="left">Chaos perturbation injection ratio</td>
<td align="left">10%</td>
<td align="left">Introduces random perturbations to enhance diversity</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s5-4">
<title>5.4 Pseudocode of the S-GWO algorithm</title>
<p>Algorithm S-GWO (pop, dim, maxIter, lb, ub, fobj)<list list-type="simple">
<list-item>
<p>Inputs:</p>
</list-item>
<list-item>
<p>&#x2003;pop &#x2190; population size</p>
</list-item>
<list-item>
<p>&#x2003;dim &#x2190; problem dimensionality</p>
</list-item>
<list-item>
<p>maxIter &#x2190; maximum number of iterations</p>
</list-item>
<list-item>
<p>&#x2003;lb, ub &#x2190; vectors of lower and upper bounds (length &#x3d; dim)</p>
</list-item>
<list-item>
<p>&#x2003;fobj(x) &#x2190; objective function</p>
</list-item>
<list-item>
<p>Outputs:</p>
</list-item>
<list-item>
<p>Best_pos &#x2190; best solution found</p>
</list-item>
<list-item>
<p>Best_fitness &#x2190; objective value at Best_pos</p>
</list-item>
<list-item>
<p>&#x2500;&#x2500;&#x2500; Initialization &#x2500;&#x2500;&#x2500;</p>
</list-item>
<list-item>
<p>1. Generate initial population X &#x2208; &#x211d;&#x5e;{pop &#xd7; dim}:</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;for i in 1 &#x2026; pop:</p>
</list-item>
<list-item>
<p>&#x2003;X[i] &#x2190; lb &#x2b; rand(dim) &#x2299; (ub&#x2013;lb)</p>
</list-item>
<list-item>
<p>2. Evaluate fitness:</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;for i in 1 &#x2026; pop:</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x2003;f[i] &#x2190; fobj(X[i])</p>
</list-item>
<list-item>
<p>3. Identify &#x3b1;, &#x3b2;, &#x3b4; wolves:</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;Sort wolves by f ascending.</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x3b1;_pos &#x2190; position of best wolf; &#x3b1;_score &#x2190; best fitness</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x3b2;_pos &#x2190; position of 2nd-best; &#x3b2;_score &#x2190; 2nd-best fitness</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x3b4;_pos &#x2190; position of 3rd-best; &#x3b4;_score &#x2190; 3rd-best fitness</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;Best_pos &#x2190; &#x3b1;_pos; Best_fitness &#x2190; &#x3b1;_score</p>
</list-item>
<list-item>
<p>&#x2500;&#x2500;&#x2500; Main Loop &#x2500;&#x2500;&#x2500;</p>
</list-item>
<list-item>
<p>for t in 1 &#x2026; maxIter:</p>
</list-item>
<list-item>
<p>&#x2003;a &#x2190; 2 &#xb7; (1 &#x2013; t/maxIter)//convergence factor</p>
</list-item>
<list-item>
<p>&#x2003;for each wolf i in 1 &#x2026; pop:</p>
</list-item>
<list-item>
<p>&#x2003;for each dimension j in 1 &#x2026; dim:</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;//Random coefficients</p>
</list-item>
<list-item>
<p>&#x2003;A1 &#x2190; 2&#xb7;a&#xb7;rand() &#x2013; a;</p>
</list-item>
<list-item>
<p>&#x2003;C1 &#x2190; 2&#xb7;rand()</p>
</list-item>
<list-item>
<p>&#x2003;A2, C2 and A3, C3 likewise</p>
</list-item>
<list-item>
<p>&#x2003;//Distance to &#x3b1;, &#x3b2;, &#x3b4;</p>
</list-item>
<list-item>
<p>&#x2003;D&#x3b1; &#x2190; &#x7c;C1&#xb7;&#x3b1;_pos[j] &#x2013; X[i,j]&#x7c;</p>
</list-item>
<list-item>
<p>&#x2003;D&#x3b2; &#x2190; &#x7c;C2&#xb7;&#x3b2;_pos[j] &#x2013; X[i,j]&#x7c;</p>
</list-item>
<list-item>
<p>&#x2003;D&#x3b4; &#x2190; &#x7c;C3&#xb7;&#x3b4;_pos[j] &#x2013; X[i,j]&#x7c;</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x2003;//Candidate positions</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x2003;X1 &#x2190; &#x3b1;_pos[j] &#x2013; A1&#xb7;D&#x3b1;</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x2003;X2 &#x2190; &#x3b2;_pos[j] &#x2013; A2&#xb7;D&#x3b2;</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;&#x2003;X3 &#x2190; &#x3b4;_pos[j] &#x2013; A3&#xb7;D&#x3b4;</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;//Combine with OBL and Cauchy perturbation</p>
</list-item>
<list-item>
<p>&#x2003;avgX &#x2190; (X1 &#x2b; X2 &#x2b; X3)/3</p>
</list-item>
<list-item>
<p>&#x2003;oblX &#x2190; lb[j] &#x2b; ub[j] &#x2013; avgX</p>
</list-item>
<list-item>
<p>&#x2003;newPos &#x2190; 0.5&#xb7;(avgX &#x2b; oblX) &#x2b; &#x3b3; tan(&#x3c0;&#xb7;(rand() &#x2013; 0.5))</p>
</list-item>
<list-item>
<p>&#x2003;//Enforce bounds</p>
</list-item>
<list-item>
<p>&#x2003;X[i,j] &#x2190; clip(newPos, lb[j], ub[j])</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;end for</p>
</list-item>
<list-item>
<p>&#x2003;//Update fitness</p>
</list-item>
<list-item>
<p>&#x2003;f[i] &#x2190; fobj(X[i])</p>
</list-item>
<list-item>
<p>&#x2003;end for</p>
</list-item>
<list-item>
<p>&#x2003;//Update &#x3b1;, &#x3b2;, &#x3b4; wolves if better</p>
</list-item>
<list-item>
<p>&#x2003;Resort wolves by f ascending; update &#x3b1;_pos, &#x3b2;_pos, &#x3b4;_pos, and scores</p>
</list-item>
<list-item>
<p>&#x2003;if &#x3b1;_score &#x3c; Best_fitness:</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;Best_pos &#x2190; &#x3b1;_pos</p>
</list-item>
<list-item>
<p>&#x2003;&#x2003;Best_fitness &#x2190; &#x3b1;_score</p>
</list-item>
<list-item>
<p>&#x2003;end if</p>
</list-item>
<list-item>
<p>end for</p>
</list-item>
</list>
</p>
</sec>
</sec>
<sec id="s6">
<title>6 Algorithm performance experiments and analysis</title>
<p>The experiments were conducted on a computer equipped with an 11th-generation Intel<sup>&#xae;</sup> Core&#x2122; i7-11700 processor clocked at 2.50&#xa0;GHz, 16&#xa0;GB of RAM, and a 64-bit Windows 11 operating system. The algorithm was implemented in MATLAB R2021a. To evaluate the performance of S-GWO, twelve representative functions were selected from a pool of 23 classical benchmark functions, together with an engineering test function for compression-spring design. The test functions are listed as follows.</p>
<p>The unimodal functions are given by <xref ref-type="disp-formula" rid="e21">Equations 21</xref>&#x2013;<xref ref-type="disp-formula" rid="e24">24</xref>:<disp-formula id="e21">
<mml:math id="m71">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
<disp-formula id="e22">
<mml:math id="m72">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="" close="" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>
<disp-formula id="e23">
<mml:math id="m73">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="" close="" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="|" close="" separators="|">
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="" close="" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x220f;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>
<disp-formula id="e24">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x220f;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<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:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
<p>The multimodal functions are given by <xref ref-type="disp-formula" rid="e25">Equations 25</xref>&#x2013;<xref ref-type="disp-formula" rid="e27">27</xref>: <disp-formula id="e25">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>10</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<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:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(25)</label>
</disp-formula>
<disp-formula id="e26">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>
<disp-formula id="e27">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>if</mml:mtext>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>otherwise</mml:mtext>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(27)</label>
</disp-formula>
</p>
<p>The fixed-dimension multimodal test functions are given by <xref ref-type="disp-formula" rid="e28">Equations 28</xref>&#x2013;<xref ref-type="disp-formula" rid="e31">31</xref>:<disp-formula id="e28">
<mml:math id="m78">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>14</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(28)</label>
</disp-formula>
<disp-formula id="e29">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>15</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>4</mml:mn>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mn>4</mml:mn>
<mml:mn>3</mml:mn>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>4</mml:mn>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mn>5</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(29)</label>
</disp-formula>
<disp-formula id="e30">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>16</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>3</mml:mn>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(30)</label>
</disp-formula>
<disp-formula id="e31">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>17</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(31)</label>
</disp-formula>
</p>
<p>Engineering test function: spring</p>
<p>The objective of the compression-spring design problem is to minimize the mass function f(x) subject to four inequality constraints: minimum deflection, shear stress, natural (oscillation) frequency, and outer-diameter limits, using three design variables: the mean coil diameter <inline-formula id="inf51">
<mml:math id="m82">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the wire (metal) diameter <inline-formula id="inf52">
<mml:math id="m83">
<mml:mrow>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">x</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, and the number of active coils <inline-formula id="inf53">
<mml:math id="m84">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The objective functions are given by <xref ref-type="disp-formula" rid="e32">Equations 32</xref>, <xref ref-type="disp-formula" rid="e33">33</xref>:<disp-formula id="e32">
<mml:math id="m85">
<mml:mrow>
<mml:mtext>minf</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="normal">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(32)</label>
</disp-formula>
<disp-formula id="e33">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mi>D</mml:mi>
<mml:mn>3</mml:mn>
</mml:msup>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>71785</mml:mn>
<mml:msup>
<mml:mi>d</mml:mi>
<mml:mn>4</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(33)</label>
</disp-formula>
</p>
<p>The constraints are given by <xref ref-type="disp-formula" rid="e34">Equations 34</xref>, <xref ref-type="disp-formula" rid="e35">35</xref>;<disp-formula id="e34">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:msup>
<mml:mi>D</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>D</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>12566</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:msup>
<mml:mi>d</mml:mi>
<mml:mn>3</mml:mn>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi>d</mml:mi>
<mml:mn>4</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mn>5108</mml:mn>
<mml:msup>
<mml:mi>d</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(34)</label>
</disp-formula>
<disp-formula id="e35">
<mml:math id="m88">
<mml:mrow>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>140.45</mml:mn>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mi>D</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(35)</label>
</disp-formula>
</p>
<sec id="s6-1">
<title>6.1 Comparative algorithms and parameter settings</title>
<p>This study selects five algorithms: the improved Grey Wolf Optimizer (S-GWO), Whale Optimization algorithm (WOA), Heap-based Optimization (HBO), Standard Multi-verse Optimizer (MVO), and Harris Hawks Optimizer (HHO) for comparative simulation experiments on twelve test functions, evaluating mean fitness (mean) and fitness standard deviation (std). In this experiment, the population size for each algorithm is set to 50, and the dimensionality of the non-fixed-dimension test functions is dim &#x3d; 30.</p>
</sec>
<sec id="s6-2">
<title>6.2 Benchmark function testing and analysis</title>
<p>
<xref ref-type="table" rid="T4">Table 4</xref> presents the mean fitness values (mean) and fitness standard deviations (std) obtained by running the S-GWO algorithm and its comparative optimizers independently for 30 trials. GWO.</p>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Mean and standard deviation for twelve test functions.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th colspan="2" align="left">Function</th>
<th align="left">MVO</th>
<th align="left">S-GWO</th>
<th align="left">GWO</th>
<th align="left">WOA</th>
<th align="left">HBO</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="2" align="left">F1</td>
<td align="left">Mean</td>
<td align="left">1.06</td>
<td align="center">1.74e&#x2212;27</td>
<td align="center">1.54</td>
<td align="center">3.49e&#x2212;73</td>
<td align="center">2.64e&#x2212;06</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">0.41</td>
<td align="center">2.93e&#x2212;27</td>
<td align="left">0.54</td>
<td align="center">1.819e&#x2212;72</td>
<td align="center">8.44e&#x2212;06</td>
</tr>
<tr>
<td rowspan="2" align="left">F2</td>
<td align="left">Mean</td>
<td align="left">1.64</td>
<td align="center">1.91e&#x2212;15</td>
<td align="left">1.44</td>
<td align="center">9.45e&#x2212;50</td>
<td align="center">5.82e&#x2212;05</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="center">1.509</td>
<td align="center">2.48e&#x2212;05</td>
<td align="left">2.32</td>
<td align="center">3.66e&#x2212;49</td>
<td align="center">3.66e&#x2212;05</td>
</tr>
<tr>
<td rowspan="2" align="left">F3</td>
<td align="left">Mean</td>
<td align="center">202.49</td>
<td align="center">9,88e&#x2212;06</td>
<td align="center">32</td>
<td align="center">40663</td>
<td align="center">18999.45</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">84.4</td>
<td align="center">7.4e&#x2212;07</td>
<td align="left">45</td>
<td align="center">13987</td>
<td align="center">7309</td>
</tr>
<tr>
<td rowspan="2" align="left">F4</td>
<td align="left">Mean</td>
<td align="left">2.11</td>
<td align="center">3.73e&#x2212;15</td>
<td align="left">1.21</td>
<td align="center">8.009e&#x2212;07</td>
<td align="center">12.04</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">0.87</td>
<td align="center">2.78e&#x2212;15</td>
<td align="left">0.45</td>
<td align="center">0.09</td>
<td align="center">3.43</td>
</tr>
<tr>
<td rowspan="2" align="left">F10</td>
<td align="left">Mean</td>
<td align="left">20.3</td>
<td align="left">2.23e&#x2212;3</td>
<td align="left">18.21</td>
<td align="center">0.0105</td>
<td align="center">20.00</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">0.03</td>
<td align="left">0.006</td>
<td align="left">5.98</td>
<td align="center">0.038</td>
<td align="center">7.61e&#x2212;05</td>
</tr>
<tr>
<td rowspan="2" align="left">F11</td>
<td align="left">Mean</td>
<td align="left">0.107</td>
<td align="left">0.003</td>
<td align="left">2.43</td>
<td align="center">0.037</td>
<td align="center">0.0049</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">3.85</td>
<td align="left">0.018</td>
<td align="left">0.43</td>
<td align="center">0.035</td>
<td align="center">0.0018</td>
</tr>
<tr>
<td rowspan="2" align="left">F12</td>
<td align="left">Mean</td>
<td align="left">2.92</td>
<td align="left">0.04</td>
<td align="left">0.23</td>
<td align="center">0.62</td>
<td align="center">0.0069</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">1.46</td>
<td align="left">0.21</td>
<td align="left">0.14</td>
<td align="center">0.25</td>
<td align="left">0.026</td>
</tr>
<tr>
<td rowspan="2" align="left">F13</td>
<td align="left">Mean</td>
<td align="left">0.32</td>
<td align="left">0.74</td>
<td align="left">0.21</td>
<td align="center">1.62</td>
<td align="center">0.0058</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">0.417</td>
<td align="left">1.99</td>
<td align="left">1.25</td>
<td align="left">1.01</td>
<td align="center">0.0198</td>
</tr>
<tr>
<td rowspan="2" align="left">F14</td>
<td align="left">Mean</td>
<td align="left">0.98</td>
<td align="left">2.1</td>
<td align="left">2.55</td>
<td align="center">0.0006</td>
<td align="center">0.49</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="center">6.9e&#x2212;06</td>
<td align="left">0.008</td>
<td align="left">0.12</td>
<td align="center">0.0003</td>
<td align="center">3.5</td>
</tr>
<tr>
<td rowspan="2" align="left">F15</td>
<td align="left">Mean</td>
<td align="left">0.001</td>
<td align="left">0.001</td>
<td align="left">0.05</td>
<td align="center">0.34</td>
<td align="center">0.12</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">0.012</td>
<td align="center">2.3e&#x2212;03</td>
<td align="center">2.4</td>
<td align="center">3.45</td>
<td align="center">2.3e&#x2212;06</td>
</tr>
<tr>
<td rowspan="2" align="left">F16</td>
<td align="left">Mean</td>
<td align="left">&#x2212;1.03</td>
<td align="left">&#x2212;0.103</td>
<td align="left">&#x2212;0.56</td>
<td align="center">&#x2212;1.03</td>
<td align="left">&#x2212;0.98</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="center">4.44e&#x2212;07</td>
<td align="left">2.72</td>
<td align="left">2.1</td>
<td align="center">4.01e&#x2212;9</td>
<td align="center">3.2</td>
</tr>
<tr>
<td rowspan="2" align="left">F17</td>
<td align="left">Mean</td>
<td align="left">0.39</td>
<td align="left">0.39</td>
<td align="left">0.39</td>
<td align="left">0.39</td>
<td align="center">0.39</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">4.94</td>
<td align="left">0.002</td>
<td align="left">2.21</td>
<td align="center">1.43e&#x2212;05</td>
<td align="center">0</td>
</tr>
<tr>
<td rowspan="2" align="left">Spring</td>
<td align="left">Mean</td>
<td align="left">0.017</td>
<td align="left">
<bold>0.012</bold>
</td>
<td align="left">6.9</td>
<td align="left">0.013</td>
<td align="left">0.017</td>
</tr>
<tr>
<td align="left">Std</td>
<td align="left">0.001</td>
<td align="left">
<bold>2.6e&#x2212;05</bold>
</td>
<td align="left">8.75</td>
<td align="left">0.0014</td>
<td align="left">2.93e&#x2212;05</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The best results in the experimental data have been highlighted in bold. The S-GWO algorithm achieved the best mean fitness and the lowest standard deviation on functions F3, F4, F11, F15, and spring, and also demonstrated advantages in both mean and standard deviation over some comparison algorithms on functions F1, F2, F3,x F4, F11, F15, F16, and F17. Compared to the standard GWO, S-GWO achieved better fitness and lower standard deviation on all functions except F12 and F13. The results indicate that the improved Grey Wolf Algorithm (S-GWO) significantly outperforms the standard GWO in benchmark tests and maintains an advantage over high-performance algorithms such as WOA and MVO. These findings show that S-GWO provides a substantial improvement across the twelve benchmark functions.</p>
<p>As shown in <xref ref-type="fig" rid="F6">Figure 6</xref>, convergence curves for five optimization algorithms on twelve test functions are plotted. Panels (c), (i), (g), and (j) indicate that the improved Grey Wolf Optimizer converges more rapidly on functions F15, F11, F4, and F3, with especially pronounced performance on F11, demonstrating S-GWO&#x2019;s superior efficacy on multimodal landscapes. Panel (m) confirms that S-GWO performs well on the engineering spring function. Conversely, panels (h) and (d) show that S-GWO becomes trapped and fails to reach the global optimum on F10 and F14. These observations corroborate the results reported in <xref ref-type="table" rid="T4">Table 4</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Comparative plot of convergence curves of the algorithms on the test functions. <bold>(a)</bold> The curve on F17, <bold>(b)</bold> The curve on F16, <bold>(c)</bold> The curve on F15, <bold>(d)</bold> The curve on F14, <bold>(e)</bold> The curve on F13, <bold>(f)</bold> The curve on F12, <bold>(g)</bold> The curve on F11, <bold>(h)</bold> The curve on F10, <bold>(i)</bold> The curve on F4, <bold>(j)</bold> The curve on F3, <bold>(k)</bold> The curve on F2, and <bold>(l)</bold> The curve on F1.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g006.tif">
<alt-text content-type="machine-generated">Six line graphs showing convergence on functions F12 to F17. Each graph compares five algorithms: HBO, S-GWO, MVO, WOA, and GWO, represented by different colored lines. The x-axis indicates iterations, while the y-axis represents the best fitness so far. Graphs illustrate algorithm performance over iterations, with varying scales and starting points. Six line graphs depict the convergence of different optimization algorithms across functions F11, F10, F4, F2, F3, and F1. Each graph shows the algorithm performance over iterations, with different algorithms represented by distinct colors: HBO (blue), S-GWO (red), MVO (orange), WOA (purple), and GWO (green). The x-axis represents iterations, while the y-axis shows the best fitness so far. Patterns indicate the decline in fitness value as iterations increase, highlighting the comparative efficiency and convergence rates of each algorithm.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s6-3">
<title>6.3 Wilcoxon rank-sum test on function data</title>
<p>The rank-sum test&#x2014;also known as the Wilcoxon rank-sum test or Mann&#x2013;Whitney U Test&#x2014;is a nonparametric statistical method employed to assess whether two independent samples originate from distributions that differ significantly. By definition, the p-value in the rank-sum test indicates the test&#x2019;s significance level; the indicator variable hhh denotes the test outcome: h &#x3d; 0&#xa0;implies failure to reject the null hypothesis, whereas h &#x3d; 1&#xa0;indicates rejection of the null, thereby signifying a statistically significant difference between the two algorithms.</p>
<p>In this study, we evaluated the performance of five metaheuristic optimization algorithms: Grey Wolf Optimizer (GWO), improved Grey Wolf Optimizer (S-GWO), Multi-verse Optimizer (MVO), Whale Optimization algorithm (WOA), and Heap-based Optimizer (HBO) across a suite of test functions, including the spring function and functions F1&#x2013;F4 and F10&#x2013;F17. Each algorithm was executed 30 independent times, with the best objective value recorded in each run. The means of these optimal values were then computed, and pairwise Wilcoxon rank-sum tests were conducted among all algorithms to determine whether performance differences were statistically significant.</p>
<p>The results revealed that all hhh values equaled 1, indicating that every pairwise comparison exhibited statistically significant performance differences. As shown in <xref ref-type="table" rid="T5">Table 5</xref>, a smaller mean optimal value reflects stronger search capability on the corresponding test function, that is, a greater propensity to discover lower objective function values (better feasible solutions or closer approximations to the global optimum). Comparing the algorithms&#x2019; mean optimal values leads to the conclusion that S-GWO demonstrates the best performance on the spring function as well as functions F3, F4, F12, and F13, while exhibiting comparable performance to WOA and HBO on function F16.</p>
<table-wrap id="T5" position="float">
<label>TABLE 5</label>
<caption>
<p>Mean Mean optimal values of the optimization algorithms.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Function form</th>
<th align="center">S-GWO</th>
<th align="center">GWO</th>
<th align="center">MVO</th>
<th align="center">WOA</th>
<th align="center">HBO</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Spring</td>
<td align="left">
<bold>&#x2212;9.8273e&#x2b;07</bold>
</td>
<td align="left">&#x2212;4.8398e&#x2b;07</td>
<td align="left">&#x2212;9.8131e&#x2b;07</td>
<td align="left">&#x2212;9.8944e&#x2b;07</td>
<td align="left">&#x2212;1.0001e&#x2b;08</td>
</tr>
<tr>
<td align="left">F1</td>
<td align="left">3.1493e&#x2212;11</td>
<td align="left">6.5995e&#x2b;04</td>
<td align="left">5.0125e&#x2b;00</td>
<td align="left">
<bold>1.2368e&#x2212;33</bold>
</td>
<td align="left">3.8515e&#x2212;01</td>
</tr>
<tr>
<td align="left">F2</td>
<td align="left">5.7916e&#x2212;06</td>
<td align="left">2.9091e&#x2b;42</td>
<td align="left">6.2391e&#x2b;26</td>
<td align="left">
<bold>8.8662e&#x2212;21</bold>
</td>
<td align="left">7.3544e&#x2212;01</td>
</tr>
<tr>
<td align="left">F3</td>
<td align="left">
<bold>3.7595e&#x2212;01</bold>
</td>
<td align="left">1.1746e&#x2b;05</td>
<td align="left">8.9304e&#x2b;02</td>
<td align="left">6.4724e&#x2b;04</td>
<td align="left">3.1419e&#x2b;04</td>
</tr>
<tr>
<td align="left">F4</td>
<td align="left">
<bold>8.3595e&#x2212;03</bold>
</td>
<td align="left">8.5643e&#x2b;01</td>
<td align="left">4.1315e&#x2b;00</td>
<td align="left">5.5111e&#x2b;01</td>
<td align="left">2.1235e&#x2b;01</td>
</tr>
<tr>
<td align="left">F10</td>
<td align="left">2.0923e&#x2b;01</td>
<td align="left">2.1386e&#x2b;01</td>
<td align="left">2.0604e&#x2b;01</td>
<td align="left">
<bold>9.7996e&#x2212;15</bold>
</td>
<td align="left">2.0065e&#x2b;01</td>
</tr>
<tr>
<td align="left">F11</td>
<td align="left">8.2840e&#x2212;03</td>
<td align="left">1.7025e&#x2b;01</td>
<td align="left">3.7070e&#x2212;01</td>
<td align="left">8.6638e&#x2212;03</td>
<td align="left">
<bold>3.8493e&#x2212;02</bold>
</td>
</tr>
<tr>
<td align="left">F12</td>
<td align="left">
<bold>7.2176e&#x2212;02</bold>
</td>
<td align="left">4.0175e&#x2b;190</td>
<td align="left">3.5606e&#x2b;57</td>
<td align="left">1.5918e&#x2212;01</td>
<td align="left">4.2834e&#x2b;97</td>
</tr>
<tr>
<td align="left">F13</td>
<td align="left">
<bold>1.0692e&#x2b;00</bold>
</td>
<td align="left">4.6537e&#x2b;192</td>
<td align="left">3.5978e&#x2b;110</td>
<td align="left">1.0735e&#x2b;00</td>
<td align="left">9.2304e&#x2b;100</td>
</tr>
<tr>
<td align="left">F14</td>
<td align="left">2.2287e&#x2b;00</td>
<td align="left">1.1724e&#x2b;01</td>
<td align="left">9.8064e&#x2212;01</td>
<td align="left">1.5726e&#x2b;00</td>
<td align="left">
<bold>9.8057e&#x2212;01</bold>
</td>
</tr>
<tr>
<td align="left">F15</td>
<td align="left">1.1083e&#x2212;03</td>
<td align="left">6.8677e&#x2b;00</td>
<td align="left">5.5039e&#x2212;03</td>
<td align="left">1.6496e&#x2212;03</td>
<td align="left">
<bold>1.0597e&#x2212;03</bold>
</td>
</tr>
<tr>
<td align="left">F16</td>
<td align="left">
<bold>&#x2212;1.0316e&#x2b;00</bold>
</td>
<td align="left">7.1837e&#x2b;05</td>
<td align="left">&#x2212;1.0309e&#x2b;00</td>
<td align="left">
<bold>&#x2212;1.0316e&#x2b;00</bold>
</td>
<td align="left">
<bold>&#x2212;1.0316e&#x2b;00</bold>
</td>
</tr>
<tr>
<td align="left">F17</td>
<td align="left">4.3486e&#x2212;01</td>
<td align="left">8.2368e&#x2b;01</td>
<td align="left">7.2353e&#x2212;01</td>
<td align="left">
<bold>5.1093e&#x2212;01</bold>
</td>
<td align="left">3.9792e&#x2212;01</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn>
<p>Bold formatting indicates optimal values.</p>
</fn>
</table-wrap-foot>
</table-wrap>
</sec>
<sec id="s6-4">
<title>6.4 Ablation study</title>
<p>With respect to the three major enhancements in the improved S-GWO&#x2014;the Gaussian-distributed nonlinear convergence factor, the opposite-based learning and exploration strategy (OBL), and the Cauchy perturbation mechanism applied to the &#x3b1;-wolf&#x2014;this study proposes a comprehensive ablation experimental framework. By forming four comparative groups, each isolating individual modules as well as a fully integrated configuration, and conducting experiments on both single-dimension and multi-dimension standard benchmark function suites, we compare the mean fitness (mean) and fitness standard deviation (std) to quantitatively evaluate the independent and synergistic contributions of each enhancement.</p>
<p>Control group design: as shown in <xref ref-type="table" rid="T6">Table 6</xref>.</p>
<table-wrap id="T6" position="float">
<label>TABLE 6</label>
<caption>
<p>Control group design for ablation experiments.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Control group</th>
<th align="left">Gaussian convergence factor (A)</th>
<th align="left">Opposition-based learning (B)</th>
<th align="left">Cauchy perturbation (C)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">GWO</td>
<td align="left">&#x2716;</td>
<td align="left">&#x2716;</td>
<td align="left">&#x2716;</td>
</tr>
<tr>
<td align="left">S-GWO-A</td>
<td align="left">&#x2714;</td>
<td align="left">&#x2716;</td>
<td align="left">&#x2716;</td>
</tr>
<tr>
<td align="left">S-GWO-B</td>
<td align="left">&#x2716;</td>
<td align="left">&#x2714;</td>
<td align="left">&#x2716;</td>
</tr>
<tr>
<td align="left">S-GWO-C</td>
<td align="left">&#x2716;</td>
<td align="left">&#x2716;</td>
<td align="left">&#x2714;</td>
</tr>
<tr>
<td align="left">S-GWO</td>
<td align="left">&#x2714;</td>
<td align="left">&#x2714;</td>
<td align="left">&#x2714;</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Benchmark test function suite: the classical unimodal function F1 and the multimodal function F10 were selected as the test set. In this experiment, each algorithm&#x2019;s population size was set to 50, the dimensionality of the non-fixed-dimension test functions was set to D &#x3d; 30, the number of runs N &#x3d; 30, and the search interval was [&#x2212;100, 100].</p>
<p>As shown in <xref ref-type="table" rid="T7">Table 7</xref>, the integration of the three enhancement strategies confers a comprehensive advantage to the fully augmented S-GWO. On F1, S-GWO&#x2019;s mean error is nearly zero (on the order of 10<sup>&#x2212;27</sup>), representing an approximately 27-orders-of-magnitude reduction compared to the original GWO&#x2019;s 1.54; the std is likewise effectively zero, indicating exceptional solution accuracy and stability. On F10, S-GWO achieves a mean value of 0.00223&#x2014;an improvement of four orders of magnitude over GWO&#x2019;s 18.21&#x2014;and the lowest std (0.006), demonstrating its reliable ability to escape multimodal traps and converge to the global optimum. Ablation results for individual modules: with only the Gaussian convergence factor (S-GWOA), F1 still exhibits a substantial residual error (6.94 &#xd7; 10<sup>&#x2212;4</sup>) and an std of approximately 6.7 &#xd7; 10<sup>&#x2212;3</sup>, indicating that while the Gaussian factor alone accelerates convergence, it becomes trapped away from zero without local exploration or escape mechanisms. On F10, its mean value approaches the boundary (&#x2248;20), and the std reaches 9.22, severely compromising its ability to handle multimodal landscapes.</p>
<table-wrap id="T7" position="float">
<label>TABLE 7</label>
<caption>
<p>Ablation experiments based on F1 and F10.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Function</th>
<th align="left">Statistic</th>
<th align="center">GWO</th>
<th align="center">S-GWO</th>
<th align="center">S-GWOA</th>
<th align="center">S-GWOB</th>
<th align="center">S-GWOC</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">F1</td>
<td align="left">Mean</td>
<td align="left">1.54</td>
<td align="left">1.74 &#xd7; 10<sup>&#x2212;27</sup>
</td>
<td align="left">6.94 &#xd7; 10<sup>&#x2212;4</sup>
</td>
<td align="left">3.57852 &#xd7; 10<sup>&#x2212;9</sup>
</td>
<td align="left">3.15587 &#xd7; 10<sup>&#x2212;9</sup>
</td>
</tr>
<tr>
<td align="left">F1</td>
<td align="left">Std</td>
<td align="left">0.54</td>
<td align="left">2.93 &#xd7; 10<sup>&#x2212;27</sup>
</td>
<td align="left">6.73 &#xd7; 10<sup>&#x2212;3</sup>
</td>
<td align="left">2.58743 &#xd7; 10<sup>&#x2212;9</sup>
</td>
<td align="left">2.15993 &#xd7; 10<sup>&#x2212;9</sup>
</td>
</tr>
<tr>
<td align="left">F10</td>
<td align="left">Mean</td>
<td align="left">18.21</td>
<td align="left">2.23 &#xd7; 10<sup>&#x2212;3</sup>
</td>
<td align="left">20</td>
<td align="left">5.81626 &#xd7; 10<sup>&#x2212;2</sup>
</td>
<td align="left">1.88027 &#xd7; 10<sup>&#x2212;1</sup>
</td>
</tr>
<tr>
<td align="left">F10</td>
<td align="left">Std</td>
<td align="left">5.98</td>
<td align="left">0.006</td>
<td align="left">9.22</td>
<td align="left">2.59877 &#xd7; 10<sup>&#x2212;1</sup>
</td>
<td align="left">8.50469 &#xd7; 10<sup>&#x2212;1</sup>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>With only opposite-based learning (S-GWOB), F1 converges near the global optimum (3.6 &#xd7; 10<sup>&#x2212;9</sup>) with an std of the same order; on F10, it achieves a mean of 0.058 and an std of 0.26. Although this is not as strong as S-GWO, it represents roughly a 300-fold improvement over the original GWO, demonstrating OBL&#x2019;s powerful global escape capability in multimodal problems.</p>
<p>With only Cauchy perturbation (S-GWOC), F1 also converges to the &#x223c;10<sup>&#x2212;9</sup> level, with an std similarly on the order of 10<sup>&#x2212;9</sup>, on par with OBL; on F10, it records a mean of 0.188 and an std of 0.85&#x2014;an obvious improvement, though with slightly inferior performance and stability than OBL, indicating that Cauchy perturbation favors local fine-grained search.</p>
<p>Robustness (std) comparison: S-GWO exhibits the smallest std, indicating virtually no random fluctuation when all three modules are combined; S-GWOB follows with an average std below 0.3 across the two functions; S-GWOC and S-GWOA show significantly larger stds, particularly on F10 at 0.85 and 9.22, respectively, reflecting the insufficient stability of single modules in multimodal environments.</p>
<p>Conclusion: The synergy of the three modules in S-GWO yields the optimal convergence accuracy (smallest mean) and consistency (smallest std). Opposite-based learning is the most effective single enhancement, maintaining global search capability while providing robustness. Cauchy perturbation excels in unimodal problems but exhibits greater fluctuation in multimodal settings; the Gaussian factor performs worst when used alone and must be combined with other modules to demonstrate value. Therefore, in practical optimization, it is recommended to enable opposite-based learning at a minimum, supplemented by Cauchy perturbation or the Gaussian factor to achieve comprehensive performance improvements.</p>
</sec>
</sec>
<sec id="s7">
<title>7 Engineering experiment verification and analysis</title>
<p>To validate the superiority of the improved Multi-verse Optimizer proposed in this study, experiments were conducted on a simplified CRH2 bogie structural model to assess the convergence curves, the variance of uniformly distributed loads, and the number and magnitude of shim adjustments produced by different algorithms. The model&#x2019;s input parameters are presented in <xref ref-type="table" rid="T8">Table 8</xref>.</p>
<table-wrap id="T8" position="float">
<label>TABLE 8</label>
<caption>
<p>Model input parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Algorithm parameters</th>
<th align="center">a</th>
<th align="center">B</th>
<th align="center">k</th>
<th align="center">
<inline-formula id="inf54">
<mml:math id="m89">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Input quantity</td>
<td align="left">1,230&#xa0;mm</td>
<td align="left">1,000&#xa0;mm</td>
<td align="left">0.0137&#xa0;N/mm</td>
<td align="left">42,630&#xa0;N</td>
</tr>
<tr>
<td align="left">Number of iterations</td>
<td colspan="4" align="center">50</td>
</tr>
<tr>
<td align="left">Maximum search volume</td>
<td colspan="4" align="center">100</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s7-1">
<title>7.1 Experimental validation</title>
<p>The solutions and simulations were performed using the standard GWO, the S-GWO, the Multi-Verse Optimizer (MVO), and the Heap-based Optimization (HBO) algorithms, respectively.</p>
<p>
<xref ref-type="fig" rid="F7">Figure 7</xref> depicts the convergence curves of the four algorithms. The algorithms were configured with 50 iterations and a population size of 100. The ideal objective&#x2010;function threshold is 0, and we take <inline-formula id="inf55">
<mml:math id="m90">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3b5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2a;</mml:mo>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> as the objective&#x2010;function threshold. Based on 30 independent trials, we plotted each algorithm&#x2019;s mean convergence curve at the threshold, with shaded regions indicating the 95% confidence intervals, thereby clearly illustrating differences in stability among the algorithms. The statistical results from these 30 independent runs are presented in <xref ref-type="table" rid="T9">Table 9</xref>:</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Comparison of convergence curves based on the engineering function.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g007.tif">
<alt-text content-type="machine-generated">Line graph showing the mean convergence of various algorithms over 50 iterations with a 95% confidence interval from 30 runs. The vertical axis represents the best objective value, and the horizontal axis represents iterations. Algorithms include MVO, GWO, HBO, and S-GWO, each with distinct markers and colors. MVO and S-GWO show the lowest objective values over iterations, while HBO starts higher and decreases more slowly.</alt-text>
</graphic>
</fig>
<table-wrap id="T9" position="float">
<label>TABLE 9</label>
<caption>
<p>Quantitative analysis of algorithm convergence performance.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Algorithm</th>
<th align="left">Average iterations (mean &#xb1; std)</th>
<th align="left">Iteration speed vs. GWO</th>
<th align="left">Average optimal objective value (mean &#xb1; std)</th>
<th align="left">Objective value improvement</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">GWO</td>
<td align="left">28.3 &#xb1; 5.4 iterations</td>
<td align="left">Baseline</td>
<td align="left">1.17&#xd7; <inline-formula id="inf56">
<mml:math id="m91">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> &#xb1;0.12&#xd7; <inline-formula id="inf57">
<mml:math id="m92">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">Baseline</td>
</tr>
<tr>
<td align="left">MVO</td>
<td align="left">40.2 &#xb1; 8.1 iterations</td>
<td align="left">42.1% slower</td>
<td align="left">1.24&#xd7; <inline-formula id="inf58">
<mml:math id="m93">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> &#xb1;0.15&#xd7; <inline-formula id="inf59">
<mml:math id="m94">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">5% increase (worse)</td>
</tr>
<tr>
<td align="left">HBO</td>
<td align="left">22.5 &#xb1; 3.9 iterations</td>
<td align="left">20.5% faster</td>
<td align="left">1.03&#xd7; <inline-formula id="inf60">
<mml:math id="m95">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> &#xb1;0.10&#xd7; <inline-formula id="inf61">
<mml:math id="m96">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">12% reduction (better)</td>
</tr>
<tr>
<td align="left">S-GWO</td>
<td align="left">12.1 &#xb1; 2.2 iterations</td>
<td align="left">57.2% faster</td>
<td align="left">0.99&#xd7; <inline-formula id="inf62">
<mml:math id="m97">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> &#xb1;0.08&#xd7; <inline-formula id="inf63">
<mml:math id="m98">
<mml:mrow>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">15% reduction (better)</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s7-2">
<title>7.2 Shim filling experiment</title>
<p>
<xref ref-type="fig" rid="F8">Figure 8</xref> presents the shim filling schemes produced by the five algorithms for solving the mathematical model proposed in this study. The horizontal axis denotes the positions of the load-suspension points, while the vertical axis indicates the shim-fill height at each suspension point.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Comparison of shim&#x2010;filling schemes for the algorithms. <bold>(a)</bold> Shim placement scheme of the S-GWO algorithm. <bold>(b)</bold> Shim placement scheme of the GWO algorithm. <bold>(c)</bold> Shim placement scheme of the MVO algorithm. <bold>(d)</bold> Shim placement scheme of the GEO algorithm, and <bold>(e)</bold> Shim placement scheme of the HBO algorithm.</p>
</caption>
<graphic xlink:href="fmech-11-1646395-g008.tif">
<alt-text content-type="machine-generated">Five bar charts depict shim placement schemes by different algorithms. (a) S-GWO shows negative h changes with an average of 1.87 mm. (b) GWO displays positive and negative changes, averaging 2.24 mm. (c) MVO has mostly negative changes, averaging 2.53 mm. (d) GEO shows mixed changes, averaging 2.20 mm. (e) HBO presents predominantly negative changes, with an average of 2.67 mm. All charts have six suspension point indices.</alt-text>
</graphic>
</fig>
<p>The results indicate that all algorithms produced shim adjustment schemes requiring six shims, among which the S-GWO achieved the smallest mean absolute shim adjustment value, denoted as <inline-formula id="inf64">
<mml:math id="m99">
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>. According to the chapter on shim thickness specifications and permissible tolerances, the smaller the <inline-formula id="inf65">
<mml:math id="m100">
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, the fewer and less voluminous the shims required, thereby improving practical implementability and further reducing bogie maintenance time. The calculation formula for the average absolute value of the shim variation is as shown in <xref ref-type="disp-formula" rid="e36">Equation 36</xref>.<disp-formula id="e36">
<mml:math id="m101">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</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>6</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(36)</label>
</disp-formula>
</p>
</sec>
<sec id="s7-3">
<title>7.3 Model generalizability and parameter sensitivity analysis</title>
<p>This study presents a universally applicable computational framework for bogie load-distribution control. Specifically, the model formulation is governed by key parameters: spring transverse span, primary-suspension transverse span, carbody mass, and longitudinal spring stiffness, and its generality lies in its ability to adapt these parameters for locomotives, metro vehicles, high-speed EMUs, and freight-train bogies.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s8">
<title>8 Conclusion</title>
<p>
<list list-type="simple">
<list-item>
<p>1. This study proposes a theoretical framework for static spring-load adjustment in two-axle railway vehicles, in which the bogie suspension system is idealized as a planar rigid body and the primary and secondary suspension springs are represented as six discrete loads on a common plane. This modeling approach is universally applicable to two-axle rail vehicles, including locomotives, metro cars, and EMUs.</p>
</list-item>
<list-item>
<p>2. This work develops an application model of the improved Grey Wolf Optimizer for static center&#x2010;of&#x2010;gravity deviation control in rail vehicles. The model overcomes the drawbacks of manual spring&#x2010;load adjustment in traditional bogie maintenance, enhancing both efficiency and precision of load calibration, and can advance practices in rail&#x2010;vehicle manufacturing and production.</p>
</list-item>
<list-item>
<p>3. We introduce a Gaussian&#x2010;based nonlinear convergence factor to allow extensive exploration early and rapid convergence later, improving both convergence rate and accuracy; incorporate an opposition&#x2010;based learning and exploration strategy to strengthen global search; and add a Cauchy&#x2010;perturbation mechanism for the &#x3b1; wolf to effectively balance local exploitation and global jumps.</p>
</list-item>
<list-item>
<p>4. This study evaluates the enhanced algorithm on three categories of problems: twelve classical benchmark functions, the engineering spring function, and a bogie-specific engineering function, and compares its performance against several highly cited classical algorithms to verify the superiority of the proposed enhancements, followed by ablation studies to demonstrate the independent contributions of each enhancement.</p>
</list-item>
<list-item>
<p>5. We integrate the CRH2 bogie parameters into the two-axle railway vehicle&#x2019;s static spring-load adjustment model. Experimental results demonstrate that the S-GWO offers marked advantages in convergence speed, optimal solution accuracy, and robustness, produces the most rational minimal-shim filling scheme, and can rapidly and precisely resolve bogie spring-load adjustment challenges, thereby underscoring the algorithm&#x2019;s theoretical significance and engineering value in real-world applications.</p>
</list-item>
</list>
</p>
</sec>
<sec id="s9">
<title>9 Limitations and future directions</title>
<p>Although the proposed enhanced Grey Wolf Optimizer (S-GWO) demonstrates strong performance in static spring-load adjustment, several limitations remain. First, the current model is grounded in a simplified two-dimensional rigid-body theory; its modeling fidelity must be extended to accommodate more complex bogie geometries and scenarios involving nonlinear deformations. Second, the present formulation does not account for dynamic loading effects encountered during operation, such as lateral forces, torsional stiffness, and the nonlinear characteristics of the suspension system, focusing solely on the static equilibrium of body-weight-induced loads.</p>
<p>Future work will seek to integrate multi-source sensor data fusion and leverage real-world operating data to calibrate model parameters and will explore novel hybrid schemes that couple deep-learning-based predictive modules with heuristic optimization algorithms, thereby advancing the model&#x2019;s intelligence and enhancing its suitability for practical, deployable engineering applications.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s10">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material; further inquiries can be directed to the corresponding author.</p>
</sec>
<sec sec-type="author-contributions" id="s11">
<title>Author contributions</title>
<p>RZ: Methodology, Data curation, Investigation, Writing &#x2013; review and editing, Conceptualization, Formal Analysis. JC: Writing &#x2013; original draft. SL: Writing &#x2013; original draft.</p>
</sec>
<sec sec-type="funding-information" id="s12">
<title>Funding</title>
<p>The author(s) declare that no financial support was received for the research and/or publication of this article.</p>
</sec>
<sec sec-type="COI-statement" id="s13">
<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="s14">
<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="s15">
<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>
<ref-list>
<title>References</title>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Adegboye</surname>
<given-names>O. R.</given-names>
</name>
<name>
<surname>Feda</surname>
<given-names>A. K.</given-names>
</name>
<name>
<surname>Ojekemi</surname>
<given-names>O. S.</given-names>
</name>
<name>
<surname>Agyekum</surname>
<given-names>E. B.</given-names>
</name>
<name>
<surname>Hussien</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Kamel</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Chaotic opposition learning with mirror reflection and worst individual disturbance grey wolf optimizer for continuous global numerical optimization</article-title>. <source>Sci. Rep.</source> <volume>14</volume> (<issue>1</issue>), <fpage>4660</fpage>. <pub-id pub-id-type="doi">10.1038/s41598-024-55040-6</pub-id>
<pub-id pub-id-type="pmid">38409189</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>The static adjustment method of secondary suspension load for six-axle locomotives <italic>via</italic> modified mayfly optimization algorithm</article-title>. <source>IEEE Trans. Intelligent Transp. Syst.</source> <volume>24</volume> (<issue>9</issue>), <fpage>9165</fpage>&#x2013;<lpage>9174</lpage>. <pub-id pub-id-type="doi">10.1109/tits.2023.3270906</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Bajpai</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Suspension spring parameter&#x27;s optimization of an Indian railway freight vehicle for better ride quality[C]</article-title>,&#x201d; in <source>2014 international conference on advances in engineering and technology research (ICAETR-2014)</source>. <publisher-loc>IEEE</publisher-loc>, <fpage>1</fpage>&#x2013;<lpage>6</lpage>.</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hong</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Su</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Cheng</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>
<italic>In situ</italic> health monitoring for bogie systems of CRH380 train on beijing&#x2013;Shanghai high-speed railway</article-title>. <source>Mech. Syst. Signal Process.</source> <volume>45</volume> (<issue>2</issue>), <fpage>378</fpage>&#x2013;<lpage>395</lpage>. <pub-id pub-id-type="doi">10.1016/j.ymssp.2013.11.017</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hou</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Du</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Improved grey wolf optimization algorithm and application</article-title>. <source>Sensors</source> <volume>22</volume> (<issue>10</issue>), <fpage>3810</fpage>. <pub-id pub-id-type="doi">10.3390/s22103810</pub-id>
<pub-id pub-id-type="pmid">35632219</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jia</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Jin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Effect of inter-vehicle suspension on variable speed curve running of train under crosswinds</article-title>. <source>Appl. Sci.</source> <volume>13</volume>, <fpage>12278</fpage>. <pub-id pub-id-type="doi">10.3390/app132212278</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Fu</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>Y.</given-names>
</name>
<etal/>
</person-group> (<year>2023</year>). <article-title>Improved GWO and its application in parameter optimization of elman neural network</article-title>. <source>Plos one</source> <volume>18</volume> (<issue>7</issue>), <fpage>e0288071</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pone.0288071</pub-id>
<pub-id pub-id-type="pmid">37418374</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="other">
<collab>Maintenance regulations for Harmony 2C/CRH380A EMUs (Level-4 overhaul), excerpted from a document issued by the National Railway Administration</collab> (<year>2025</year>).</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Malott</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>High-Speed Rail vs. High-Frequency Rail[C]//International Workshop on HSR Socioeconomic Impacts</article-title>. <publisher-name>Cham, Switzerland: Springer Nature</publisher-name>, <fpage>111</fpage>&#x2013;<lpage>121</lpage>.</citation>
</ref>
<ref id="B10">
<citation citation-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>
</citation>
</ref>
<ref id="B12">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Neve</surname>
<given-names>A. G.</given-names>
</name>
<name>
<surname>Kakandikar</surname>
<given-names>G. M.</given-names>
</name>
<name>
<surname>Kulkarni</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Nandedkar</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Optimization of railway bogie snubber spring with grasshopper algorithm[C]//Data Engineering and Communication Technology</article-title>,&#x201d; in <source>Proceedings of 3rd ICDECT-2K19</source>. <publisher-loc>Singapore</publisher-loc>: <publisher-name>Springer</publisher-name>, <fpage>941</fpage>&#x2013;<lpage>952</lpage>.</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Paredes</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Sartor</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Masclet</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Obtaining an optimal compression spring design directly from a user specification</article-title>. <source>Proc. Institution Mech. Eng. Part B J. Eng. Manuf.</source> <volume>216</volume> (<issue>3</issue>), <fpage>419</fpage>&#x2013;<lpage>428</lpage>. <pub-id pub-id-type="doi">10.1243/0954405021519906</pub-id>
</citation>
</ref>
<ref id="B1">
<citation citation-type="web">
<collab>TB/T 1490&#x2013;2004</collab> (<year>2025</year>). <article-title>General technical conditions for railway passenger car bogies</article-title>.</citation>
</ref>
<ref id="B14">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Tong</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Nie</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Calculation of first-level maintenance capacity in EMU depot based on the EMU circulation plan</article-title>,&#x201d; in <source>2016 3rd international conference on materials engineering, manufacturing technology and control</source>. <publisher-name>Paris, France: Atlantis Press</publisher-name>, <fpage>653</fpage>&#x2013;<lpage>657</lpage>.</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Lei</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Analysis and recommendations for cases where the number of shims used in axle Spring adjustment exceeds the specified value during Level-3 overhaul of CRH2 EMUs</article-title>. <source>Enterp. Technol. Dev.</source> <volume>10</volume>, <fpage>73</fpage>&#x2013;<lpage>74</lpage>. <pub-id pub-id-type="doi">10.1016/j.ymssp.2014.02.008</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wickens</surname>
<given-names>A. H.</given-names>
</name>
</person-group> (<year>1991</year>). <article-title>Steering and stability of the bogie: vehicle dynamics and suspension design</article-title>. <source>Proc. Institution Mech. Eng. Part F J. Rail Rapid Transit</source> <volume>205</volume> (<issue>2</issue>), <fpage>109</fpage>&#x2013;<lpage>122</lpage>. <pub-id pub-id-type="doi">10.1243/pime_proc_1991_205_224_02</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>The suspension load deviation control method for high-power locomotives <italic>via</italic> harris Hawk optimization</article-title>. <source>ISA Trans.</source> <volume>161</volume>, <fpage>289</fpage>&#x2013;<lpage>301</lpage>. <pub-id pub-id-type="doi">10.1016/j.isatra.2025.03.023</pub-id>
<pub-id pub-id-type="pmid">40175167</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xu</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Crashworthiness analysis and multi-objective optimization of a novel metal/CFRP hybrid friction structures</article-title>. <source>Struct. Multidiscip. Optim.</source> <volume>67</volume> (<issue>6</issue>), <fpage>97</fpage>. <pub-id pub-id-type="doi">10.1007/s00158-024-03795-x</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Numerical study on the aerodynamic noise characteristics of CRH2 high-speed trains</article-title>. <source>J. Vibroengineering</source> <volume>19</volume> (<issue>5</issue>), <fpage>3953</fpage>&#x2013;<lpage>3967</lpage>. <pub-id pub-id-type="doi">10.21595/jve.2017.18427</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Huo</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Meng</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Nan</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2025a</year>). <article-title>Fatigue failure analysis of platform screen doors under subway aerodynamic loads using finite element modeling</article-title>. <source>Eng. Fail. Anal.</source> <volume>174</volume>, <fpage>109502</fpage>. <pub-id pub-id-type="doi">10.1016/j.engfailanal.2025.109502</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Nan</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Huo</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Xiao</surname>
<given-names>Y.</given-names>
</name>
<etal/>
</person-group> (<year>2025b</year>). <article-title>Design, characterisation, and crushing performance of hexagonal-quadrilateral lattice&#x2212;filled steel/CFRP hybrid structures</article-title>. <source>Compos. Part B Eng.</source> <volume>304</volume>, <fpage>112631</fpage>. <pub-id pub-id-type="doi">10.1016/j.compositesb.2025.112631</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>