<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Comput. Neurosci.</journal-id>
<journal-title>Frontiers in Computational Neuroscience</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Comput. Neurosci.</abbrev-journal-title>
<issn pub-type="epub">1662-5188</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fncom.2024.1283974</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>An efficient swarm intelligence approach to the optimization on high-dimensional solutions with cross-dimensional constraints, with applications in supply chain management</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Liu</surname> <given-names>Hsin-Ping</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/2422091/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/visualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Phoa</surname> <given-names>Frederick Kin Hing</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/167456/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/data-curation/"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/visualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Chen-Burger</surname> <given-names>Yun-Heh</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/2624448/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<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/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Lin</surname> <given-names>Shau-Ping</given-names></name>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/586421/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Data Science Degree Program, National Taiwan University</institution>, <addr-line>Taipei</addr-line>, <country>Taiwan</country></aff>
<aff id="aff2"><sup>2</sup><institution>Institute of Statistical Science, Academia Sinica</institution>, <addr-line>Taipei</addr-line>, <country>Taiwan</country></aff>
<aff id="aff3"><sup>3</sup><institution>Department of Computer Sciences, Heriot-Watt University</institution>, <addr-line>Edinburgh</addr-line>, <country>United Kingdom</country></aff>
<aff id="aff4"><sup>4</sup><institution>Institute of Biotechnology, National Taiwan University</institution>, <addr-line>Taipei</addr-line>, <country>Taiwan</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Yuhui Shi, Southern University of Science and Technology, China</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Aiwen Meng, Yanshan University, China</p>
<p>Giovana Yuko Nakashima, Federal Institute of S&#x000E3;o Paulo, Brazil</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Frederick Kin Hing Phoa <email>fredphoa&#x00040;stat.sinica.edu.tw</email></corresp>
</author-notes>
<pub-date pub-type="epub">
<day>18</day>
<month>01</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="collection">
<year>2024</year>
</pub-date>
<volume>18</volume>
<elocation-id>1283974</elocation-id>
<history>
<date date-type="received">
<day>27</day>
<month>08</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>02</day>
<month>01</month>
<year>2024</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2024 Liu, Phoa, Chen-Burger and Lin.</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Liu, Phoa, Chen-Burger and Lin</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>
<sec>
<title>Introduction</title>
<p>The Swarm Intelligence Based (SIB) method has widely been applied to efficient optimization in many fields with discrete solution domains. E-commerce raises the importance of designing suitable selling strategies, including channel- and direct sales, and the mix of them, but researchers in this field seldom employ advanced metaheuristic techniques in their optimization problem due to the complexities caused by the high-dimensional problems and cross-dimensional constraints.</p>
</sec>
<sec>
<title>Method</title>
<p>In this work, we introduce an extension of the SIB method that can simultaneously tackle these two challenges. To pursue faster computing, CPU parallelization techniques are employed for algorithm acceleration.</p>
</sec>
<sec>
<title>Results</title>
<p>The performance of the SIB method is examined on the problems of designing selling schemes in different scales. It outperforms the Genetic Algorithm (GA) in terms of both the speed of convergence and the optimized capacity as measured using improvement multipliers.</p>
</sec></abstract>
<kwd-group>
<kwd>supply chain management</kwd>
<kwd>swarm intelligence</kwd>
<kwd>tensor-type particle</kwd>
<kwd>CPU parallelization</kwd>
<kwd>selling scheme</kwd>
</kwd-group>
<contract-num rid="cn001">AS-IA-112-M03</contract-num>
<contract-num rid="cn002">111-2118-M-001-007-MY2</contract-num>
<contract-sponsor id="cn001">Academia Sinica<named-content content-type="fundref-id">10.13039/501100001869</named-content></contract-sponsor>
<contract-sponsor id="cn002">National Science and Technology Council<named-content content-type="fundref-id">10.13039/501100020950</named-content></contract-sponsor>
<counts>
<fig-count count="2"/>
<table-count count="4"/>
<equation-count count="3"/>
<ref-count count="21"/>
<page-count count="8"/>
<word-count count="5457"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1 Introduction</title>
<p>As technology and human knowledge have advanced, industrial and scientific investigators attempt to solve large-scale complex optimization problems that mostly fall in the category of NP-hard. The complexity comes not only from the high-dimensional solution domain that tests the computational capacity of hardware and software but also from cross-dimensional constraints. Since most traditional optimization methods are inefficient, if not infeasible, for these large-scale problems in today&#x00027;s real world, researchers search for new algorithms that can balance efficiency and accuracy. Metaheuristic algorithms sacrifice a part of accuracy to pursue extra efficiency and provide reasonable solutions to optimization problems using adequate resources. These algorithms typically sample a subset of the solution space that is too large to be completely enumerated. Metaheuristic algorithms can also handle multi-dimensional real-values problems without relying on the gradient of the objective functions, which enables them to search over solution spaces that are non-continuous, noisy, or changing over time.</p>
<p>As its primary class, nature-inspired metaheuristics can be further categorized into two main categories. Evolutionary algorithms, such as Genetic Algorithm (GA) (Goldberg, <xref ref-type="bibr" rid="B6">2003</xref>), Genetic Programming (GP) (Cramer, <xref ref-type="bibr" rid="B1">1985</xref>), Differential Evolution (DE) (Storn and Price, <xref ref-type="bibr" rid="B20">1997</xref>), and many others, are inspired by Darwin&#x00027;s evolutional theory that allows only those with the fittest characteristics to survive in a competition among species members when individual variations randomly occur and are hereditary. On the other hand, swarm algorithms, such as Ant Colony Optimization (ACO) (Dorigo and Gambardella, <xref ref-type="bibr" rid="B4">1997</xref>), Artificial Bee Colony (Dervis and Basturk, <xref ref-type="bibr" rid="B3">2007</xref>), Particle Swarm Optimization (PSO) (Kennedy and Eberhart, <xref ref-type="bibr" rid="B11">1995</xref>; Kennedy, <xref ref-type="bibr" rid="B10">2010</xref>), Swarm Intelligence Based (SIB) method (Phoa et al., <xref ref-type="bibr" rid="B17">2016</xref>; Phoa, <xref ref-type="bibr" rid="B15">2017</xref>), and many others, mimic the collective behavior of self-organized and decentralized systems for characteristics improvements. Among all, PSO is one of the most representative swarm intelligence algorithms in engineering problems and some scientific research in the past decades. With well-defined physical meanings, it efficiently tackles high-dimensional optimization problems in continuous solution spaces, but it may not be the first choice for non-continuous solution spaces that commonly appear in mathematics, statistics, and many other fields, even via the remedy of a simple round-off (Kim et al., <xref ref-type="bibr" rid="B12">2010</xref>). As a result, the SIB method (Phoa, <xref ref-type="bibr" rid="B15">2017</xref>) was proposed for this manner with a wide range of applications, including the constructions of optimal experimental designs (Phoa et al., <xref ref-type="bibr" rid="B17">2016</xref>), the uniform distribution of testing points (Phoa and Chang, <xref ref-type="bibr" rid="B16">2016</xref>; Huang and Phoa, <xref ref-type="bibr" rid="B9">2023</xref>), supercomputing scheduling (Lin and Phoa, <xref ref-type="bibr" rid="B13">2019</xref>), hot spot determination (Hsu and Phoa, <xref ref-type="bibr" rid="B8">2018</xref>), traveling salesman problem (Yen and Phoa, <xref ref-type="bibr" rid="B21">2021</xref>), and many others.</p>
<p>First introduced in 1982, the concept of supply chain management (SCM) is to organize the flow of goods and services, including all processes from obtaining raw materials to delivering final products to customers. As the connection between suppliers and customers, SCM aims to minimize total costs within a supply chain and maximize a company&#x00027;s net profits. It increases a company&#x00027;s profit and gains its competitive advantage over the market. More about the basics of SCM are referred to Fredendall and Hill (<xref ref-type="bibr" rid="B5">2001</xref>) and Mentzer et al. (<xref ref-type="bibr" rid="B14">2001</xref>). Nonetheless, there is a growing gap between advanced optimization techniques and real applications in SCM. Even though advanced methods have been available in computer science and engineering for decades, many applications still use traditional optimization methods such as linear programming (Delloite, <xref ref-type="bibr" rid="B2">2022</xref>). Without advanced techniques that can significantly reduce the computational cost, researchers in SCM confront difficulty in developing large-scale data analysis systems for optimizing multi-supplier selling schemes, a many-to-many network where products are delivered directly from multiple suppliers to multiple customers. Moreover, optimization in the SCM usually suffers from both the high-dimensional solution domain and cross-dimensional constraints. Without the latter constraint, the former complexity may simply be solved by decomposing the high-dimensional solution space into multiple low-dimensional ones and then optimizing each low-dimensional space once at a time. The existence of cross-dimensional constraints breaks the independency assumption among the decomposed low-dimensional domains; thus, the simple divide-and-conquer approach is no longer applicable for simplifying the problem.</p>
<p>This work introduces a metaheuristic optimization method via swarm intelligence that can solve high-dimensional problems and deal with cross-dimensional constraints simultaneously. Section 2 briefly reviews three nature-inspired metaheuristic optimization techniques related to our work. Section 3 introduces the implementation details of the SIB method for the optimization problem of multi-supplier selling schemes. Then, the proposed method is evaluated with several simulated supply chains on different scales and compared with the Genetic Algorithm (GA) in Section 4. Finally, some conclusions are in the last section.</p>
</sec>
<sec id="s2">
<title>2 Nature-inspired metaheuristics optimization methods</title>
<sec>
<title>2.1 Genetic algorithm</title>
<p>The Genetic Algorithm (GA), proposed in Holland (<xref ref-type="bibr" rid="B7">1975</xref>), is one of the oldest and the most popular nature-inspired metaheuristic algorithms. Based on the mechanics of the natural selection procedure, it follows the concept of &#x0201C;the survival of the fittest,&#x0201D; where the stronger individuals tend to survive while the weak ones approach extinction. Like many other metaheuristics, GA starts with a population consisting of a group of particles. A particle, called a &#x0201C;chromosome&#x0201D; or a &#x0201C;genotype,&#x0201D; represents a possible solution to the target problem, and its parameters are called &#x0201C;genes.&#x0201D; Each iteration, known as a generation, comprises crossover, mutation, and survivor selection to simulate the hereditary phenomenon. Moreover, to implement the survival of the fittest concept, there is a parent selection at the beginning of each iteration.</p>
<p>After randomly selecting an initial population from the solution space, the objective function evaluates the particles and ranks them by their performances. The particles with higher ranks are considered in the candidate pool for parent selection. With two or more particles selected from the pool, a crossover randomly exchanges their genes, which results in one or two children particles. In addition, a mutation occurs randomly on the particles in each iteration to mimic random genetic perturbations. At the end of an iteration, some lower-rank particles are eliminated to maintain the size of the population (survivor selection). This iterative process continues until the fulfillment of the pre-defined stopping criterion, and the particle with the top rank is the optimized output of GA.</p>
</sec>
<sec>
<title>2.2 Particle swarm optimization algorithm</title>
<p>PSO (Kennedy and Eberhart, <xref ref-type="bibr" rid="B11">1995</xref>; Kennedy, <xref ref-type="bibr" rid="B10">2010</xref>) is prevalent in many industrial and scientific optimization fields due to its easy implementation and efficiency in terms of memory and speed. It is designed to mimic the social behavior of a flock of birds, which contains a leader and several members. While the leader&#x00027;s movement affects all the members (group effect), each member has their individual thoughts about their own movement (personal effect). In a PSO algorithm, an initial swarm, consisting of several particles, corresponds to the initial state of a flock, and the position of a particle represents a possible solution to the target optimization problem. In addition, Local Best (LB) particles and the Global Best (GB) particle are determined based on a pre-defined objective function. Each particle has its own LB, which is the best position it has encountered so far, while the GB is the best solution the whole swarm has encountered.</p>
<p>A velocity is assigned to a particle for implementing the group and personal effects. The position of a particle is influenced by its LB and the GB through its velocity in each iteration. The updating formula of a velocity and a position can be expressed as the following equations:</p>
<disp-formula id="E1"><mml:math id="M1"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x02190;</mml:mo><mml:mi>a</mml:mi><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mi>b</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>c</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>t</italic> denotes the number of iterations, <italic>i</italic> indicates the number of dimensions, <italic>v</italic> is the velocity of the particle, <italic>x</italic> is the particle&#x00027;s position, <italic>x</italic><sup><italic>lb</italic></sup> is the LB position of the particle, <italic>x</italic><sup><italic>gb</italic></sup> is the GB position of the swarm, and <italic>a, b, c</italic> are scalars. A velocity consists of three parts corresponding to the inertia, the personal effect, and the group effect. The three scalars indicate the weight given to each part. The update process continues until a user-defined termination criterion is fulfilled, and the final GB position is the optimized output.</p>
</sec>
<sec>
<title>2.3 Swarm intelligence based algorithm</title>
<p>The SIB method (Phoa et al., <xref ref-type="bibr" rid="B17">2016</xref>; Phoa, <xref ref-type="bibr" rid="B15">2017</xref>) can be considered a hybrid algorithm that takes advantage of both the GA and the PSO. Specifically, it preserves the general framework of the PSO that includes the initial group of particles, the local best and group best, and the communication among particles after the updates (called MOVE operation in SIB). In order to adapt to the discrete nature of the solution domain, SIB gives up the velocity and position updates in the PSO and embraces the update procedures like crossover (called MIX operation in SIB) and mutation (called random jump in SIB).</p>
<p>In specific, after initializing a swarm, SIB enters an iteration loop consisting of MIX, MOVE, and a stopping criterion. In the MIX operation, every particle is mixed with its own LB and the GB, which returns two new particles, called <italic>mixwLB</italic> and <italic>mixwGB</italic>, respectively. To &#x0201C;mix&#x0201D; a particle with the best particle, a given proportion of entries is modified according to the corresponding values in the best particle. The implementation of this operation is flexible and can be designed according to the target optimization problem. It is a rule-of-thumb to allow a smaller proportion of entries to be modified by the global best particle than by the local best particle to avoid premature convergence without sufficient domain explorations. Once the new particles are generated, the MOVE operation decides which one of the three particles, the original particle, <italic>mixwLB</italic>, and <italic>mixwGB</italic>, is selected as the update. It is straightforward to update the particle if either of the mixed particles has the best objective function value. If the MIX operation fails to improve the original particle, a random jump, in which a given proportion of entries are altered randomly to create a new particle, is operated to avoid trapping in the local optimum.</p>
<p>Some stopping criteria for the algorithm should be defined beforehand. Most of the time, the target problem comes with adequate stopping criteria. If there is no specific one, a maximum number of iterations and convergence toward a pre-defined threshold range of GB are common choices of stopping criteria.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Method and implementation</title>
<p>As a popular selling strategy in E-commerce nowadays, multi-supplier selling is a process of selling products from many suppliers to many customers. This strategy is a kind of direct sales with no dealers or intermediaries in the selling scheme, and products are sold and delivered to the customers directly from the suppliers. A direct sale market structure not only increases suppliers&#x00027; profits and decreases the prices of products for customers but also simplifies the complexity of the target optimization problem. However, even with a direct sale, the optimization task on multi-supplier selling schemes is still complicated due to high-dimensional solution space and cross-dimensional constraints. Thus, the SIB method is chosen to solve this optimization problem.</p>
<p>Denote a selling scheme with <italic>N</italic> customers, <italic>K</italic> product types, and <italic>M</italic> suppliers, and a tensor <italic>X</italic> with dimensions <italic>N</italic>&#x000D7;<italic>K</italic>&#x000D7;<italic>M</italic> to represent this selling scheme. <xref ref-type="fig" rid="F1">Figure 1A</xref> illustrates the definition of a particle while the <italic>C</italic>-, <italic>S</italic>-, and <italic>P</italic>-axes correspond to customers, suppliers, and product types. Each entry <italic>x</italic><sub><italic>nkm</italic></sub> indicates the number of the <italic>k</italic>th product sold to the <italic>n</italic>th customer by the <italic>m</italic>th supplier, and each column (<xref ref-type="fig" rid="F1">Figure 1B</xref>) with <italic>K</italic> entries indicates the selling scheme between a customer and a supplier.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Visualization of particle definition and constraints. <bold>(A)</bold> Particle definition. <bold>(B)</bold> A column and constraints.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fncom-18-1283974-g0001.tif"/>
</fig>
<p>The following assumptions are made for this work. First, the quantities of supply and demand are known in advance, and the supply is less than the demand to create a more challenging situation where prescriptive analytics is needed. Second, no further complications on resale, buy-back, or others exist. Third, customers are willing to purchase an identical product from multiple suppliers. Finally, each customer pays a constant price for each product, called the willingness to pay in economics. In real markets, a shortage in supply, which is the first assumption, is likely to make customers pay the maximum prices they are willing to pay.</p>
<p>In a SCM task, the objective function is generally the profit that a selling scheme can make, equal to the difference between sales and costs. The sales component is the products&#x00027; prices multiplied by their quantities. Among all potential costs, this work only considers delivery and purchase costs. To calculate the delivery cost, participants of a supply chain are categorized into two geographical locations: North and South. The transportation cost per product between a specific combination of locations is a constant. The purchase cost per product from a specific supplier is also a constant. Mathematically, the objective function can be written as</p>
<disp-formula id="E2"><mml:math id="M2"><mml:mtable columnalign="right"><mml:mtr><mml:mtd><mml:mi>P</mml:mi><mml:mi>r</mml:mi><mml:mi>o</mml:mi><mml:mi>f</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mi>S</mml:mi><mml:mi>a</mml:mi><mml:mi>l</mml:mi><mml:mi>e</mml:mi><mml:mo>-</mml:mo><mml:mi>C</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>S</mml:mi><mml:mi>a</mml:mi><mml:mi>l</mml:mi><mml:mi>e</mml:mi><mml:mo>=</mml:mo><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>Q</mml:mi><mml:mi>u</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>t</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>y</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mi>P</mml:mi><mml:mi>r</mml:mi><mml:mi>i</mml:mi><mml:mi>c</mml:mi><mml:mi>e</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>C</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>D</mml:mi><mml:mi>e</mml:mi><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>v</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>y</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>P</mml:mi><mml:mi>u</mml:mi><mml:mi>r</mml:mi><mml:mi>c</mml:mi><mml:mi>h</mml:mi><mml:mi>a</mml:mi><mml:mi>s</mml:mi><mml:mi>e</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>A supply constraint is that a supplier must have a maximum production capacity, and a demand constraint is that a customer must have the desired quantity for each product. Both constraints are cross-dimensional in nature.</p>
<p><xref ref-type="table" rid="T1">Table 1</xref> is the pseudo-code of the proposed SIB algorithm for the SCM optimization. In the initialization part, a set of valid selling schemes (particles) are randomly generated and evaluated by the objective function. Then, the initial LBs are defined as the initial positions, and the GB is the best among all LBs. In the iteration part, the MIX operation generates new selling schemes by mixing current selling schemes with the best ones, and the MOVE operation picks the best among three candidate schemes for update if the newly generated schemes provide better objective function values, or a perturbed scheme via random jump otherwise. The iteration continues until the pre-defined stopping criteria are fulfilled, which can be the maximum number of iterations, achieving a pre-defined objective function value, or converging with pre-defined rules. The final GB is considered the optimal multi-supplier selling scheme suggested by the proposed SIB algorithm. The following subsections provide a more detailed description of every step of the SIB method.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>The SIB algorithm.</p></caption>
<table frame="box" rules="all">
<tbody>
<tr>
<td valign="top" align="left">1:</td>
<td valign="top" align="left">Initialize a swarm of particles.</td>
</tr>
<tr>
<td valign="top" align="left">2:</td>
<td valign="top" align="left">Evaluate the objective function values of each particle.</td>
</tr>
<tr>
<td valign="top" align="left">3:</td>
<td valign="top" align="left">Determine the Local Best (LB) and the Global Best (GB) for each particle.</td>
</tr>
<tr>
<td valign="top" align="left">4:</td>
<td valign="top" align="left">while STOPPING CRITERIA NOT FULFILLED</td>
</tr>
<tr>
<td valign="top" align="left">5:</td>
<td valign="top" align="left">Do MIX operation.</td>
</tr>
<tr>
<td valign="top" align="left">6:</td>
<td valign="top" align="left">Do MOVE/Random Jump operation.</td>
</tr>
<tr>
<td valign="top" align="left">7:</td>
<td valign="top" align="left">Update the LB and the GB particles.</td>
</tr>
<tr>
<td valign="top" align="left">8:</td>
<td valign="top" align="left">Check the conditions of convergence.</td>
</tr></tbody>
</table>
</table-wrap>
<sec>
<title>3.1 Initialization</title>
<p><xref ref-type="fig" rid="F1">Figure 1B</xref> shows the demand and supply constraints in this problem. To implement these cross-dimensional constraints in the algorithm, most operations are designed in a column-by-column fashion with continuous tracking of remaining demand and supply quantities. Specifically, an <italic>N</italic>&#x000D7;<italic>K</italic> matrix records the remaining demand, and an <italic>M</italic>&#x000D7;<italic>K</italic> matrix records the remaining supply. In the initialization part, each column is generated separately and combined into a complete particle. The entries in a particle are random integers chosen from 0 to the minimum between the remaining supply and demand of the target entries. Notice that the remaining quantity matrices must be updated after generating each slice of a particle. The entry should be 0 when the remaining supply or demand is 0. To increase the variations among initial particles, the generating order is shuffled in both the column and slice levels. At the end of the initialization, the best particles are set according to the particles&#x00027; objective function values.</p>
</sec>
<sec>
<title>3.2 Iteration</title>
<sec>
<title>3.2.1 MIX operation</title>
<p>Each particle is mixed with its own LB and the GB for each iteration, which returns two particles denoted as <italic>mixwLB</italic> and <italic>mixwGB</italic>, respectively. Similar to the initialization, the MIX operation is in a column-by-column fashion with two remaining quantity matrices. At the beginning of a MIX operation, the remaining quantity matrices are calculated based on the original particle. A pair of columns, one from the original particle and another from the best particle (either the LB or the GB), is dealt with at a time. For each pair, entries are examined if their values in the original particle are smaller than those in the best particle and if the corresponding remaining demand and supply are both positive. In other words, if an entry has no remaining quantity in either demand or supply, it will not be modified in this operation. Then, a given proportion (<italic>q</italic><sub><italic>LB</italic></sub> or <italic>q</italic><sub><italic>GB</italic></sub>) of those identified entries are randomly chosen, and the values in the original particle are replaced with the corresponding values in the best particle. In the experiments (Section 4), <italic>q</italic><sub><italic>LB</italic></sub> is 0.6 and <italic>q</italic><sub><italic>GB</italic></sub> is 0.4. While only entries with larger values in the best particle can be selected, the objective function value will only increase or remain the same in this process, and this condition is added to achieve convergence faster.</p>
</sec>
<sec>
<title>3.2.2 MOVE and random jump operation</title>
<p>The implementation of the MOVE operation is identical to the standard SIB algorithm. The two particles, <italic>mixwLB</italic> and <italic>mixwGB</italic>, given by the MIX operation, are evaluated by the objective function, and their performances are compared to that of the original particle. If either of the mixed particles outperforms the original particle, the particle&#x00027;s new position is the best among the three particles. If the original particle has the best objective function value, a Random Jump operation must be executed. The Random Jump operation also uses remaining quantities matrices and column-by-column fashion. However, in the Random Jump operation, the product quantities assigned by the column should be released first, i.e., the values are added back to the remaining demand and supply. This action enhances the capability of Random Jump to bring a particle out of a local attractive trap. After calculating the remaining quantity matrices, half of the entries with non-zero demand in a column are chosen and assigned with a random integer between 0 and the minimum within the remaining demand and supply.</p>
</sec>
</sec>
<sec>
<title>3.3 Acceleration by CPU parallelization</title>
<p>An advantage of the SIB method is its parallelizability, which is important for the proposed SIB method due to the time-consuming computation property among tensors. The CPU parallelization techniques are implemented with the Python package Multiprocessing for algorithm acceleration. While the data, including positions and profit values, of pairs of particles and their LB is stored in different CPUs, the data of the GB is stored in the shared memory for easy access from every individual CPU. When the MIX and MOVE operations are performed, the particles are assigned to different CPUs, and the outcomes of MOVE operations are compared with the GB individually. The data of GB will only be modified when the outcome particles perform better than the GB. However, false results may occur when multiple CPUs try to modify the data in the shared memory simultaneously. To avoid this common issue in parallel computing, a Lock is used to protect the data in the shared memory. Moreover, to keep the process synchronous, Barriers hold the complete sub-process until all the others are completed.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Experiment and result</title>
<p>The proposed SIB method has been applied to the small single-supplier and large multi-supplier supply chains (Phoa et al., <xref ref-type="bibr" rid="B18">2021</xref>). This section evaluates the SIB method with supply chains in different scales and compares the performance with the GA algorithm. Moreover, the effect of the parallelization technique will be illustrated by showing the execution time.</p>
<p>To test the algorithm&#x00027;s general performance, supply chains&#x00027; configurations in 11 different scales, including one-to-many scale, are used to set up several experiments; the detailed settings of the scales are listed in <xref ref-type="table" rid="T2">Table 2</xref>. For each scale, ten configurations are manually generated, containing different demand and supply constraints and different geographical locations for suppliers and customers. Specifically, there are some simulated supply chains in the egg market. In addition to the category and location details of suppliers and customers, the data consists of the supply amount of each supplier, the demand amount of each customer, the type of product that each supplier supplies, the cost of purchasing products from suppliers, the transport cost per mile for each egg, and product prices that are different among customers.</p>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>The setting of scales.</p></caption>
<table frame="box" rules="all">
<thead>
<tr style="background-color:#919498;color:#ffffff">
<th valign="top" align="left"><bold>Scale no</bold>.</th>
<th valign="top" align="center"><bold>1</bold></th>
<th valign="top" align="center"><bold>2</bold></th>
<th valign="top" align="center"><bold>3</bold></th>
<th valign="top" align="center"><bold>4</bold></th>
<th valign="top" align="center"><bold>5</bold></th>
<th valign="top" align="center"><bold>6</bold></th>
<th valign="top" align="center"><bold>7</bold></th>
<th valign="top" align="center"><bold>8</bold></th>
<th valign="top" align="center"><bold>9</bold></th>
<th valign="top" align="center"><bold>10</bold></th>
<th valign="top" align="center"><bold>11</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Suppliers</td>
<td valign="top" align="center">1</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">20</td>
<td valign="top" align="center">30</td>
<td valign="top" align="center">40</td>
<td valign="top" align="center">50</td>
<td valign="top" align="center">60</td>
<td valign="top" align="center">70</td>
<td valign="top" align="center">80</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">100</td>
</tr>
<tr>
<td valign="top" align="left">Customers</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">20</td>
<td valign="top" align="center">30</td>
<td valign="top" align="center">40</td>
<td valign="top" align="center">50</td>
<td valign="top" align="center">60</td>
<td valign="top" align="center">70</td>
<td valign="top" align="center">80</td>
<td valign="top" align="center">90</td>
<td valign="top" align="center">100</td>
</tr>
<tr>
<td valign="top" align="left">Product types</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">3</td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">6</td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">8</td>
<td valign="top" align="center">10</td>
<td valign="top" align="center">10</td>
</tr></tbody>
</table>
</table-wrap>
<p>A specific metric is used to evaluate the optimization results and to compare the results among different configurations and scales. Singh et al. (<xref ref-type="bibr" rid="B19">2022</xref>) defined an improvement multiplier that can measure the progress of an algorithm from the initial random values to the end of the iterations. The following equation can calculate the improvement multiplier:</p>
<disp-formula id="E3"><mml:math id="M3"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mi>I</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>o</mml:mi><mml:mi>b</mml:mi><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>o</mml:mi><mml:mi>b</mml:mi><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>o</mml:mi><mml:mi>b</mml:mi><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>obj</italic><sub><italic>f</italic></sub> is the objective function value of the optimized outcome, and <italic>obj</italic><sub>0</sub> is the objective value of the best individual among all the initial particles.</p>
<p>In the first experiment, ten initial particle sets are generated based on each configuration and used as initial swarms in the GA and SIB algorithms for a fair comparison. Each algorithm is run for 300 iterations without stopping early, and the performance of the two algorithms is compared at different iterations. <xref ref-type="table" rid="T3">Table 3</xref> shows the optimized results of two algorithms on each scale after 100, 200, and 300 iterations. According to the results, the SIB method outperforms the GA in all scales. The mean of the improvement given by the SIB is a multiple of that given by the GA, like over 1.7x, 2.5x, and 1.8x respectively in Configs. 1, 2, and 4. Furthermore, the SIB method improves faster than the GA in the early stage and converges. The means of the improvement multipliers given by the SIB in all the scales have already outperformed the GA&#x00027;s results after 100 steps and become stable in the rest of the steps. In contrast, the GA results start at a lower level and keep increasing until the 200th step or even the 300th step. The profit progress trend of one experiment on each scale is visualized in <xref ref-type="fig" rid="F2">Figure 2</xref>, which shows our observations in an easy-understanding way.</p>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p>Statistics of improvement multiplier after 100, 200, and 300 steps.</p></caption>
<table frame="box" rules="all">
<thead>
<tr style="background-color:#919498;color:#ffffff">
<th valign="top" align="left" colspan="2"><bold>Scale no</bold>.</th>
<th valign="top" align="center"><bold>1</bold></th>
<th valign="top" align="center"><bold>2</bold></th>
<th valign="top" align="center"><bold>3</bold></th>
<th valign="top" align="center"><bold>4</bold></th>
<th valign="top" align="center"><bold>5</bold></th>
<th valign="top" align="center"><bold>6</bold></th>
<th valign="top" align="center"><bold>7</bold></th>
<th valign="top" align="center"><bold>8</bold></th>
<th valign="top" align="center"><bold>9</bold></th>
<th valign="top" align="center"><bold>10</bold></th>
<th valign="top" align="center"><bold>11</bold></th>
</tr>
</thead>
<tbody>
<tr style="background-color:#dee1e1">
<td valign="top" align="left" colspan="13"><bold>After 100 steps</bold></td>
</tr>
<tr>
<td valign="top" align="left">Mean</td>
<td valign="top" align="center">SIB</td>
<td valign="top" align="center"><bold>0.217</bold></td>
<td valign="top" align="center"><bold>0.030</bold></td>
<td valign="top" align="center"><bold>0.071</bold></td>
<td valign="top" align="center"><bold>0.045</bold></td>
<td valign="top" align="center"><bold>0.142</bold></td>
<td valign="top" align="center"><bold>0.157</bold></td>
<td valign="top" align="center"><bold>0.342</bold></td>
<td valign="top" align="center"><bold>0.274</bold></td>
<td valign="top" align="center"><bold>0.398</bold></td>
<td valign="top" align="center"><bold>0.315</bold></td>
<td valign="top" align="center"><bold>0.164</bold></td>
</tr>
<tr>
<td/>
<td valign="top" align="center">GA</td>
<td valign="top" align="center">0.119</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.056</td>
<td valign="top" align="center">0.025</td>
<td valign="top" align="center">0.107</td>
<td valign="top" align="center">0.124</td>
<td valign="top" align="center">0.332</td>
<td valign="top" align="center">0.253</td>
<td valign="top" align="center">0.334</td>
<td valign="top" align="center">0.241</td>
<td valign="top" align="center">0.116</td>
</tr>
<tr>
<td valign="top" align="left">Std.<sup>a</sup></td>
<td valign="top" align="center">SIB</td>
<td valign="top" align="center">0.054</td>
<td valign="top" align="center">0.008</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.003</td>
<td valign="top" align="center">0.004</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.013</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.008</td>
<td valign="top" align="center">0.016</td>
<td valign="top" align="center">0.002</td>
</tr>
<tr>
<td/>
<td valign="top" align="center">GA</td>
<td valign="top" align="center">0.066</td>
<td valign="top" align="center">0.008</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.002</td>
<td valign="top" align="center">0.005</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.011</td>
<td valign="top" align="center">0.009</td>
<td valign="top" align="center">0.006</td>
<td valign="top" align="center">0.014</td>
<td valign="top" align="center">0.003</td>
</tr>
<tr style="background-color:#dee1e1">
<td valign="top" align="left" colspan="13"><bold>After 200 steps</bold></td>
</tr>
<tr>
<td valign="top" align="left">Mean</td>
<td valign="top" align="center">SIB</td>
<td valign="top" align="center"><bold>0.222</bold></td>
<td valign="top" align="center"><bold>0.031</bold></td>
<td valign="top" align="center"><bold>0.071</bold></td>
<td valign="top" align="center"><bold>0.047</bold></td>
<td valign="top" align="center"><bold>0.144</bold></td>
<td valign="top" align="center"><bold>0.159</bold></td>
<td valign="top" align="center"><bold>0.349</bold></td>
<td valign="top" align="center"><bold>0.279</bold></td>
<td valign="top" align="center"><bold>0.408</bold></td>
<td valign="top" align="center"><bold>0.324</bold></td>
<td valign="top" align="center"><bold>0.167</bold></td>
</tr>
<tr>
<td/>
<td valign="top" align="center">GA</td>
<td valign="top" align="center">0.125</td>
<td valign="top" align="center">0.011</td>
<td valign="top" align="center">0.057</td>
<td valign="top" align="center">0.026</td>
<td valign="top" align="center">0.110</td>
<td valign="top" align="center">0.130</td>
<td valign="top" align="center">0.341</td>
<td valign="top" align="center">0.259</td>
<td valign="top" align="center">0.344</td>
<td valign="top" align="center">0.249</td>
<td valign="top" align="center">0.123</td>
</tr>
<tr>
<td valign="top" align="left">Std.<sup>a</sup></td>
<td valign="top" align="center">SIB</td>
<td valign="top" align="center">0.055</td>
<td valign="top" align="center">0.008</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.003</td>
<td valign="top" align="center">0.004</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.012</td>
<td valign="top" align="center">0.011</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.016</td>
<td valign="top" align="center">0.002</td>
</tr>
<tr>
<td/>
<td valign="top" align="center">GA</td>
<td valign="top" align="center">0.070</td>
<td valign="top" align="center">0.008</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.002</td>
<td valign="top" align="center">0.004</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.012</td>
<td valign="top" align="center">0.008</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.013</td>
<td valign="top" align="center">0.006</td>
</tr>
<tr style="background-color:#dee1e1">
<td valign="top" align="left" colspan="13"><bold>After 300 steps</bold></td>
</tr>
<tr>
<td valign="top" align="left">Mean</td>
<td valign="top" align="center">SIB</td>
<td valign="top" align="center"><bold>0.224</bold></td>
<td valign="top" align="center"><bold>0.031</bold></td>
<td valign="top" align="center"><bold>0.071</bold></td>
<td valign="top" align="center"><bold>0.047</bold></td>
<td valign="top" align="center"><bold>0.145</bold></td>
<td valign="top" align="center"><bold>0.160</bold></td>
<td valign="top" align="center"><bold>0.350</bold></td>
<td valign="top" align="center"><bold>0.280</bold></td>
<td valign="top" align="center"><bold>0.409</bold></td>
<td valign="top" align="center"><bold>0.324</bold></td>
<td valign="top" align="center"><bold>0.167</bold></td>
</tr>
<tr>
<td/>
<td valign="top" align="center">GA</td>
<td valign="top" align="center">0.130</td>
<td valign="top" align="center">0.012</td>
<td valign="top" align="center">0.058</td>
<td valign="top" align="center">0.026</td>
<td valign="top" align="center">0.111</td>
<td valign="top" align="center">0.133</td>
<td valign="top" align="center">0.345</td>
<td valign="top" align="center">0.261</td>
<td valign="top" align="center">0.347</td>
<td valign="top" align="center">0.252</td>
<td valign="top" align="center">0.127</td>
</tr>
<tr>
<td valign="top" align="left">Std.<sup>a</sup></td>
<td valign="top" align="center">SIB</td>
<td valign="top" align="center">0.055</td>
<td valign="top" align="center">0.008</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.003</td>
<td valign="top" align="center">0.004</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.012</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.016</td>
<td valign="top" align="center">0.002</td>
</tr>
<tr>
<td/>
<td valign="top" align="center">GA</td>
<td valign="top" align="center">0.058</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.002</td>
<td valign="top" align="center">0.004</td>
<td valign="top" align="center">0.010</td>
<td valign="top" align="center">0.012</td>
<td valign="top" align="center">0.009</td>
<td valign="top" align="center">0.007</td>
<td valign="top" align="center">0.013</td>
<td valign="top" align="center">0.005</td>
</tr></tbody>
</table>
<table-wrap-foot>
<p><sup>a</sup>The standard deviations of centralized improvement multiplier. Notice that, corresponding to ten initial particle sets, we have ten improvement multipliers for each run with each configuration. First, these ten improvement multipliers are centralized on the same run by subtracting their mean. Then a total of 100 improvement multipliers are collected for the same configuration. Finally, the standard deviation among those 100 values is reported. Bold values indicate the best values in comparison.</p>
</table-wrap-foot>
</table-wrap>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Progress trend of GB&#x00027;s profit.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fncom-18-1283974-g0002.tif"/>
</fig>
<p>The second experiment tests the effect of parallel computing for large data scales. Two versions of the SIB method are implemented, one with the parallelization techniques and one without. Three configurations, No. 1, No. 4, and No. 8, are chosen to test the effect&#x00027;s difference in data scales. The experiments are individually run on a server with 104 cores. <xref ref-type="table" rid="T4">Table 4</xref> summarizes the computation time in seconds. With a significantly smaller mean, the parallelization helps reduce the computing time in all three configurations. While the computing time only reduces to one-third of the time without parallel on configuration No. 1, the parallelization reduces the computing time to almost one-fifth of the time without parallel on configuration No. 8. This may result from the complexity of the computation in terms of the particle size. Since parallelization costs additional time to copy data from one CPU to another CPU, it is worthier to use this technique in experiments with higher computation complexity.</p>
<table-wrap position="float" id="T4">
<label>Table 4</label>
<caption><p>Computing time (seconds).</p></caption>
<table frame="box" rules="all">
<thead>
<tr style="background-color:#919498;color:#ffffff">
<th/>
<th valign="top" align="center" colspan="5"><bold>No CPU parallelization</bold></th>
<th valign="top" align="center" colspan="5"><bold>CPU parallelization</bold></th>
</tr>
<tr style="background-color:#919498;color:#ffffff">
<th valign="top" align="left"><bold>Config</bold>.</th>
<th valign="top" align="center"><bold>Mean</bold></th>
<th valign="top" align="center"><bold>Std</bold>.</th>
<th valign="top" align="center"><bold>Min</bold></th>
<th valign="top" align="center"><bold>Median</bold></th>
<th valign="top" align="center"><bold>Max</bold></th>
<th valign="top" align="center"><bold>Mean</bold></th>
<th valign="top" align="center"><bold>Std</bold>.</th>
<th valign="top" align="center"><bold>Min</bold></th>
<th valign="top" align="center"><bold>Median</bold></th>
<th valign="top" align="center"><bold>Max</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="center">7.316</td>
<td valign="top" align="center"><bold>0.015</bold></td>
<td valign="top" align="center">7.296</td>
<td valign="top" align="center">7.317</td>
<td valign="top" align="center">7.348</td>
<td valign="top" align="center"><bold>2.353</bold></td>
<td valign="top" align="center">0.121</td>
<td valign="top" align="center">2.176</td>
<td valign="top" align="center">2.336</td>
<td valign="top" align="center">2.558</td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">541.46</td>
<td valign="top" align="center">41.17</td>
<td valign="top" align="center">471.34</td>
<td valign="top" align="center">539.47</td>
<td valign="top" align="center">596.72</td>
<td valign="top" align="center"><bold>38.30</bold></td>
<td valign="top" align="center"><bold>0.54</bold></td>
<td valign="top" align="center">37.27</td>
<td valign="top" align="center">38.36</td>
<td valign="top" align="center">38.96</td>
</tr>
<tr>
<td valign="top" align="left">8</td>
<td valign="top" align="center">2891.6</td>
<td valign="top" align="center">109.0</td>
<td valign="top" align="center">2742.2</td>
<td valign="top" align="center">2895.2</td>
<td valign="top" align="center">3071.9</td>
<td valign="top" align="center"><bold>639.2</bold></td>
<td valign="top" align="center"><bold>2.8</bold></td>
<td valign="top" align="center">634.1</td>
<td valign="top" align="center">639.2</td>
<td valign="top" align="center">644.2</td>
</tr></tbody>
</table>
<table-wrap-foot>
<p>Bold values indicate the best values in comparison.</p>
</table-wrap-foot>
</table-wrap></sec>
<sec sec-type="conclusions" id="s5">
<title>5 Conclusion</title>
<p>This paper proposes a SIB method to handle the multi-supplier-multi-customer supply chain management problem. A modified MIX operation is designed to handle the high-dimensional solutions; the remaining quantity matrices that store additional information help to handle cross-dimensional constraints. Moreover, parallelization techniques accelerate the program to obtain the desired results within a reasonable time. The experiments show that the SIB method, compared to the GA method, offers better-optimized solutions in a shorter time. One must consider more practical factors if this method is applied. For example, prices and costs in the real world vary based on the quantities of demand and supply, and they require a predictive marketing model before optimization. Moreover, the proposed method is not limited only to the SCM optimization problems, but also to similar optimization problems with high-dimensional domains and cross-dimensional constraints.</p>
</sec>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>H-PL: Formal analysis, Methodology, Software, Visualization, Writing &#x02013; original draft. FP: Conceptualization, Data curation, Formal analysis, Funding acquisition, Investigation, Methodology, Project administration, Resources, Software, Supervision, Validation, Visualization, Writing &#x02013; original draft, Writing &#x02013; review &#x00026; editing. Y-HC-B: Conceptualization, Data curation, Investigation, Project administration, Resources, Writing &#x02013; review &#x00026; editing. S-PL: Conceptualization, Investigation, Project administration, Resources, Writing &#x02013; review &#x00026; editing.</p>
</sec>
</body>
<back>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>The author(s) declare financial support was received for the research, authorship, and/or publication of this article. This work was partially supported by the Academia Sinica grant number AS-IA-112-M03 and the National Science and Technology Council (Taiwan) grant number 111-2118-M-001-007-MY2. H-PL was also partially supported by the doctoral student scholarship provided by the Institute of Statistical Science, Academia Sinica (Taiwan).</p>
</sec>
<sec sec-type="COI-statement" id="conf1">
<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="disclaimer" id="s9">
<title>Publisher&#x00027;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="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cramer</surname> <given-names>N. L.</given-names></name></person-group> (<year>1985</year>). <article-title>&#x0201C;A representation for the adaptive generation of simple sequential programs,&#x0201D;</article-title> in <source>Proceedings of an International Conference on Genetic Algorithms and the Applications</source>, ed. J. J. Grefenstette (Psychology Press), <fpage>183</fpage>&#x02013;<lpage>187</lpage>.</citation>
</ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><collab>Delloite</collab></person-group> (<year>2022</year>). <source>Supply chain leadership: Distrinctive approaches to innovation, collaboration, and talent alignment</source>. Technical Report <fpage>1</fpage>&#x02013;<lpage>17</lpage>.</citation>
</ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dervis</surname> <given-names>K.</given-names></name> <name><surname>Basturk</surname> <given-names>B.</given-names></name></person-group> (<year>2007</year>). <article-title>A powerful and efficient algorithm for numerical function optimization: artificial bee colony (abc) algorithm</article-title>. <source>J. Global Optimiz</source>. <volume>39</volume>, <fpage>459</fpage>&#x02013;<lpage>471</lpage>. <pub-id pub-id-type="doi">10.1007/s10898-007-9149-x</pub-id></citation>
</ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dorigo</surname> <given-names>M.</given-names></name> <name><surname>Gambardella</surname> <given-names>L.</given-names></name></person-group> (<year>1997</year>). <article-title>Learning approach to the traveling salesman</article-title>. <source>IEEE Trans. Evolut. Comput</source>. <volume>1</volume>, <fpage>2</fpage>&#x02013;<lpage>14</lpage>. <pub-id pub-id-type="doi">10.1109/4235.585892</pub-id></citation>
</ref>
<ref id="B5">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Fredendall</surname> <given-names>L.</given-names></name> <name><surname>Hill</surname> <given-names>E.</given-names></name></person-group> (<year>2001</year>). <source>Basics of Supply Chain Management</source>. <publisher-loc>New York, NY, USA</publisher-loc>: <publisher-name>CRC Press</publisher-name>. <pub-id pub-id-type="doi">10.1201/9781420025767</pub-id></citation>
</ref>
<ref id="B6">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Goldberg</surname> <given-names>D.</given-names></name></person-group> (<year>2003</year>). <source>Genetic Algorithms in Optimization, Search and Machine Learning</source>. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Addison Wesley</publisher-name>.</citation>
</ref>
<ref id="B7">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Holland</surname> <given-names>J.</given-names></name></person-group> (<year>1975</year>). <source>Adaptation in Natural and Artificial System</source>. <publisher-loc>Cambridge, MA</publisher-loc>: <publisher-name>MIT Press</publisher-name>.</citation>
</ref>
<ref id="B8">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hsu</surname> <given-names>T.</given-names></name> <name><surname>Phoa</surname> <given-names>F.</given-names></name></person-group> (<year>2018</year>). <article-title>&#x0201C;A representation for the adaptive generation of simple sequential programs,&#x0201D;</article-title> in <source>International Conference on Swarm Intelligence (ICSI) 2018</source> (<publisher-loc>Cham</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>78</fpage>&#x02013;<lpage>87</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-319-93815-8_9</pub-id></citation>
</ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Huang</surname> <given-names>E.</given-names></name> <name><surname>Phoa</surname> <given-names>F.</given-names></name></person-group> (<year>2023</year>). <article-title>A uniform placement of alters on spherical surface (u-pass) for ego-centric networks with community structure and alter attributess</article-title>. <source>Adv. Complex Syst</source>. 26, 340003. <pub-id pub-id-type="doi">10.1142/S0219525923400039</pub-id></citation>
</ref>
<ref id="B10">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Kennedy</surname> <given-names>J.</given-names></name></person-group> (<year>2010</year>). <source>Particle Swarm Optimization</source>. (<publisher-loc>Cham</publisher-loc>: <publisher-name>Springer</publisher-name>). <pub-id pub-id-type="doi">10.1007/978-0-387-30164-8_630</pub-id></citation>
</ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kennedy</surname> <given-names>J.</given-names></name> <name><surname>Eberhart</surname> <given-names>R.</given-names></name></person-group> (<year>1995</year>). <article-title>Particle swarm optimization</article-title>. <source>Proc. IEEE Int. Conf. Neural Netw</source>. <volume>4</volume>, <fpage>942</fpage>&#x02013;<lpage>1948</lpage>. <pub-id pub-id-type="doi">10.1109/ICNN.1995.488968</pub-id></citation>
</ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kim</surname> <given-names>T.</given-names></name> <name><surname>Maruta</surname> <given-names>I.</given-names></name> <name><surname>Sugie</surname> <given-names>T.</given-names></name></person-group> (<year>2010</year>). <article-title>A simple and efficient constrained particle swarm optimization and its application to engineering design problems</article-title>. <source>Proc. Instit. Mech. Eng. Part C</source>. <volume>224</volume>, <fpage>389</fpage>&#x02013;<lpage>400</lpage>. <pub-id pub-id-type="doi">10.1243/09544062JMES1732</pub-id></citation>
</ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lin</surname> <given-names>F.</given-names></name> <name><surname>Phoa</surname> <given-names>F.</given-names></name></person-group> (<year>2019</year>). <article-title>Runtime estimation and scheduling on parallel processing super-computers via instance-based learning and swarm intelligence</article-title>. <source>Int. J. Mach. Lear. Comput</source>. <volume>9</volume>, 5 <fpage>92</fpage>&#x02013;<lpage>592</lpage>. <pub-id pub-id-type="doi">10.18178/ijmlc.2019.9.5.845</pub-id></citation>
</ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mentzer</surname> <given-names>J. T.</given-names></name> <name><surname>DeWitt</surname> <given-names>W.</given-names></name> <name><surname>Keebler</surname> <given-names>J. S.</given-names></name> <name><surname>Min</surname> <given-names>S.</given-names></name> <name><surname>Nix</surname> <given-names>N. W.</given-names></name> <name><surname>Smith</surname> <given-names>C. D.</given-names></name> <etal/></person-group>. (<year>2001</year>). <article-title>Defining supply chain management</article-title>. <source>J. Business Logist</source>. <volume>22</volume>, <fpage>1</fpage>&#x02013;<lpage>25</lpage>. <pub-id pub-id-type="doi">10.1002/j.2158-1592.2001.tb00001.x</pub-id></citation>
</ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Phoa</surname> <given-names>F.</given-names></name></person-group> (<year>2017</year>). <article-title>A swarm intelligence based (sib) method for optimization in designs of experiments</article-title>. <source>Natural Comput</source>. <volume>16</volume>, <fpage>597</fpage>&#x02013;<lpage>605</lpage>. <pub-id pub-id-type="doi">10.1007/s11047-016-9555-4</pub-id></citation>
</ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Phoa</surname> <given-names>F.</given-names></name> <name><surname>Chang</surname> <given-names>L.</given-names></name></person-group> (<year>2016</year>). <article-title>A multi-objective implementation in swarm intelligence with applications in designs of computer experiments</article-title>. <source>Proc. ICNC-FSKD</source> <volume>2016</volume>, <fpage>253</fpage>&#x02013;<lpage>258</lpage>. <pub-id pub-id-type="doi">10.1109/FSKD.2016.7603182</pub-id></citation>
</ref>
<ref id="B17">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Phoa</surname> <given-names>F.</given-names></name> <name><surname>Chen</surname> <given-names>R.</given-names></name> <name><surname>Wang</surname> <given-names>W.</given-names></name> <name><surname>Wong</surname> <given-names>W.</given-names></name></person-group> (<year>2016</year>). <article-title>Optimizing two-level supersaturated designs via swarm intelligence techniques</article-title>. <source>Technometrics</source> <volume>58</volume>, <fpage>4</fpage> <fpage>3</fpage>&#x02013;<lpage>49</lpage>. <pub-id pub-id-type="doi">10.1080/00401706.2014.981346</pub-id><pub-id pub-id-type="pmid">27103752</pub-id></citation></ref>
<ref id="B18">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Phoa</surname> <given-names>F.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Chen-Burger</surname> <given-names>Y.</given-names></name> <name><surname>Lin</surname> <given-names>S.</given-names></name></person-group> (<year>2021</year>). <article-title>&#x0201C;Metaheuristic optimization on tensor-type solution via swarm intelligence and its application in the profit optimization in designing selling scheme,&#x0201D;</article-title> in <source>12th International Conference on Swarm Intelligence (ICSI 2021)</source> (<publisher-loc>New York</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>72</fpage>&#x02013;<lpage>82</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-030-78743-1_7</pub-id></citation>
</ref>
<ref id="B19">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Singh</surname> <given-names>K.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Phoa</surname> <given-names>F.</given-names></name> <name><surname>Lin</surname> <given-names>S.</given-names></name> <name><surname>Chen-Burger</surname> <given-names>Y.</given-names></name></person-group> (<year>2022</year>). <article-title>&#x0201C;Decentralized supply chain optimization via swarm intelligence,&#x0201D;</article-title> in <source>13th International Conference on Swarm Intelligence (ICSI 2022)</source> (<publisher-loc>Springer</publisher-loc>), <fpage>432</fpage>&#x02013;<lpage>447</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-031-09677-8_36</pub-id></citation>
</ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Storn</surname> <given-names>R.</given-names></name> <name><surname>Price</surname> <given-names>K.</given-names></name></person-group> (<year>1997</year>). <article-title>Differential evolution - a simple and efficient heuristic for global optimization over continuous spaces</article-title>. <source>J. Global Optimiz</source>. <volume>11</volume>, 3 <fpage>41</fpage>&#x02013;<lpage>359</lpage>. <pub-id pub-id-type="doi">10.1023/A:1008202821328</pub-id></citation>
</ref>
<ref id="B21">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Yen</surname> <given-names>P.</given-names></name> <name><surname>Phoa</surname> <given-names>F.</given-names></name></person-group> (<year>2021</year>). <article-title>&#x0201C;Traveling salesman problem via swarm intelligence,&#x0201D;</article-title> in <source>12th International Conference on Swarm Intelligence (ICSI 2021)</source> (<publisher-loc>Springer</publisher-loc>), <fpage>106</fpage>&#x02013;<lpage>115</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-030-78743-1_10</pub-id></citation>
</ref>
</ref-list>
</back>
</article>