Abstract
Differential pricing of trains with different departure times caters to the taste heterogeneity of the time-dependent (departure time) demand and then improves the ticket revenue of railway enterprises. This paper studies optimal differential pricing for intercity high-speed railway services. The distribution features of the passenger demand regarding departure times are analyzed, and the time-dependent demand is formulated; a passenger assignment method considering departure periods and capacity constraints is constructed to evaluate the prices by simulating the ticket-booking process. Based on these, an optimization model is constructed with the aim of maximizing the ticket revenue and the decision variables for pricing train legs. A modified direct search simulated annealing algorithm is designed to solve the optimization model, and three random generation methods of new solutions are developed to search the solution space efficiently. Experimental analysis containing dozens of trains is performed on Wuhan-Shenzhen high-speed railway in China, and price solutions with different elastic demand coefficients () are compared. The following results are found: (i) the optimization algorithm converges stably and efficiently and (ii) differentiation is shown in the price solutions, and the optimized ticket revenue is influenced greatly by , increasing by 7%–21%.
1. Introduction
Intercity high-speed railways serve passengers that are located in densely populated metropolitan areas or city clusters. They feature high departure frequencies and high speeds, not less than 250 km/h. Since 2016, the ticket prices of part high-speed trains have been floated within certain limits on several lines (Beijing-Shanghai high-speed railway and Hangzhou-Shenzhen railway) because pricing power has been devolved to the railway transport enterprise in China. However, train prices of most high-speed lines in China are still unitary for the same train leg and fixed now, which have seriously affected the market competitiveness of intercity high-speed railways. Hence, more theoretical methods are needed to guide pricing. According to the passenger characteristics in the railway transportation market, optimal pricing methods for intercity high-speed railways are studied in this paper, which are of great significance for improving railway operation and management mechanisms and increasing the economic revenue of railway transportation enterprises.
Determining the optimal pricing of intercity high-speed railways is a revenue management problem, and revenue management methods have been studied for decades and widely applied in the railway industry in Europe and Japan [1, 2]. Researches related to revenue management have mainly focused on air transport industry, and revenue management methods for intercity high-speed railways are under-researched. However, there are great differences between airlines and high-speed railways. For example, few intermediate stops are included for airline services, whereas many stop stations are dotted in train lines. Hence, the pricing problem for high-speed railways is much more complicated.
Considering the complexity of pricing problem for high-speed railways, fewer researchers studied optimal pricing based on a railway network scale or multiple trains. However, all trains in an intercity high-speed railway network form an integrated passenger transport system. Multiple trains operate together to serve passengers with different departure times, and passengers make choices between trains under capacity constraints. Hence, the optimal pricing of intercity high-speed railway services should be studied on a network scale.
The passenger demand is premise or basis of optimal pricing problems. Based on historical ticket reservation data, the passenger demand for different departure times in a day shows fluctuation rules, and the rules are stable over a short period. Such a demand can be called time-dependent demand. The time-dependent demand has been studied by various researchers [3–6], and a train timetable or line planning has been evaluated and optimized based on the passenger choice behaviors with different departure times. However, time-dependent demand has been under-researched in the optimal pricing studies of intercity high-speed railways.
Passengers are usually characterized by a high level of taste heterogeneity considering their different preferences for scheduling and pricing [7, 8]. Time-dependent demand has heterogeneous behavior preferences for trains with different departure times. Similarly, trains with different departure times serve passengers with different preferences. Hence, train legs with different departure times can be priced differently. Differential pricing of trains caters to the taste heterogeneity of the time-dependent demand and will improve the ticket revenue of railway enterprises.
In light of the above, this paper proposes an optimal differential pricing method for intercity high-speed railway services considering the time-dependent demand and passenger choice behaviors under capacity constraints. The main contributions are as follows: (i) time-dependent demand features are analyzed and formulated, and a multinomial logit model is applied to predict the passenger choice behaviors between trains considering their departure times; (ii) an optimal differential pricing model is constructed considering capacity constraints and time-dependent demand; (iii) a modified direct search simulated annealing algorithm is developed to solve the optimization model, and three random generation methods of new solutions are designed to search the solution space efficiently, and a passenger assignment method by simulating the ticket-booking process is proposed to evaluate the price solutions; and (iv) experimental analysis is performed to prove the stability and efficiency of the algorithm convergence, and price solutions with different elastic demand coefficients are compared to verify the feasibility of the optimization method.
In Table 1, the main notations used in the paper are listed in order of appearance. The remainder of the paper is organized as follows. A review of the literature on revenue management in the railway industry is presented in the next section. In Section 3, the time-dependent demand is analyzed and formulated. In Section 4, a travel choice model considering departure periods and capacity constraints is proposed. In Section 5, an optimal differential pricing model is constructed and a modified direct search simulated annealing algorithm is developed to solve the optimization model. In Section 6, a case study is conducted on Wuhan-Shenzhen high-speed railway in China to illustrate the optimized method and verify its feasibility. In Section 7, the conclusions and future research directions are presented.
2. Literature Review
In recent years, with the development of high-speed railways, more and more scholars have paid attention to the pricing problems in the high-speed railway industry [9–11]. However, most studies have considered only one train.
Zheng and Liu [12] developed a ticket fare optimization model for one high-speed train and determined the number of fare grades and the price of each fare grade in the sale horizon. Hetrakul and Cirillo [8] studied the revenue optimization problem considering the pricing and seat allocation jointly. Multinomial and latent class models were used to explain the ticket purchase timing of passengers, but only one train was considered in the optimization model. Fransiscus [13] proposed a practical revenue management method of railways including three stages. Also, only one train was considered in this method.
Qin et al. [14] used prospect theory to construct a differentiated pricing model under elastic demand and applied a simulated annealing algorithm to solve the model, and eight trains are tested. Some researchers [15, 16] jointly studied pricing and seat allocation optimization problems including several trains, and a multinomial model was used to analyze the passenger choice behaviors between trains. Hu et al. [17] also proposed a joint optimization method of pricing and seat allocation in high-speed rail networks and tested a large-scale instance.
In the above studies, time-dependent demand was not considered deeply. Usually, ticket fares and booking days were taken as factors in the choice models, and deterministic demand using historical data and stochastic demand following a Poisson process and elastic demand were assumed [18–20]. Actually, time-dependent demand had already been studied in some passenger transportation organization optimization problems. For example, time-dependent demand was considered in the train timetable optimization by Kaspi and Raviv [3] and Niu et al. [4] and also used in the line planning problem by Su et al. [5]. Xu et al. [6] designed passenger assignment methods for high-speed railways based on time-dependent demand. Nevertheless, time-dependent demand regarding the pricing problems of high-speed railways has not been studied sufficiently.
Discrete choice models were applied to analyze passenger choice behaviors for the above pricing problems. There is only once chance in the above studies when passengers were assigned to trains by the discrete choice models. Passengers were accepted to aboard trains if there were residual capacities for their choices. Otherwise, they were refused to aboard trains. However, the choices are not unique; if there are no residual capacities for a choice, passengers can be assigned to other trains with residual capacities again, which means passengers have several chances to make choice. This is a passenger assignment problem of railways. Passenger assignment problems have been widely studied for urban transit systems [21–23]. For example, Sumalee et al. [24] proposed a dynamic transit assignment model that had an explicit seat allocation process. Hamdouch et al. [25] proposed a schedule-based transit assignment model with travel strategies and loaded passengers on a first-come-first-served basis. However there are big differences between the urban transit systems and high-speed rail systems, which have been analyzed in detail by Su et al. [26]. Considering the features of high-speed rail systems, Su et al. [26] proposed a schedule-based passenger assignment method for high-speed rail networks by simulating the ticket-booking process, which can be used for a reference in this article.
As previously stated, the research status of the optimal pricing of railway revenue management can be summarized as follows: (1) many researchers have focused on the optimal pricing problem of one train in the sale horizon, and optimal differential pricing of multiple trains has not been studied extensively; (2) the passenger demand is generally formulated as elastic demand or stochastic demand in the sale horizon, and the time-dependent demand deserves more attention in revenue management research; (3) discrete choice models were widely applied to assign passengers and passenger assignment methods considering the features of high-speed rail systems deserve more attention; and (4) for large-scale instances, the convergence efficiency of the solution algorithm need to be improved. The comparison of our research with the literature in pricing problems of high-speed railways is shown in Table 2.
Consequently, this paper aims to fill the gap by proposing an optimal differential pricing method for intercity high-speed railway services, considering the time-dependent demand and passenger choice behaviors under capacity constraints.
3. Time-Dependent Demand
In this section, we analyze the fluctuation rules of passenger demands with different departure times in a day and determine the formulation of the time-dependent demand. The analysis is based on the historical ticket reservation data of the Wuhan-Shenzhen railway in the first half of 2016. This railway is located in Central China and South China with a length of 1171 km, 18 stations, and a design speed of 350 km/h, as shown in Figure 1. The passenger demand along this railway is great. With high departure frequency, passengers can decide their departure time according to their will. The passenger demand for different departure times in a day shows fluctuation rules.

The passenger demand is analyzed statistically in dimensions of departure times and days of a week. The average passenger demand per hour in each day of one week is calculated, and the results of some origin-destination (O-D) pairs (Wuhan-Guangzhounan, Changshanan-Shenzhenbei, Changshanan-Guangzhounan, and Guangzhounan-Shenzhenbei) are shown in Figure 2.

(a)

(b)

(c)

(d)
According to Figure 2, passenger demand floats along departure times and shows some rules as follows:(i)The “peaks and valleys” of the passenger demand occur at different departure times in one day and form some variation rules.(ii)The variation rules are similar for each day of week for an O-D pair.(iii)The variation rules are different for different O-D pairs.
The variation rules in the above analysis reflect some time-dependent features of passenger demand. Thus, passenger demand with the above variation rules can be called time-dependent demand. For the sake of description, time-dependent demand can be formulated by calculating the probability of passenger demand choosing different departure times using statistical regression methods based on historical ticket reservation data, which are defined in detail as follows.
The service time horizon is divided into periods by hours; for example, [6:00, 6:59] is called period 6, [7:00, 7:59] is called period 7, and so on. Let be the set of all O-D pairs. The passenger demand of O-D pair in a day is denoted as , , and the probability of the passenger demand departing in the th period is denoted as , so the passenger demand departing in the th period can be calculated as follows:
Therefore, equation (1) is the formulation of the time-dependent demand and period is the expected departure hour of passenger demand .
4. Passenger Assignment considering Departure Periods and Capacity Constraints
The analysis of passenger assignment aims to calculate the number of passengers on each train more accurately and then to evaluate the differentiated pricing of trains. In this section, a passenger assignment method is designed by simulating the ticket-booking process to assign passengers to trains with limited capacities. In addition, a multinomial logit model is adopted to determine the choices between trains for time-dependent demand.
A passenger assignment method can be constructed by simulating ticket-booking process because passengers’ choices of trains are determined in this process [26]. As the ticket-booking process continues, some train legs become fully occupied and the alternative trains for the subsequent passengers’ booking requests change. Hence, the ticket-booking process is partitioned into several stages and the passenger assignment is conducted stage by stage. In each stage, the alternative trains are constant for the unassigned passengers. When all the time-dependent demands are assigned or there is no train with residual capacity to satisfy the unassigned passengers, the passenger assignment process is over.
For ease of presentation, some notations are expressed as follows. Let be the set of all stations. The train set is expressed as . For train , is the number of stop stations and is the sequence of stop stations (). The railway line section between stop station and stop station () for train is called one leg, denoted as . The set of all the legs of train is denoted as . For and, leg is covered by leg on the line, denoted as . The capacity of train is denoted as . The travel time and price of leg of train are denoted as and , respectively. The departure hour of train is denoted as . The set of trains stopping at stations and is expressed as .
In the passenger assignment method, the ticket-booking process is partitioned into stages. In the stage, , the available train set is denoted as and the accepted passenger demand is denoted as for O-D pair and period . The accepted passenger demand in the whole ticket-booking process will not exceed the real passenger demand, as shown in the following equation:
The seat allocation optimization problem is also quite complex for multiple trains, which is not considered in this paper. Hence, we set the same accepted ratio (the proportion of the accepted passenger demand to the total demand of each O-D pair) for all O-D pairs, denoted as for the stage in the ticket-booking process. Then, we have
Passenger choices between trains are influenced by many factors, and in this paper, we mainly consider departure time deviation, travel time, and ticket price. Then, according to the multinomial logit model theory widely used in the studies [15, 17], the probability to select train for passenger demand is denoted as , which is calculated as follows:where is the generalized travel cost; is the absolute value of departure time deviation between the expected departure time period and the real departure time period ; and are time value parameters; and is a positive scaling factor. If the departure time of train is not in period , then , which results in more travel cost for passenger demand . In this way, departure time preferences of passengers are considered in the passenger assignment method.
At the end of the stage, the number of passengers on leg is denoted as , . Then, the following expressions are satisfied:
Equations (7) and (8) calculate the passengers on each train leg. Equation (9) guarantees the passengers on each train leg will not exceed the train capacity at the end of each phase in the ticket-booking process.
Based on the above formulation, the passenger assignment method is constructed by simulating the ticket-booking process as shown below: Step 0: calculate the time-dependent demand , , , by equation (1). Let phase . Step 1: let For , construct the available train set , . If all , , the simulation is over, and let ; otherwise, go to Step 3. Step 2: for , , , calculate the probability by equations (5) and (6). Step 3: calculate the accepted ratio . Let where represents the number of passengers’ booking requests for leg in the mth stage. Combining equation (3) and (7)–(9), we have Besides, the accepted passenger demand until the current phase cannot exceed the total passenger demand; then, we have It is feasible for satisfying equation (11) and (12), so let Step 4: calculate the accepted passenger demand , , , by equation (3). Calculate passenger demand on each train leg , , by equations (7) and (8). If , the simulation is over, and let ; otherwise, go to Step 3.
Based on Step 0 to Step 4, the ticket-booking process is simulated and passengers are assigned to each train leg. In brief, the above passenger assignment method considering departure periods and capacity constraints is denoted as , which will be used to evaluate the differentiated pricing of trains in the following sections.
5. Optimal Differential Pricing Model and Solution Algorithm
An optimal differential pricing model for multiple trains is constructed with the objective of maximizing the ticket revenue, and a heuristic optimization algorithm is designed to solve the model.
5.1. Model Formulation
The price of each train leg denoted as , , , is a decision variable and is optimized collaboratively in the optimal model. Ticket prices can influence the passengers’ choice between trains; however, if the price is too high, some passengers may consider other alternative modes, such as intercity automobiles. In other words, ticket prices can influence whether passengers choose trains; such a demand is called the elastic price demand. An exponential function is used to formulate the total passenger demand of each O-D pair regarding ticket prices as follows:where is the average price of leg for all trains. If the average price is equal to , the elastic demand is . and can be determined based on historical ticket reservation data. is an elastic coefficient. The bigger is, the greater the demand elasticity becomes.
For a given price solution, the average price of leg for trains departing in the th period can be calculated simply as follows:
The probability of passengers departing in the th period is ; then, the average price of leg for all the trains perceived by passengers can be calculated as follows:
Based on the above description, the optimal differential pricing model is expressed as follows:s.t.where is the ticket revenue, which can be calculated by the method, and and represent the lower limit and upper limit of the price of leg , respectively.
5.2. Solution Algorithm
The number of decision variables in the above optimization model is great. Hence, we need to develop an algorithm to solve the combinational optimization problem with high dimensions. The simulated annealing (SA) algorithm converges globally and is used widely in engineering practices. Ali et al. [27] proposed the direct search simulated annealing (DSA) algorithm, which improved the calculation efficiency and accuracy of the DSA algorithm compared with the SA algorithm. To improve the convergence stability and efficiency for solving the optimization problem with high dimensions, a modified DSA (MDSA) algorithm is proposed.
5.2.1. Solution Generation
Three methods of generating new solutions are included in the MDSA algorithm. The first one generates a new solution randomly in a search space based on Cauchy distribution with a variable scale parameter [28], called GNS 1. The second one generates a new solution by selecting a certain number of solutions randomly from the solution set and combining them with the current optimized solution [27], called GNS 2. The third one generates a new solution by searching randomly around the current optimized solution based on the standard normal distribution [28], called GNS 3.
For ease of description, the number of decision variables is denoted as . is the column vector of the decision variables, which is also called a solution vector. is the column vector of the lower limits of the decision variables. is the column vector of the upper limits of the decision variables. Then,
All the solution vectors satisfying equation (19) form a search space of solutions, denoted as . Based on the constraints in the optimization model, the solution vectors in are feasible solutions. is used as the evaluation function in the MDSA algorithm. Let . solutions are generated randomly in search space and form an initial solution set . In set , the best solution is and the worst solution is . The evaluation function values are denoted as and , respectively.
Three methods of generating new solutions are described in detail below.
(1) GNS 1. A new solution is generated randomly in search space based on Cauchy distribution with a variable scale parameter. The Cauchy distribution probability density function centered at the origin is shown as follows: where is a variable scale parameter determined by equation (21) based on the number of cooling iterations in the MDSA algorithm, which leads to searching in a wide range early and on a small scale later in the optimization process.where is the number of cooling iterations.
New solution is generated by the following:where symbol “” in equation (22) represents the Hadamard product. is a column vector with dimensions generated randomly by equations (20) and (21), and is a unit column vector with dimensions. represents the absolute value function. is a random number generated randomly in section based on the uniform distribution.
(2) GNS 2. solutions are selected randomly from the solution set, denoted as . Then, these solutions are combined randomly with the current optimized solution . Each element () in new solution is generated by the following:where is a random number generated randomly in section based on the uniform distribution. makes up a proportion of the number of solutions in the solution set. This method helps greatly in improving the convergence efficiency and stability.
(3) GNS 3. A new solution is generated by searching randomly around the current optimized solution based on the standard normal distribution as follows:where symbol “” in equation (25) presents the Hadamard product. is an adjustment factor of the search radius, and is an adaptive factor. is a unit column vector with dimensions. All of the above variables are calculated using equations (26)–(28).where is the current temperature. and are random numbers generated randomly in section and , respectively, based on the uniform distribution. is an adaptive probability and takes 0.1 generally. is a column vector with dimensions generated randomly based on the standard normal distribution.
New solution generated by equation (25) may not be in search space , and, in this situation, each element () of new solution is amended by
5.2.2. MDSA Algorithm Structure
In the MDSA algorithm, the initial temperature satisfies a requirement that new solutions are accepted in the early stage with a probability greater than the desired value (between 0.8 and 0.9). The refresh method of refers to the paper by Ali et al. [27]. The length of Markov chain is calculated by equation (30), which is the maximum number of inner iterations.
The acceptance probability of new solution is determined by the following equation:
Let .and are given positive real numbers. If , which means does not change or significantly change after a certain cooling, the MDSA algorithm is judged to enter a local extremum. The structure of the MDSA algorithm is shown in Figure 3.

In the early stage () of MDSA algorithm, new solutions are generated mainly by GNS 1, which can expand the search range and improve the coverage of solution set in search space . In the later stage () of MDSA algorithm, new solutions are generated mainly by GNS 2, which can improve the convergence efficiency and stability. GNS 3 can avoid the MDSA algorithm falling into a local extreme too early.
6. Numerical Experiments
In this section, experimental analysis is performed on Wuhan-Shenzhen high-speed railway in China, and price solutions with different elastic demand coefficients are compared.
6.1. Sample Setting
In the case study, 51 trains with different departure times and stop patterns are selected. 8 stations, including Wuhan, Yueyangdong, Changshanan, Hengyangdong, Chenzhouxi, Shaoguan, Guangzhounan, and Shenzhenbei (numbered from 0 to 7), are shown in Table 3. Only 11 O-D pairs are involved because passenger demand of other O-D pairs is low and insufficient to study. The historical ticket reservation data in the first half of 2016 are used. The fixed price and the relevant demand of each O-D pair are shown in Table 3. The total demand under fixed prices is 41,759 and ticket revenue . The upper and lower limits of the price of each leg are shown in Table 3.
The solution dimension and (the number of solutions in set ). In the early stage of the algorithm, (the length of the Markov chain). and are the convergence precisions. Time value coefficients and .
6.2. Optimization Results
9 different elastic coefficients are tested, and 30 experiments are performed for the MDSA algorithm with each elastic coefficient. The ticket revenue (optimization objective) of the optimized solution is denoted as . The test obtains 30 optimized solutions for each elastic coefficient, and the biggest ticket revenue of these solutions is selected, called the best . The average ticket revenue of these solutions is also calculated, called the average . The achieved proportion of the best after 200 cooling iterations is denoted as AP.
The statistical results of for each elastic coefficient are shown in Table 4, where the last column is the increase in the proportion of the best compared with . The relative standard deviation (RSD) of is no more than 0.10%, illustrating the stability of the convergence of MDSA algorithm. Over 98% of the best has been achieved after 200 cooling iterations, illustrating the efficiency of the convergence of MDSA algorithm. The average number of cooling iterations (ANCI) is less than 900 due to high convergence precisions ( and ). The convergence details of the best optimized solutions are shown in Figure 4.

According to Table 4, when (), the best ticket revenue increases as the elastic coefficient becomes greater (smaller), which is also shown in Figure 5. The best increases by 7%–21% compared with . Hence, the optimal differential pricing method for multiple trains can improve ticket revenue, and the ticket revenue is greatly influenced by the elastic coefficients.

For the limited space, the best optimized solutions of some OD pairs with and are shown in Table 5. Based on Table 5, the train legs are priced differentially. Most prices are approximate to the upper limits with , illustrating that the ticket revenue can be increased by raising the prices in this situation. In contrast, most prices are approximate to the lower limits with , illustrating that the ticket revenue can be improved by reducing the prices in this situation. Some train leg prices that are influenced greatly by time-dependent demand are not consistent with this tendency.
The elastic demand and unsatisfied demand after passenger assignment of the best optimized solution for each are shown in Table 6. From Table 6, we can see that the elastic demand increases with greater except for . Passengers are less sensitive to the prices when decreases, and hence the prices in the optimized solutions increase. The increase of prices results in less passenger demand. However, prices cannot be higher than the upper limits. When decreases to 0.4 and 0.2, most prices are very close to the upper limits. Thus, there are no big differences for prices with and . In this situation, according to equation (11), the elastic demand for is greater than that for .
7. Conclusion and Future Research
An optimal differential pricing method for intercity high-speed railway services is proposed in this paper. To analyze passenger choice behaviors between trains, a time-dependent demand formulation is determined based on the historical ticket reservation data, and a passenger assignment method considering departure periods and capacity constraints is constructed by simulating the ticket-booking process. Combining these methods, an optimization model is built with the aim of maximizing the ticket revenue and the decision variables for pricing train legs.
A modified direct search simulated annealing algorithm is designed to solve the optimization model, and three random generation methods of new solutions are designed to search the solution space efficiently. The passenger assignment method is used to determine the number of passengers on each train and then to evaluate the price solutions.
A case study containing dozens of trains is performed on Wuhan-Shenzhen high-speed railway in China. The results illustrate the stability and efficiency of the convergence of the algorithm. The ticket revenue which can be improved greatly by pricing train legs differently increases by 7%–21% for different elastic demand coefficients.
The optimization method in this paper can be extended to the optimal pricing problem in the sale horizon. Then, there are two dimensions of passenger choices: the first one being to choose the ticket-booking time and the second one being to make a selection from multiple trains. To solve this problem, data about the demand distribution in the sale horizon are needed to analyze passenger choice behaviors, and a more efficient algorithm is crucial for this problem considering thousands of decision variables.
Data Availability
The data used to support the findings of this study are included in the supplementary information file.
Conflicts of Interest
The authors declare that they have no potential conflicts of interest with respect to the research, authorship, and/or publication of this article.
Authors’ Contributions
HS was responsible for the idea, design, and manuscript preparation. SP prepared the data and numerical experiments. LD was responsible for the structure of the article. WX and QZ revised and polished the manuscript. All the authors reviewed the results and approved the final version of the manuscript.
Acknowledgments
This study was supported by the High-Level Personnel Research Start Foundation of Wuyi University (2017RC51), the National Natural Science Foundation of China (71901093), the Foundation of China Academy of Railway Sciences (RITS2021KF07), and the Natural Science Foundation of Hunan Province (2020JJ5115).
Supplementary Materials
In the data file (train timetable.txt), the first line is made up of headings for the columns of data that follow. There are 16 columns in the data file. Each column is described as follows: column 1—train number; column 2—the number of the station to get on; column 3—the number of the station to get off; column 4—the departure time of the station to get on; column 5—the arrival time of the station to get off; column 6—train ID number; column 7—train capacity; column 8—the number of the origin stop; column 9—the number of the terminal; column 10—the origin stop; column 11—the terminal; column 12—the departure time of the origin stop; column 13—the station to get on; column 14—the mileage between the station to get on and the origin stop; column 15—the station to get off; and column 16—the mileage between the station to get off and the origin stop. (Supplementary Materials)