Joint resource allocation using evolutionary algorithms in heterogeneous mobile cloud computing networks