An efficient method for asynchronous distributed constraint optimization using upper and lower bound