Task Allocation for Autonomous Machines using Computational Intelligence and Deep Reinforcement Learning