# Patent

## Title
Automated rotation tool

## Abstract

Various embodiments provide a scheduling system structured for generating at least one posting to fill a vacant post on a schedule. In an embodiment, the scheduling system includes a scheduling database and an automated rotation tool. The scheduling database includes a personnel roster and a schedule. The schedule includes a vacant post. The scheduling database transmits the schedule and the personnel roster to the automated rotation tool. The automated rotation tool includes a computer system, and receives the personnel roster and the vacant post beginning within the vacancy window from the scheduling database, and also receives a rule, a parameter, and a vacancy window. The automated rotation tool generates a posting assigning a person from the personnel roster to the vacant post according to the rule and the parameter, and transmits the posting to the scheduling database.

## Background
BACKGROUND
Some enterprises need to fill positions at both stationary and non-stationary work locations with large numbers of workers who may be spread across a wide geographic area. Workers may be rotated in and out of these positions, requiring scheduling that ensures that a position does not go vacant for an unacceptable period of time. As the size of the enterprise increases, the job of scheduling workers to fill positions within the enterprise becomes increasingly complex.
For example, a cruise ship operator may have a large number of non-stationary locations, such as cruise ships. The cruise ship operator may have thousands of positions, or posts, to fill on the cruise ships. Consequently, the cruise ship operator may employ thousands of workers, both employees and independent contractors, as crew on the cruise ships. Each post may need to be filled by a crew member appropriate for that post, for example, having the appropriate skills, certificates, and license, and the scheduling of crew members may need to take into account how long one crew member can fill a post and how the crew member will get to the location of the post and back home. The cruise ship operator may need to perform complex scheduling to get the right crew members to the right locations to fill the right post at the right time while keeping travel costs down and vacancy times to a minimum. The scheduling can be done manually, making use of current database software, but this may be tedious, labor-intensive, time-consuming, and the schedule produced may not be the most efficient or optimal schedule.



BRIEF DESCRIPTION OF THE FIGURES
The utility of the embodiments of the invention will be readily appreciated and understood from consideration of the following description of the embodiments of the invention when viewed in connection with the accompanying drawings.
FIG. 1 depicts an exemplary system including an automated rotation tool;
FIG. 2 depicts an exemplary block diagram of an automated rotation tool;
FIG. 3 depicts an exemplary block diagram of a scheduling database for use in a system with an automated rotation tool;
FIG. 4 depicts an exemplary flowchart for filling vacant posts using an automated rotation tool;
FIG. 5 depicts an exemplary section of a schedule;
FIG. 6 depicts an exemplary section of a personnel roster;
FIG. 7 depicts exemplary postings generated by the automated rotation tool;
FIG. 8 depicts an exemplary section of a schedule updated with exemplary postings;
FIG. 9 depicts an exemplary section of a personnel roster updated with exemplary postings;
FIGS. 10a-10f depict exemplary rules and parameters for use with an automated rotation tool;
FIGS. 11a and 11b depict exemplary screenshots of a user inputting rules and parameters into an automated rotation tool;
FIGS. 12a and 12b depicts exemplary screenshots of a user inputting a vacancy window into an automated rotation tool;
FIG. 13 depicts an exemplary screenshot of a schedule with vacant posts;
FIG. 14 depicts an exemplary screenshot of data for a person from a personnel roster; and
FIGS. 15a and 15b depict exemplary screenshots of a posting.



DESCRIPTION
Various embodiments provide scheduling systems and methods that can be configured and executed to perform scheduling operations. An automated rotation tool may receive data from a scheduling database, including vacant posts and a personnel roster containing persons who may be used to fill the vacant posts. The automated rotation tool may generate postings by selecting persons to fill the vacant posts. Rules and parameters input into the automated rotation tool may be used to govern the way the selection is performed, for example, placing restrictions on which persons can be used to fill certain vacant posts, and/or optimizing the selection based on factors such as travel time or travel cost. The postings generated by the automated rotation tool may be sent to the scheduling database, updating the schedule and triggering peripheral actions, such as the notification of scheduled persons and the booking of travel arrangements for scheduled persons. Optionally, the postings generated by the automated rotation tool may be reviewed by a user before they are used to update the schedule, for example, by displaying the schedule updated with the postings to allow the user to view the effect the posting will have on the schedule if approved. If the user approves of the postings, then they may be used by the scheduling database to update the schedule.
FIGS. 1 through 3 depict the interaction between an exemplary automated rotation tool (ART) 101 and an exemplary scheduling database 102 in a scheduling system. The ART 101 may be implemented on any suitable computer system, and may include a scheduling module 201, communications module 202, input module 203, and output module 205. For example, in an exemplary embodiment, the ART 101 may be implemented using software written in Microsoft Visual Basic running on Windows NT Server which may be running on any suitable server hardware, either as the primary operating system or within a virtual machine.
The scheduling module 201 of the ART 101 may be any suitable combination of hardware and software for implementing a scheduling algorithm, such as, for example, a linear optimization based scheduling algorithm. For example, in an exemplary embodiment, the scheduling module 201 may be implemented using a linear optimization scheduling software package available and the GNU license. The scheduling module 201 may include rules and parameters 204. The rules and parameters 204 may govern the operation of the scheduling algorithm. FIGS. 10a through 10f depict exemplary rules and parameters 204 for use with the ART 101.
The rules and parameters 204 may be input into the ART 101 by a user 103. FIGS. 11a and 11b depict exemplary screenshots of the user 103 inputting the rules and parameters 204 into the ART 101. The rules and parameters 204 may encompass any guidelines to be used by the scheduling module 201 in generating postings, and may be adjusted based on the enterprise using the ART 101. For example, for a cruise line, the rules and parameters 204 may include: rank rules, which may vary in application by rank and include recruiting office rules, berthing rules (gender balance must be maintained to ensure that a male and female do not end up sharing a berth on a ship), nationality and language balance rules (different cruise ships may require certain numbers of crew members who speak various language or are of various nationalities), experience rules, and ship selection rules; universal rules, which may apply to all persons, regardless of rank, and include cost savings rules (minimizing the cost to get a person to a post or back home from a post), utilization rules, experience rules, ship selection rules, and crew change limits; start/end date adjustment rules, which may be applied to certain vacant posts 304 to adjust the exact dates the post starts and ends; vacancy window parameters; and minimum vacancy duration parameters.
The rules and parameters 204 may include a vacancy window. The vacancy window may define a period of time in which the vacant post 304 must become vacant for the ART 101 to fill the vacant post 304. If the vacant post 304 becomes vacant during the period of time defined by the vacancy window, the ART 101 may attempt to fill the vacant post 304. Otherwise, the ART 101 may leave the vacant post 304 vacant, for example, to be filled during a subsequent running of the ART 101 using a different vacancy window, or to be filled manually by a user. The use of the vacancy window may allow the user 103 to control how far the schedule created from the postings generated by the ART 101 extends into the future. For example, a vacancy window of 60 days from Sep. 20, 2008, will result in the ART 101 generating postings only for vacant posts 304 that become vacant between Sep. 20, 2008 and Nov. 18, 2008. In this case, the ART 101 will not generate a posting for a vacant post 304 that becomes vacant on Nov. 25, 2008.
The rules and parameters 204 may also include a minimum vacancy duration. A minimum vacancy duration may define the smallest period of time a vacant post 304 must be vacant for the ART 101 to fill the vacant post 304. If a vacant post 304 is vacant for at least the minimum vacancy duration the ART 101 may attempt to fill the vacant post 304. Otherwise, the ART 101 may leave the vacant post 304 vacant, for example, to be filled during a subsequent running of the ART 101 using a different minimum vacancy duration, or to be filled manually by a user. The use of a minimum vacancy duration may allow the user 103 to control the level of micromanagement performed by the ART 101. For example, a minimum vacancy duration of 7 days will result in the ART 101 generating postings only for vacant posts 304 that are vacant for at least 7 days. For example, if a vacant post 304 is a waiter post that is only vacant for 6 days, the ART 101 would not attempt to fill the vacant post 304. If the vacant post 304 is vacant 8 days, the ART 101 would attempt to fill the vacant post 304 by posting a person to the post for at least some of those 8 days.
The rules and parameters 204 may also include penalties. A penalty may be a monetary amount that is a maximum acceptable cost of breaking one of the rules and parameters 204 when filling the vacant posts 304, if breaking the one of the rules or parameter 204 will lead to a more optimal schedule. For example, the berthing rules may have a penalty of $1000. If, while filling the vacant posts 304, the ART 101 determines that breaking a berthing rule will cost only $500, the ART 101 may break the berthing rule if doing so will result in a more optimal schedule, as the cost is less than the penalty amount.
The communications module 202 of the ART 101 may be any suitable combination of hardware and software for sending and receiving data, for example, to and from another computer system. The communications module 202 may be communicatively connected to the scheduling database 102, may receive data from the scheduling database 102 and pass the data to the scheduling module 201, and may transmit data, for example, postings, generated by the scheduling module 201 to the scheduling database 102.
The input module 203 of the ART 101 may be any suitable combination of hardware and software for receiving data input by, for example, a user of the system. For example, the input module 203 may receive data from a keyboard and mouse. Data received by the input module 203 may be used to create and/or modify the rules and parameters 204, and to otherwise control the operation of the ART 101. For example, the input module 203 may be used to instruct the ART 101 to perform scheduling operations, or to transmit the postings generated by the scheduling module 201 after performing scheduling operations to the scheduling database 102.
The output module 205 of the ART 101 may be any suitable combination of hardware and software for outputting data from the ART 101. For example, the output module 205 may output data to a computer monitor, and/or generate email or other types of electronic messages to be sent through the communications module 205 to another computer system, where the data may be viewed by a user.
The scheduling database 102 may be any suitable combination of hardware and software for implementing a database. A schedule 301 and personnel roster 302 may be stored in the scheduling database 102. The scheduling database 102 may also include a communications module 304. For example, in an exemplary embodiment, the scheduling database may be implemented using Microsoft SQL Server 2000 or 2005 software, running in Windows NT Server running on any suitable server hardware.
The schedule 301 may be all or a portion of a work or assignment schedule for people who work for or with an enterprise. FIG. 13 depicts an exemplary screenshot of a schedule with vacant posts. FIG. 5 depicts an exemplary embodiment of a section of the schedule 301, for Bar 1 on Cruise Ship A from September through December. Information in the schedule 301 may include the names of people, for example, employees or independent contractors, posted to positions, or posts, throughout the enterprise, the period of time for which that person is posted to a post, and the location of the post. For example, referring to FIG. 5, Johnson has been posted to a waiter post, Waiter 2 at Bar 1 on Cruise Ship A, for a period of two months, October and November. The schedule 301 may also include the vacant post 304. The vacant post 304 is a post to which no one has been posted. Referring to FIG. 5, no one is posted to Waiter 1, one of the waiter posts at Bar 1 on Cruise Ship A, for October and November. Waiter 1 for October and November is an exemplary vacant post 304. If a post is located at a non-stationary location, such as, for example, a cruise ship, the schedule 301 may also include the location of the non-stationary location at different points in time. For example, a cruise ship, and any posts on the cruise ship, may be located near Los Angeles in September, but near Anchorage in October.
The personnel roster 302 may be all or a section of a list of people eligible to be assigned to posts by the enterprise. For example, the personnel roster 302 may include crew members who may be assigned to posts on a cruise ship by a cruise line. FIG. 6 depicts an exemplary embodiment of a section of the personnel roster 302. Information in the personnel roster 302 may include the names of people, for example, employees or independent contractors, eligible to be posted to jobs throughout the enterprise, for example, crew members eligible to be posted to cruise ships; their rank or position which may determine what types of jobs they are eligible to be posted to; their dates of availability; their home location; and their current location. For example, referring to FIG. 6, Johnson has the rank of waiter, is available for the months of September and December 2008, lives in Charleston, and is currently in Belize City. Other information that may be in the personnel roster 302 includes a person's pay rate, years of service, performance rankings, years of experience in particular posts, or any other information that may be useful in determining whether to assign a person to a post. FIG. 14 depicts an exemplary screenshot of data for a person from a personnel roster.
The communications module 303 of the scheduling database 102 may be any suitable combination of hardware and software for sending and receiving data, for example, to and from another computer system. The communications module 303 may be communicatively connected to the ART 101, may transmit data, for example, the schedule 301 and the personnel roster 302, to the ART 101, and may receive data, for example postings, from the ART 101.
The scheduling database 102 may also be used by a user to preview the postings generated by the ART 101 before they are used to make changes to the schedule 301. A preview version of the schedule 301 may be generated by the scheduling database 102, allowing the user to view the schedule 301 as the schedule 31 would look after being updated with the generated postings. The user may then approve or disapprove the generated postings, either individually or as a group. Any approved generated postings may be used to update the schedule 301.
FIG. 4 depicts an exemplary flowchart for filling the vacant posts 304 using an automated rotation tool. In block 401, the ART 101 may receive a vacancy window. The vacancy window may be input into the ART 101 by the user 103, using the input module 203. The ART 101 may also receive the vacancy window through the use of preset settings within the ART 101, or from data automatically retrieved by the ART 101 from a file on the ART 101 computer system or another computer system.
For example, the user 103 may use a keyboard to input a vacancy window of 60 days into input module 203 of the ART 101. FIGS. 12a and 12b depict exemplary screenshots of a user 103 inputting the vacancy window. The exemplary vacancy window in FIGS. 12a and 12b may be for a schedule for a cruise line, and may start the first day of the third month subsequent to the current system date and end the last day of the fourth month subsequent to the current system date. The ART may find all vacant posts 304 that become vacant within the 2 month period of the exemplary vacancy window and schedule a single crew member from the cruise line to serve, for example, one full contract period in each of the vacant posts 304, beginning on the first day of the vacant post 304. The full contract period for a cruise line may be, for example, 10 months.
In block 402, the ART 101 may transmit the vacancy window to the scheduling database 102. The communications module 202 of the ART 101 may transmit the vacancy window received in block 401 to the communications module 303 of the scheduling database 102. The scheduling database 102 may interpret the receipt of the vacancy window from the ART 101 as a request for any vacant post 304 that begins within the vacancy window and the personnel roster 302 of people who may be eligible to fill any such vacant post 304.
For example, the exemplary vacancy window of 60 days may be transmitted to the communications module 303 of the scheduling database 102. The scheduling database 102 may check the schedule 301 for any vacant posts 304 that begins within the 60 day vacancy window. Referring to the exemplary schedule 301 of FIG. 5, if the 60 vacancy window begins on Sep. 1, there would be four vacant posts 304 that begin within the vacancy window: Waiter 1, October; Waiter 2, September; Waiter 4, September-November; and Bartender 2, September.
In block 403, the ART 101 may receive any vacant posts 304 from the scheduling database 102. The ART 101 may also optionally receive the entirety of the schedule 301, including the vacant posts 304 and non-vacant posts. The communications module 202 of the ART 101 may receive any vacant posts 304 and optionally the schedule 301 from the communications module 303 of the scheduling database 102. The scheduling database 102 may determine which vacant posts 304 to transmit to the ART 101 based on the vacancy window. Vacant posts 304 that begin within the vacancy window may be transmitted to the ART 101. The entirety of the schedule 301, or a portion thereof, may also be transmitted to the ART 101, depending on the preference of the system designer. For example, if the schedule 301 is a very large database file, it may be inefficient to attempt to transmit the entire schedule 301 to the ART 101. The vacant posts 304 may be any vacancies on the schedule 301 beginning within the vacancy window, and may be for any posts at any locations throughout an enterprise.
For example, the four vacant posts 304 from the exemplary schedule 301 of FIG. 5 may be received by the communications module 202 of the ART 101. The communications module 202 may pass the four vacant posts 304 to the scheduling module 201.
In block 404, the ART 101 may receive the personnel roster 302 from the scheduling database 102. The communications module 202 of the ART 101 may receive the personnel roster 302 from the communications module 303 of the scheduling database 101. All or a portion of the personnel roster 302 may be received by the ART 101, depending on the preference of the system designer. For example, the ART 101 may receive only the portion of the personnel roster 302 that includes persons with ranks and/or dates of availability that would make them eligible for the vacant posts received by the ART 101 in block 403.
For example, the exemplary personnel roster 302 depicted in FIG. 6 may be received by the communications module 202 of the ART 101. The communications module 202 may pass the personnel roster 302 to the scheduling module 201.
In blocks 404 and 405 the ART 101 may receive additional data from the scheduling database 102, including a listing of currently filled posts from the schedule 301, a listing of the persons posted to the filled posts, the schedule of any non-stationary location with posts, such as, for example, cruise ships, and additional rules and parameters 204 that may be specific to the vacant posts 304 sent to the ART 101 in block 404. For example, the scheduling database 102 may include rank to rank alternatives for certain vacant posts, allowing persons of a rank other than the specific one called for by a post to be used in that post anyway, i.e., a bartender may be able to fill certain vacant posts meant for waiters.
In block 406, the ART 101 may generate postings to fill the vacant posts 304 received in block 403. The vacant posts 304 and the personnel roster 302 may be sent to the scheduling module 201 of the ART 101. The scheduling module 201 may generate postings, assigning a person from the personnel roster 302 to each of the vacant posts 304 that become vacant within the vacancy window, according to the rules and parameters 204. The ART 101 may fill all of the vacant posts 304, or may be instructed to fill only the vacant posts 304 for certain ranks, for example, the ART 101 may only fill the vacant posts 304 for the bartender rank. The scheduling module 201 may employ linear optimization algorithms modified to account for the rules and parameters 204. The scheduling module 201 may take such rules and parameters 204 into account when generating postings, so as to generate postings that optimally adhere to, and do not violate any of, the rules and parameters 204. The rules and parameters 204 may be balanced and prioritized against each other through the use of penalties. For example, one of the rules and parameters 204 may require the scheduling module 201 to minimize the travel distance, or alternatively, the travel cost, for persons posted to the vacant posts 304, resulting in the scheduling module 201 generating postings that do not optimize, for example, the years of service, or the nationality mix, of persons posted to the vacant posts 304. As another example, one of the rules and parameters 204 may require that certain restaurants on cruise ships must have at least one waiter with 5 years of service, and no more than three waiters with less than 2 years of service, resulting in the scheduling module 201 generating postings that do not minimize travel distance to the extent that would have been possible without the rules and parameters 204.
For example, in an exemplary embodiment the scheduling module 201 may minimize travel costs for crew members assigned to cruise ships. The ART 101 may have access to airfares between home ports (where a crew member boards a cruise ship to being filling a post) and turnaround ports (where a crew member disembarks a cruise ship after the post has ended). Using these airfares, the ART 101 may produce postings that result in significant cost-savings on airfare for crew members when compared to manual scheduling.
Some of the rules and parameters 204 may be applied to the personnel roster 302 before the scheduling module 201 uses the linear optimization algorithm, in order to determine which persons on the personnel roster 302 are eligible for each of the vacant posts 304. This may reduce the number of variables the linear optimization algorithm needs to operate on. For example, only persons on the personnel roster 302 with the rank of bartender are eligible for a vacant post 304 requiring the rank of bartender. All other persons can be excluded from consideration for the vacant post 304 for a bartender. The linear optimization algorithm would therefore only need to consider the persons on the personnel roster 302 with the rank of bartender when attempting to generate a posting for the vacant post 304 for a bartender, rather than considering every person on the personnel roster 302, requiring fewer variables and less work.
A posting may not need to fill a vacant post 304 for the entire duration of the vacancy. For example, referring to FIG. 5, the vacant post 304 for Waiter 4 goes from September through November. The scheduling module 201 may generate a posting for Waiter 4 that only goes from September through October, if such a posting is permitted by the rules and parameters 204, and results in a more optimal schedule than would be possible if the vacant post 304 had to be filled for the duration of the vacancy. To this end, the rules and parameters 204 may include a rule allowing only one person to be posted to a vacant post 304 during any individual running of the ART 101, even if that person cannot be posted for the entire duration of the vacancy of the post.
For example, after receiving the exemplary 60 day vacancy window, the vacant posts 304, and the personnel roster 302, the ART 101 may generate the exemplary postings depicted in FIG. 7 for Bar 1 on Cruise Ship A. Posting 1 posts Williams to the Waiter 1 post for October. Posting 2 posts Brown to the Waiter 2 post for September. Posting 3 posts Miller to the Waiter 4 post from September through November. Posting 4 posts Webb to the Bartender 2 post for September. FIGS. 15a and 15b depicts an exemplary screenshots of associated with a posting.
In block 406, the generated postings may be transmitted from the ART 101 to the scheduling database 102. The communications module 202 of the ART 101 may transmit the ART 101 generated postings to the communications module 303 of the scheduling database 102. The generated postings may be used by the scheduling database 102 to update the schedule 301, filling in the vacant posts 304 on the schedule 201 with the persons posted to those vacant posts 304 by the scheduling module 201. The personnel roster 302 may also be updated to reflect the generated postings, for example, changing the dates of availability of persons who have been posted to the previously vacant posts 304. The scheduling database 102 may also trigger peripheral actions related to the generated postings. For example, if a generated posting assigns a person living in Miami to a cruise ship that will be docked in Los Angeles at the start of the post, the scheduling database 102 may trigger an automated travel system that will automatically make the necessary travel arrangements for the person, such as booking flights and hotel rooms.
In block 407, the scheduling database 102 may determine if the generated postings require approval from a user 103. If approval of the generated postings is required, flow proceeds to block 408. Otherwise, flow proceeds to block 409.
In block 408, the user 103 may approve, disapprove, or modify the ART 101 generated postings. The scheduling database 102 may transmit the generated postings to an output device, such as, for example, a computer monitor, where the user 103 may examine them. If the user 103 approves of the generated postings, flow proceeds to block 409. If the user 103 disapproves the postings, flow proceeds to block 410 and ends. The user 103 may also make modifications to the generated postings, and then approve or disapprove of the postings.
In block 408, the scheduling database 102 may update the schedule 301 with the generated postings. The postings generated by the ART 101 may be used to update the schedule 301, filling in the vacant posts 304 of the schedule 301 with the persons from the personal roster 302 assigned to fill the vacant posts 304 according to the generated postings.
For example, the four exemplary postings depicted in FIG. 7 may be transmitted to the communications module 303 of the scheduling database 102. The scheduling database 102 may use the four exemplary postings to update the schedule 301 and the personnel roster 302, resulting in the exemplary updated schedule 801 depicted in FIG. 8, and the exemplary updated personnel roster 901, depicted in FIG. 9.
In block 410, the flow ends.
In an exemplary embodiment, the ART 101 may be used to post workers for an enterprise, including employees and independent contractors, to posts at any combination of stationary and non-stationary locations. For example, a cruise operator may use the ART 101 to fill posts that are only non-stationary, i.e., on cruise ships, or may use the ART 101 to fill posts that are both non-stationary and stationary, i.e. shore-based locations.
With reference to FIG. 1, the user 103 may communicate with the ART 101 using a variety of devices through a variety of communication media. Examples of devices that may be employed by the users 103 include, without limitation, computer systems, personal digital assistants, notebook computers, and/or telephones (of either wireline or wireless variety). Examples of communication media that can be employed include, without limitation, wireless data networks, wireline networks, and/or a variety of networked media.
As used herein, a “computer” or “computer system” may be, for example and without limitation, either alone or in combination, a personal computer (PC), server-based computer, main frame, server, microcomputer, minicomputer, laptop, personal data assistant (PDA), cellular phone, pager, processor, including wireless and/or wireline varieties thereof, and/or any other computerized device capable of configuration for receiving, storing and/or processing data for standalone application and/or over a networked medium or media.
Computers and computer systems described herein may include operatively associated computer-readable media such as memory for storing software applications used in obtaining, processing, storing and/or communicating data. It can be appreciated that such memory can be internal, external, remote or local with respect to its operatively associated computer or computer system. Memory may also include any means for storing software or other instructions including, for example and without limitation, a hard disk, an optical disk, floppy disk, DVD, compact disc, memory stick, ROM (read only memory), RAM (random access memory), PROM (programmable ROM), EEPROM (extended erasable PROM), and/or other like computer-readable media.
In general, computer-readable media may include any medium capable of being a carrier for an electronic signal representative of data stored, communicated or processed in accordance with embodiments of the present invention. Where applicable, method steps described herein may be embodied or executed as instructions stored on a computer-readable medium or media.
It is to be understood that the figures and descriptions of the present invention have been simplified to illustrate elements that are relevant for a clear understanding of the present invention, while eliminating, for purposes of clarity, other elements. Those of ordinary skill in the art will recognize, however, that these and other elements may be desirable. However, because such elements are well known in the art, and because they do not facilitate a better understanding of the present invention, a discussion of such elements is not provided herein. It should be appreciated that the figures are presented for illustrative purposes and not as construction drawings. Omitted details and modifications or alternative embodiments are within the purview of persons of ordinary skill in the art.
It can be appreciated that, in certain aspects of the present invention, a single component may be replaced by multiple components, and multiple components may be replaced by a single component, to provide an element or structure or to perform a given function or functions. Except where such substitution would not be operative to practice certain embodiments, such substitution is considered within the scope of the embodiments.
The examples presented herein are intended to illustrate potential and specific implementations of the present embodiments. It can be appreciated that the examples are intended primarily for purposes of illustration of the embodiments for those skilled in the art. The diagrams depicted herein are provided by way of example. There may be variations to these diagrams or the operations described herein without departing from the spirit of the present embodiments. For instance, in certain cases, method steps or operations may be performed or executed in differing order, or operations may be added, deleted or modified.
Furthermore, whereas particular embodiments have been described herein for the purpose of illustrating the invention and not for the purpose of limiting the same, it will be appreciated by those of ordinary skill in the art that numerous variations of the details, materials and arrangement of elements, steps, structures, and/or parts may be made within the principle and scope of the invention without departing from the invention as described in the following claims.

## Claims

1. A programmable computer system for scheduling comprising:
(I) a programmable scheduling database comprising a computer system comprising a personnel roster and a schedule, wherein the schedule comprises a vacant post, the scheduling database adapted to:
transmit the schedule and the personnel roster to a programmable automated rotation tool,
receive a generated posting from the automated rotation tool, and
update the schedule with the generated posting; and

(II) the programmable automated rotation tool comprising at least one processor adapted to:
receive a rule and a parameter,
receive a vacancy window,
receive the vacant post beginning within the vacancy window from the scheduling database,
receive the personnel roster from the scheduling database,
generate a posting assigning a person from the personnel roster to the vacant post according to the rule and the parameter, and
transmit the posting to the scheduling database;

(III) wherein the parameter is a member of the group comprising: minimization of travel time and minimization of travel costs.

2. The system of claim 1, wherein the posting is approved by a user before the schedule is updated with the generated postings.

3. The system of claim 1, wherein the automated rotation tool uses a linear optimization algorithm to generate the posting.

4. The system of claim 1, wherein the automated rotation tool uses at least one of the rule and the parameter to determine if the person from the personnel roster is eligible to be assigned to the vacant post.

5. The system of claim 1, wherein the rules and the parameter are balanced and prioritized against each other and against airfare cost using penalties assigned to each rule.

6. The system of claim 1, wherein penalties are assessed against the posting if the posting does not adhere to the rule and the parameter.

7. The system of claim 1, wherein penalties are stated in terms of monetized values, using a cost of a potential expenditure on airfare as a baseline for setting penalties.

8. The system of claim 1, wherein the scheduling database and the automated rotation tool comprise one computer system.

9. The system of claim 1, wherein the scheduling database is adapted to notify the person from the personal roster that the person has been assigned to the vacant post after receiving the posting.

10. The system of claim 1, wherein the scheduling database is adapted to make travel arrangements for the person in response to receiving the posting.

11. A programmable automated rotation tool apparatus comprising: a programmable apparatus to implement modules; an input module adapted to receive a rule, a parameter, and a vacancy window; a communications module adapted to receive a personnel roster and a vacant post, and transmit a posting; and a scheduling module adapted to generate a posting assigning a person from the personnel roster to the vacant post according to the rule and the parameter if the vacant post begins within the vacancy window; wherein the parameter is a member of the group comprising: minimization of travel time and minimization of travel costs.

12. The apparatus of claim 11, wherein the scheduling module is further adapted to determine if the vacant post begins within the vacancy window.

13. The apparatus of claim 11, wherein the communications module is further adapted to receive the vacant post only if the vacant post begins within the vacancy window.

14. The apparatus of claim 11, wherein the scheduling module uses a linear optimization algorithm.

15. The apparatus of claim 11, wherein the scheduling module is further adapted to determine if a person from the personnel roster is eligible to be assigned to the vacant post using at least one of the rule and the parameter.

16. A computer-implemented method for generating a posting comprising:
receiving by a computer system a rule, a parameter, and a vacancy window from a user;
receiving by the computer system a vacant post and a personnel roster, wherein the vacant post begins within the vacancy window; and
generating with the computer system a posting assigning a person from the personnel roster to the vacant post according to the rule and the parameter; wherein the parameter is a member of the group comprising: minimization of travel time and minimization of travel costs.

17. The method of claim 16, wherein generating the posting uses a linear optimization algorithm.

18. The method of claim 16, further comprising, after generating a posting, transmitting the posting to a scheduling database.

19. The method of claim 18, further comprising receiving approval of the posting from a user before updating a schedule in the scheduling database with the generated postings.

20. The method of claim 16, further comprising:
before generating the posting, determining if a person from the personnel roster is eligible to be assigned to the vacant post using at least one of the rule and the parameter.

21. A programmable computer system for scheduling comprising:
(I) a programmable scheduling database comprising a computer system comprising a personnel roster and a schedule, wherein the schedule comprises a vacant post on a cruise ship, the scheduling database adapted to:
transmit the schedule and the personnel roster to a programmable automated rotation tool,
receive a generated posting from the automated rotation tool, and
update the schedule with the generated posting; and

(II) the programmable automated rotation tool comprising at least one processor adapted to:
receive a rule and a parameter,
receive a vacancy window,
receive the vacant post on the cruise ship beginning within the vacancy window from the scheduling database,
receive the personnel roster from the scheduling database,
generate a posting assigning a crew member from the personnel roster to the vacant post on the cruise ship according to the rule and the parameter, and
transmit the posting to the scheduling database;

wherein the parameter is a member of the group comprising: minimization of travel time and minimization of travel costs.

22. The system of claim 21, wherein the automated rotation tool uses at least one of the rule and the parameter to determine if the crew member from the personnel roster is eligible to be assigned to the vacant post.

23. The system of claim 21, wherein the scheduling database is adapted to notify the crew member from the personal roster that the person has been assigned to the vacant post after receiving the posting.

24. The system of claim 21, wherein the scheduling database is adapted to make travel arrangements for the crew member, in response to receiving the posting.