A Theme Park Tourist Service System with a Personalized Recommendation Strategy

In general, there exists numerous attractions installed in a theme park, and tourists in a theme park dynamically change their locations during a tour. Thus, a tourist may cope with the issues of selecting the attractions to visit while planning the tour route. This paper, based on the concept of location awareness, proposes a novel waiting time, called the personalized waiting time, to introduce a location-aware recommendation strategy. In addition, this paper presents an architecture of tourist service system using the proposed recommendation strategy to relieve the pressure on tourists and create the pleasant experience in their tours. The proposed location-based system consists of mobile app, ticket-reader, detecting/counting, and central subsystems, and the whole system was implemented in this study. We conducted numerous experiments and field testing results validated that the entire proposed system can correctly provide information, such as attraction introduction, recommended session time, estimated moving and waiting time, tour map, and the number of reservations. The system functions, including dynamical scheduling, attraction reservation, ticket verification, visitor detection, and visitor counting, also worked well.


Introduction
Recently, with the great popularity and pervasiveness of smart devices (e.g., smart phones or tablet PCs), mobile apps have gradually become a commonplace service in people's daily lives. In addition, with the rapid emerging of information and communication technologies (e.g., mobile and wireless communication, embedded technology, and sensing technology), more and more conventional industries introduce these technologies into their business operation. The tourism and leisure industry is no exception. Famous theme parks such as Walt Disney World, Universal Orlando Resort, and Ocean Park Hong Kong have all introduced information and communication technologies into their park services, which can facilitate visitors' satisfaction, loyalty, revisit intention, etc. Among these theme parks, Walt Disney World is undoubtedly a good example in creating fantastic user experiences based on various technologies such as RFID wristbands (Magic Bands), mobile apps, mobile payment, and even big data analysis [1], which altogether provide considerate services.
Although Walt Disney World and other theme parks such as Universal Orlando Resort have improved visitors' experiences with services such as FastPass+ or Express SM Pass, we observe that there is still room for improvement. One of the problems is that, in their mobile apps, when tourists need some attraction suggestions, there are a variety of decisions for tourists to make by themselves, which may cause pressure, or so-called choice overload, on tourists and negatively impact tourists' The detecting/counting subsystem aims to detect and compute the queue length and accumulated visit count of each attraction. The central subsystem performs necessary computing and database management of the proposed system. The proposed TPTS system introduces an innovative function called the personalized dynamic scheduling to offer tourists the customized best plans mainly according to the location of tourists, the queue length, the capacity, and the duration of an attraction. A tourist can use the mobile app to establish his/her own favorite attraction list, choose his/her own preferred attraction priority, and obtain the personalized recommended attraction to visit next. In addition, we design location-based dynamic map and attraction reservation functions into the TPTS system.
The main contributions of this study are summarized as follows. The TPTS system eliminates choice overload because it leaves only three commonly considered strategies (i.e., closest attraction first, shortest wait-time attraction first, and hottest attraction first) for tourists to decide on their own. In addition, the TPTS system removes the tourist's pressure caused by searching for only one preferred attraction from lengthy suggested attraction list because it offers only one recommended attraction at a time, and the recommendation is solely derived from the tourist's favorite attraction list. In addition, the recommended attraction is always the timely best attraction according to the current conditions of the attractions in the theme park, not an out-of-date or out-of-time result in a pre-arranged recommended list. Overall, this paper introduces the concept of location-based wait times, designing and implementing this idea into the prototype of our proposed system. This concept is not meant to replace or outperform the current design of Walt Disney World's or Universal Studio's system, but to present a novel idea which can be further integrated into their systems and help escalate the tour experiences even more.
The rest of this paper is organized as follows. Section 2 gives the basic idea of the proposed recommendation strategy and assumptions. Section 3 formulates the proposed personalized waiting time. Section 4 elaborates the design of the proposed theme park tourist service system. Section 5 presents the system implementation and the field testing results. Section 6 discusses two important issues, i.e., privacy and education, to be explored in the future. Section 7 provides concluding remarks. Figure 1 shows an example to illustrate the concept of the proposed personalized waiting time. Without the loss of generality, the next sessions of all attractions are assumed to start at the same time (i.e., all attractions have the same general waiting time). The current time and the next sessions of three attractions are 12:00 and 12:15, respectively. Thus, the general waiting time of three attractions is 15 min. Consider that there are two visitors who want to take Attraction A. They both find that the wait time is 15 min, and then decide to go to Attraction A right away. Assume that one of them (i.e., Visitor 1) should take 10 min to walk to it, while the other (Visitor 2) needs only 2 min to reach it. However, neither has the idea of how much time each of them needs to take to arrive at Attraction A if there is no mobility time information provided for them. They will just go to Attraction A (the same destination), with Visitor 1 finding that he/she can take the ride only after 5 min wait, while Visitor 2 realizing that she/he needs to wait for the ride for 13 min. Now, let us consider the feelings of the two visitors. In our opinion, people would like to keep moving to a certain destination rather than wait at a certain place, which is a common phenomenon that can be observed among car drivers or someone who is on a quest. Hence, we believe that Visitor 1's feeling would be better than Visitor 2's.  The central idea of our study is the personalized waiting time, which is defined as the actual waiting time when the tourist arrives at an attraction and considered in the personalized dynamic scheduling function of the TPTS system. Recall that the waiting time considered in prior studies is the general waiting time, which is defined as the waiting time of the last tourist in the queue of length at an attraction. The general waiting time is computed based only on the queue length, the capacity, and the duration of an attraction, and totally irrelevant to any personal attribute of the tourist who is requesting any waiting-time related services. As shown in Figure 1, if considering the general waiting time only, the tourist has no preference among the three attractions and thus makes the final decision by himself/herself. The approaching times of the tourist moving towardsAttractions A-C are, respectively, 12, 5, and 8 min. Thus, the actual waiting times when the tourist arrives at Attractions A-C are 3, 10, and 7 min, respectively. If the approaching times of the tourist moving towards these attractions are different, the tourist would feel or perceive that Attraction A costs the shortest waiting time among the three attractions. Therefore, the tourist is more likely to select Attraction A to visit next. This is how the personalized waiting time, taking the approaching time of the tourist into account, would improve the tourist's perception of waiting as he/she arrives at the attraction.

Preliminaries
This study considers the following assumptions to calculate the proposed personalized waiting time.
1. The inter-session time between operation sessions of the attraction is ignored. 2. The moving time of an attraction is derived as if the tourist starts to move to the attraction right after the tourist activates the personalized dynamic scheduling function. 3. The processing time at both the mobile app subsystem and the central subsystem as well as the network propagation delay between the two subsystems are ignored. In other words, the time when the tourist activates the personalized dynamic scheduling function at the mobile app subsystem and the time when the central subsystem receives the personalized dynamic scheduling request from the mobile app subsystem are considered as the same moment.

Personalized Waiting Time
This section provides the formulation of the proposed personalized waiting time. The notation used in the rest of the paper is summarized in Table A1. The central idea of our study is the personalized waiting time, which is defined as the actual waiting time when the tourist arrives at an attraction and considered in the personalized dynamic scheduling function of the TPTS system. Recall that the waiting time considered in prior studies is the general waiting time, which is defined as the waiting time of the last tourist in the queue of length at an attraction. The general waiting time is computed based only on the queue length, the capacity, and the duration of an attraction, and totally irrelevant to any personal attribute of the tourist who is requesting any waiting-time related services. As shown in Figure 1, if considering the general waiting time only, the tourist has no preference among the three attractions and thus makes the final decision by himself/herself. The approaching times of the tourist moving towardsAttractions A-C are, respectively, 12, 5, and 8 min. Thus, the actual waiting times when the tourist arrives at Attractions A-C are 3, 10, and 7 min, respectively. If the approaching times of the tourist moving towards these attractions are different, the tourist would feel or perceive that Attraction A costs the shortest waiting time among the three attractions. Therefore, the tourist is more likely to select Attraction A to visit next. This is how the personalized waiting time, taking the approaching time of the tourist into account, would improve the tourist's perception of waiting as he/she arrives at the attraction.
This study considers the following assumptions to calculate the proposed personalized waiting time.

1.
The inter-session time between operation sessions of the attraction is ignored.

2.
The moving time of an attraction is derived as if the tourist starts to move to the attraction right after the tourist activates the personalized dynamic scheduling function.

3.
The processing time at both the mobile app subsystem and the central subsystem as well as the network propagation delay between the two subsystems are ignored. In other words, the time when the tourist activates the personalized dynamic scheduling function at the mobile app subsystem and the time when the central subsystem receives the personalized dynamic scheduling request from the mobile app subsystem are considered as the same moment.

Personalized Waiting Time
This section provides the formulation of the proposed personalized waiting time. The notation used in the rest of the paper is summarized in Table A1.
As mentioned above, we argue that the personalized waiting time, taking the approaching time of the tourist into account, would improve the tourist's perception of waiting when he/she arrives at the attraction. Specifically, the calculation of the personalized waiting time considers not only the queue length, the capacity, and the duration of an attraction, but also the moving time of the tourist from his/her starting position to the attraction. Given n Q i , n Op i , and t Op i , the general waiting time of A i ,(t GW i ) can be obtained from Equation (1).

Definition 1 (Requesting Time).
The requesting time is defined as the time when the central subsystem receives the personalized dynamic scheduling request from the mobile app subsystem.
Observed at the requesting time, this method considers the starting times of the current operation session and the next operation session. Specifically, the latter is defined as the immediate following session of the current operation session. Thus, we have T Next To calculate the personalized waiting time, we have to determine the ideal session for the tourist. The ideal session of A i is defined as the session which starts later than T Req and can allow one visitor getting into A i immediately after the  According to the above discussion, we infer that the tourist (who activates the personalized dynamic scheduling request at T Req ) can get into A i immediately after the According to Equations (2) and (3), t Wait i can be rewritten as t Wait In this case, the tourist will miss the ideal session and has to wait only for a short period within the duration of A i after he/she arrives, because all the visitors waiting in line observed at T Req have been served before or at T Ideal i . Therefore, we have According to Equations (2) and (5), t Wait i can be rewritten as t Wait Figure 2 shows the system architecture of the proposed TPTS system. The TPTS system consists of four subsystems: central subsystem, mobile app subsystem, ticket-scanning subsystem, and detecting/counting subsystem. Each subsystem includes many modules to perform the corresponding functions. The mobile app subsystem is a mobile app for visitors to offer the tourist services. The subsystem provides tourists with many interfaces to obtain the park information, personalized tour suggestion, booking record, and so on.

TPTS System Design
services. The subsystem provides tourists with many interfaces to obtain the park information, personalized tour suggestion, booking record, and so on.

Mobile App Subsystem
The mobile app subsystem (app) provides tourists with an integrated interface to take advantage of various tourist services. The visitors need only to download and install the app into their smartphones or tablet PCs and everything is on the go.

Park Info Module
This module provides the tourist with an interface to inquire general information about the theme park, such as news and tour guide. The tour guide includes the ticket prices, traffic, and opening hours of the park. It also provides the tourist with information about each attraction in the park, where the attractions are categorized by which theme area they reside. Furthermore, the search function is provided for the tourist to do a quick keyword search. In addition, the tourist can add attractions to his/her personal favorite or wish list (My Play List). This list can be used by the personalized dynamic scheduling function in the Tour Suggestion module.

Tour Suggestion Module
This module performs the central functions of the mobile app subsystem and provides the tourist with an interface to take advantage of these functions, including Personalized Dynamic Scheduling, Location-based dynamic map, and Attraction Reservation.
For ease of reserving attractions, we add the attraction reservation function embedded in the personalized dynamic scheduling function for the tourist to reserve the recommended attraction when the tourist obtains the recommended offered by the personalized dynamic scheduling function. Note that the service can also be independent of the personalized dynamic scheduling function according to the consideration of the industry of theme parks.

• Personalized Dynamic Scheduling
This function provides the tourist with a customized recommendation of the next attraction to visit according to the tourist's location, favorite or wish attraction list (My Play List), preferred attraction priority (strategy), without the tourist making plans or too many decisions by himself/herself. To reduce the choice overhead of tourists, the TPTS system offers only one recommended attraction at a time. In addition, the recommended attraction is always the prompt best next attraction to visit according the tourist's strategy, not an out-of-date or out-of-time result in a recommended list figured out or arranged in advance. Furthermore, we use the personalized

Mobile App Subsystem
The mobile app subsystem (app) provides tourists with an integrated interface to take advantage of various tourist services. The visitors need only to download and install the app into their smartphones or tablet PCs and everything is on the go.

Park Info Module
This module provides the tourist with an interface to inquire general information about the theme park, such as news and tour guide. The tour guide includes the ticket prices, traffic, and opening hours of the park. It also provides the tourist with information about each attraction in the park, where the attractions are categorized by which theme area they reside. Furthermore, the search function is provided for the tourist to do a quick keyword search. In addition, the tourist can add attractions to his/her personal favorite or wish list (My Play List). This list can be used by the personalized dynamic scheduling function in the Tour Suggestion module.

Tour Suggestion Module
This module performs the central functions of the mobile app subsystem and provides the tourist with an interface to take advantage of these functions, including Personalized Dynamic Scheduling, Location-based dynamic map, and Attraction Reservation.
For ease of reserving attractions, we add the attraction reservation function embedded in the personalized dynamic scheduling function for the tourist to reserve the recommended attraction when the tourist obtains the recommended offered by the personalized dynamic scheduling function. Note that the service can also be independent of the personalized dynamic scheduling function according to the consideration of the industry of theme parks.

• Personalized Dynamic Scheduling
This function provides the tourist with a customized recommendation of the next attraction to visit according to the tourist's location, favorite or wish attraction list (My Play List), preferred attraction priority (strategy), without the tourist making plans or too many decisions by himself/herself. To reduce the choice overhead of tourists, the TPTS system offers only one recommended attraction at a time. In addition, the recommended attraction is always the prompt best next attraction to visit according the tourist's strategy, not an out-of-date or out-of-time result in a recommended list figured out or arranged in advance. Furthermore, we use the personalized waiting times instead of the general waiting times of attractions to find a recommended attraction in order to improve the tourist's perception of waiting. There are three choices of preferable strategies as the optimal solution: Closest First, Shortest Waiting Time First, and Hottest First. The "Closest First" strategy determines the attraction that is the closest one to the tourist. The "Shortest Waiting Time First" strategy determines the attraction having the shortest personalized waiting time. The "Hottest First" strategy determines the attraction with the maximum number of visits. Once the best next attraction is obtained, the central subsystem determines the recommended session time, the estimated moving time, and the estimated personalized waiting time in terms of the attraction. Then, the mobile app displays this information when receiving the response from the central subsystem.

• Attraction Reservation
This function provides the tourist with attraction reservation or booking services. The tourist can reserve attractions in advance, and enjoy his/her ride without the painful waiting in a long line. This function provides tourists with the attraction reservation service after the personalized dynamic scheduling function offers the recommended next attraction. When a tourist activates this function, the mobile app subsystem will proceed with the following steps.
Step 1. Request the central subsystem to return a list of bookable sessions of this attraction, each session with a current bookable quota, and display this list to the tourist.
Step 2. Hint the tourist to select the booking amount, such as three persons, after the tourist chooses a bookable session.
Step 3. Request the central subsystem to reserve the designated attraction after the tourist selects the booking amount and confirms his/her booking choice.
Step 4. Display the reservation result when receiving the response from the central subsystem. If the result is successful, the mobile app subsystem will store a digital booking ticket for later verification when the tourist arrives at the reservation entrance of the attraction. •

Location-based Dynamic Map
This function provides the recommended route(s), direction(s), estimated distance(s), and moving time(s) from the location of the tourist to his/her specified attraction on an electronic map, where the map can be easily zoomed in and out. This function can be easily accommodated via widely used Google Maps API, just as Walt Disney World and Universal Studios, Orlando have already adopted in their systems. Each attraction can be regarded as a point of interest (POI), and the spatial and related attribute of POI data are recorded previously through the concept of the GIS. The spatial relation between the tourist and POI can be found through the location service of the mobile device. As the tourist moves, the route will dynamically adjust according the tourist's new location. With the location-based dynamic map function, the tourist will no longer get stressful because of misrouting or difficulty when seeking for an attraction on a static map. This function can link to the web map service (WMS) independently, thus we can choose different WMS sources for customized map designing in different theme park. Moreover, The TPTS can be utilized easily and adopted to the specific characteristics of each theme park.

My Record Module
This module provides the tourist with an interface to access his/her favorite or wish attraction list, booking tickets, and history of selected attractions using the My Play List, My Booking Tickets, and My Play Record items, respectively. The My Play List shows the attractions selected by tourists themselves, and is the operation basis for the personalized dynamic scheduling function. Particularly, the personalized dynamic scheduling function finds the recommended attraction only from this list. We can select the attractions optionally or modify directly in this list. The My Booking Tickets shows all the booking tickets. When a tourist arrives at the reservation entrance, he/she can draw out the corresponding ticket from this list and show the ticket to the ticket-scanning subsystem for further

Ticket-Scanning Subsystem
This subsystem aims at scanning the tourist's booking ticket, requesting the central subsystem to verify the validity of this booking ticket, and trigger the reservation entrance gate of the attraction. Recall that there are two modules in this subsystem, briefly discussed in the following subsections.

Ticket Scanning and Decoding Module
This module scans the tourist's digital booking ticket, such as a QR code shown on his/her smartphone screen, decodes the ticket information, and requests the central subsystem to verify this booking ticket according to the ticket information. Upon receipt of the response from the central subsystem about the validity of the ticket, this module hands over the proceeding task to the reservation entrance gate controlling module.

Reservation Entrance Gate Controlling Module
This module triggers the reservation entrance gate to open up for the tourist to pass if the tourist's ticket is valid according to the response from the central subsystem. If the ticket is not valid, this module can instead show an error message to inform the tourist. For testing and demonstration purpose, the implementation of the prototype can be either software-or hardware-based. For example, we can implement this module simply as a software which indicates whether a visitor is allowed to enter the reservation entrance gate based on the response of the central subsystem. On the other hand, we can also introduce micro-controllers (e.g., Arduino or Raspberry Pi) and actuators into the prototype implementation, in which they shall act like the reservation entrance gate, behaving according to the response from the central subsystem.

Detecting/Counting Subsystem
This subsystem is responsible for detecting tourist penetration through the entrance of an attraction, calculating the queue length and the number of visits to the attraction, and sending this information to the central subsystem at appropriate timings. Note that the queue length and the number of visits are two significant parameters to the personalized dynamic scheduling, where the queue length is for calculating the personalized waiting time, and the number of visits determines how popular ("hot") the attraction is. The three modules in this subsystem are described as follows.

Visitor Detecting Module
This module detects the tourist penetration through the entrance of an attraction, and notifies the Queue Length Computing module and the Visitor Count Cumulating module to calculate the queue length and the number of visits.

Queue Length Computing Module
This module computes the queue length of an attraction when a tourist passes through the entrance (notified by the Visitor Detecting module) or at every turn of attraction operation (i.e., when the attraction finishes a round of operation and tourists in the waiting line can move into the attraction to have a ride). This module also sends the value of the queue length to the central subsystem for database updating at appropriate timings. If we require a highly real-time value of queue length, we can have this module send the value of queue length every time this value is changed. Otherwise, we can have this module send this value less frequently.

Visitor Count Cumulating Module
This module accumulates the number of visits (visitor count) to an attraction when a tourist passes through the entrance of the attraction (notified by the Visitor Detecting Module). In addition, this module sends the visitor count to the central subsystem for database updating at appropriate timings. If we require a highly real-time visitor count, we can have this module send the count every time this value is changed. Otherwise, we can have this module send this value less frequently.

Central Subsystem
The central subsystem performs the kernel computing and database management of the TPTS system. With respect to the mobile app subsystem, the central subsystem accepts the park information inquiry, personalized dynamic scheduling, and attraction reservation requests from the mobile app subsystem. After processing these requests, the central subsystem returns corresponding responses to the mobile app subsystem. With respect to the ticket-scanning subsystem, the central subsystem accepts the ticket verification request from the ticket-scanning subsystem, verifies the validity of the ticket, and responds the result to the ticket-scanning subsystem. With respect to the detecting/counting subsystem, the central subsystem accepts the notifications of the values of the queue length and the visit count from the detecting/counting subsystem, and updates the database accordingly. Besides the database, this subsystem consists of the Personalized Dynamic Scheduling Determination module and the Attraction Reservation Management module.

Personalized Dynamic Scheduling Determination Module
This module provides kernel computing to the personalized dynamic scheduling function of the TPTS system. Specifically, this module is responsible for calculating the personalized waiting times and recommended session times of attractions, comparing and finding the attraction with the shortest waiting time among the attractions, and finding the most popular ("hottest") attraction according to the visit counts of attractions recorded in the database.
Under all three strategies, this module needs to determine the personalized waiting time and the recommended session time prior to performing the personalized dynamic scheduling. The two values are required to inform the tourist how long he/she may wait when arriving at the attraction and which session to take. Moreover, in the Shortest Waiting Time First strategy, the personalized waiting times of a group of attractions are required to determine which attraction has the shortest personalized waiting time. To conclude, the calculation of personalized waiting times is crucial to the personalized dynamic scheduling function.
Recall that the central subsystem in the TPTS system supports the personalized dynamic scheduling function including three strategies. When receiving a personalized dynamic scheduling request from the mobile app subsystem, the central subsystem determines which strategy the tourist chooses and proceeds accordingly. The steps that the central subsystem performs for three strategies are, respectively, as follows.

•
Closest First strategy Step 1. Calculate the personalized waiting time and recommended session time of the closest attraction based on its moving time found in the received personalized dynamic scheduling request.
Step 2. Send the personalized waiting time and recommended session time of the closest attraction to the mobile app subsystem.

• Shortest Waiting Time First strategy
Step 1. Calculate the personalized waiting time and recommended session time of each of attractions based on their moving times found in the received personalized dynamic scheduling request. Step 2. Find the attraction with the shortest personalized waiting time.
Step 3. Send the attraction ID/name that has the shortest personalized waiting time as well as its personalized waiting time and recommended session time to the mobile app subsystem.
• Hottest Fist strategy Step 1. Find the most popular (hottest) attraction (the implemented prototyping TPTS system regards the attraction with the highest number of visits as the hottest attraction).
Step 2. Calculate the personalized waiting time and recommended session time of the hottest attraction based on its moving time found in the received personalized dynamic scheduling request.
Step 3. Send the attraction ID/name that is the most popular as well as its personalized waiting time and recommended session time to the mobile app subsystem.
The case study for the functionality of the scheduling determination module is presented in Section 5.2.2.

Attraction Reservation Management Module
This module provides kernel handling to attraction reservation and booking ticket verification. The former handles attraction reservation or booking requests from the mobile app subsystem, while the latter verifies the validity of booking tickets.

• Attraction Reservation Handling
When receiving a booking-attraction request of a designated attraction from the mobile app subsystem, the central subsystem will proceed with the following steps. Figure 3 illustrates the detailed message flow chart between the mobile app subsystem and the central subsystem regarding attraction reservation.
Step 1. Draw out all bookable sessions of this attraction and the current bookable quotas of these sessions from the database.
Step 2. Return the information drawn in Step 1 to the mobile app subsystem via a booking-attraction response.
Step 3. When receiving the booking-session-amount request from the mobile app subsystem, the central subsystem will insert a new booking record of the designated attraction into the database and update related field(s) in the database.
Step 4. Send a booking confirmation message to the mobile app subsystem.

• Booking Ticket Verification
When receiving a ticket verification request from the ticket-scanning subsystem, the central subsystem will proceed with the following steps. The detailed message flow chart between the ticket-scanning subsystem and the central subsystem is shown in Figure 4.
Step 1. Compare the data in the ticket verification request with the booking records in the database; if no corresponding record exists, the central subsystem will return a ticket verification response with answer "invalid" to the ticket-scanning subsystem and end the verification process; otherwise, go to Step 2.
Step 2. Check if the tourist arrives during the appointed period (e.g., within 15 min before the reserved session starts); if not, the central subsystem will return a ticket verification response with answer "invalid" to the ticket-scanning subsystem and end the verification process; otherwise, go to Step 3.
Step 3. Recognize this ticket as valid, update related fields in the database, and return a ticket verification response with answer "valid" to the ticket-scanning subsystem.
The case study for the functionality of the scheduling determination module is presented in Section 5.5.2.

Attraction Reservation Management Module
This module provides kernel handling to attraction reservation and booking ticket verification. The former handles attraction reservation or booking requests from the mobile app subsystem, while the latter verifies the validity of booking tickets.

• Attraction Reservation Handling
When receiving a booking-attraction request of a designated attraction from the mobile app subsystem, the central subsystem will proceed with the following steps. Figure 3 illustrates the detailed message flow chart between the mobile app subsystem and the central subsystem regarding attraction reservation. Step 1. Draw out all bookable sessions of this attraction and the current bookable quotas of these sessions from the database.
Step 2. Return the information drawn in Step 1 to the mobile app subsystem via a booking-attraction response.
Step 3. When receiving the booking-session-amount request from the mobile app subsystem, the central subsystem will insert a new booking record of the designated attraction into the database and update related field(s) in the database.
Step 4. Send a booking confirmation message to the mobile app subsystem.

Booking Ticket Verification
When receiving a ticket verification request from the ticket-scanning subsystem, the central subsystem will proceed with the following steps. The detailed message flow chart between the ticket-scanning subsystem and the central subsystem is shown in Figure 4. Step 1. Compare the data in the ticket verification request with the booking records in the database; if no corresponding record exists, the central subsystem will return a ticket verification response with answer "invalid" to the ticket-scanning subsystem and end the verification process; otherwise, go to Step 2.
Step 2. Check if the tourist arrives during the appointed period (e.g., within 15 min before the reserved session starts); if not, the central subsystem will return a ticket verification response with answer "invalid" to the ticket-scanning subsystem and end the verification process;

System Implementation and Field Testing
This section mentions the implementation issues of the proposed TPTS system, and then shows the experimental result.

Implementation Details
This section, respectively, presents the hardware and software components used to implement the four subsystems of the proposed TPTS system.

Mobile App Subsystem
The mobile app subsystem is developed in Android platform using Eclipse integrated development environment (IDE) with Android SDK. For the proposed three strategies, we use Google Maps Directions API to acquire the moving times of the tourist from his/her GPS coordinates to all the attractions' GPS coordinates in My Play List. Because Google Maps Directions API considers the moving speed as being constant, the distances are directly proportional to the moving times.

Ticket-Scanning Subsystem
The ticket-scanning subsystem is implemented using Visual Studio C#, hosted on a notebook with an embedded webcam. The booking tickets are generated in the form of QR codes. Because the digital booking tickets are in the form of QR codes, the implemented program running on the laptop includes a QR code reader to scan and decode the tourist's QR code booking ticket. In the subsystem, the reservation entrance gate is emulated by a program which exhibits a virtual gate on the notebook screen. The program also includes a virtual gate to show on the laptop screen. When scanning in a QR code booking ticket, the program decodes the ticket information and sends the information to the central subsystem for ticket verification. Upon receiving the verification result from the central subsystem, the virtual gate would be shown as opening up if the result is valid, or shown as keeping closed if the result is invalid.

Detecting/Counting Subsystem
The detecting/counting subsystem consists of a programmable Arduino UNO microcontroller board, an infrared sensor and a notebook laptop. We used the Arduino UNO board and the infrared sensor to emulate the Visitor Detecting Module. Moreover, we used the notebook laptop to run processes emulating the Queue Length Computing Module and the Visitor Count Cumulating Module. To provide highly real-time values of the queue length and the visitor count, we had the notebook laptop send these values to the central subsystem every time the values changed.

Central Subsystem
The central subsystem was implemented using Visual Studio C#, hosted on a desktop PC running Windows. Microsoft SQL Server served as the system database on the same desktop PC.
As for the communication between the subsystems, the mobile app subsystem may communicate with the central subsystem via Wi-Fi or 3G/4G communications systems through the Internet, and the detecting/counting subsystem may communicate with the central subsystem via Ethernet or Wi-Fi systems.

Testing Results
We conducted numerous experiments to test the major functions of the proposed TPTS system. Figure 5 shows the testing field of this study. The testing field is located around Minghsin University of Science and Technology. Suppose that seven attractions (denoted as red dots) and one tourist are located in the testing field. The coordinates of the attractions were previously acquired by GPS positioning. We selected three of them for testing and defined the condition of attraction, including the number of sessions in one attraction, capacity of tourists, duration time in one session, and the number of visitors in the attraction. The location-based dynamic map was produced via the Google Maps API.

Attraction Information Displaying
To verify the operation of communication between the mobile app subsystem and the central subsystem, we selected an attraction, and then checked the content displayed on the screen. Figure 6 shows the testing result. Compared with the content in the database, we verified that the mobile app subsystem can access the database in the central subsystem and show the result correctly.

Personalized Dynamic Scheduling
We considered four attractions, naemly Racing Cars, Spinning Tea Cups, Merry-Go-Round, and Mountain Adventures, to test the function of personalized dynamic scheduling, as shown in Figure  5. Assume that the location (i.e., GPS coordinates) of the tourist is (N 24.86284°, E 120.99045°). In

Attraction Information Displaying
To verify the operation of communication between the mobile app subsystem and the central subsystem, we selected an attraction, and then checked the content displayed on the screen. Figure 6 shows the testing result. Compared with the content in the database, we verified that the mobile app subsystem can access the database in the central subsystem and show the result correctly.

Attraction Information Displaying
To verify the operation of communication between the mobile app subsystem and the central subsystem, we selected an attraction, and then checked the content displayed on the screen. Figure 6 shows the testing result. Compared with the content in the database, we verified that the mobile app subsystem can access the database in the central subsystem and show the result correctly.

Personalized Dynamic Scheduling
We considered four attractions, naemly Racing Cars, Spinning Tea Cups, Merry-Go-Round, and Mountain Adventures, to test the function of personalized dynamic scheduling, as shown in Figure  5. Assume that the location (i.e., GPS coordinates) of the tourist is (N 24.86284°, E 120.99045°). In

Personalized Dynamic Scheduling
We considered four attractions, naemly Racing Cars, Spinning Tea Cups, Merry-Go-Round, and Mountain Adventures, to test the function of personalized dynamic scheduling, as shown in Figure 5. Assume that the location (i.e., GPS coordinates) of the tourist is (N 24.86284 • , E 120.99045 • ). In addition, three attractions, i.e., Racing Cars, Spinning Tea Cups, and Merry-Go-Round, are assumed to be added into My Play List. The parameters of these attractions for testing are listed in Table 1. • Closest First strategy Suppose that the personalized dynamic scheduling function with the Closest First strategy was activated at 12:07, and the queue lengths of three attractions were all 20 visitors. According to the result of Google Maps Directions API, we obtained the distances between our location and Racing Cars, Spinning Tea Cups, and Merry-Go-Round as 450 m, 220 m, and 55 m, respectively. Obviously, Merry-Go-Round is the closest attraction and should be recommended. In our experiments, the moving time of the tourist is 1 min because the walking time of tourists are assumed to be constant, and the queue length of the attraction is assumed to be 32 visitors. Thus, we obtained the waiting time and the recommended session time as 72 min and 13:20, respectively. As shown in Figure 7, the result verifies that the personalized dynamic scheduling function actually recommended the closest attraction (Merry-Go-Round in this experiment) when we selected the "Closest First" strategy. The result also confirms that the recommended session time, moving time, and personalized waiting time are all correctly calculated.
Appl. Sci. 2018, 8, x FOR PEER REVIEW 15 of 21 addition, three attractions, i.e., Racing Cars, Spinning Tea Cups, and Merry-Go-Round, are assumed to be added into My Play List. The parameters of these attractions for testing are listed in Table 1. • Closest First strategy Suppose that the personalized dynamic scheduling function with the Closest First strategy was activated at 12:07, and the queue lengths of three attractions were all 20 visitors. According to the result of Google Maps Directions API, we obtained the distances between our location and Racing Cars, Spinning Tea Cups, and Merry-Go-Round as 450 m, 220 m, and 55 m, respectively. Obviously, Merry-Go-Round is the closest attraction and should be recommended. In our experiments, the moving time of the tourist is 1 min because the walking time of tourists are assumed to be constant, and the queue length of the attraction is assumed to be 32 visitors. Thus, we obtained the waiting time and the recommended session time as 72 min and 13:20, respectively. As shown in Figure 7, the result verifies that the personalized dynamic scheduling function actually recommended the closest attraction (Merry-Go-Round in this experiment) when we selected the "Closest First" strategy. The result also confirms that the recommended session time, moving time, and personalized waiting time are all correctly calculated.   To determine the recommended next attraction, we calculated the recommended session time, moving time, and waiting time, as listed in Table 2. Note that this strategy prefers the attraction having the shortest personalized waiting time. Thus, Racing Car should be recommended because it had the shortest personalized waiting time (65 min).    Figure 8 illustrates the testing result, which verifies that the personalized dynamic scheduling function actually recommended the attraction with the shortest personalized waiting time (Racing Cars in this experiment) when we considered the "Shortest Waiting Time First" strategy. Moreover, the recommended session time, moving time, and personalized waiting time were all correctly determined.

•
Hottest First strategy Suppose that the personalized dynamic scheduling function with strategy "Hottest First" was activated at 12:15. The queue lengths of all attractions were assumed to be 20 visitors. According to the database in the central subsystem, we obtained that Spinning Tea Cups should be recommended because it had the largest visit count. Moreover, we determined the recommended session time, moving time, and waiting time as 13:20, 3 min, and 62 min, respectively. Figure 9 shows the testing result, which validates that the personalized dynamic scheduling function actually recommended the hottest attraction (Spinning Tea Cups in this experiment) when we selected the "Hottest First" strategy. The result also validates that the recommended session time, moving time, and personalized waiting time were all correctly calculated.

•
Hottest First strategy Suppose that the personalized dynamic scheduling function with strategy "Hottest First" was activated at 12:15. The queue lengths of all attractions were assumed to be 20 visitors. According to the database in the central subsystem, we obtained that Spinning Tea Cups should be recommended because it had the largest visit count. Moreover, we determined the recommended session time, moving time, and waiting time as 13:20, 3 min, and 62 min, respectively. Figure 9 shows the testing result, which validates that the personalized dynamic scheduling function actually recommended the hottest attraction (Spinning Tea Cups in this experiment) when we selected the "Hottest First" strategy. The result also validates that the recommended session time, moving time, and personalized waiting time were all correctly calculated. The above experiments are not exhaustive because they only cover case ≤ . We further verified whether the personalized dynamic scheduling function correctly computes the estimated personalized waiting time and recommended session time under case > . We added Racing Cars and Mountain Adventures into My Play List, and then activated the personalized dynamic scheduling function with the Hottest First strategy at 12:24. We determined the next session time as 12:40, the personalized waiting time as 6 min, and the recommended session time as 12:50. Figure 10 shows the result derived by the proposed TPTS system. Results validate that the personalized dynamic scheduling function correctly calculated the personalized waiting time and recommended session time.

Attraction Reservation Scheme
We tested the function of attraction reservation using the recommended attraction result shown in Figure 11a. This result was provided by the personalized dynamic scheduling function, and we The above experiments are not exhaustive because they only cover case ≤ . We further verified whether the personalized dynamic scheduling function correctly computes the estimated personalized waiting time and recommended session time under case > . We added Racing Cars and Mountain Adventures into My Play List, and then activated the personalized dynamic scheduling function with the Hottest First strategy at 12:24. We determined the next session time as 12:40, the personalized waiting time as 6 min, and the recommended session time as 12:50. Figure 10 shows the result derived by the proposed TPTS system. Results validate that the personalized dynamic scheduling function correctly calculated the personalized waiting time and recommended session time.

Attraction Reservation Scheme
We tested the function of attraction reservation using the recommended attraction result shown in Figure 11a. This result was provided by the personalized dynamic scheduling function, and we

Attraction Reservation Scheme
We tested the function of attraction reservation using the recommended attraction result shown in Figure 11a. This result was provided by the personalized dynamic scheduling function, and we started to reserve this recommended attraction. The app showed the information including the available session and capacity for visitors, as shown in Figure 11b. Once selecting the preferable session, we provided the number of visitors to reserve, as shown in Figure 11c. started to reserve this recommended attraction. The app showed the information including the available session and capacity for visitors, as shown in Figure 11b. Once selecting the preferable session, we provided the number of visitors to reserve, as shown in Figure 11c.  Figure 12a shows the result of attraction reservation if this booking is validated. In addition, our mobile app immediately generated a personalized booking ticket in the form of a QR code, as shown in Figure 12b. This experiment confirms that the attraction reservation function works correctly.   Figure 12a shows the result of attraction reservation if this booking is validated. In addition, our mobile app immediately generated a personalized booking ticket in the form of a QR code, as shown in Figure 12b. This experiment confirms that the attraction reservation function works correctly. started to reserve this recommended attraction. The app showed the information including the available session and capacity for visitors, as shown in Figure 11b. Once selecting the preferable session, we provided the number of visitors to reserve, as shown in Figure 11c.
(a) (b) (c)  Figure 12a shows the result of attraction reservation if this booking is validated. In addition, our mobile app immediately generated a personalized booking ticket in the form of a QR code, as shown in Figure 12b. This experiment confirms that the attraction reservation function works correctly.

Future Works
A noteworthy issue concerning privacy might arise due to the functionality of the attraction reservation. Regarding this functionality, a tourist ID shall be included in the process and stored in the database of the central subsystem. This tourist ID could be the cell phone number or some kind of identifier of a tourist who reserves an attraction, which is definitely part of the tourist's personal information. Therefore, the protection of the tourist ID is inevitably required to be observed. There are various kinds of security mechanisms which can be implemented in the proposed system to ensure the privacy of the tourist ID, such as the dual authentication method proposed by [23], and we leave this issue as part of our future work.
In addition, the proposed system can not only work for the amusement parks, but, with necessary modifications, also be a good assistant tool for education. In the context of current trend of flipped education [24,25], the proposed system can be built in a campus, where each classroom or campus facility is regarded as an attraction. Students have to group themselves into several teams and collaborate to tackle each problem stated at each attraction with all they have learned from multiple disciplines. The first team that conquers all the problems wins the battle. To name this example, it blends collaborative learning, problem-based learning, and game-based learning, which have been proposed to transform the current education system. Our system can play a role in this context. For example, each team can use a smartphone with our mobile app to search for the closest or shortest-waiting-time attraction and move there according to the location-based dynamic map. This can be a prospective future work and potentially profitable.

Conclusions
This paper has proposed a personalized recommendation strategy to develop a service system for theme parks to provide tourists with a more relaxing and easier tour experience. The proposed system, called the TPTS system, consists of a mobile app subsystem, a ticket-scanning subsystem, a detecting/counting subsystem, and a central subsystem. A specific novel function called the location-based dynamic scheduling function is designed to provide tourists with customized tour suggestions (recommended attraction with recommended session time) based on each tourist's favorite attractions, preferred attraction priority, and locations, without tourists making various tiresome decisions by themselves. Serving as a location-based service to improve the tourist's perception of waiting, the proposed personalized dynamic scheduling function considers not only the general wait time of current queue but also the estimated moving time of the tourist based on his or her location to yield a location-based wait time. In addition, for the completeness of the TPTS system, we also designed the attraction reservation and booking-ticket verification schemes as supplementary functions. Furthermore, the mobile app of TPTS system gives an integrated, easy-to-use interface for tourists who are familiar with smartphones or tablets nowadays. The design and implementation of the TPTS system is described in this paper, and the demonstrations show that the proposed TPTS system functions correctly.

Conflicts of Interest:
The authors declare no conflicts of interest.