An example of a transportation network is shown in 
Figure 1. The assigned trucks depart from the logistics company to transport construction waste between the CSs and DFs. Considering the distance and the kind of waste handled by the DFs, one truck may visit different DFs (see Vehicle 2 in 
Figure 1). Finally, the trucks return to the company from the final DF they visit. Note that in the construction scenario, after a truck transports waste from a CS, it will go to a DF directly and will not go to other CSs for further transportation, so we do not need to consider the load of trucks as long as the capacity of the trucks is large enough to carry the waste from a CS [
13]. Furthermore, the aim of our study is to develop a one-day vehicle dispatch schedule, and therefore, the set of CSs that has waste to transport will be different; thus, the model will be re-run, and the vehicle dispatch schedule will be generated and implemented on the next day. In summary, the decision in this transportation system is to choose the optimal service sequence to deliver construction waste at the lowest cost. On the premise that the total waste at each construction site is transported to DFs and the working time of each truck does not exceed 8 h, the overall goal of the transportation system is to minimize the transportation cost (including fixed costs and fuel consumption costs) of the logistics company and the disposal cost that contractors need to pay. The main symbols used in our model are listed in 
Table 3.
  2.1. Integer Programming Model
Consider the system with a single logistics company and multiple CSs and DFs. We use set  to denote the set of CSs and set  to denote the set of DFs. The logistics company has different trucks, denoted by . We use node 0 to denote the logistics company. Different trucks serve different CSs, and we use  to denote the CSs that truck  can serve. We use set  to denote the DFs that can handle the construction waste from CS . According to  and , we can enumerate all the traveling sequences of truck . For example, a sequence can be . Note that the first and last node in a sequence must be node 0 and that the CSs and DFs alternate. We define  to denote the set of travel sequences . The cost generated by route  is denoted by , including the transportation cost, fixed cost, and disposal cost. We use the binary variable  to indicate whether route  visits CS . We use binary decision variable  to indicate whether route  is selected. Thus, the following integer programming model is formulated:
Objective function (1) minimizes the total cost. Constraint (2) indicate that each CS must be visited once, i.e., the construction waste in CSs must be transported. Constraint (3) guarantees that each truck can conduct at most one route per day. Constraint (4) gives the domain of decision variables.
  2.2. Generating the Route Space
The key parameter in [M1] is 
. However, 
 could be a very large set if we enumerate all possible routes of truck 
, resulting in a large number of integer decision variables. For example, if truck 
 can serve 5 CSs, it will have 325 route sequences in terms of CSs (the number 325 is obtained by calculating the permutations 
). The simplest case is that each CS has a unique DF to send its construction waste. If only one CS has two optional DFs, there will be 650 route sequences, and if two CSs each have two optional DFs, there will be 1300 route sequences. We must therefore generate 1300 integer decision variables to choose the optimal route for truck 
. As the number of DFs increases, the number of permutations increases exponentially. As a result, the efficiency of solving [M1] is greatly reduced. Therefore, the process of generating 
 needs to fully consider the characteristics of the problem to reduce the number of integer decision variables. To simplify notation, we define the following parameters: (1) 
, the loading and unloading time; (2) 
, the transportation time between CS 
 and DF 
; (3) 
, the maximum number of CSs that can be served within one route sequence. From the problem description, we know that if a truck visits 
 CSs, it will travel 
 routes and load and unload 
 times. We define
        
The value of 
 should satisfy the following formula because the total working time of each truck cannot exceed 8 h per day:
Then the maximum 
 can be obtained by Equation (7):
Taking advantage of 
, we can generate the sequence of CSs with the following Algorithm 1, which contains two typical recursive algorithms for generating combinations and permutations [
22]. Note that the sets are converted into arrays in Algorithm 1 for the needs of programming.
        
| Algorithm 1. CSs sequence generating algorithm | 
| Initialize: The maximum number of CSs that can be served by trucks | 
| //we use  to store the generated permutations | 
| //we use  to store the generated permutations of combinations | 
|  | 
| //define the function for generating permutations | 
| function Heap (, ) | 
| if  then | 
|  | 
| else | 
| Heap () | 
| for ) | 
| if  then//determine if n is even or odd | 
| swap ) | 
| else | 
| swap ) | 
| end if | 
| Heap () | 
| end for | 
| end if | 
| return | 
|  | 
| //define the function for generating combinations | 
| function Combination () | 
| if  then | 
| //now we have the final combination U and then we need to generate permutations based on U | 
| ) | 
|  | 
| else | 
| for  will count the number of elements in array S | 
| Combination ) | 
| end for | 
| end if | 
| return | 
|  | 
|  | 
| for) | 
| for) | 
| //The input {} means an empty array defined for choosing elements from S according to n | 
| Combination () | 
| //now we have all the permutations of CSs | 
| end for | 
| end for | 
|  | 
| for) | 
| for | 
|  | 
| end for | 
| for | 
| if  then | 
|  | 
| end if | 
| end for | 
| Output://The permutations of CSs of truck s | 
Next, we need to insert DF  and node 0 into  to obtain the final . To simplify notation, we define  to denote the total number of CSs in each  and use  to denote the sequence ID of CSs in . For example,  could be , and  indicates . As our goal is to complete the transportation task at the minimum cost, we can solve [M2--] for the optimal choice of DFs for each . The binary decision variable  indicates whether DF  is selected to dispose of the waste from CS , . The parameters  and  represent the transportation cost and transportation time between CSs and DFs. Parameter  represents the disposal cost in DF .
[M2-
-
]
        
        subject to
        
Objective function (8) minimizes the cost of transporting and disposing of construction waste between CS ,  and DF  plus the cost of transporting and disposing of construction waste between the final DF and the logistics company (note that we do not consider the cost between the logistics company and the first CS because it does not affect the choice of DF). Constraint (9) restricts that each construction waste in each CS must be transported to one DF. Constraint (10) is the working time limit. Constraint (11) gives the domain of the decision variables. By solving [M2--], we can obtain the optimal choice of DFs for each route. By solving all the [M2--] for , we have the final route space .