Optimización de funciones mono-objetivo con y sin restricciones, y funciones multi-objetivo a través de heurísticas bio-inspiradas