The capacity of each core on container $k$.
   $\varepsilon$  A small positive constant such that $\varepsilon < \min\limits_{P+1\leq k\leq P+V} p_k/P$.
   $x_{i,j,k,l}$  The binary variable representing whether $t_{i,j}$ is assigned to core $l$ of container $k$.
     $N_{RV}$     The number of rented VMs.

  : Notations.[]{data-label="notations"}

There are $J$ jobs running on the hybrid cloud. Job $i$ ($i = 1,...,J$) is composed of $T_i$ independent tasks, $\{t_{i,j}\ |\ j=1,...,T_i\}$. $T=\sum_{i=1}^JT_i$ represents the number of all tasks. It needs $r_{i,j}$ resource amounts to complete $t_{i,j}$. Job $i$ must be completed before $d_i$. Without loss of generality, we assume that $d_1 \leq d_2 \leq \cdots \leq d_J$.

In the local cloud/cluster, there are $P$ PMs. In the public cloud, at most $V$ VMs are rented. We consider a PM or a rented VM as a resource container. Without loss of generality, we assume that the first $P$ containers are PMs and the rest of $V$ containers are VMs. The price per unit time of container $k$ ($k=P+1,...,P+V$) is $p_k$. Container $k$ ($k=1,...,P+V$) has $N_k$ cores each of which has $r_k$ capacity. It takes $r_{i,j}/r_k$ time for completing $t_{i,j}$ when running on a core of container $k$. If all the tasks scheduled to a core 