Applications of heuristic and meta-heuristics to the bi-objective task scheduling problem on heterogeneous distributed computing systems