An Intelligent Approach to Resource Allocation on Heterogeneous Cloud Infrastructures