Appointment booking and scheduling system

Abstract: An appointment booking and scheduling system, e.g. for booking appointments with service engineers visiting customer sites within a defined geographic area, is described. The system includes a database for storing a plurality of appointments that have been booked, and for storing a plurality of routes, each route specifying a sequence of regions to be visited by a particular operative. An appointment server offers appointments at specified times, using the routes to check for availability of operatives in specified regions at specified times. When a new appointment is made, the server inserts the new appointment in the database and updates the routes. A scheduler periodically generates a replacement set of routes from scratch, and optimizes them in accordance with predetermined scheduling criteria.

Description: Background to the Invention This invention relates to a computerised appointment booking and scheduling apparatus for scheduling a plurality of operatives (e.g. service technicians) travelling to sites (e.g. customer sites) within a geographical area. Laithwaite, "Work allocation challenges and solutions in a large-scale work management environment", BT Technology Journal, Vol.13, No.1, January 1995, pages 46-54 describes a computerised work allocation system for field engineers. The system comprises a job reception component for receiving new jobs and adding them to a pool of work, and a tour-build algorithm for using the pool of jobs to generate a number of optimised tours for the engineers. The system also includes a real-time algorithm to cope with reactive work. Collins and Sisley, "Automated assignment and scheduling of service personnel", IEEE Expert, Vol.2, No.9, April 1994, pages 33-39 describes a computerised service management system which maintains current schedules for each of a number of technicians. The system uses an incremental scheduling system to update the schedules when a new service call is received or when a call is removed. The object of the invention is to provide an improved appointment booking and scheduling apparatus which is able to offer appointments within specific time slots. Summary of the Invention According to the invention there is provided a computerised appointment booking and scheduling apparatus for scheduling a plurality of operatives travelling to sites in a geographical area, the apparatus comprising a database containing a pool of jobs, input means for adding new jobs to said pool, and scheduling means for using the pool of jobs to generate and to store in the database a plurality of routes, indicating sequences of sites to be visited by said operatives, characterised in that: (a) said geographical area is divided into a plurality of regions, each of which regions includes a plurality of said sites; (b) each of said routes comprises information specifying a sequence of said regions to be visited by a particular operative, the times the operative is scheduled to enter and leave each of said sequence of regions, and the amount of free time available for new appointments in each of said sequence of regions; (c) said input means comprises means for offering appointments at specific times, using the currently stored routes to check for availability of operatives in specific regions at specific times, and for updating said pool of jobs and said routes to reflect new appointments that have been accepted; and (d) the apparatus also includes means for periodically running said scheduling means to generate from scratch a new plurality of routes, optimising the new plurality of routes to minimise a cost function, and storing them in the database to replace the currently stored routes. The invention also considers a method of operating a computer apparatus as claimed in claim 5. Brief Description of the Drawings Figure 1 is a block diagram of an appointment booking and scheduling system in accordance with the invention. Figure 2 is a schematic representation of a geographic area within which appointments are to be booked. Figure 3 is a schematic representation of a database holding a number of routes. Figure 4 is a flow chart showing the operation of an appointment server. Figure 5 is a flow chart showing the operation of an appointment booking scheduler. Figure 6 is a flow chart showing an optimization process performed by the appointment booking scheduler. Description of an Embodiment of the Invention One appointment booking and scheduling system in accordance with the invention will now be described by way of example with reference to the accompanying drawings. The system to be described is intended to handle appointments for a number of operatives (e.g. service engineers), visiting customer sites within a defined geographic area. Overview of the system Referring to Figure 1, the appointment booking and scheduling system comprises conventional computer hardware 10, having a processor, memory, display, input device, and disks (not shown). The computer hardware stores a database 11, and runs the following software: an appointment server 12, an appointment booking scheduler 13, a reactive scheduler 14, a Gantt manager interface 15, and a watchdog 16. Referring to Figure 2, the area in which appointments are to be booked is divided into a number of regions, designated A, B, C ... Each of these regions includes a number of customer sites, the location of each of which may, for example, be indicated by its postcode. Referring to Figure 3, the database 11 includes a number of tables 30, one for each day in a predetermined window in which appointments may be offered. For example, this window may cover two weeks from the current date. Each of the tables 30 contains a number of routes 31. Each route represents an itinerary for a particular operative on the day in question, and has a number of jobs associated with it. Each route comprises a sequence of records, with each record containing the following fields:- Region: the identity of a region to be visited by the operative. Start Time: the time the operative is scheduled to start working in the region. End Time: the time the operative is scheduled to finish working in the region. Time Used: the number of minutes scheduled to be spent on jobs already booked within the region. Time Left: the number of minutes free, available for new jobs in the region. The sum of Time Used and Time Left will normally equal the difference between Start Time and End Time. The database 11 also includes a number of job tables, which store a record for each job that has been booked. Each job record includes: details of the customer details of the problem promised time slot the route to which the job is currently allocated. Appointment server Figure 4 shows the operation of the appointment server 12. (Step 41) The appointment server uses the routes stored in the database to offer a number of possible appointments to customers. Specifically, if a customer within a particular region requests an appointment, the appointment server searches the routes to find one which visits the region and which contains sufficient free time within that region. Appointments are offered within predetermined time slots, e.g. two hour slots. If the customer accepts the offered appointment, the Time Used and Time Left fields of the appropriate record within the selected route are updated. Details of the job, including the selected route, are entered in the job tables in the database. (Step 42) When an appointment is made, the appointment server checks whether a predetermined trigger number of appointments has been made since the last time the scheduler was run. If not, the appointment server returns to Step 41 to await the next appointment. (Step 43) When the trigger number of appointments has been made, the appointment server calls the scheduler, and immediately returns to Step 41 to await the next appointment. Appointment booking scheduler Figure 5 shows the operation of the appointment booking scheduler. (Step 51) The scheduler first extracts the jobs to be scheduled from the job tables in the database. The scheduler picks out those jobs it is interested in for this run - i.e. those for a particular requested date and within a particular requested geographical area. Other tasks such as pre-allocated work and holiday activities are also read in by the scheduler from the database. This includes any unavailability periods that may have been input through the Gantt or database maintenance screens. (Step 52) The scheduler then calculates the total amount of free time, by calculating the total time currently used by jobs and subtracting this from the total time available to all engineers working on the day. This free time is then divided up amongst the regions in the form of "dummy" jobs, such that each region receives the same amount of free time. This ensures that some free time is always kept in each region for the use of subsequent job offers. (Step 53) The scheduler then takes the set of jobs to be scheduled (including the dummy jobs), and randomly allocates jobs to resources (operatives) for specific times, accounting for travel times, to create a set of sequences of jobs. The allocation of jobs to resources is performed from scratch, taking no account of the current routes stored in the database. (Step 54) The scheduler then attempts to optimize these sequences, by minimising a cost function. One of the factors in this cost function is travel time between jobs. As a result, the optimization process will tend to group together jobs in the same region. The optimization process is described in detail below with reference to Figure 6. (Step 55) The scheduler then uses the optimized sequences of jobs output from the optimization process to create a new table 30 representing a new set of routes. Each sequence of jobs results in a separate route in the route table. Creation of a route from a sequence of jobs involves: scanning the sequence of jobs to find groups of consecutive jobs in the sequence that all relate to the same region, calculating the "start time", "end time", "time used" and "time left" for that region, and creating a record for the region in the route table. As an example, consider the following sequence of jobs: Job 1 : Region A, at 9.00, duration 10 mins, travel 5 mins. Job 2 : Region A, at 9.15, duration 20 mins, travel 5 mins. Job 3 : Region A, Dummy job, at 9.40, duration 15 mins, travel 5 mins. Job 4 : Region B, Dummy job, at 10.00, duration 25 mins, travel 5 mins. Job 5 : Region B, Dummy job, at 10.30, duration 25 mins, travel 5 mins. Job 6 : Region C, at 11.00, duration 15 mins, travel 5 mins. This will result in a route as follows: Region A Start 9.00 End 10.00 Time used 40 mins Time available 20 mins. Region B Start 10.00 End 11.00 Time used 0 mins Time available 60 mins. Region C Start 11.00 End 12.00 Time used 20 mins Time available 40 mins Optimization process The appointment booking scheduler 13 uses a simulated annealing process to attempt to optimize the sequences of jobs. This employs a simulated "temperature" which is initially set a high value, and gradually reduced until it reaches a predetermined final value. At each value of the simulated temperature, the process shown in Figure 5 is performed a predetermined number of times N. The value of N can be varied according to the degree of optimization desired: a high value of N gives better optimization, but means that the scheduler takes longer to run. At each iteration of this process, the scheduler stores the "current best" set of sequences of jobs, along with a corresponding "current best" cost value for that set of sequences. Referring to Figure 6, each iteration of the process consists of the following steps. (Step 61) The sequences of jobs are changed in some random way, e.g. by changing the order of two adjacent jobs in a sequence, or by swapping jobs between two sequences. (Step 62) The changed set of sequences is then evaluated to determine a cost function for the changed set of sequences. This cost function includes factors such as time taken to travel between jobs, penalties for breaking an appointment, overtime working for operatives, and achieving a suitable match between the operatives' skills and the difficulty of the jobs. (Step 63) The evaluated cost for the changed set of sequences is then compared with the stored current best value. (Step 64) If the evaluated cost is better (i.e. less) than the current best, the changed set of sequences is saved as the new current best set of sequences, and its cost is saved as the new current best cost. (Step 65) If on the other hand the evaluated cost is greater than or equal to the current best value, the scheduler makes a random choice as to whether or not to accept this changed set of sequences, with a probability determined by the current simulated temperature: the higher the simulated temperature, the more likely the scheduler is to accept the changed set of sequences. If the scheduler decides to accept the changed set of sequences, the changed set of sequences is saved as the new current best set of sequences, and its cost is saved as the new current best cost. (Step 66) If the changed set of sequences is not accepted, the existing current best is retained. Reactive scheduler The reactive scheduler 14 is similar to the appointment booking scheduler, the main difference being that, whereas the appointment booking scheduler starts from a random initial allocation of jobs to resources, the reactive scheduler starts from the latest best allocation, as held in the database. The reactive scheduler takes over from the appointment booking scheduler when a predetermined horizon is crossed (e.g. on the day that the appointments are due), and takes account of last minute variations in resource availability, appointment cancellations, and urgent jobs required to be performed as soon as possible, by rescheduling dynamically. Gantt manager The Gantt manager interface 15 allows the current routes to be viewed graphically in bar chart form, to provide an overview of the operation of the schedulers. Watchdog The watchdog 16 continuously monitors the status of all jobs and can initiate the appointment booking scheduler automatically if the number of appointments booked on a particular route exceeds a predetermined threshold level. The watchdog also monitors the status of all jobs within the reactive scheduler horizon, and provides a warning of jeopardy situations. Some possible modifications It will be appreciated that many modifications may be made to the system described above without departing from the scope of the present invention as defined in the appended claims. For example, instead of using a separate appointment booking scheduler and reactive scheduler, both functions may be performed by the same unit operating in different modes.

Claims: A computerised appointment booking and scheduling apparatus for scheduling a plurality of operatives travelling to sites in a geographical area, the apparatus comprising a database (11) containing a pool of jobs, input means (12) for adding new jobs to said pool, and scheduling means (13) for using the pool of jobs to generate and to store in the database a plurality of routes (31), indicating sequences of sites to be visited by said operatives, characterised in that: (a) said geographical area is divided into a plurality of regions, each of which regions includes a plurality of said sites; (b) each of said routes (31) comprises information specifying a sequence of said regions to be visited by a particular operative, the times the operative is scheduled to enter and leave each of said sequence of regions, and the amount of free time available for new appointments in each of said sequence of regions; (c) said input means (12) comprises means (41) for offering appointments at specific times, using the currently stored routes to check for availability of operatives in specific regions at specific times, and for updating said pool of jobs and said routes to reflect new appointments that have been accepted; and (d) the apparatus also includes means (42,43) for periodically running said scheduling means to generate from scratch a new plurality of routes, optimising the new plurality of routes to minimise a cost function, and storing them in the database to replace the currently stored routes. Apparatus according to Claim 1 wherein said means (42,43) for periodically running said scheduling means comprises means (42) for checking whether a predetermined trigger number of appointments has been made since the last time the scheduling means was run and, if so, for calling the scheduling means. Apparatus according to Claim 1 or 2 wherein said scheduling means (13) comprises means (52) for generating a set of dummy jobs, collectively representing the total amount of free time available to operatives to handle new appointments, and means (53-55) for using these dummy jobs in generating said new plurality of routes to determine distribution of the free time within said new plurality of routes. Apparatus according to Claim 3 wherein said scheduling means comprises means for allocating said dummy jobs between said regions to achieve a substantially even distribution of available free time between said regions. A method of operating a computer apparatus to schedule a plurality of operatives travelling to sites in a geographical area, the method comprising maintaining a pool of jobs in a database (11), adding new jobs to said pool, and using the pool of jobs to generate and to store in the database a plurality of routes (31), indicating sequences of sites to be visited by said operatives, characterised in that: (a) said geographical area is divided into a plurality of regions, each of which regions includes a plurality of said sites; (b) each of said routes (31) comprises information specifying a sequence of said regions to be visited by a particular operative, the times the operative is scheduled to enter and leave each of said sequence of regions, and the amount of free time available for new appointments in each of said sequence of regions; (c) the step of adding new jobs to said pool comprises offering appointments at specific times, using the currently stored routes to check for availability of operatives in specific regions at specific times, and updating said pool of jobs and said routes to reflect new appointments that have been accepted; and (d) the method further comprises periodically running said scheduling means to generate a new plurality of routes from scratch, optimising the new plurality of routes to minimise a cost function, and storing them in the database to replace the currently stored routes. A method according to Claim 5 wherein said step of periodically running said scheduling means comprises checking whether a predetermined trigger number of appointments has been made since the last time the scheduling means was run and, if so, calling the scheduling means. A method according to Claim 5 or 6, further including the step of generating a set of dummy jobs, collectively representing the total amount of free time available to operatives to handle new appointments, and using these dummy jobs in generating said new plurality of routes to determine distribution of the free time within said new plurality of routes. A method according to Claim 7, further including the step of allocating said dummy jobs between said regions to achieve a substantially even distribution of available free time between said regions.

Inventors: EDGAR JAMES WILLIAM HARDIE, GATHERCOLE PETER JOHN, JOHNSON MICHAEL ALAN, ROYCROFT ALISTAIR EDWARD, SMITH ALAN, WEBSTER DONALD BRIAN, EDGAR, JAMES WILLIAM HARDIE, GATHERCOLE, PETER JOHN, JOHNSON, MICHAEL ALAN, ROYCROFT, ALISTAIR EDWARD, SMITH, ALAN, WEBSTER, DONALD BRIAN
Applicants: INT COMPUTERS LTD, INTERNATIONAL COMPUTERS LIMITED
Application year: 1997
Main classification: G06F17
IPC codes: G06Q30, G06F19, G06Q50, G06Q10