An algorithm for the traveling salesman problem with pickup and delivery customers