A Fault Tolerant Multi-Agent System with Non-Deterministic Decision-Making for Task Allocation