## 3 The MOFOA-HS for the Multi-Objective F-MSRCPSP
### Schedule Generation Scheme
#### 3.2.1 Flexible Parallel Schedule Generation Scheme (FPSGS)  
The current partial schedule with an associated decision point is extended in each iteration based on the time period. Each iteration is a decision point at \(T_{t}\) with a set \(A_{t}^{f}\) of finished activities that have been completed up to \(T_{t-1}\), a set \(A_{t}^{a}\) of active activities that have already started the execution but are not yet completed at \(T_{t}\), as well as a set \(A_{t}^{e}\) of eligible activities that have not yet started and whose predecessors have been completed up to \(T_{t-1}\). For each activity \(A_{j}\), \(\underline{p}_{j}\) is the minimum cost resource combination \(p\) of \(A_{j}\); \(\underline{q}_{jk}\) and \(\overline{q}_{jk}\) represent the lower and upper usage bounds, respectively; \(q_{jkt}\) denotes the resource quantity; \(\rho_{j}\) indicates the current allocated resource combination; \(w_{jkt}\) expresses the completed requirement; \(\xi_{jkt}\) shows the remaining requirement; and \(\varphi_{kt}\) means the set of current leftover resources. In addition, \(\xi_{pik}\) states the requirement of \(S_{k}\) that \(p\) supplies per time period. After each operation, variables and sets are constantly updated. The pseudo code of the FPSGS is depicted as in Algorithm 1. Step 1: Initialize \(T_{t}\), \(A_{t}^{e}\), \(A_{t}^{a}\), \(A_{t}^{f}\). Step 2: Execute the flexible resource profiles' parallel schedule. Judge whether all activities have been completed: if yes, the resource scheduling plan of all activities is completed; if not, continue to execute the flexible resource profiles' parallel schedule at the current time period. Step 3: Update \(A_{t}^{e}\). Judge whether all predecessor activities of \(A_{j}\) in sequence of \(\lambda\) have been completed. If so, move \(A_{j}\) from \(\lambda\) to \(A_{t}^{e}\); if not, stop judging and go to Step 4. Step 4: Continue active activities. In order to prevent the execution interruption caused by resource preemption during the activity, the basic principle of resource allocation is conservative in this step. Therefore, the operation of this step is to remain constant or delete part of the resources in the resource combination \({p^{\prime}}_{j}\) of the last time period. The \(A_{j}\) will continue the \({p^{\prime}}_{j}\). In particular, there are some activities that adopt the GSS. The \(\xi_{jkt}\) is less than the \(\xi_{pik}\) of \({p^{\prime}}_{j}\), and the quantity of \({p^{\prime}}_{j}\) is greater than its lower usage bound, which means that the activity could be completed with fewer resources. For the resource of these activities, it is necessary to recombine the \(p_{j}\): Firstly, obtain the set \(\Omega\) that consists of all possible combinations whose number of resources is larger than \(\underline{q}_{j}\) from \(p_{j}\). Then, eliminate the combinations whose \(\xi_{pik}\) is less than \(\xi_{jkt}\) from \(\Omega\) with GSS. Finally, obtain \(p_{j}\) from the \(\Omega\). Move the activity from \(A_{t}^{a}\) to \(A_{t}^{f}\) if the remaining requirement is met by \(p_{j}\). Step 5: Start eligible activities. Use the remaining available resources to start the activity with \(\underline{q}_{j}\). For activities that adopt the GSS, judge the size relationship between the quantity of \(\varphi_{kt}\) and \(\underline{q}_{j}\). If \(n_{\varphi_{kt}}\geq\underline{q}_{j}\), obtain the set \(\Omega\) that consists of all possible combinations whose resource number is equal to \(\underline{q}_{j}\) from \(\varphi_{kt}\), then extra allocate \(p_{j}\) from \(\Omega\) to the activity. If the NGSS is adopted, allocate \(\underline{p}_{j}\) to \(A_{j}\) after ensuring that all resources of \(\underline{p}_{j}\) are available. Update related sets and variables, and move \(A_{j}\) from \(A_{t}^{e}\) to \(A_{t}^{a}\) if \(p_{j}\) is not empty. Step 6: Utilize leftover resources. After completing the resource allocation in Step 4 and 5, some eligible activities are added to the schedule, and all the active activities continue to be executed.