def is_complete(self):
        """Returns True if this is a complete solution, i.e, all nodes are allocated

        Todo
        ----
        TO BE REVIEWED
        
        Returns
        -------
        bool
            True if this is a complete solution.
        """
        allocated = all(
            [node.route_allocation() is not None for node in list(self._nodes.values()) if node.name() != self._problem.depot().name()]
        )

        valid_routes = len(self._routes) == 1 #workaround: try to use only one route (otherwise process will stop if no of vehicles is reached)

        return allocated and valid_routes