Introduction

The path optimization problem (POP) is fundamental to various practical applications, such as transportation [1], supply chain management [2], telecommunication [3], and robot control [4]. The shortest path problem (SPP) is the most well-studied in the field of POP, and many classical algorithms have been proposed [5, 6]. The SPP aims to minimize the summation of deterministic weights associated with each arc. With the fast development of the network modeling, each arc may have multiple criteria [7], which forms the multi-objective path optimization problem (MOPOP).

Generally, the weights of each arc represent the cost, time, and reliability that are assumed to be deterministic. However, in many real-world situations, some kinds of weights are uncertain and difficult to be represented by crisp numbers. For example, the traversing time of a road greatly depends on traffic conditions [8]. Zadeh et al. [9] proposed the fuzzy set theory, which is a typical way to handle uncertainties. An element of a universe discourse is characterized by a membership degree between 0 and 1 [10]. The fuzzy set theory has emerged as a powerful platform for various real-world applications with uncertainties, such as decision making [11], network modeling [12], and pattern recognition [13]. The POP on fuzzy networks has been widely studied in recent years on account of its application values. Moreover, a network may have both crisp and fuzzy weights simultaneously. For example, path length and population exposure are two evaluation indexes for hazardous material transportation [14]. The path length can be measured accurately, while the population exposure depends on the population density, which is always time-varying. Therefore, providing complete solutions efficiently to the MOPOP with crisp and fuzzy weights may make a difference in numerous real-world problems.

The MOPOP belongs to the scope of the multi-objective optimization problem (MOOP), whose primary goal is to find Pareto optimal solutions [15]. There exist mainly four categories of MOOP algorithms: (1) using an aggregate function to combine objectives into a single one [15, 16]; (2) optimizing one objective while treating the others as constraints [17]; (3) evolutionary algorithms based on Pareto ranking [18]; (4) evolutionary algorithms based on decomposition [19]. The first two categories decompose the MOOP into single-objective optimization problems that deem partial objectives more important than the others. Therefore, they may miss some Pareto optimal solutions [20]. The last two categories are based on evolutionary algorithms, which are stochastic and cannot guarantee optimality [21]. In addition, some specific algorithms for MOPOPs have been proposed, such as the two-phase method [22], labeling method [23], and ranking method [24]. These algorithms are logic-based and extended from SPP algorithms. Moreover, they mainly focus on bi-objective problems. For this reason, these MOPOP algorithms have relatively low flexibility to be adapted to fuzzy graphs with more than two objectives.

Recently, researchers have shown a growing interest in POPs with fuzzy weights. Dubois et al. [25] first proposed an algorithm based on the Floyd algorithm to solve the SPP in a fuzzy network (FSPP), in which each arc is characterized by a fuzzy number. Various algorithms for the FSPP have been proposed [26], such as the dynamic programming [27], fuzzy Dijkstra algorithm [28], fuzzy Physarum algorithm [29], and fuzzy genetic algorithm [30]. Furthermore, some researchers also investigate MOPOPs with fuzzy weights. Kim et al. [31] proposed a quantum-inspired evolutionary algorithm to plan robotic paths considering three objectives. In [32], fuzzy objectives are aggregated using sum-weighted functions. Adhikari et al. [33] planned 3D UAV paths with a multi-objective fuzzy logic controller using fuzzy adaptive differential evolution. Zero et al. [14] modified Martin’s Algorithm and A\(^*\) algorithm to solve a bi-objective POP with a crisp objective and a min-max fuzzy objective. Abbaszadeh et al. [34] implemented the fuzzy inference system to find a path considering three objectives while respecting resource constraints. Bagheri et al. [35] devised fuzzy efficiency scores to convert fuzzy objectives to a single objective and implemented the data envelopment analysis.

The ripple-spreading algorithm (RSA) is an agent-based and deterministic algorithm that consists in solving various POPs [36,37,38,39]. The RSA is proposed by simulating the following natural phenomena: a ripple spreads out on a disturbed water surface and triggers new ripples when encountering obstacles. Different RSAs share the same optimization principle: the traveling path of the first ripple reaching a node is the shortest path, which is consistent with natural phenomena. Although this principle makes the RSA a deterministic algorithm, the RSA can also be implemented as an agent-based model whose primary merit is flexibility [40]. All ripples can have their spreading motions and triggering conditions, and their combined behaviors help solve a specific problem. We can modify the triggering condition and termination judgment of the RSA to make it solve the SPP [36], the POP on dynamic networks [37], the k shortest paths problem [38], and the MOPOP [39].

The primary goal of this paper is to provide complete solutions efficiently to MOPOPs with multiple crisp and fuzzy weights. We define the fuzzy MOPOP (FMOPOP), in which each arc has at least one crisp weight and multiple fuzzy weights. Each fuzzy weight can be represented by a triangular fuzzy number (TFN) [41] or a trapezoidal fuzzy number (TrFN) [42]. Moreover, we adopt two methods to rank fuzzy numbers. The first method is based on fuzzy graded mean values [28, 30], and the second method is based on the distances between fuzzy numbers [27, 29, 43]. Motivated by the RSA, we adapt the triggering condition to make it solve the FMOPOP. A ripple triggers another ripple on a water surface when reaching a stone. In the RSA, we define the Pareto optimal ripple (POR), and only PORs can trigger new ripples at nodes. The newly proposed RSA is a deterministic algorithm that ensures optimality. Furthermore, the RSA can determine all Pareto optimal paths from the source node to all other nodes within a single run. Different kinds of fuzzy numbers and ranking methods can be adopted using the RSA while maintaining optimality.

The remainder of this paper is organized as follows. The second section provides preliminaries about the fuzzy set theory, Pareto concepts, and the RSA. The mathematical formulation of the FMOPOP is provided in the third section. In the fourth section, the RSA is adapted to solve the FMOPOP. Several numerical examples and comparative experiments are presented in the fifth section. Finally, the paper ends up with some conclusions the in the last sections.

Preliminaries

Basic definitions

Definition 1

(Fuzzy set) Let X denote a non-empty set, and \({\tilde{A}}\) denote a subset of X. If \({\tilde{A}}\) is a fuzzy set, it can be described as:

$$\begin{aligned} {\tilde{A}}=\{(x, \mu _{{\tilde{A}}}(x))\mid x\in X\}, \end{aligned}$$
(1)

where \(\mu _{{\tilde{A}}}:X\rightarrow [0, 1]\) is the membership function of \({\tilde{A}}\). For \(\forall x \in X\), \(\mu _{{\tilde{A}}}(x)\) denotes the membership degree of x in \({\tilde{A}}\).

Definition 2

(Fuzzy number) If and only if a fuzzy set \({\tilde{A}}\) is convex and normal, it is a fuzzy number. Where ”convex” denotes that:

$$\begin{aligned}&\mu _{{\tilde{A}}}((1-\lambda )x_1+\lambda x_2) \ge \min (\mu _{{\tilde{A}}}(x_1), \mu _{{\tilde{A}}}(x_2)),\nonumber \\&\quad \forall x_1, x_2 \in X, \forall \lambda \in [0, 1], \end{aligned}$$
(2)

and ”normal” denotes that:

$$\begin{aligned} \sup _{x\in X}{\mu _{{\tilde{A}}}(x)}=1. \end{aligned}$$
(3)

Definition 3

(Triangular fuzzy number) Let \({\tilde{A}}=(a_1, a_2, a_3)\) be a triangular fuzzy number (TFN), whose membership function is defined as follows:

$$\begin{aligned} \mu _{{\tilde{A}}}(x)=\left\{ \begin{aligned}&\frac{x-a_1}{a_2-a_1},&a_1\le x \le a_2,\\&\frac{a_3-x}{a_3-a_2},&a_2 \le x \le a_3,\\&0,&\text {otherwise}. \end{aligned} \right. \end{aligned}$$
(4)

Definition 4

(Trapezoidal fuzzy number) Let \({\tilde{A}}=(a_1, a_2,a_3, a_4)\) be a trapezoidal fuzzy number (TrFN), whose membership function is defined as follows:

$$\begin{aligned} \mu _{{\tilde{A}}}(x)=\left\{ \begin{aligned}&\frac{x-a_1}{a_2-a_1},&a_1\le x \le a_2,\\&1,&a_2\le x \le a_3,\\&\frac{a_4-x}{a_4-a_3},&a_3 \le x \le a_4,\\&0,&\text {otherwise}. \end{aligned} \right. \end{aligned}$$
(5)

Definition 5

(Fuzzy operations) For two TFNs \({\tilde{A}}=(a_1, a_2,a_3)\) and \({\tilde{B}}=(b_1, b_2, b_3)\), their fuzzy addition (\(\oplus \)) and multiplication (\(\otimes \)) operations are defined as:

$$\begin{aligned} \begin{aligned} {\tilde{A}}\oplus {\tilde{B}}=(a_1+b_1, a_2 + b_2, a_3 + b_3),\\ {\tilde{A}}\otimes {\tilde{B}}=(a_1\times b_1, a_2 \times b_2, a_3 \times b_3). \end{aligned} \end{aligned}$$
(6)

And for two TrFNs \({\tilde{A}}=(a_1, a_2, a_3, a_4)\) and \({\tilde{B}}=(b_1, b_2, b_3, b_4)\), their fuzzy addition (\(\oplus \)) and multiplication (\(\otimes \)) operations are defined as:

$$\begin{aligned} \begin{aligned} {\tilde{A}}\oplus {\tilde{B}}=(a_1+b_1, a_2 + b_2, a_3 + b_3, a_4+b_4),\\ {\tilde{A}}\otimes {\tilde{B}}=(a_1\times b_1, a_2 \times b_2, a_3 \times b_3, a_4\times b_4). \end{aligned} \end{aligned}$$
(7)

Definition 6

(\(\alpha \)-cut) \({\tilde{A}}\) is a fuzzy subset of X. The \(\alpha \)-cut (\({\tilde{A}}_\alpha \)) and strong \(\alpha \)-cut (\({\tilde{A}}_{\alpha +}\)) of \({\tilde{A}}\) are defined as:

$$\begin{aligned} \begin{aligned} {\tilde{A}}_\alpha =\{x\mid \mu _{{\tilde{A}}}(x)\ge \alpha , x\in X\},\\ {\tilde{A}}_{\alpha +}=\{x\mid \mu _{{\tilde{A}}}(x)>\alpha , x\in X\}, \end{aligned} \end{aligned}$$
(8)

where \(\alpha \in [0, 1]\). Moreover, we use \({\tilde{A}}_{\alpha }^+\) to denote \(\sup ({\tilde{A}}_\alpha )\) and \({\tilde{A}}_{\alpha }^-\) to denote \(\inf ({\tilde{A}}_\alpha )\).

Fig. 1
figure 1

A TFN \({\tilde{A}}=(a_1, a_2, a_3)\) and its \(\alpha \)-cut

Fig. 2
figure 2

A TrFN \({\tilde{A}}=(a_1, a_2, a_3, a_4)\) and its \(\alpha \)-cut

We provide Figs. 1 and 2 to illustrate an example of TFN and TrFN and their \(\alpha \)-cut. From the two figures, we can quickly determine \({\tilde{A}}_{\alpha }^+\) and \({\tilde{A}}_{\alpha }^-\).

Definition 7

(Fuzzy graded mean value) For a TFN \({\tilde{A}}=(a_1, a_2, a_3)\), its fuzzy graded mean value is defined as:

$$\begin{aligned} P({\tilde{A}})=\frac{1}{6}(a_1+4\times a_2 + a_3). \end{aligned}$$
(9)

And for a TrFN \({\tilde{A}}=(a_1, a_2, a_3, a_4)\), its fuzzy graded mean value is defined as:

$$\begin{aligned} P({\tilde{A}})=\frac{1}{6}(a_1+2\times a_2 +2\times a_3+a_4). \end{aligned}$$
(10)

Definition 8

(Fuzzy distance) We adopt a non-negative function to calculate the distance \(D_{p, q}({\tilde{A}}, {\tilde{B}})\) between two fuzzy numbers \({\tilde{A}}\) and \({\tilde{B}}\), where \(p>1\) and \(0< q < 1\) [44]:

$$\begin{aligned} D_{p, q}({\tilde{A}}, {\tilde{B}})=\left\{ \begin{aligned}&\left[ (1-q)\int ^1_0\mid {\tilde{A}}_\alpha ^--{\tilde{B}}_\alpha ^-\mid ^p \text {d}\alpha +q\int ^1_0\mid {\tilde{A}}_\alpha ^+-{\tilde{B}}_\alpha ^+\mid ^p \text {d}\alpha \right] ^{\frac{1}{p}},&p<\infty ,\\&(1-q)\sup \limits _{0<\alpha \le 1}(\mid {\tilde{A}}_\alpha ^--{\tilde{B}}_\alpha ^-\mid ) +q\inf \limits _{0<\alpha \le 1}(\mid {\tilde{A}}_\alpha ^+-{\tilde{B}}_\alpha ^+\mid ),&p=\infty . \end{aligned} \right. \end{aligned}$$
(11)

The first parameter p determines the analytical features of \(D_{p,q}\), while the second parameter q describes the subjective weight attributed to the end points of support, i.e., \(({\tilde{A}}_\alpha ^-, {\tilde{A}}_\alpha ^+)\) for the fuzzy number \({\tilde{A}}\) [27]. When q is close to 0, the left side of the support is given more consideration. The value \(q=1/2\) is adopted in this study as the significance of the end points of the support of fuzzy numbers is assumed to be the same. Moreover, \(p=2\) is the most frequently used for fuzzy distance [27, 29, 43]. For two TFNs \({\tilde{A}}=(a_1, a_2, a_3)\) and \({\tilde{B}}=(b_1, b_2, b_3)\), when \(p=2\) and \(q=1/2\), their distance is calculated as:

$$\begin{aligned} D_{2, 1/2}({\tilde{A}}, {\tilde{B}})=\sqrt{\frac{1}{6}\left[ \sum _{i=1}^3(a_i-b_i)^2+(a_2-b_2)^2+\sum _{i\in \{1, 2\}}(a_i-b_i)(a_{i+1}-b_{i+1})\right] }. \end{aligned}$$
(12)

And for two TrFNs \({\tilde{A}}=(a_1, a_2, a_3, a_4)\) and \({\tilde{B}}=(b_1, b_2, b_3, b_4)\), their distance is calculated as:

$$\begin{aligned}&D_{2, 1/2}({\tilde{A}}, {\tilde{B}})\nonumber \\&\quad =\sqrt{\frac{1}{6}\left[ \sum _{i=1}^4(a_i-b_i)^2+\sum _{i\in \{1, 3\}}(a_i-b_i)(a_{i+1}-b_{i+1})\right] }.\nonumber \\ \end{aligned}$$
(13)

Ranking methods of fuzzy numbers

How to rank the fuzzy path cost is of great importance in solving the FSPP. A number of studies have investigated how to rank fuzzy numbers [45,46,47]. In this paper, we adopt two methods:

Ranking method 1 The fuzzy numbers are ranked according to their fuzzy graded mean values [28, 30].

Ranking method 2 The fuzzy numbers are ranked according to their distances between the fuzzy minimum number (\(M{\tilde{N}}\)) [27, 29, 43]. For two TFNs \({\tilde{A}}=(a_1, a_2, a_3)\) and \({\tilde{B}}=(b_1, b_2, b_3)\), their \(M{\tilde{N}}\) is defined as:

$$\begin{aligned} M{\tilde{N}}({\tilde{A}}, {\tilde{B}}) = (\min (a_1, b_1), \min (a_2, b_2), \min (a_3, b_3)). \end{aligned}$$
(14)

In the same way, the \(M{\tilde{N}}\) of two TrFNs \({\tilde{A}}=(a_1, a_2, a_3, a_4)\) and \({\tilde{B}}=(b_1, b_2, b_3, b_4)\) is:

$$\begin{aligned} M{\tilde{N}}({\tilde{A}}, {\tilde{B}})= & {} (\min (a_1, b_1), \min (a_2, b_2), \nonumber \\&\min (a_3, b_3), \min (a_4, b_4)). \end{aligned}$$
(15)
Fig. 3
figure 3

An illustration of two TrFNs

We take two TrFNs \({\tilde{A}}=(2, 5, 9, 14)\) and \({\tilde{B}}=(4, 6, 11, 12)\) as an example, as shown in Fig. 3. Using ranking method 1, \(P({\tilde{A}})=7.33\) and \(P({\tilde{B}}) = 8.33\), so \({\tilde{A}}\) is less than \({\tilde{B}}\). Using ranking method 2, \(M{\tilde{N}}=(2, 5, 9, 12)\). The distances are \(D_{2, 1/2}({\tilde{A}}, M{\tilde{N}})=0.82\) and \(D_{2, 1/2}({\tilde{B}}, M{\tilde{N}})=1.35\), so \({\tilde{A}}\) is less than \({\tilde{B}}\).

Pareto concepts

Pareto concepts are firstly applied in economic research [48] and become the core concept of the MOOP [15]. For a MOPOP with q objectives, it aims to minimize all of them. Let \(P_1\) and \(P_2\) be two feasible paths, and f(P)(i) denote the ith objective value of path P, \(i=1,\cdots , q\). If \(P_1\) is no worth than \(P_2\) on all objectives and better than \(P_2\) on at least one objective, \(P_1\) Pareto dominates \(P_2\). We use \(P_1\prec P_2\) to denote that \(P_1\) Pareto dominates \(P_2\), and its mathematical formulation is:

$$\begin{aligned} \left\{ \begin{aligned}&f(P_1)(i) \le f(P_2)(i),&\forall i\in [1,\cdots ,q],\\&f(P_1)(j) < f(P_2)(j),&\exists j\in [1, \cdots , q]. \end{aligned} \right. \end{aligned}$$
(16)

”Pareto optimal” means that the progression on one objective must lead to regression on the others. Let a set \(\Omega _P\) contain all possible paths. If a path \(P^*\) is Pareto optimal, there is no path P that Pareto dominates \(P^*\). The mathematical relation is:

$$\begin{aligned} !\exists P\in \Omega _P, P \prec P^*. \end{aligned}$$
(17)

All Pareto optimal paths construct the Pareto set. The projection of a Pareto optimal path in the objective space is a Pareto point, and all Pareto points form the Pareto front of the MOPOP [7].

Basic ideas behind the RSA

The RSA is proposed by simulating natural ripple patterns on a water surface: all ripples spread out in all directions at the same speed. A ripple triggers another ripple when encountering an obstacle. The basic principle behind this phenomenon is that the first ripple that reaches a node travels along the shortest path [36]. From the perspective of algorithm design, each ripple has basic features: the epicenter, state, and radius. The epicenter is the node where the ripple is generated. Only ripples in the active state spread out. In the RSA, ripples spread out on a network where the distance between two nodes is represented by a crisp number. We present the basic steps of the RSA for the SPP as follows:

  1. 1.

    An active ripple is initialized at the source node.

  2. 2.

    At each time, all active ripples spread out at the same speed.

  3. 3.

    If a ripple reaches an unvisited node first, it triggers another ripple.

  4. 4.

    If an active ripple has visited all nodes connected to its epicenter, it becomes inactive.

  5. 5.

    If a ripple has visited the destination node, the SPP is solved. The traveling path of this ripple is the shortest.

Fig. 4
figure 4

The illustration of how the RSA solves the SPP

Figure 4 provides a toy example of the RSA for the SPP, and only active ripples are plotted. Following the steps mentioned above, ripple \(\hbox {R}_{3}\) reaches the destination node d first and becomes inactive . Its traveling path s-2-d is the shortest path. We can observe that the whole processes resemble a ripple relay race.

Mathematical formulation

In this section, we provide the mathematical formulation of the FMOPOP. We consider a directed network \(G=\{V, E\}\), where V is the node set, and E is the arc set. \(V=\{1, 2, \cdots , n_n\}\) contains \(n_n\) different nodes, and \(E=\{(i, j)\mid i\in V, j\in V\}\) contains \(n_a\) different arcs. The arc from node i to node j is denoted as (ij). Moreover, there are \(n_c\) crisp weights and \(n_f\) fuzzy weights associated with each arc, and \(n_w\) denotes the total number of weights. For arc (ij), its mth crisp weight is denoted as \(c_{ij}^m\), and its nth fuzzy weight is \({\tilde{c}}_{ij}^n\). A path \(P_{sd}\) from the source node s to the destination node d is a sequence of nodes \(P_{sd}=\{s=n_1, n_2, \cdots , n_{m-1}, n_m=d\}\), where \((n_{h}, n_{h+1})\in E\) holds for \(\forall h=1, \cdots , m-1\). The mathematical formulation of the FMOPOP is:

$$\begin{aligned} \begin{aligned}&\min \sum _{i=1}^{n_n}\sum _{j=1}^{n_n}x_{ij}[c_{ij}^1, \cdots , c_{ij}^{n_c}, {\tilde{c}}_{ij}^1, \cdots , {\tilde{c}}_{ij}^{n_f}] \\&\text {s.t.}\\&\sum _{i=1}^{n_n}x_{ij} - \sum _{j=1}^{n_n}x_{ji}=\left\{ \begin{aligned}&1,&\text {for } i=s,\\&0,&\text {otherwise},\\&-1,&\text {for } i=d,\\ \end{aligned} \right. \\&x_{ij}\in \{0, 1\}, \quad \forall i, j\in [1,\cdots ,n_n]. \end{aligned} \end{aligned}$$
(18)

In model (18), \(x_{ij}=1\) denotes that arc (ij) is a part of the path, otherwise \(x_{ij}=0\).

Moreover, we define the objective function of a path \(P=\{n_1, n_2, \cdots , n_{m-1}, n_m\}\) as:

$$\begin{aligned}&f(P, i)(j)\nonumber \\&\quad =\left\{ \begin{aligned}&0,&i=1, 1\le j\le n_c,\\&(0, 0, 0)\text { or }(0, 0, 0, 0),&i=1,n_c<j\le n_w,\\&f(P, i-1)(j)+c_{n_{i-1}n_{i}}^j,&i>1, 1\le j\le n_c,\\&f(P, i-1)(j)\oplus {\tilde{c}}_{n_{i-1}n_{i}}^j,&i>1, n_c<j\le n_w. \end{aligned} \right. \nonumber \\ \end{aligned}$$
(19)

In Eq. (19), f(Pi)(j) denotes the jth objective value of the sub-path of P from node \(n_1\) to node \(n_i\). The objective value is stored in a list structure, in which the first \(n_c\) components denote crisp values, and the last \(n_f\) components denote fuzzy values. For simplicity, we use f(P) to denote f(Pm) hereafter.

The adapted RSA

This section proposes an adapted RSA for the FMOPOP and conducts theoretical analyses to demonstrate its optimality and efficiency.

Algorithm description

Different from the RSA for the SPP illustrated in Subsection “Basic ideas behind the RSA”,we need to adapt the triggering condition and termination judgment for the FMOPOP. We first introduce a new definition of Pareto optimal ripple (POR):

Definition 9

(POR) If a ripple R reaches node n along path P, and the traveling paths of other ripples that reach n before R do not Pareto dominate P, then R is a POR at node n.

The new triggering condition is that if an incoming ripple is a POR at this node, it triggers a new ripple. Moreover, the termination judgment is modified as all ripples are inactive. Other notations used in the RSA are listed in Table 1.

Table 1 The notations in the RSA and their meanings
figure a
Fig. 5
figure 5

The flowchart of the RSA using the metaphor-based language

Algorithm 1 is the RSA for the FMOPOP. The flowchart in Fig. 5 uses metaphor-based language to illustrate the processes of the RSA step by step. After executing the RSA, the traveling paths of all PORs at the destination d are exactly all Pareto optimal paths of the FMOPOP. According to Line 3 of Algorithm 1, ripples spread out on the network described by the kth crisp weight. The ripple spreading speed v is chosen as the minimum value of the kth crisp weight, which can increase efficiency while maintaining optimality [39]. The new ripple triggering condition is Line 12, where \(n\notin P(i)\) is to avoid loops in paths, \(c_{E(i)n}^k\le R(i)<c_{E(i)n}^k+v\) denotes that ripple i is an incoming ripple at node n in this period, and IsPOR(i) is to judge whether ripple i is a POR or not. Algorithm  2 provides the pseudo code of determining whether path \(P_1\) Pareto dominates \(P_2\) using ranking method 2, in which f(P) denotes the objective value of P according to (19). Actually, we can adopt any fuzzy number ranking method. As long as the Pareto domination relation between two paths can be determined, the RSA can solve the FMOPOP.

figure b

Theoretical analysis

In this subsection, we prove that the traveling paths of PORs at each node are exactly all Pareto optimal paths to this node. Moreover, the time complexity of the RSA is calculated.

Lemma 1

In the RSA, the ith ripple that reaches a node travels along the ith shortest path.

Lemma 2

A Pareto optimal path \(P=\{s=n_1,\cdots ,n_m=d\}\) is formed by Pareto optimal sub-paths, i.e., \(\{n_1,\cdots ,n_i\}\) is Pareto optimal from s to node \(n_i\).

Lemma 1 states the basic optimization principle of RSAs, which directly comes from the theorems in [38]. And Lemma 2 comes from the theorems in [49]. Readers can get the detailed proof in these two papers.

Lemma 3

The traveling path P of a POR at node n is a Pareto optimal path from the source node s to n.

Proof

The proof is divided into two scenarios: (1) According to Definition  9, the traveling paths of all ripples that reach n before the POR do not Pareto dominate P. (2) If a ripple reaches n after the POR along path \(P_1\). We assume that ripples spread out on the network described by the kth crisp weight. According to Lemma 1, its kth objective value is greater than the kth objective value of P, i.e., \(f(P_1)(k)>f(P)(k)\). According to relation (16), it is impossible that \(P_1\prec P\). Therefore, Lemma 3 holds. \(\square \)

Theorem 1

After executing the RSA, the traveling paths of all PORs at a node are all Pareto optimal paths to this node. In other words, we can determine all Pareto optimal paths from the source node s to all other nodes within a single run.

Proof

According to Lemma 2, all the sub-paths of a Pareto optimal path are also Pareto optimal. According to Definition  9, the ripple traveling along a Pareto optimal path is assessed as a POR. Step 3.4 in Fig. 5 denotes that if an incoming ripple is a POR, it triggers a new ripple. All Pareto optimal paths are traveled by PORs at this node, i.e., the RSA does not miss any Pareto optimal path. Moreover, Lemma 3 guarantees that the traveling paths of PORs are Pareto optimal. Therefore, Theorem 1 is true. \(\square \)

Theorem 2

The time complexity of the RSA for the FMOPOP is \(O(n_w\times n_{a}\times n_{POR}^2)\), where \(n_{POR}\) is the average number of PORs at each node.

Proof

In the RSA, only active ripples need computational steps. There are \(n_n\) nodes and \(n_a\) arcs on the network, so each node has \(n_a/n_n\) arcs on average. Each active ripple takes average \(n_{at}\) time units to travel through the longest arc connected to its epicenter, and then it becomes inactive. During its active state, there are three parts of computational steps: (1) ripple spreading and comparing its radius with the arc’s length; (2) determining the objective value of its traveling path; (3) determining whether it is a POR at its visiting node. The first part executes every time unit, which takes \((2\times n_{at}\times n_a / n_n)\) steps. The second and third parts only execute when reaching a new node, and there are average \(n_{POR}\) ripples to be compared with on \(n_w\) objectives. These two parts take \(((1+n_{POR})\times n_w\times n_a / n_n)\) steps. There are \((n_n\times n_{POR})\) active ripples ever generated, so the whole process of the RSA takes \(n_{cs}\) computational steps:

$$\begin{aligned} n_{cs}= & {} n_n\times n_{POR} \times (2\times n_{at}+(1+n_{POR})\times n_w) \times n_a / n_n\nonumber \\= & {} (2\times n_{at}+(1+n_{POR})\times n_w) \times n_{POR}\times n_a. \end{aligned}$$
(20)

In large-scale problems, the number of PORs is much greater than \(n_{at}\) and 1. So the time complexity is calculated as \(O(n_w\times n_a\times n_{POR}^2)\). \(\square \)

Examples and comparative experiments

In this section, we present two numerical examples and some comparative experiments to demonstrate the capability and robustness of the newly proposed RSA.

Numerical examples

Example 1

We first consider an undirected network shown in Fig. 6, consisting of 5 nodes and 8 arcs. A crisp weight and a fuzzy weight described by a TFN are associated with each arc, as shown in Table 2. The crisp weight of an arc represents its length. The source node is node 1, and all other nodes are destination nodes. The aim is to find all Pareto optimal paths from node 1 to destination nodes.

Fig. 6
figure 6

The undirected network for Example 1

Table 2 The crisp and fuzzy weights of the network in Fig. 6
Fig. 7
figure 7

The ripple spreading motion at \(t=1\)

At \(t=0\), the first active ripple \(\hbox {R}_{1}\) is initialized at the source node s. The ripple spreading speed v is chosen as \(\min (c_{ij}^1)=32\).

At \(t=1\), \(\hbox {R}_{1}\) spreads out, and its radius becomes 32, as shown in Fig. 7.

Fig. 8
figure 8

The ripple spreading motion at \(t=2\)

At \(t=2\), \(\hbox {R}_{1}\) reaches node 3 and triggers a new ripple \(\hbox {R}_{2}\) (red, radius = 20). \(\hbox {R}_{1}\) reaches node 2 and triggers a new ripple \(\hbox {R}_{3}\) (yellow, radius = 2), as shown in Fig. 8.

Fig. 9
figure 9

The ripple spreading motion at \(t=3\)

At \(t=3\), \(\hbox {R}_{1}\) reaches node 4 and becomes inactive as it has visited all nodes connected to node 1, and we eliminate it from the network. \(\hbox {R}_{2}\) reaches node 2, node 4, and node 5 and also becomes inactive. \(\hbox {R}_{1}\) triggers \(\hbox {R}_{4}\) (blue, radius = 29) at node 4. \(\hbox {R}_{2}\) triggers \(\hbox {R}_{5}\) (green, radius = 20) at node 4 and triggers \(\hbox {R}_{6}\) at node 5 (black, radius = 0), as shown in Fig. 9. It is worth noticing that \(\hbox {R}_{2}\) reaches node 2, and \(\hbox {R}_{3}\) reaches node 3, but they do not trigger any ripple. Take \(\hbox {R}_{2}\) as an example: when it reaches node 2, its objective value is \(\{77, (9, 14, 27)\}\). It is Pareto dominated by the existing POR \(\hbox {R}_{2}\) at node 3, whose objective value is \(\{62, (3, 10, 20)\}\). So \(\hbox {R}_{2}\) is not a POR at node 3. According to Step 3.4 in Fig. 5, it does not trigger any ripple.

Fig. 10
figure 10

The ripple spreading motion at \(t=4\)

At \(t=4\), \(\hbox {R}_{3}\) reaches node 5 and becomes inactive. At node 5, \(\hbox {R}_{3}\) triggers \(\hbox {R}_{7}\) (red, radius = 14), and \(\hbox {R}_{4}\) triggers \(\hbox {R}_{8}\) (yellow, radius = 7), as shown in Fig. 10.

Fig. 11
figure 11

The ripple spreading motion at \(t=5\)

At \(t=5\), \(\hbox {R}_{5}\) triggers \(\hbox {R}_{9}\) (blue, radius = 30) at node 5. \(\hbox {R}_{4}\), \(\hbox {R}_{5}\), and \(\hbox {R}_{6}\) become inactive. \(\hbox {R}_{7}\) and \(\hbox {R}_{8}\) also spread out at \(v=32\), as shown in Fig. 11.

At \(t=6\), \(\hbox {R}_{7}\), \(\hbox {R}_{8}\), and \(\hbox {R}_{9}\) reach all nodes connected to node 5 and become inactive. Moreover, they are not PORs at their forward nodes. Up to now, there is no active ripple, and Example 1 is solved.

Table 3 All PORs at each node after solving Example 1
Table 4 All possible paths to each node and the corresponding cost

Table 3 lists all PORs at each node after solving Example 1. Table 4 lists all possible paths to each node and their corresponding values. Optimal 1 and Optimal 2 in Table 4 denote whether the path is Pareto optimal using the ranking methods 1 and 2 in the second section. After comparison, we observe that all the traveling paths of PORs at each node are exactly all Pareto optimal paths to this node. Moreover, the RSA determines Pareto optimal paths to all other nodes within a single run.

Example 2

The directed network of this example is shown in Fig. 12, consisting of 12 nodes and 23 arcs. Each arc has two crisp weights and two fuzzy weights, as shown in Table 5. Crisp 1 and Crisp 2 denote two crisp weights. Likewise, Fuzzy 1 and Fuzzy 2 denote two fuzzy weights, as shown in Table 5. The source node is node 1, and the destination node is node 12.

Fig. 12
figure 12

The directed network for Example 2

Table 5 The crisp and fuzzy weights of the network in Fig. 12
Table 6 The result of Example 2 solved by the RSA

Table 6 lists all Pareto optimal paths determined by the RSA. Example 2 demonstrates that the RSA also can provide complete solutions for the FMOPOP where the number of crisp and fuzzy weights is more than two.

Table 7 The results of the comparative experiments of the RSA and NSGA-II

Comparative experiments

This subsection conducts comparative experiments to evaluate the computational efficiency of the RSA on large-scale networks. To the best of our knowledge, there is no exact algorithm to solve the FMOPOP using various fuzzy number ranking methods. Given the complexity of calculating the distance between two fuzzy numbers, as shown in relation (11), it is difficult to adapt existing MOPOP algorithms to solve the FMOPOP. We choose one of the most classic multi-objective evolutionary algorithms, the NSGA-II, as the benchmark for its outstanding flexibility [18]. Each path is encoded in the same method as [50]. To adapt the NSGA-II, we combine the fast-non-dominated-sort with Algorithm 2, which can determine the Pareto domination relation of two paths. Moreover, the crowding-distance-assignment in the NSGA-II is only conducted on crisp objective values. The parameters of the NSGA-II are set up as follows: the population size is 100, the number of generations is 100, the crossover probability is 0.9, and the mutation probability is 0.15.

The test networks are randomly generated and contain at least one Hamiltonian cycle. The source and destination are randomly chosen. Each arc has \(n_c\) crisp weights uniformly distributed between 1 and 20 and \(n_f\) fuzzy weights described by TFNs. For each TFN \((a_1, a_1, a_3)\), \(a_1, a_2,\) and \(a_3\) are distributed between 1 and 20. To evaluate the efficiency of the RSA under different numbers of nodes and objectives, we set \(n_n\) in the range of 50 and 500 with the increment of 50 and \(n_c=n_f\in [1, 3, 5, 10]\). For each instance, we set \(n_a=4\times n_n\). There are 40 instances in total, and we conducted ten experiments for each instance. The results of the two algorithms are gathered after solving the same problem. Using the fast-non-dominated-sort [18], all non-dominated solutions are true Pareto optimal paths, and the others are false Pareto optimal paths. We record the running time (RT) in seconds, the number of Pareto optimal paths (APN), and the number of true Pareto optimal paths (TPN).

Table 7 presents the experimental data, from which one may conclude that:

  • The RSA has outstanding computational efficiency. The average RTs of the RSA and NSGA-II are 1.67 s and 28.69 s, which implies that the RSA solves the FMOPOP 17.18 times faster than the NSGA-II on average.

  • Due to the random features of the NSGA-II, its APN is no greater than that of the RSA. Moreover, the TPN of the NSGA-II is lower than the APN. It implies that the NSGA-II may miss some Pareto optimal paths or output some false Pareto optimal paths. On the contrary, the RSA finds all Pareto optimal paths.

  • With the increment of \(n_n\) and \(n_c\), the percentage of the Pareto optimal paths found by the NSGA-II decreases. The parameters of the NSGA-II should be readjusted according to the problem scale. Otherwise, it may lose computational efficiency or miss Pareto optimal solutions. Under different numbers of weights and nodes, the RSA finds all Pareto optimal paths within a reasonable computation time. What is striking about the RSA is its robustness, as it maintains optimality without readjusting any parameters.

Up to now, the existing studies have not dealt with the one-to-all FMOPOP, which aims to determine all Pareto optimal paths from the source node to all other nodes. We provide a comparative experiment of the one-to-all FMOPOP. We select one node as the source node from a network with 50 nodes and 200 arcs, and the others are destination nodes. Each arc has 10 crisp weights and 10 fuzzy weights. We can solve the one-to-all FMOPOP using the RSA within a single run. However, the NSGA-II needs to run 49 times to find the Pareto optimal paths from the source node to all other nodes. We ran the two algorithms on a one-to-all FMOPOP and recorded the TPN to each destination node. Fig. 13 presents the comparative results, in which the TPN of the RSA is shown in black, and the NSGA-II is in red. From the figure, the RSA finds all Pareto optimal paths to other nodes, while the NSGA-II misses some of them. Moreover, the RT of the RSA is 0.36 s, while the NSGA-II is 1752.11 s. For the FMOPOP with multiple destination nodes, the advantage of the computational efficiency of the RSA is further increased compared to other algorithms.

Fig. 13
figure 13

The TPN of the RSA and NSGA-II in the one-to-all FMOPOP experiment

From two numerical examples and comparative experiments, we can obtain the following observations:

  • The proposed RSA can find all Pareto optimal paths to all other nodes within a single run. Moreover, the RSA only finds true Pareto optimal paths.

  • The RSA maintains its optimality when the number of objectives is more than two.

  • Various fuzzy numbers and ranking methods can be adopted in the RSA on account of its flexibility.

  • We can use metaphor-based descriptions and figures to explain the detailed processes of the RSA, which is more comprehensible.

  • The RSA is an efficient and robust algorithm for the FMOPOP.

  • The main limitation of the RSA is that there must be at least one crisp weight. We need a network described by crisp weights to conduct the ripple relay race.

Conclusion

Networks with crisp and fuzzy weights are of interest within a wide range of scientific and industrial processes. In this paper, we define this optimization problem as the fuzzy multi-objective path optimization problem (FMOPOP). Each arc has multiple crisp weights denoted by positive real numbers and multiple fuzzy weights denoted by triangular fuzzy numbers (TFNs) or trapezoidal fuzzy numbers (TrFNs). We adopt two different methods to rank fuzzy numbers based on their fuzzy graded mean values and distances from the fuzzy minimum number. The main contribution of this paper is to propose an algorithm that can determine all Pareto optimal paths from the source node to all other nodes within a single run. To this end, a nature-inspired algorithm, the ripple-spreading algorithm (RSA), is proposed. The RSA simulates ripple spreading and triggering motions on a water surface. We adapt the triggering condition of new ripples to make the RSA solve the FMOPOP. We prove the optimality of the RSA theoretically and calculate its time complexity. Two numerical examples of the FMOPOP are provided. In the first example, we illustrate how the RSA solves the FMOPOP step by step using metaphor-based language and figures. The second example demonstrates that the RSA can solve the FMOPOP where the number of weights is more than two. Comparative experiments imply the high computational efficiency and robustness of the RSA for the FMOPOP.

In the future study, we want to extend the RSA to path optimization in vague, intuitionistic, and neutrosophic environments [26]. More ranking methods and interval-valued fuzzy sets could be adopted. Finally, the RSA can combine with some problem-specific operations to solve real-world applications.