## 3 Resolution Approaches
### Exact Approach
Constraints (2) set the binary variable \(Z_{irq}\) to 1 if machine \(i\) uses the \(q^{\prime}\)th resource of type \(r\) for processing some jobs, and sets it to 0 otherwise. According to these constraints, if the \(q^{\prime}\)th resource of type \(r\) is used by job \(j\) (\(G_{j\eta}=1\)), then this job (\(j\)) can be assigned to machine \(i\) (\(Y_{ij}=1\)) if this resource (\(r\),\(q\)) is used by and assigned to machine \(i\) (\(Z_{irq}=1\)). Constraints (3) use variable \(Z_{irq}\) to determine the number of transfers needed for each resource (\(NTR_{\eta q}\)). Constraints (4) and (5) ensure that each resource is transferred to each machine at most once. In other words, if a resource is transferred to a machine, then it can be transferred from this machine to another machine only after finishing its work on the first machine, i.e., after finishing the processing of all jobs that need this resource on the first machine. Moreover, the work of the resource on the second machine is started only after it is transferred to the machine. Using these constraints, the number of resource transfers between the machines is minimized. \(U_{ii^{\prime}rq}\) is a binary variable taking value 1 if the jobs processed by the \(q^{\prime}\)th resource of type \(r\) on machine \(i\) precede the jobs processed by this resource on machine \(i^{\prime}\), and 0 otherwise. Constraints (6) and (7) determine the starting time and finishing time of the operation (renting) of resources (\(STR_{rq}.FTR_{rq}\)), respectively. Constraints (8) and (9) take care of the requirement that no two jobs processed on a same machine can be performed at the same time. According to constraints (10), jobs can be assigned to and processed by machine \(i\) only if the machine is selected to be rented (\(W_{i}=1\)). Constraints (11) and (12) determine the starting time and finishing time of the operation (renting) of machines (\(STM_{i}.FTM_{i}\)), respectively. Constraints (13) guarantee that if job \(j\) is selected to be processed (\(X_{j}=1\)), then it is assigned to and processed by exactly one machine. According to constraints (14) and (15), no two jobs processed by the same resource can be executed at the same time because of resource restriction. Constraints (16) guarantee that the processing of each job \(j\) has to be started after it is transferred to the machine that processes it. Constraints (17) impose that the completion time of each job will not surpass its deadline. Constraints (18) link the completion time variables (\(C_{ij}\)) and the binary variables (\(Y_{ij}\)), i.e., if job \(j\) is not assigned to and processed by machine \(i\) (\(Y_{ij}=0\)), then the corresponding completion time (\(C_{ij}\)) should be equal to zero. Constraints (19) and (20) define the tardiness of each job \(j\). Constraints (21) state that, for each machine \(i\), \(FTM_{i}\) should not be less than \(STM_{i}\). Constraints (22) are similar to constraints (21) and state that, for each resource (\(r,q\)), \(FTR_{rq}\) should not be less than \(STR_{rq}\). According to constraints (23), if job \(j\) is not selected to be processed (\(X_{j}=0\)) or does not need a resource type \(r\) (\(a_{jr}=0\)), then no resource of type \(r\) should be assigned to this job. Constraints (24) and (25) set the renting time of a machine as the maximum between its actual use (\(FTM_{i}\) - \(STM_{i}\)) and its minimum renting time (\(mwtm_{i}\)).