Indonesia is a vast country and has various tourism potentials. One area that attracts many domestic and foreign tourists is Yogyakarta. Tourists who don't know Yogyakarta, of course, need the services of a travel agent to plan a tourist visit. For backpackers, the services of this travel agent are very expensive. It would be better if there was an application that could recommend tourist routes based on tourist needs. However, not many applications have been developed that are able to accommodate this. Therefore, in this study, we propose a recommender system that is able to generate travel itineraries for tourist visits in a few days. Users are given the flexibility to customize optimal tourist routes based on this need is divided into four criteria, such as 1) tourist routes with as many tourist attractions as possible visited per day, 2) tourist routes that minimize the budget, and 3) tourist routes that visit popular places, 4) time to start and end the tourist visit. Searching for optimal tourist objects involves an algorithm capable of solving the Traveling Salesman Problem (TSP). The algorithm that we use in this study is the Simulated Annealing Algorithm. In addition, to accommodate the needs of our users we use the Multi-Attribute Utility Theory (MAUT). To test the performance of our proposed system, we use the Firefly Algorithm as the base model. Based on the results of the tests, the Simulated Annealing Algorithm is better in terms of the average number of days that can be visited per node, fitness value, and running time than the Firefly Algorithm.