<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Using the Gradient Projection Method in an Intelligent Cutting and Packing System</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mykola Popov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oleksii Kartashov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>National Aerospace University "Kharkiv Aviation Institute"</institution>
          ,
          <addr-line>17 Vadym Manko St, Kharkiv, 61070</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2026</year>
      </pub-date>
      <abstract>
        <p>This paper considers the problem of optimally placing circles in a rectangular region within an intelligent cutting and packaging system. A mathematical model and analysis of this problem are presented. A Python implementation of the gradient projection method for finding a local minimum in this problem is proposed, taking into account the specific features of the problem. The proposed implementation is compared with methods from the scipy.optimize Python library for constrained nonlinear optimization. It is shown that the authors' proposed implementation is faster.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Local minimum</kwd>
        <kwd>gradient projection method</kwd>
        <kwd>packing</kwd>
        <kwd>cutting</kwd>
        <kwd>circle</kwd>
        <kwd>optimization</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <sec id="sec-1-1">
        <title>1.1. Motivation</title>
      </sec>
      <sec id="sec-1-2">
        <title>1.2. State of the art</title>
        <p>
          Like many other spatial optimization problems, circle packing problem is available on the packomania
website[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Here it is referred to as the Circle Open Dimension Problem (CODP). The website updates
information and provides current data on which algorithms are best in this field. At present, several of
them can be highlighted.
        </p>
        <p>
          The article [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] proposes a heuristic algorithm based on a combination of beam search, binary search,
and a multi-start strategy. The method is not purely stochastic, although the multi-start strategy
introduces an element of diversification to avoid local optima.
        </p>
        <p>Beam search is the main part of the algorithm that implements local search. It is a shortened version
of decision tree search. At each level of the tree, only a limited number of the best nodes (beam width)
are selected for further branching, and the rest are discarded. The potential of each node is evaluated
using a greedy strategy called Minimum Local-Distance Position (MLDP). This strategy consists of
sequentially placing each subsequent circle in a position where the distance to already placed circles or
to the edges of the strip is minimal. This ensures dense packing at the local level.</p>
        <p>
          The article [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] proposes Iterated Tabu Search, a metaheuristic method that optimizes the objective
function in a limited area. However, it can fall into local optimum traps, so the method is combined
with a perturbation operator to search for the global optimum.
        </p>
        <p>The Tabu Search (TS) procedure is a local search that uses prohibition rules and convergence criteria
to prevent search loops. After finding a local optimum, a perturbation operator is used to obtain a new
solution, which in turn is optimized again using TS and accepted if it is better than the previous one.</p>
        <p>
          Research in this area continues. For example, the DCPACK (Discretized-Space Circle Packer
Algorithm) algorithm was proposed [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], which was used for both tape packing and circle packing problems.
The main idea of the method is to discretize the continuous space of the container into small cells and
sequentially solve two diferent formulations of the integer linear programming (ILP) problem—for the
restricted and relaxed versions of the original problem.
        </p>
        <p>Although the circle packing problem is a nonlinear programming problem with quadratic constraints,
the proposed approach transforms it into a sequence of integer linear programming problems, which
allows the use of eficient ILP methods to obtain guaranteed lower and upper bounds on the optimal
value.</p>
        <p>
          Article [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] proposes the jupm algorithm, the main idea of which is to temporarily consider the
radii of circles as variables, which allows finding the best configurations. The method begins with the
generation of the initial location of the circles, then uses a local optimization method with the help of
the IPOPT (Interior Point OPTimizer) software package. After that, a “jump” is used, in which a pair
of circles switch places, it allows the algorithm to break out of this local optimum and transition to
another, potentially better configuration.
        </p>
        <p>Since this algorithm is based on a mathematical model with complex nonlinear dependencies, it can
be classified as a nonlinear programming method. However, due to the use of “jumps” to find better
solutions, bypassing exhaustive search, it can also be classified as a heuristic method.</p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], a certain generalization of the jupm algorithm is applied. In this approach, after each cycle
of local optimization, which is also done using the IPOPT package, not two, but several circles are
permuted. To do this, a problem is considered where the radii of the selected circles are variable and
additional special constraints are introduced to ensure that during the optimization process, the circles
from the selected set “swap places,” while the set of radii remains the same. The resulting new local
optimum will potentially be better.
        </p>
        <p>
          Another approach is used in [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. This work uses a combination of a genetic algorithm and a local
minimum search algorithm. The vector of circle coordinates acts as a chromosome. After crossing, the
circles exchange the coordinates of their centers, and we obtain a new arrangement of circles, which
may be unacceptable, and from this new point, the local minimum search method starts.
        </p>
        <p>The last three works use the local optimization algorithm as a sub-task many times in global search.
Thus, the search for an efective algorithm for local optimization is relevant.</p>
      </sec>
      <sec id="sec-1-3">
        <title>1.3. Objective and tasks</title>
        <p>The goal of this study is to implement a local optimization algorithm in Python based on the gradient
projection method and taking into account the specifics of the task at hand. After that, compare the
resulting implementation with the built-in optimization algorithms of the scipy.optimize library.</p>
        <p>This article is structured as follows: Section 2 contains the problem statement, mathematical model,
and its properties. Section 3 presents the algorithmic features of the implemented method. Section
4 provides the results of numerical experiments and their comparison with built-in Python local
optimization methods. Section 5 contains conclusions.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. Mathematical model of the problem and its properties</title>
      <p>The circle packing problem considers an index set of  circles  with known radii ,  ∈  =
{1, . . . , } and a strip  of fixed width  and (a priori) unbounded length . The goal is to place the 
circles inside the smallest rectangle of size  ×  so that no two circles overlap and no circle extends
beyond the rectangle’s boundary.</p>
      <p>
        The mathematical model of the problem of packing circles into a strip as a mathematical programming
problem looks like this [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]:
min 
,,
with restrictions
(3)
(4)
(1)
 () = ( +  )2 − (  −   )2 − (  −   )2 ≤ 0,
∀,  : 1 ≤  ≤  ≤ ,
(2)
bot() =  −   ≤ 0,  top() =  +  −  ≤ 0,
left() =  −   ≤ 0,  right() =  +  −  ≤ 0,
∀ ∈ ,
∀ ∈ ,
where (, ) are the centers of circle , (2) is the constraint for non-intersection of circles, (3) and
(4) are the limits along the Y and X axes, respectively.
      </p>
      <p>Properties of the mathematical model.
1. The number of variables in the problem is 2 + 1, that is, we have an optimization problem in
the space R2+1.
2. The objective function is linear.
3. The number of constraints is  = 4 + ( − 1) .</p>
      <p>2
4. 4 constraints are linear, and the rest are inversely convex.
5. The optimal solution is located at an extreme point of the feasible region.
6. At the extreme point of the feasible region, 2 + 1 inequalities are active.
7. The upper estimate of the number of local minima is 2+1.</p>
      <p>Thus, we have a nonlinear nonconvex conditional optimization problem.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Features of implementing the gradient projection method for the circle placement problem</title>
      <p>
        To solve the problem, the gradient projection method (Rosen’s method) is used[
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The pseudocode of
the algorithm is given in Algorithm 1. It starts working from any acceptable point. At each step, the
direction of movement is constructed as a projection of the gradient onto a hyperplane formed on the
basis of the gradients of the constraints active at the current point. These gradients form matrix A,
and the constraint numbers form working list L[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. If the direction constructed in this way is zero,
the constraints included in the working list and forming matrix A are checked. If some of them are
no longer active, they are excluded from the working list and matrix A, and the process continues.
If all constraints in the working list are active, then the Kuhn-Tucker conditions are checked at the
current point. If there are constraints that correspond to negative Kuhn-Tucker multipliers, then all of
them or the constraint with the smallest multiplier are excluded from the working list, and the process
continues. If there are no such constraints, then we have found a local optimum.
      </p>
      <p>The problem under consideration has two important features. First, all constraints of the problem at
any point are concave. This means that despite the nonlinearity of some of the constraints, the specified
method of constructing the direction of movement will not immediately take us out of the feasible
region. And some constraints will cease to be active during movement. That is why such constraints
must be periodically removed from the working list. Second, since the objective function is linear, any
step in the direction of descent will decrease the objective function. This means that at each step we
will stop only when we “hit” some constraint, which means that at each step a new constraint will
become active and be added to the working list.</p>
      <p>The pseudocode for the maximum step that does not violate linear constraints is given in Algorithm
2, and the pseudocode for the maximum step that does not violate nonlinear constraints is given in
Algorithm 3.</p>
      <p>Algorithm 1 Gradient projection method for strip packing</p>
    </sec>
    <sec id="sec-4">
      <title>4. Results of numerical experiments</title>
      <p>
        The proposed algorithm was implemented in Python using matrix operations from the NumPy
library[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. This implementation was compared with local optimization methods from the Optimize
section of the SciPy package[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. This package has several algorithms for finding the local minimum of
Algorithm 2 Computation of  lin
Require: , _, 
Ensure:  lin
1: for linear  ∈ _ do
 ← _ · 
if  &gt;  then
 ← −
end if
 lin ←
      </p>
      <p>/
if 0 &lt;  &lt;  lin then
end if
9: end for
10: return  lin
Algorithm 3 Computation of  nl
Require: , , , _, 
Ensure:  nl
1: for nonlinear  ∈ _ do
 ← (  −   )2 + ( −   )2
if  &lt;  then</p>
      <p>continue
end if
 ← 2
 ←</p>
      <p>2 − 4
if  &lt;  then</p>
      <p>
        continue
end if
 nl ← min{  |  ∈ {
13: end for
14: return  nl
 ← (  −   )2 + ( −   )2 − ([] + [])
5:
6:
7:
and are widely used in publications to compare optimization results[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>It was discovered that when the number of circles grows large, the SLSQP method often produces
unstable or unrealistic results because it is a local solver that becomes highly sensitive to initialization,
scaling, and constraint handling. For small problems it behaves reasonably, but at larger scales the
numerical gradients and quadratic models degrade. The solver may converge to infeasible or extreme
points unless carefully bounded and restarted from multiple initial positions.</p>
      <p>Trust-constr and COBYLA runs slower than SLSQP but sometimes has better resul. However, for 100
circles the run exceeded the 15-minute time limit.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <sec id="sec-5-1">
        <title>SLSQP</title>
        <p>trust-constr</p>
      </sec>
      <sec id="sec-5-2">
        <title>COBYLA</title>
        <p>Value</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Declaration on Generative AI</title>
      <p>During the preparation of this work, the author(s) used GPT-5 in order to: Grammar and spelling check.
After using these tool(s)/service(s), the author(s) reviewed and edited the content as needed and take(s)
full responsibility for the publication’s content.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Yakovlev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Kartashov</surname>
          </string-name>
          ,
          <article-title>System Analysis and Classification of Spatial Configurations</article-title>
          , in: 2018
          <source>IEEE First International Conference on System Analysis &amp; Intelligent Computing (SAIC)</source>
          , IEEE,
          <year>2018</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          . URL: https://ieeexplore.ieee.org/document/8516760/. doi:
          <volume>10</volume>
          .1109/SAIC.
          <year>2018</year>
          .
          <volume>8516760</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>G.</given-names>
            <surname>Wäscher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Haußner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Schumann</surname>
          </string-name>
          ,
          <article-title>An improved typology of cutting and packing problems</article-title>
          ,
          <source>European Journal of Operational Research</source>
          <volume>183</volume>
          (
          <year>2007</year>
          )
          <fpage>1109</fpage>
          -
          <lpage>1130</lpage>
          . URL: https://linkinghub.elsevier. com/retrieve/pii/S037722170600292X. doi:
          <volume>10</volume>
          .1016/j.ejor.
          <year>2005</year>
          .
          <volume>12</volume>
          .047.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>H.</given-names>
            <surname>Akeb</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hifi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Negre</surname>
          </string-name>
          ,
          <article-title>An augmented beam search-based algorithm for the circular open dimension problem</article-title>
          ,
          <source>Computers &amp; Industrial Engineering</source>
          <volume>61</volume>
          (
          <year>2011</year>
          )
          <fpage>373</fpage>
          -
          <lpage>381</lpage>
          . URL: https: //linkinghub.elsevier.com/retrieve/pii/S0360835211000647. doi:
          <volume>10</volume>
          .1016/j.cie.
          <year>2011</year>
          .
          <volume>02</volume>
          .009.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Fu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Lü</surname>
          </string-name>
          ,
          <article-title>Iterated tabu search for the circular open dimension problem</article-title>
          ,
          <source>European Journal of Operational Research</source>
          <volume>225</volume>
          (
          <year>2013</year>
          )
          <fpage>236</fpage>
          -
          <lpage>243</lpage>
          . URL: https://linkinghub.elsevier.com/retrieve/ pii/S0377221712007680. doi:
          <volume>10</volume>
          .1016/j.ejor.
          <year>2012</year>
          .
          <volume>10</volume>
          .022.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R.</given-names>
            <surname>Taşpınar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Kocuk</surname>
          </string-name>
          ,
          <article-title>Discretization-Based Solution Approaches for the Circle Packing Problem</article-title>
          ,
          <year>2023</year>
          . URL: http://arxiv.org/abs/2401.00217. doi:
          <volume>10</volume>
          .48550/arXiv.2401.00217, arXiv:
          <fpage>2401</fpage>
          .00217 [math].
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Stoyan</surname>
          </string-name>
          , G. Yaskov,
          <article-title>Packing unequal circles into a strip of minimal length with a jump algorithm</article-title>
          ,
          <source>Optimization Letters</source>
          <volume>8</volume>
          (
          <year>2014</year>
          )
          <fpage>949</fpage>
          -
          <lpage>970</lpage>
          . URL: http://link.springer.
          <source>com/10.1007/s11590-013-0646-1</source>
          . doi:
          <volume>10</volume>
          .1007/s11590-013-0646-1.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Yakovlev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Kartashov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Korobchynskyi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Skripka</surname>
          </string-name>
          ,
          <article-title>Numerical Results of Variable Radii Method in the Unequal Circles Packing Problem</article-title>
          ,
          <source>in: 2019 IEEE 15th International Conference on the Experience of Designing and Application of CAD Systems (CADSM)</source>
          , IEEE,
          <year>2019</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>4</lpage>
          . URL: https://ieeexplore.ieee.org/document/8779288/. doi:
          <volume>10</volume>
          .1109/CADSM.
          <year>2019</year>
          .
          <volume>8779288</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Yakovlev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Kartashov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Yarovaya</surname>
          </string-name>
          ,
          <article-title>On Class of Genetic Algorithms in Optimization Problems on Combinatorial Configurations</article-title>
          ,
          <source>in: 2018 IEEE 13th International Scientific and Technical Conference on Computer Sciences and Information Technologies (CSIT)</source>
          , IEEE, Lviv,
          <year>2018</year>
          , pp.
          <fpage>374</fpage>
          -
          <lpage>377</lpage>
          . URL: https://ieeexplore.ieee.org/document/8526746/. doi:
          <volume>10</volume>
          .1109/STC-CSIT.
          <year>2018</year>
          .
          <volume>8526746</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Sharma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. K.</given-names>
            <surname>Rai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Khanna</surname>
          </string-name>
          ,
          <article-title>Structure optimization: Configuring optimum performance of randomly distributed mixed carbon nanotube bundle interconnects</article-title>
          ,
          <source>International Journal of Circuit Theory and Applications</source>
          <volume>51</volume>
          (
          <year>2023</year>
          )
          <fpage>3949</fpage>
          -
          <lpage>3967</lpage>
          . URL: https://onlinelibrary.wiley.com/doi/10. 1002/cta.3605. doi:
          <volume>10</volume>
          .1002/cta.3605.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>R.</given-names>
            <surname>Sharma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. K.</given-names>
            <surname>Rai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Khanna</surname>
          </string-name>
          ,
          <article-title>Pragmatic structure optimization: Achieving optimal crosstalk delay and gate oxide reliability of randomly mixed CNT bundle interconnects</article-title>
          ,
          <source>Micro and Nanostructures</source>
          <volume>195</volume>
          (
          <year>2024</year>
          )
          <article-title>207983</article-title>
          . URL: https://linkinghub.elsevier.com/retrieve/pii/S2773012324002322. doi:
          <volume>10</volume>
          .1016/j.micrna.
          <year>2024</year>
          .
          <volume>207983</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Sharma</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. K.</given-names>
            <surname>Rai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Khanna</surname>
          </string-name>
          , Crosstalk Delay and
          <article-title>Reliability Analysis of Carbon Nanotube On-Chip Interconnects: Modelling and Optimization using Metaheuristic Algorithm</article-title>
          ,
          <source>IETE Journal of Research</source>
          <volume>71</volume>
          (
          <year>2025</year>
          )
          <fpage>603</fpage>
          -
          <lpage>615</lpage>
          . URL: https://www.tandfonline.com/doi/full/10.1080/03772063.
          <year>2024</year>
          .
          <volume>2423263</volume>
          . doi:
          <volume>10</volume>
          .1080/03772063.
          <year>2024</year>
          .
          <volume>2423263</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12] packomania.com,
          <year>2025</year>
          . URL: https://www.pacomania.com,
          <source>accessed on October 10</source>
          ,
          <year>2025</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Minoux</surname>
          </string-name>
          ,
          <source>Mathematical Programming: Theory and Algorithms</source>
          , John Wiley &amp; Sons,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>P. E.</given-names>
            <surname>Gill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Murray</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. H.</given-names>
            <surname>Wright</surname>
          </string-name>
          , Practical Optimization,
          <string-name>
            <surname>SIAM</surname>
          </string-name>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Numpy</surname>
            <given-names>documentation</given-names>
          </string-name>
          ,
          <year>2025</year>
          . URL: https://numpy.org/doc/stable/,
          <source>accessed on October 10</source>
          ,
          <year>2025</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Scipy</surname>
          </string-name>
          .optimize documentation,
          <year>2025</year>
          . URL: https://docs.scipy.org/doc/scipy/tutorial/optimize.html,
          <source>accessed on October 10</source>
          ,
          <year>2025</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>