WO2000002153A1 - Systeme de planification d'itineraires - Google Patents

Systeme de planification d'itineraires Download PDF

Info

Publication number
WO2000002153A1
WO2000002153A1 PCT/US1999/014964 US9914964W WO0002153A1 WO 2000002153 A1 WO2000002153 A1 WO 2000002153A1 US 9914964 W US9914964 W US 9914964W WO 0002153 A1 WO0002153 A1 WO 0002153A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
fare
pricing
label
slice
Prior art date
Application number
PCT/US1999/014964
Other languages
English (en)
Inventor
Carl G. Demarcken
Jeremy Wertheimer
Original Assignee
Ita Software, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/109,871 external-priority patent/US6275808B1/en
Priority claimed from US09/109,876 external-priority patent/US6381578B1/en
Priority claimed from US09/109,486 external-priority patent/US6377932B1/en
Priority claimed from US09/109,873 external-priority patent/US6307572B1/en
Priority claimed from US09/109,328 external-priority patent/US6609098B1/en
Priority claimed from US09/109,327 external-priority patent/US6295521B1/en
Application filed by Ita Software, Inc. filed Critical Ita Software, Inc.
Priority to EP99932166A priority Critical patent/EP1092203A1/fr
Priority to AU48530/99A priority patent/AU4853099A/en
Publication of WO2000002153A1 publication Critical patent/WO2000002153A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"

Definitions

  • This invention relates to computerized travel planning systems .
  • Travel planning systems are used to produce itineraries and prices by selecting suitable travel units from databases containing geographic, scheduling and pricing information.
  • undamental travel units include "flights” (sequences of regularly scheduled takeoffs and landings assigned a common identifier) and "fares” (prices published by airlines for travel between two points) .
  • the term “itinerary” is often used to refer to a sequence of flights on particular dates, and the term “pricing solution” is often used to refer to a combination of fares and itineraries that satisfies a travel request.
  • the databases usually contain schedule information provided by airlines, typically in the so-called Standard Schedules Information Manual (SSIM) format, and usually fares published by airlines and resellers, typically provided through the intermediary Airline Tariff Publishing Company (ATPCO) .
  • SSIM Standard Schedules Information Manual
  • ATPCO Airline Tariff Publishing Company
  • the database may also contain "availability" information that determines whether space is available on flights, or this may be obtained through communication links to external sources such as airlines.
  • availability that determines whether space is available on flights, or this may be obtained through communication links to external sources such as airlines.
  • CRSs operate to produce fare and schedule information.
  • Sabre® There are four generally known computer reservation systems that operate in the United States, Sabre®,
  • the typical CRS contains a periodically updated central database that is accessed by subscribers such as travel agents through computer terminals.
  • the subscribers use the computer reservation system to determine what airline flights are operating in a given market, what fares are offered and whether seats are available on flights to make bookings and issue tickets to clients.
  • the computer reservation systems typically conduct searches using the information contained in the database to produce itineraries that satisfy a received request.
  • the search results are sorted and returned to the requester's computer for display.
  • the number of possible itineraries and pricing solutions that are returned by a CRS is a small portion of the total set that may satisfy a passengers request.
  • a travel planning system includes a server process that determines travel planning information in response to travel request information and a client process that receives said travel planning information.
  • the client process includes a manipulation process that operates on the travel planning information.
  • the manipulation process can operate on the travel planning information in accordance with at least one userpreference input .
  • an airline travel planning system includes a scheduler that produces a set of flights in response to a user specified query, a faring system that provides fares for the sets of flights, and which represents the sets of flights and fares as a set of logically manipulatable nodes in a data structure.
  • the system also includes an enumeration process that processes the data structure to extract flight-fare components from nodes in the data structure .
  • a travel planning system includes a server process that in response to at least one travel destination and at least one travel origin determines a set of pricing solutions, said set of pricing solutions represented by a structure that contains a plurality of logically combinable entries that represent a second plurality of pricing solution entities and a client process that receives said pricing solution structure.
  • the client process includes an enumeration process that extracts pricing solutions from the structure.
  • a travel planning system includes a server process that in response to at least one travel destination and at least one travel origin determines and represents a set of pricing solutions by a directed acyclic graph data structure and a client process that receives said directed acyclic graph.
  • the client process uses the directed acyclic graph representation to enumerate in response to user preferences a set of pricing solutions.
  • an airline travel planning system includes a server computer and a server process executed on said server computer, said server process including a search process to search for set of pricing solutions that determine possible set of pricing solutions in accordance with at least one destination and at least one origin, said search process representing said set of pricing solutions in the form of a directed acyclic graph and a client computer and a client computer process responsive to the set of pricing solutions represented in the form of the directed acyclic graph.
  • the client process including a manipulation process that manipulates the set of pricing solutions in the form of the directed acyclic graph representation in response to user preferences.
  • the manipulation process includes a pruning process responsive to user preferences that alters the directed acyclic graph representation in such a manner so as to eliminate undesirable pricing solutions, and an enumeration process responsive to user preferences that produces a sorted subset of the pricing solutions represented in the directed acyclic graph.
  • the client process receives a set of pricing solutions provided in a compact representation.
  • a preferred, compact representation of the set of pricing solutions is as a data structure comprising a plurality of nodes that can be logically manipulated using value functions to enumerate a set of pricing solutions.
  • One preferred example is a graph data structure type particularly a directed acyclic graph that contains nodes that can be logically manipulated or combined to extract a plurality of pricing solutions.
  • the client can store and/or logically manipulate the set of pricing solutions to extract or display a subset of the set of pricing solutions without the need for additional intervention by the server.
  • FIG. 1 is a block diagram of a client server travel planning system.
  • FIG. 2 is a flow chart showing a server process used in the system of FIG. 1.
  • FIG. 3 is a flow chart showing a client process used in the system of FIG. 1.
  • FIGS. 3A-3B are diagrammatic representations of pricing graphs.
  • FIGS. 4A-4B are flow charts showing a faring process used in the server process of FIG. 2.
  • FIG. 5 is a flow chart showing a process to decompose an itinerary into faring atoms used in the process of FIG. 4A.
  • FIG. 6 is a flow chart showing a process for partitioning itineraries used in the process of FIG. 5.
  • FIG. 7 is a flow chart showing a process for applying rules to faring atoms used in the faring process of FIG. 4A.
  • FIGS. 8A-8C are flow charts showing a process for retrieving fare rules.
  • FIG. 9 is a flow chart showing a process for applying fare rules .
  • FIG. 10 is a flow chart showing a process for determining priceable units used in the faring process of FIGS. 4A-4B.
  • FIG. 10A is a flow chart showing a process for enumerating collections of sets of faring components used in the process of FIG. 10.
  • FIG. 11 is a flow chart showing a process for enumerating collections of faring components used in the process of FIG. 10.
  • FIG. 12 is a flow chart showing a process for representing priceable units in a compact representation .
  • FIGS. 13-15 are flow charts showing processes for determining priceable units.
  • FIG. 16 is a flow chart showing a process for producing slice label sets.
  • FIG. 17 is a flow chart showing the process for constructing a pricing graph.
  • FIG. 18 is a block diagram showing the relationship between the pricing graph and a graphical user interface for the travel planning system of FIG. 1.
  • FIG. 19 is a flow chart showing various enumeration functions .
  • FIG. 20 is a diagram of a window depicting a user interface.
  • FIG. 21 is a diagram of a window used in an initial query
  • FIG. 22 is a diagram of a window depicting an exemplary solution of a one-way travel request.
  • FIG. 23 is a diagram of a window depicting an itinerary and associated fares corresponding to one of the solutions depicted in FIG. 21.
  • FIG. 24 is a diagram of a window depicting an exemplary solution of round trip travel request.
  • FIG. 25 is a diagram of a window depicting an outbound itinerary and a possible return itinerary and associated fares corresponding to one of the solutions depicted in FIG. 24.
  • FIG. 26 shows the window generally depicted in conjunction with FIG. 24 modified based upon a user selected criteria.
  • FIG. 27 shows a window depicting a histogram
  • the travel planning system can be used with various forms of travel such as airline, bus and railroad and is particularly adapted for air travel .
  • It includes a server computer 12 having a computer memory or storage media 14 storing a server process 15.
  • the server process includes a scheduler process 16 and a faring process 18.
  • the scheduler process 16 is any suitable scheduler process that will produce from a travel request sets of flights that can satisfy the request.
  • the faring process 18 is a process that determines a set of valid fares and links the set of valid fares to the sets of flights to form a pricing solution.
  • the server process 15 can be configured to produce other travel -related information as a result of a user query.
  • the server process 12 can produce routes or airline suggestions, optimal travel times and suggestions for alternative requests.
  • the travel planning system 10 also includes a plurality of databases 20a, 20b which store industry- standard information pertaining to travel (e.g., airline, bus, railroad, etc. ) .
  • database 20a can store the Airline Tariff Publishing Company database of published airline fares and their associated rules, routings and other provisions, the so-called ATPCO database.
  • Database 20b can be an inventory of current availability of airline information for a particular carrier and so forth.
  • the databases 20a-20b are typically stored locally and updated periodically by accessing remote resources 21a, 21b that maintain the respective databases.
  • the system 10 also includes a plurality of clients 30a-30c implemented by terminals or preferably personal computers.
  • the clients 30a-30c are coupled to the server 12 via a network 22 which is also used to couple the remote resources (21a-21c) that supply the databases 20a-20b to the server 12.
  • the network 22 can be any local or wide area network or an arrangement such as the Internet .
  • the clients 30a-30c are preferably smart clients. That is, using client 30c as an illustrative example, client 30c includes a client computer system 32 including a computer memory or storage media 34 that stores a client process 36 and a set of pricing solutions 38.
  • the set of pricing solutions 38 in one embodiment is provided from the server process 16 and comprises a set of fares that are valid for a journey, and associated information linking the fares to the flight segments of the journey.
  • the set of pricing solutions 38 is obtained from the server 12 in response to a user request sent from the client 30c to the server 12.
  • the server 12 executes the server process 15 using the scheduling process 16 and the faring process 18 to produce a set of pricing solutions for a particular journey. If requested by the client, for example client 30c, the server 12 will deliver the set of pricing solutions 38 to the requesting client 30c.
  • the requesting client 30c can store and/or logically manipulate the set of pricing solutions 38 to extract or display a subset of the set of pricing solutions as a display representation 41 on the monitor 40.
  • the server process 18 is preferably executed on the server computer 12 but could be executed on the client computer 32.
  • the server process 18 is responsive to a user input query 48.
  • the user input query 48 would typically include minimal information needed to determine a set of pricing solutions. This information typically requires at a minimum, an origin and a destination for travel. In addition, the information could also include times, dates and so forth.
  • This query 48 is fed to the scheduler process 16 that produces a large number of itineraries, that is, sequences of flight segments between the origin and destination for each slice of a journey.
  • scheduler systems that may be used include the OAG Flight Desk (Official Airlines Guide, a division of Reed Travel Group) or schedule components of computer reservation systems (CRS's) such as Sabre®, Apollo®,
  • the scheduler process 16 provides the itineraries to a faring process 18.
  • the faring process 18 provides a set of pricing solutions 38 by finding valid fares corresponding to the itineraries produced by the scheduler process 16.
  • the faring process 18 validates the fares for inclusion in the set of pricing solutions 38.
  • the set of pricing solutions 38 is used by an availability system 58 that interrogates an airline inventory database 20b to determine whether there are seats available on particular flights for particular pricing solutions.
  • the availability system 58 uses the airline inventory database 20b as a filter to remove from the set of pricing solutions 38 those pricing solutions for which there are not available seats.
  • the availability system 58 is shown after the faring process 18. However, it could be included at nearly any point in the server process 18. In addition, it is shown being fed by the pricing solution when it may only receive flight information from the scheduler process 16 depending on the airline.
  • the client system 30c receives the results from the server process 18. These results are the set of pricing solutions 38 and/or pricing solutions based upon availability.
  • the client process 36 executed in the client 30c uses this information or a subset of it to access a booking system 62 to provide a booking and reservation for a user selected, enumerated pricing solution, as will be described below.
  • the client process 36 receives a listing of possible itineraries from the scheduler process 16 as well as the set of fares from the faring process 18 or the availability system 58.
  • the set of pricing solutions 38 if obtained from the faring process 18, will include a large number of pricing solutions for which there is not any available inventory. Therefore, the components would need to be first checked out with an airline prior to booking.
  • the set of pricing solutions 38 if obtained after the availability system 58 should contain pricing solutions which have a high degree of availability for booking on an airline.
  • the set of pricing solutions 38 is provided in a compact representation 38' .
  • a preferred, compact representation 38' of the set of pricing solutions 38 is as a data structure comprising a plurality of nodes including itineraries and fares and that can be logically manipulated using value functions to enumerate a set of pricing solutions.
  • One preferred example is a graph data structure type particularly a directed acyclic graph (DAG) that contains nodes that can be logically manipulated or combined to extract a plurality of pricing solutions.
  • DAG directed acyclic graph
  • the client process 36 receives the flight information from scheduler process 16 and the pricing solution from the faring process 18 or the availability system 56 and enumerates pricing solutions from the directed acyclic graph (DAG) representation.
  • DAG directed acyclic graph
  • the enumerated set of pricing solutions is rendered in a graphical user interface 41 on the client monitor 40 (FIG. 1) in a manner as will be described below.
  • the client 40 can manipulate travel options and can query the local copy of the DAG to produce and display a subset of pricing solutions enumerated from the DAG that satisfy the query 76.
  • the manipulation process used to control the display and change the travel options will be described below.
  • a directed acyclic graph is used to represent the compact set of pricing solutions 38' since, in general, the number of nodes needed to represent a typical pricing solution will be substantially less than the actual number of pricing solutions represented by the DAG. This significantly increases the efficiency of transfer of a set of pricing solutions 38 from the server process 18 to the client process 36.
  • the DAG representation also minimizes the storage requirements for the set of pricing solutions 38.
  • the DAG representation permits the use of powerful search, sorting and manipulation processes to produce various subsets of set of pricing solutions in an efficient manner.
  • a directed acyclic graph is a set of nodes connected by directed arcs, that have no loops of arcs in the same direction.
  • a node A is connected to a node B via an arc A-B, then A is called a parent of B, and B is called a child of A.
  • Each node may have zero, one or many parents and zero, one or many children.
  • a pricing solution that is represented by a graph will be referred to as a pricing graph.
  • a pricing graph that is produced by the faring process 18 and that represents a pricing solution includes three types of nodes.
  • the first type of node is an exclusive node, i.e., "OR" node.
  • An OR node N with children A, B and C represents an exclusive choice between A, B and C.
  • a pricing-solution involving node N contains either the fares and itineraries represented by A, or by B, or by C.
  • the second type of node is a collection node, i.e., an "AND" node.
  • An AND node N with children A, B and C represents the sum of A, B and C.
  • a pricing solution involving N contains all the fares and itineraries found within A, B and C.
  • the third type of node is a terminal node.
  • Terminal nodes are used to hold pricing objects. Pricing objects include fares, itineraries, surcharges, routes, prices, booking codes, taxes, rules/restrictions and other information of the user or information that might be part of a travel option.
  • This pricing-graph represents a total of nine pricing solutions. These solutions can be extracted from the pricing-graph by descending from the root node, node 0. At every OR node a choice between children is made, and the choice determines the pricing-solution that results. At every AND node each child branch is descended, and the results are combined.
  • BOS-LAX UA023 is an itinerary which uses standard nomenclature to represent airports BOS and LAX, airline UA, and flight number 023. In general, conventional nomenclature used in the airline industry will be used herein.
  • the pricing-graph encodes the requirement that two itineraries are combined, one from slice 1 and one from slice 2, to form a pricing solution. Further, each itinerary is spanned by fares. In this case each pricing solution involves two fares, and round-trip fares are combined with like round-trip fares. In most circumstances, the number of nodes in the pricing-graph is small compared to the number of pricing-solutions those nodes represent. In many cases, a graph of 10,000 or so nodes can represent more than 1,000,000,000 pricing-solutions .
  • nodes of the pricing graph corresponding to Table 1 are shown, as an example.
  • This figure illustrates the manner in which nodes in the pricing graph data structure as represented in Table 1 are combined to provide the pricing solutions shown in Table 2.
  • pricing solution No. 1 (from TABLE 2) as an example, it can be shown that starting at the top of the graph at node 0, node 0 allows for a choice between nodes 1, 2, and 3.
  • Node 1 is chosen.
  • Node 1 is the AND node that points to nodes 10 and 14, and has two pointers to node 17.
  • Node 10 is an OR node which provides a choice of either nodes 11 or nodes 12.
  • Node 11 as shown in FIG. 3A corresponds to a terminal node, the itinerary ('BOS-LAX UA 023) .
  • Node 12 corresponds to a terminal node, the itinerary BOS-DFN UA
  • the fare for pricing solution 1 is provided by node 17 which has two pointers, one for each slice, to the fare "US BOS-LAX RT QE7NR" corresponding to the fare shown for pricing solution no. 1 in Table 2 for the first slice.
  • the second itinerary for pricing solution no. 1 is provided by node 14 which is referenced in AND node 1 that points to the itinerary LAX-BOS UA 515.
  • the corresponding fare is also from terminal node 17 since it is a round trip fare UA BOS-LAX RT QE7NR.
  • a second one of the pricing solutions for example, the pricing solution 4 incorporating the terminal node 12 is provided by starting at node 0, and using node 1.
  • Node 1 is an AND node requiring that nodes 17 (twice) , node 10, and node 14 be included.
  • Node 10 is an OR node as mentioned above and is used to select node 12 which is the itinerary including segments "BOS-DFW UA 100" and "DFW-LAX UA 103". From node 1, node 14 the return itinerary LAX-BOS UA 515 also is reached.
  • Node 17 also is chosen which contain the round trip fares.
  • the remaining ones of the pricing solutions can be extracted from the pricing graph in the same manner as the two examples given above.
  • a graph will typically have many more pricing solutions than nodes in the graph.
  • the example just illustrated in conjunction with FIG. 3A has 9 pricing solutions and 19 nodes which is an exception to that general rule.
  • Another example of a pricing graph which does satisfy that general observation is shown in conjunction with FIG. 3B.
  • a pricing graph is shown having 43 nodes N0-N42 that when combined represent 856 pricing solutions.
  • Each node in the pricing graph has a number associated with it corresponding to the number of pricing solutions that is represents.
  • identifiers (representing the nodes of the terminals) are substituted in the pricing graph for the actual terminal objects of the graph.
  • outbound and return itineraries, and fare nodes are represented by the Nodes N20-N42
  • This pricing graph (TABLE 3) has 9 itineraries which can be combined with 14 fares represented by 13 AND nodes and 7 OR nodes.
  • the pricing objects are represented by 23 nodes.
  • the pricing graph has a combined total of 43 nodes to represent 876 pricing solutions.
  • FIG. 3B shows examples of a pricing graph for a round trip LAX-BOS journey. This example shown in FIG. 3B is generally more representative of an outcome of a faring search. That is, generally the pricing graph represents more pricing solutions than nodes contained in the graph. TABLE 3
  • the faring process 18 includes a process 80 to retrieve itinerary sets for all slices in an itinerary.
  • the itinerary sets are provided from the scheduler process 16 for each slice of a journey where a slice corresponds to a direction of travel.
  • the faring process 18 decomposes 82 the itinerary into faring atoms.
  • faring atoms refer to a sequence of flight segments or equivalently legs that are spanned by a single fare.
  • the itinerary refers a sequence of flight segments or equivalently legs that are spanned by a single fare.
  • a faring atom is represented by a data structure that preferably includes the following fields as shown m TABLE 5 :
  • the faring process 18 After the faring process 18 decomposes the itineraries into faring atoms, the faring process 18 retrieves fares 84 and rules 86 for each faring atom by accessing the fares/rules database 20a mentioned above. At this point a fare's routing is retrieved from a routing database and applied to a faring atom. If the routing test fails, the fare cannot be applied to the faring atom and a fare component is not built.
  • the faring process 18 applies the rules 88 to the faring atoms to produce fare components.
  • Fare- components are combinations of faring-atoms and fares.
  • Fare-components (TABLE 6) are produced if a fare's rules pass a preliminary check on a faring-atom. They are used to store deferred rules (e.g., deferred record-2s and combinability record-2s) that are applied at a later stage of processing.
  • Fare components also store extra information produced during the rule-checking process, such as information about surcharges and penalties and discounts that are applied to the base fare price.
  • the faring process 18 constructs 90 priceable units. For certain types of rules such as those which require access to fares and/or flights from outside of the fare component, those rules are stored in the fare component for later or deferred evaluation.
  • the priceable unit process 90 takes valid fare components and constructs priceable units from the fare components. This process 90 involves grouping fare components from different slices and checking fare component combination restrictions. At this stage of processing, the rules deferred in step 88 are reapplied.
  • Priceable units are represented by p ⁇ ceable-unit- cores and priceable-unit-labels .
  • Priceable-unit-cores are collections of fares and other information associated with fares within a priceable-unit , such as discounts and penalties and surcharges.
  • Priceable-unit- cores (TABLE 7) are referenced by priceable-unit-labels
  • Priceable-unit-labels group a set of priceable-unit- cores with sets of faring-atoms. Together, they are used to represent sets of priceable-units (TABLE 8) .
  • the itineraries and priceable units are grouped together into complete set of pricing solutions. This occurs by a link process 94 that links itineraries to corresponding pricing units from different slices to provide the pricing solution. At this juncture, any remaining cross priceable unit fare combinability checks are performed to eliminate invalid combinations .
  • the linking process involves two additional data structures slice-label-sets and open-label-sets.
  • Slice- label-sets group itinerary divisions by the multi-slice priceable-unit-labels they can enter into.
  • a unique slice-label-set is constructed for every set of multi-slice priceable-unit- labels.
  • Each slice-label-set stores both the set of multi-slice priceable-unit-labels and a set of i tinerary- label -holders, which contain single-slice priceable-unit-labels on a per-itinerary basis.
  • Each slice-label-set is a pair of an itinerary and a set of division-label -holders .
  • Each of these division-label- holders is a pair of a division and a set of sets of single-slice priceable-unit-labels (TABLE 9) .
  • Slice-Label-Set fields multi- slice-PU-labels A set of multi-slice PU- labels .
  • itinerary-label-holders A set of itinerary-label -holders . Itmerarv-Label-Holder field
  • Open-label-sets (TABLE 10) are used to summarize the state of the linking process 94. Each is a set of "open" multi-slice priceable-unit-labels and a set of backward- links . Each of these backward-links is a pair of a slice-label-set and an open-label-set.
  • the pricing solution resulting from the linking process 94 is used to construct a pricing graph from the various data structures built during the preceding processes. This pricing graph is transmitted to the client process or can be stored for later use or transmission.
  • a pseudocode representation of the high level processing logic involved in the above search procedure is set out below m TABLE 11. TABLE 11 pr ⁇ ce- ⁇ t ⁇ nerary-sets( ⁇ t ⁇ nerary-sets fare-database, rule-database, routing-database environmental-information) //
  • cr ⁇ ate-divisions constructs the itinerary-divisions, fa ⁇ ng-markets and fa ⁇ ng-atoms for
  • the process 82 to decompose an itinerary into faring atoms includes a retrieval process 100 that retrieves all itineraries for all slices in a journey. For each itinerary in each slice, the process 82 groups faring atoms by faring markets at 104 and partitions itineraries into the divisions of faring atoms at 106. Referring now to FIG. 6, itineraries are partitioned into divisions of faring atoms by examining
  • the process checks 118 whether fares exist for the airline in the markets spanned by each faring atom. Otherwise, the process will branch from the examination process 112 and the airline check process 114 to a fare check process 118 to check in the fare database 20a that a fare exists for the airline in the market spanned by the faring atom. If all of the faring atoms within a division have at least one fare in the market, a division for the market is produced at 120. Another possible implementation creates divisions by producing all possible partitions of legs into faring-atoms.
  • previous-fa ⁇ ng-market find( ⁇ o ⁇ g ⁇ n-c ⁇ ty, destination-city, a ⁇ rl ⁇ ne> fa ⁇ ng-markets) If (previous-fa ⁇ ng-market) retum(prev ⁇ ous-fa ⁇ ng-market) Else
  • fanng-market get-ranng-market(ong ⁇ n-ai ⁇ ort, destinatio ⁇ -ai ⁇ ort, airline) If (fanng-market ⁇ > nil)
  • fa ⁇ ng-atom new-fa ⁇ ng-atom()
  • fa ⁇ ng-atom.fa ⁇ g-market fanng-market
  • fa ⁇ ng-atom.legs-and-departure-times legs-and-departure-times
  • fa ⁇ ng-atom.p ⁇ ceable-unit-labels 0
  • legs-and-departure-t ⁇ mes1 legs-and-departure-t ⁇ mes(1 . i]
  • Iegs-and-departure-t ⁇ mes2 legs-and-departure-t ⁇ mes[i+1 number-of-legs]
  • des natio ⁇ -ai ⁇ ortl dest ⁇ nat ⁇ on-ai ⁇ ort(fanng-atom-legsl)
  • o ⁇ g ⁇ n-ai ⁇ ort2 o ⁇ g ⁇ n-ai ⁇ ort(fa ⁇ ng-atom-legs2)
  • the input to the application process 88 includes the fare/rules database 20a and faring markets 130.
  • a fare and corresponding rules are retrieved 132 from fare/rules database 20a. The rules are applied to the faring-atoms at 134.
  • faring- atoms are shared across itineraries, it is only necessary to apply a fare ' s rules to a faring atom once no matter how many itineraries the faring-atom may appear in.
  • the results of rule applications are cached 136. Caching of a rule minimizes computational effort. This is because the rule application process 88 involves many redundancies, because different fares share rule restrictions.
  • Valid fare/faring-atom combinations are stored 138 in the form of fare- components .
  • a process 132 for retrieving rules and footnotes from the rules database 20a containing the ATPCO rules, routes and fares includes retrieving 150 general rules commonly referred to as record_0 ' s for each faring atom in a faring market .
  • the retrieved general rules are searched 152 to find the first record_0 matched to the faring atom to produce a matched record_0. If there is a matched record_0 , it is stored at 154.
  • the process 132 retrieves 156 application rules commonly referred to as record 1 rules.
  • the retrieved application rules are searched to find the first record_l matched to each of the faring atoms.
  • the first matched record_l ' s is stored 160.
  • the process 132 retrieves 164 category controls (commonly referred to as record_2's) .
  • the process 132 will find the first record-2 in each category that matches the fare.
  • Record_2 ' s or the category control records typically comprise a large number of categories currently 30 different categories.
  • the process is run for each category. It is not necessary that every category have a match and in many instances many if not most categories will not have a match. Rules in those categories that have a match are stored at 168 and the process continues to run at 170 until all categories have been traversed. If all categories have not been traversed, a pointer to a next category 172 is set and the next category is retrieved 164. Record-3's are retrieved as part of the rule application process 132.
  • the ATPCO rule retrieval process 132 that retrieves the rules for a fare includes record-matching processes 150, 156, and 164 (FIG. 8A) that may depend on the departure date of the faring-atom. To minimize computational effort expended in rule retrieval 132, rules for a fare are not retrieved once for every faring-atom, but at most once per departure-date .
  • a caching mechanism is employed. Referring now to FIG. 8C, a process that checks dates for rule retrieval includes retrieving 177 a current date from a faring market that contains faring atoms with multiple travel dates, and a stored date corresponding to a latest stored date that a result for the rule remains valid. The current date is compared
  • the rule application process 134 operates on each faring atom.
  • the process 134 applies 181 the record- 1 records to check for booking codes etc.
  • the process 134 determines whether each record-2 was cached in the faring atom. If a record-2 was cached in the faring atom, the process returns 183 the cached results. Otherwise, the process 134 applies 184 the record_2 ' s for each of the stored record_2 categories.
  • Rules provisions are expressed as "record-2s", which are retrieved 132, as described in FIG. 8. These record-2s express logical relations over so called “record-3s", which are records that contain detailed provisions.
  • Each record-3 procedure returns either DEFER, FAIL, PASS, NO-MATCH or UNAVAILABLE, and these results are combined according to the logic in the record-2 to produce a result of either DEFER, FAIL or PASS for the entire record-2.
  • the proper procedures for applying record-3s and for combining their results according to record-2s are described in the ATPCO documentation.
  • the "PASS" value is an extension used here since not all record-3s can be fully evaluated on the basis of the faring-atom alone.
  • the RECORD-2 result is either PASS, FAIL or DEFER (the other two values are from record-3s) .
  • the process can return one of five possible results, "DEFER”, "PASS”, or "FAIL.”
  • the record as well as its results DEFER, PASS, or FAIL, are cached at 136 in the faring atom.
  • the result FAIL causes the process 134 to exit 190.
  • returning a pass or a defer permits the process 134 to continue to examine remaining record-2s.
  • a defer or pass result is stored 185 and it is determined 186 whether all record- 2s have been processed. If all records have not been applied/examined if cached, the next record-2 is retrieved at 186a.
  • the PASS result causes the process 134 to construct 188 fare components and exit 190. If at least one DEFER result was returned process 134 constructs 188 the fare components, stores 189 deferred record-2 ' s in the faring component and exits 190.
  • the routines 188, 189 and 190 thus correspond to the stored valid faring atom combination routine 138 (FIG. 7) .
  • record-3s The information contained in record-3s varies by category. For example, category-5 record-3s, which specify advanced-purchase restrictions, contain fields that specify how long in advance of travel time a fare must be reserved, how long after a reservation a fare must be purchased, and so on.
  • Category-4 record-3s which specify flight-restrictions, contain fields that restrict flight-numbers, aircraft-type, airline, and whether flights are direct or non-stop. Every category has a different procedure for evaluating a faring-atom. As discussed above the record-3 procedures that evaluate a faring-atom returns one of five values, and may return some other information such as discounts, penalties and surcharges. A value of PASS or FAIL can only be returned if that answer can be determined without examining any faring-atom other than the one the fare spans .
  • the ATPCO rules distinguish between fare-component and priceable-unit restrictions. Most restrictions on travel route, flight -numbers, and aircraft -type are fare-component-based, i.e., restrict only the flights in the faring-atom governed by the fare. On the other hand, minimum and maximum-stay restrictions are priceable-unit-based, i.e., apply to joint properties of all the faring-atoms within a priceable-unit. A minimum-stay requirement for a round-trip fare, for example, constrains the combination of outbound and return faring-atoms. Generally speaking, FC-based record-3s will be able to return either PASS or FAIL, while PU-based restrictions may need to be deferred.
  • Deferring rules means checking them at a later point, however. This is a more computationally expensive process, because it must be done for combinations of faring-atoms within a priceable-unit, and the number ways faring-atoms can be combined to create priceable- units can be quite large, and grows quickly with the size of the priceable-unit. For this reason, whenever possible it is desirable for record-3 application not to result in a value of DEFER.
  • faring-atoms can be bounded. For example, the earliest and latest departure-time ⁇ ⁇ within a faring-market , or within a slice, can be recorded, as well as the minimum and maximum number of connections within the faring-market and so forth. This information can often be used to evaluate priceable-unit restrictions at the fare-component level. A simple example of this is given below.
  • the earliest and latest departure-times can be calculated.
  • the earliest departure-time in the slice-2 NW MSP_ORD market is 15APR97 19:00
  • the latest departure-time is 16APR97 19:00.
  • the minimum-stay requirement restriction When the minimum-stay requirement restriction is applied to the first faring-atom, its departure time of 12APR97 13:00 can be compared to the two outer bounds on return-travel departure-time, 15APR97 19:00 and 16APR97 19:00. In this case, the minimum-stay requirement is met even for the earliest possible return travel time, so the faring-atom unconditionally passes the restriction. Similarly, for the third faring-atom, since the restriction fails even for the latest possible return-travel departure-time, the faring-atom unconditionally fails the minimum-stay requirement. But for the second faring-atom, because the restriction fails for the earliest possible return time, but passes the latest possible return time, it is necessary to defer the application of the restriction.
  • Categories 3, 5, 6, 7, 8, 9, 10 and 14 are usually priceable-unit-based. Categories 3 and 14 usually restrict the departure-date of the first flight in a priceable-unit. Category 5 specifies how far in advance of travel fares must be purchased, and this is usually measured from the departure-date of the first flight in a priceable-unit. Categories 6 and 7 specify minimum and maximum-stays at stopovers within a priceable-unit . In many cases these categories do not need to be deferred.
  • Each category-3 record-3 an example of which is shown in TABLE 14 specifies a permissible date range for travel, via a start-date and an end-date, either of which may be left blank.
  • the default interpretation of category-3 is that these date restrictions apply to the departure-date of the first flight of the priceable-unit. This interpretation can be modified in two ways. First, if a certain field is set, then the category becomes fare- component based. In other words, the date restrictions apply to the departure-date of the first flight within the fare-component . Second, a geographic specification may be provided that alters the measurement of the departure-date. For example, the geographic specification may dictate that the relevant date is the departure-date of the first transoceanic flight.
  • Category-3s also includes a field that specifies whether the record-3 is available. If it is not, that is an indication that some information is missing and the record-3 should not be used for pricing a ticket. In this case, the record-3 application must return UNAVAILABLE. Finally, a category-3 may include a specification of a date range that the category-3 is valid for. If travel is outside of these dates, the record-3 application must return NO-MATCH. TABLE 14
  • the logic of the procedure that processes the record-3 is as follows. If the record-3 is not available, UNAVAILABLE is returned. If travel is outside of the valid date-range of the record-3, NO- MATCH is returned. Then, processing branches depending on whether the record-3 is priceable-unit based (the default) , or fare-component based. If fare-component based, and there is no geographic specification, the departure date of the faring-atom is compared to the date-range of the record-3, and either PASS or FAIL is returned. If a geographic specification is provided, then this is used to compute the relevant travel date, and the same procedure applies. If, on the other hand, the record-3 is priceable-unit based, then broad time- bounds checks are used.
  • priceable unit represents a fundamental unit at which many fare restrictions apply. For example, round trip fares often include minimum stay requirements and these can only be expressed when both an outbound and a return faring atom are combined. This occurs at the level of the priceable unit.
  • the process 90 of constructing priceable unit cores and pricing unit labels is organized as several nested procedures as follows.
  • the process enumerates 200 a collection of faring markets. Collections of faring markets are enumerated 200 with each faring market from a different slice by an algorithm that depends on the type of a priceable unit that is constructed. For example, for a round trip priceable unit two faring markets are chosen on the same carrier and between the same cities but in opposite directions.
  • the process 90 also enumerates collections of sets of faring components at 202. For each faring market in a collection of faring markets its faring components are partitioned into sets of fare components that have the same fare and the same combinability record-2s.
  • Collections of these sets are enumerated with one set chosen from each faring market resulting in a collection of fares and associated collection of sets of fare components.
  • any combinability record 2-s are evaluated to insure that the fares may be used together in a priceable unit.
  • the process 90 also enumerates 204 collections of fare components.
  • the process evaluates any deferred record 2-s on collections of fare components in the enumeration process 204. These collections are constructed by selecting one fare component from each set.
  • the process of evaluating deferred rules on collections of fare components outputs results in the form of a list of factored representations of priceable units.
  • the output is a logical OR of logical ANDs of logical ORs of fare components.
  • p ⁇ ceable-unit-labels create-PUs- ⁇ n-markets1(fa ⁇ g-market1, p ⁇ ceable-unit-labels, one-way)
  • p ⁇ ceable-unit-labels ⁇ eate-PUs- ⁇ n-markets2(fa ⁇ ng-mart ⁇ et1, fa ⁇ g-market2, p ⁇ ceable-unit-labels, round-tnp)
  • p ⁇ ceable-u ⁇ it-iabels create-PUs- ⁇ n-markets2(fa ⁇ ng-mar1 ⁇ et1 , fa ⁇ g-market2, p ⁇ ceable-unit-labels, e ⁇ rcie-t ⁇ p2)
  • This pseudo-code iterates over faring-markets m different slices, and passes faring markets to one of several possible create-PUs -m-markets procedures. These procedures vary by size of priceable-unit produced.
  • the code ensures that the far ⁇ ng- ⁇ arkets are in the correct format for the type of priceable-unit produced, and that the priceable units are all on the same airline. This last restriction is motivated by efficiency since rarely do carriers permit priceable- units with fares from more than one airline.
  • Each call to create-PUs-in-mar ets returns an updated set of priceable-unit-labels.
  • these priceable-unit-labels are stored in their component faring-atoms.
  • priceable-units are represented by a combination of two data structures: priceable-unit-cores (PU-cores) and priceable-unit-labels (PU-labels) .
  • PU-core data structures contain all the information associated with an individual priceable-unit except its faring-atoms.
  • each PU-core contains a set of fares (one fare per fare-component in the priceable-unit) and any other information associated with those fares, such as discounts, surcharges and penalties.
  • PU-label data structures compactly represent connections between faring-atoms and PU-cores.
  • Priceable-units are constructed by selecting one fare-component from each set and evaluating any deferred rules. The simplest manner that this could be accomplished would be to enumerate complete collections of fare-components and to apply the deferred record-2s from within these fare-components . Often, this method can be made more efficient in some cases by use of the function get-OR-AND-OR-form as will be described. That function takes a collection of sets of fare-components, evaluates any deferred rule- conditions, and returns a representation of the set of valid priceable-units.
  • This representation is in OR- AND-OR form. In other words, it takes the form of a set of collections of sets of fare-components . This is very close to a set of priceable-unit-labels except that since the sets are of fare-components rather than faring-atoms, there are no PU-cores.
  • the inner sets of fare-components returned by get-OR-AND-OR-form are guaranteed to have the same fares, surcharges, discounts, penalties and so on.
  • PU-cores and PU-labels are constructed from the output of get-OR-AND-OR . The pseudo-code below summarizes this procedure.
  • PU-cores if no identical PU- core already exists
  • PU-labels if no identical PU- label already exists
  • PU-labels are constructed by mapping from fare-components to faring-atoms.
  • PU-cores are stored on PU-labels.
  • test-PU-core.surcharges surcharges
  • test-PU-label.fa ⁇ ng-atom-sets fanng-atom-sets
  • fare-components have been constructed for every combination of faring-atom and fare.
  • the fare- components built from the fare "NW BOS-MSP RT HE7" contain a deferred record-2 that is checked during priceable-unit construction. This record-2 does not permit outbound travel on flight "NW300" combined with return travel on flight "NW444.”
  • round-trip priceable-units round-trip fares are combined with like round-trip fares. This situation permits the construction of a total of 23 priceable- units, as shown in TABLE 20.
  • each entry represents a choice (an OR) of either faring-atoms or PU-cores.
  • Each row represents a collection (an AND) of these choices.
  • the entire table represents a choice (an OR) over these collections.
  • Each row of TABLE 21 is a priceable-unit-label (PU- label) , an object that factors a set of priceable-units into a collection of choices that have no further dependencies. There is a choice for every faring-atom involved in the priceable-unit, and a choice of a priceable-unit-core (PU-core) . Each PU-core contains the same number of fares as there are faring-atom choices . In the case where there are no constraints between faring-atoms in different slices, PU-labels are a very compact representation of priceable-units. PU- label #1, for example, represents a total of eight different priceable-units.
  • PU-labels can be produced for a single PU-core.
  • An example of several PU-labels is shown for the NW RT "HE7" fare represented by PU-labels numbers 3 and 4.
  • These priceable-unit-labels and priceable-unit- cores are used by the linking procedure 94 (FIG. 4B) to associate itineraries from more than one slice to fares.
  • Each of the faring-markets that is passed to create -PUs-in-markets has a set of fare-components produced by applying fare rules procedure 88.
  • enumerating collections of sets of fare-components 202 partitions the fare-components in each faring- market into sets such that every fare-component in a set has the same fare and the same combinability record-2s.
  • fare-components are partitioned 202a into sets, collections of these sets are enumerated 202b, by selecting one set from each faring-market . For each fare there is a choice of fare-components .
  • any category-10 record-2s that was deferred is applied 202c to determine whether the fares may be used together in a priceable-unit. This is accomplished by applying 202c each fare's combinability record-2 (if it has one) to every other fare within the priceable-unit.
  • the code below (TABLE 22) is written for two faring-markets within a priceable-unit, as would be the case for round-trips, open jaws and circle-trips of size two. Similar code would be used for priceable-units of other sizes.
  • fare-component-setsl part ⁇ t ⁇ on-fare-components- ⁇ nto-sets(fa ⁇ ng-market1 )
  • fare-component-sets2 part ⁇ t ⁇ on-fare-components- ⁇ nto-sets(fa ⁇ ng-market2 )
  • PU-labels existing-PU-labels
  • PU-labels create-PUs-from-fare-components(l ⁇ st(far ⁇ ng-market1 fa ⁇ ng-market2),
  • the procedure create -PUs - in-markets2 after it has selected two fares and two sets of fare-components and verified fare combinability restrictions, calls the procedure 202d create-PUs - from- fare-components to evaluate deferred rules and construct priceable-unit- labels and priceable-unit-cores.
  • a collection of fares is determined, and for each fare there is a set of fare- components.
  • Priceable-units are constructed by selecting one fare-component from each set and evaluating any deferred rules.
  • FIG. 11 a process 204 to enumerate collection of fare components is shown.
  • the process 204 can enumerate 212 a collection of sets of fare-components, enumerate fare components by selecting one component from each set, apply or evaluate 216 any deferred rule-conditions, and return a compact representation 218 of the set of valid priceable-units.
  • the representation process 218 produces an OR-AND- OR representation of the priceable units.
  • the process 218 produces a set of collections of sets of fare- components similar to that in FIG. 20, that will later be transformed into priceable-unit-labels and priceable- unit-cores by processes 206 and 208 described further in TABLE 22.
  • the inner sets of fare-components returned by get-OR-AND-OR-form have the same fares, surcharges, discounts, penalties and so on.
  • the procedure 218 get-OR- AND-OR, takes a collection of fare-component sets and enumerate collections of fare-components by selecting one from each set. It evaluates any deferred record-2s, and constructs a set of valid priceable-units. This set is transformed into a factored OR-AND-OR form, and returned.
  • PU-cores and PU-labels are constructed 210 at process 206 and 208 from the output of get-OR-AND-OR process 204.
  • Construction 210 iterates over the inner AND-OR form, producing PU-cores 206 (if no identical PU-core already exists) and PU-labels 208 (if no identical PU-label already exists) .
  • PU-labels are produced by mapping fare-components to faring-atoms and PU-cores are stored on PU-labels.
  • the get-OR-AND-OR process 218 to construct the priceable unit representation is shown and is also described in detail below through pseudo-code.
  • FIG. 12 and in pseudo-code in TABLE 23 below three different high- level procedures are used, depending on whether priceable-units are one 220, two 222, or three or more 224 fare-components.
  • TABLE 23 get-OR-AND-OR(far ⁇ ng-markets, fare-component-sets, environmental-information)
  • the get -OR-AND-OR function 230 for priceable-units of one fare-component (one-way priceable-units) is shown. It is passed only a single fare-component set 232, and applies 216 deferred record-2s. The final set of valid fare-components is partitioned 234 into sets with the same surcharges, penalties, and discounts. The partitioned sets are placed into the proper OR-AND-OR representation 236.
  • OR-AND-OR + AND-OR retum(OR-AND-OR)
  • Two-component priceable-units include round-trips and two-component open-jaws and circle-trips. They are common and should be computed efficiently and represented compactly.
  • the function get-OR-AND-OR-2 240 efficiently computes and represents two component priceable units. Combinations of fare-components are not enumerated unless it is necessary for evaluation of deferred record-2s.
  • the resulting set of priceable- units is also represented in a compact OR-AND-OR form. Pseudo code for the get-OR-AND-OR-2 procedure is set forth below (TABLE 27) .
  • the process 240 enumerates priceable units 248 by selecting one fare component from each set.
  • the get-OR-AND-OR-2 process 240 tests deferred record-2s and, if the test is passed, adds the resulting valid priceable unit to the OR-AND-OR representation. TABLE 27 get-OR-AND-OR-2(fa ⁇ ng-mari ⁇ ets,fare- ⁇ mponent-sets environmental-information)
  • Subroutine find-AND-OR(surcharges1, fare-component-set2) //
  • un ⁇ form-fare-component-set2 in un ⁇ form-fare-component-sets2 add-un ⁇ form-cross-product(un ⁇ form-fare-component-set1 , un ⁇ form-fare-component-set2)
  • fare-component-setl -with-rules 0
  • fare-component-setl -without-rules Q
  • fare-component-set2-w ⁇ th-rules 0
  • a preferred procedure 260 finds a subset of possible priceable-units. In particular, it extracts 262 those fare-components that have no deferred record-2s, and build priceable-units from them. Since there are no deferred record-2s, there are no intra-priceable-unit constraints and it is possible to construct a factored representation.
  • deferred record-2s tend to have more deferred record-2s. This may somewhat reduce the effectiveness of the extracting procedure 262.
  • the prevalence of deferred record-2s rules occurs because in complicated journeys, time-bounds used in an initial rule application tend to be broadly specified. At this stage of processing time bound ranges can be tightened, because the faring-markets that comprise the priceable-unit are known. Therefore, deferred record-2s can be reapplied 264 to faring-atoms in the same manner that they are applied in the initial rule application. If all deferred record-2s pass, then the faring-atom is retained 266. If a record-2 fails or is deferred, the faring-atom is discarded.
  • the procedure 268 that factors priceable-units of size three or greater, get-OR-AND-OR-3+ , (TABLE 29) applies reevaluate -deferred- record- 2s to each set of fare- components, to filter them. It then partitions the resulting sets based on surcharges, and takes the cross- product of these sets to construct the proper OR-AND-OR representation. The procedure for the last case does not return all possible valid priceable-units.
  • OR-AND-OR new-OR-AND-OR retum(OR-AND-OR)
  • Priceable-units-labels associate faring-atoms from one or more slices with fares.
  • sets of priceable-unit-labels are used to link itineraries from different slices.
  • the pricing graph representation 38' of pricing- solutions 38 is constructed by selecting a set of priceable-unit-labels. Each of these PU-labels may or may not project onto a given slice of a journey. For example, in a round-trip journey a round-trip priceable- unit-label will project onto both slices, while a one- way priceable-unit-label will project onto only one slice of the journey. Once a set of PU-labels has been chosen, in any slice any itinerary may be chosen so long as it has some division that has faring-atoms containing exactly the PU-labels that project onto that slice. The choice of itinerary is otherwise independent of choices made in other slices.
  • a set of PU-labels encodes all constraints that exist between itineraries in different slices. This leads to a relatively simple procedure for constructing the pricing-graph. Itineraries within each slice are indexed by the sets of multi-slice PU-labels they can be associated with. These indices are called slice-label- sets, and act as a logical OR over itineraries. The slice-label-sets from different slices are linked by matching PU-labels.
  • Single-slice (one-way) priceable-unit-labels are treated somewhat differently than multi-slice priceable- unit-labels to enhance efficiency.
  • the linking process constructs slice-label-sets with each slice-label-set being a set of multi-slice PU- labels and associated itinerary divisions.
  • Slice-label- sets group itineraries by multi-slice PU-labels.
  • Each division has associated with it a set of single-slice
  • slice-label-sets act as ORs over itineraries.
  • Multi-slice PU-labels encapsulate information concerning the itinerary to permit the linking process to operate over slice-label-sets rather than individual itineraries. This approval is computationally efficient and results in small pricing- graphs.
  • each itinerary (division) is paired with a set of single-slice PU- labels.
  • each slice-label-set is transformed into an OR over ANDs of itineraries and sets of PU-labels.
  • the linking process also connects or links slice- label-sets from different slices, as shown in FIG. 16. Connecting is accomplished by starting from the first slice and working forward to the last slice. Intermediate results are summarized in open-label-sets.
  • Each open-label-set is a set of (multi-slice) PU-labels that project onto slices that have not been processed, along with a set of backward-links that are each a pair of a slice-label-set and an open-label-set from the previous slice. Processing starts with a single, empty slice-0 open-label-set 288. Slice-label-sets from slice 1 are "added" 290 to this open-label-set, resulting in new slice-1 open-label-sets .
  • slice-label-sets from slice-2 are added to these, resulting in slice-2 open- label-sets, and so on.
  • PU- labels that are complete 292 i.e., that do not project to subsequent slices
  • the process will terminate 300 in a single, empty, last-slice open-label- set. At that point, the backward-links serve as the top-level representation of the pricing-graph.
  • PU-labels are identified by a unique letter followed by a sequence of digits that indicate which slices the PU-label projects onto.
  • A-23 is a two-component PU-label that projects onto the second and third slices.
  • Each itinerary may have several divisions, and each division may have many possible collections of PU-labels (with each collection built by selecting one PU-label per faring-atom in the division) .
  • each itinerary is split into one or two divisions of faring-atoms.
  • Each division has one or several possible PU-label combinations.
  • the table below lists each hypothetical PU-label along with its faring- markets .
  • Multi-Slice isi.a-aaaia iM.r-T.nm
  • Each open-label-set contains a set of PU-labels that are still "open", i.e., project onto a subsequent slice.
  • the PU-label C-12 does not appear in open-label-sets from slice 2 or slice 3.
  • each open-label-set will be translated into an OR over the backward-1inks .
  • the backward-links represent paths that lead to the open-label-set.
  • Each is a pair (an AND) of a slice-label-set with an open- label-set from the previous slice. Because TABLE 33 is consistent, the backward-projection of any slice-label- set in a link is equal to the next-slice-projection of the open-label-set in the link.
  • the PU- labels in each open-label-set can be constructed by selecting any backward-link, taking the union of the PU- labels in the link's open-label-set and slice-label-set, and removing any PU-labels that do not project forward. If there is an empty open-label-set for the last slice, then pricing-solutions exist. This open-label- set provides the "root" of the pricing-graph, a node that has a child for every link. Each of these links will become an AND of the slice-label-set and the previous open-label-set . In this way open-label-sets and slice- label-sets are used to produce the pricing-graph.
  • the category-10 record-2s that are stored on fare-components may also include so called "end-on-end” fare-combinability restrictions. These restrictions constrain the fares within other priceable-units.
  • end-on-end fare-combinability constraint is that all fares within an entire journey must be published by the same airline as the fare with the constraint.
  • Cross-priceable-unit constraints such as end-on-end fare-combinability restrictions complicate the process of finding valid fares for itineraries.
  • cross-priceable unit constrains can be very expensive to evaluate. These constraints can often be efficiently evaluated during the process that links the set of valid fares to the sets of flights to form a pricing solution.
  • priceable-unit-labels are constructed in such a manner that all priceable-unit-cores within them share the same end-on-end combinability restrictions. This is reflected in the procedure parti tion- fare- components -into- sets , described previously.
  • each priceable-unit-label end-on-end fare-combinability restriction is applied to the fares in other priceable-unit-labels. This happens during the initial stage of the linking process, in the execution of create-slice-laJbel-sets.
  • Create-slice-label -sets iterates over itinerary divisions, and for each division, iterates in an inner loop over covering sets of priceable-unit-labels.
  • an end-to- end fare-combinability restriction attached to one priceable-unit-label in the set can be applied to fares in other priceable-unit-labels within the set. If the restriction fails, the set of priceable-unit-labels is rejected. For this procedure it is desirable that every priceable-unit-label containing an end-on-end restriction projects onto all the slices that the restriction needs to be checked against.
  • the information available to it at any one time is a set of priceable-unit-labels that collectively cover a division of an itinerary (one of these priceable-unit-labels contains the source record-2) .
  • Each of these priceable-unit-labels reference one or more priceable-unit-cores, each of which in turn references one or more fares. It is these fares that are validated by the combinability record-2. It may be that some priceable-unit-cores from within a priceable- unit-label pass, while others fail. Several options are available in this ambiguous case: a new priceable-unit- label can be generated, referencing only those priceable-unit-cores that pass, or the entire priceable- unit-label can be rejected. The second is the more efficient option, though it may cause some valid pricing-solutions to be unnecessarily rejected.
  • Slice-label-sets are constructed during the process of producing open-label-sets 282, by the pseudo-code given below (TABLE 34) . This code is passed the set of itineraries for a slice.
  • Each set is partitioned into a set of multi-slice PU-labels and a set of single-slice PU- labels.
  • a unique slice-label-set is produced for each collection of multi-slice PU-labels.
  • Within the slice- label-set are stored itinerary- label -holders .
  • Each of these pairs an itinerary with a set of division-label- holders .
  • Each division-label-holder pairs an itinerary division with a set of sets of single-slice PU-labels.
  • Open-label-sets are constructed slice-by-slice, starting from a single, empty open- label- set .
  • the first step is to produce slice-label-sets using the procedure described above and enumerate the current set of open-label-sets .
  • the projection into the next slice is computed.
  • next-slice-pro j ection project ⁇ on(open-PU-labels, slice-number)
  • new-open-PU-labels forward-project ⁇ on(un ⁇ on(sl ⁇ ce-PU-labels, open-PU-labels), slice-number)
  • backward-link new-backward-l ⁇ nk() backward-link.
  • a pricing graph 38' 'FIG. 3 is produced containing logically combinable nodes that can be used to efficiently and compactly represent a set of pricing solutions 38 (FIG. 1) .
  • the pricing graph 38' as used herein is a so-called directed acyclic graph although other types of representations could be used. For example, a grammar could be used.
  • the pricing graph 38' is constructed 300 from data structures 302 (summarized below m TABLE 36 and mentioned in conjunction with FIGS. 4A-4B) provided during the preceding processes.
  • the data structures convert 304 to one or more nodes in the pricing graph.
  • the open-label-set data structure becomes an OR node and its children are the converted versions of its backward links.
  • Each backward link in the open label set is converted to an AND node. If a pricing object is shared, for example, a priceable unit core is shared between several priceable unit labels, then its counterpart nodes in the pricing graph will be shared so that the size of the pricing graph is not unnecessarily enlarged.
  • the converted nodes are placed 306 in the pricing graph nodes. Terminal objects such as fares and itineraries undergo essentially no conversion. They are placed 308 into special terminal nodes with no children and are obtained from the various data structures that have the pricing objects.
  • Subroutine convert-objects (objects)
  • node new-node()
  • node.terminal-object nil retum(node) TABLE 37 ( CONT . )
  • the pricing graph 38* resulting from the search procedure 54 provides a compact way for representing a very large number of set of pricing solutions.
  • the pricing graph 38' produced by the search procedure 54 includes three types of nodes.
  • the first type of node is a node that represents choices called "LOGICAL OR" nodes.
  • the second type of node is a node that represents collections referred to as "LOGICAL AND" nodes.
  • a third type of node represented in the pricing graph is a terminal node that represents pricing objects.
  • a data structure representation (TABLE 38) of the nodes is set out below.
  • Each node contains a "type", which specifies whether the node is an AND node, an OR node or a terminal node.
  • the data structure also contains either list of children (if the node is an AND node or an OR node) or a terminal object (if the node is a terminal) .
  • the node contains fields that store values used by algorithms that manipulate the pricing graph 38" .
  • the pricing graph 38' is a compact representation of a set of set of pricing solutions.
  • the typical number of set of pricing solutions represented by pricing graph ranges from tens of millions into hundreds of billions with the number of nodes in the graph ranging from thousands to tens of thousands.
  • the pricing graph can be easily stored and/or transmitted over a network or other connection to a client and represents complete representation of all or substantially all of possible pricing solutions. Therefore, the pricing graph 38' can be used by a smart client without further intervention from the server 12.
  • the process 300 includes a user query 302 that passes parameters into a process 304 and a value function 306 to extract from the pricing graph 38' certain pricing solutions 308 that satisfy parameters specified by the user query 302.
  • the extracted pricing solutions are returned as a list 308 or other representation.
  • Display software 309 handles production of GUI's 41 to present the information.
  • the pricing solution list 308 will contain pricing solutions extracted from the pricing graph 38' in accordance with user specified parameters from the user query 302 using one of the processes 304 and one of the value functions 306. Referring now to FIG. 19, illustrative processes are shown. In particular, in response to the user query 302, one of the processes is executed.
  • the processes 304 can comprise a find best "value” and pricing solutions associated with the value (e.g., price) process 304a; find best "value” and pricing solutions associated with the value for "node” (e.g., find best price for a particular itinerary) process 304b; an enumeration for "N” pricing solutions 304c; or an enumeration process that lists the pricing solutions according to some "value.” Additional enumeration processes can be provided to produce query results corresponding to different ways of looking at pricing solutions extracted from the pricing graph 38' .
  • a node invalidating process 304e that invalidates selected nodes from contributing to a pricing solution is also included.
  • Efficient algorithms 304 are used for manipulating this representation to extract information of interest and to enumerate set of pricing solutions from the structure. For example, it is possible to quickly extract the cheapest solution; to find the cheapest solution involving selected fares and itineraries; to verify whether any pricing solution remains if specific fares or itineraries are excluded; to enumerate solutions under various orderings and so forth.
  • the representation is compact enough so that it can be efficiently stored and transmitted such as from the server to the client.
  • One benefit therefore, is that after a single fare search 54 in the server process 16, the server process 16 transfers the pricing graph 38 to the client process 36.
  • the client process 36 can examine and manipulate the large space of pricing solutions represented in the pricing graph 38' without further interaction with the server process 18.
  • each of the enumeration processes to be described operate on the pricing graph to extract pricing solutions from the pricing graph according to particular criteria that can be set, for example, by a client system 30c (FIG. 2) in response to a user query 48 (FIG. 4) .
  • client system 30c FIG. 2
  • user query 48 FIG. 4
  • Examples of user queries as well as a display representation for information extracted from the pricing graph will be described below.
  • An example of an enumeration function enumerates pricing solutions in a specific order. For example, an enumeration function can enumerate the 100 cheapest pricing solutions represented by the pricing graph 38'.
  • a second enumeration function can find extreme points of the set of pricing solutions. This can be used, for example, to find the most convenient pricing solution.
  • a value function can specify a minimum value of some value over the set of pricing solutions that involve a particular node.
  • One value function finds for each itinerary the cheapest pricing solution that involves that itinerary or the shortest total duration of any pricing solution that involves that itinerary.
  • each of the above operations can be performed on a subset of the graph. For example, it may be desirable to enumerate the 100 cheapest solutions that involve a given itinerary or finding the most convenient solution that involves only refundable fares or includes only certain airlines or excludes certain airlines .
  • value-functions include price computed by summing the prices of fares (and penalties and surcharges) in a pricing-solution, duration, or convenience (that might be a mix of total travel-time with penalties for stops and airline-changes , for example), or mixes of each.
  • node- value-function is used to refer to a function that is applied to individual nodes in the pricing-graph, and summed to produce the value of an entire itinerary.
  • value-function is used for the more general case of a function that may or may not be decomposable into the sum of a node-value-function applied to each terminal in the pricing-graph.
  • the first process 304a is an example of one that finds extreme points of the set of pricing-solutions, such as the cheapest pricing-solution.
  • the Best Price algorithm 304a efficiently finds the cheapest (best) price by starting at the "bottom" of the pricing-graph 38' and constructing the best solution for each node by looking at the best solution of its children. In this way it works in one pass from the bottom of the graph to the top. At the end of the process the root node contains the best pricing solution for the entire pricing graph 38.
  • the algorithm proceeds as follows: first, the nodes in the graph are ordered by depth and placed in a list, so that iterating over the list ensures that a child node is always encountered before its parent (s) . Then, iterating across the list, the best value of F is computed for each node, using the already-computed values of F for its children. At this point every node in the graph is marked with its inner-value.
  • the inner- value of a node is the best possible value of the function F on the set of (partial) pricing-solutions represented by the node. As inner-values are computed, for every OR node the child with the lowest inner-value is computed and stored. Finally, the best pricing solution can be constructed by starting at the root of the graph and collecting children. Whenever an OR node is encountered, the best child is chosen (the child with the lowest inner-value) .
  • a node is a terminal fare or itinerary, then its inner-value is the value of F applied to the node. If the node is an AND, representing a combination, then the minimum value of F over the partial solutions it represents is the sum of the minimum values of F over the partial solutions represented by each of its children. If a node is an OR, representing a choice, then the minimum value of F over the partial solutions it represents is found by making the optimal choice of children, that is, the child with the minimum inner- value. So the inner-value of an OR is the minimum of the inner-values of its children.
  • the pseudo-code in TABLE 38 summarizes the computation of inner-values.
  • the function sort-nodes takes a root node and returns a list of all nodes under it, sorted by depth with the root node at the end.
  • the procedure compute-inner-values takes in a sorted list of nodes as would be produced by sort-nodes, and a node- value-function.
  • the procedure find-optimal-solution takes in a root-node and a node-value-function, calls sort-nodes and compute-inner-values to calculate inner- values for all nodes in the pricing-graph, and constructs a pricing-solution.
  • Another procedure 304b finds, for each node, the best (i.e., minimum) value of some value-function over all the set of pricing solutions involving that node.
  • Price function 306a finds for each itinerary, the cheapest price of any pricing solution that contains that itinerary. These values can be computed efficiently, if the value-function can be decomposed into a node-value-function.
  • the best price value function 306a computes inner- values, as above, and computes for every node, an outer- value, equal to the minimum value contributed by all parts of the graph except that represented by the node. For each node, the minimum value of the value-function over all solutions that involve the node, (i.e., the total-value) is computed as the sum of that node's inner-value and outer-value .
  • the outer-value and total-value of a node are computed in a manner very similar to the computation of the inner-value.
  • the outer-value for each node is calculated starting from the root of the graph, that has an outer-value of 0.
  • Each node propagates outer-values down to its children.
  • An OR- node passes its outer-value unchanged.
  • An AND-node adds to its outer-value the inner-values of all children except that being propagated to.
  • the total-value is computed as the sum of the inner-value and outer-value.
  • Child.outer-value minimum(child.outer-value, node.total-value - child.inner-value)
  • the above algorithms can be easily adapted to accommodate checking whether the node is valid. In particular, the computation of inner-values, the first step in all the above algorithms, is modified to mark for every node whether the node represents any valid partial pricing-solutions given a specific query parameter. This information can be used in the rest of the algorithms. Every terminal node contains a field
  • node.valid? true and child.inner-value ⁇ node.inner-value
  • node.type AND
  • node.inner-value + child.inner-value
  • node.valid? false find-optimal-solution(root-node, node-value-function)
  • the enumeration algorithm 304c maintains a queue of partial-solutions, ordered by the lowest possible total value of the value-function over all complete solutions that contain the partial -solution.
  • a single partial solution is constructed from the root node of the pricing-graph 38' .
  • the best partial-solution is dequeued, and expanded.
  • Each partial-solution has a set of non-terminal nodes and a set of terminal objects.
  • a partial-solution is expanded by selecting a non-terminal node and substituting the node's children (all of its children in the case of an AND, one of its children in the case of an OR) . If a dequeued partial-solution contains only terminal objects, it is complete, and is returned. This process continues until the desired number of pricing- solutions that can be specified by a user has been produced.
  • the algorithm can accommodate value-functions that cannot be decomposed into the sum of a node-value- function. It does this by applying a second penalty- value-function to partial pricing-solutions as it constructs them.
  • This function returns a non-negative number when given a new terminal object and existing set of terminal objects. The number is added to the values produced by the normal node-value-function. If the number is positive, it acts as a penalty.
  • An example of how this could be used is for the case where a penalty is applied if travel in two slices is on different airlines.
  • the penalty-value-function would return a (positive) penalty if the terminal was an itinerary, and the set of existing terminals contained an itinerary with travel on different airlines. Otherwise it would return 0. See TABLE 41 below.
  • node. ⁇ nner-value apply(node-value-funct ⁇ on, node.terminal-object)
  • node.total-value node.inner-value + node.outer-value
  • a window 350 that is part of a graphical user interface of the client process 36 (FIG. 3) is shown.
  • the graphical user interface permits the user to access inter alia the enumeration processes 304, value functions 306 and invalidate routine 307.
  • the graphical user interface has user selectable controls 352 such as "origin” and "destination”. There are also controls for selecting time and date. In addition, there are controls 352 that specify "slices" of a journey. The user enters values corresponding to origin, destination, dates and time by selecting an appropriate one of the controls.
  • the origin and destination controls 352 invoke a query window (FIG. 21) where the user can enter a value .
  • a user control "GO" becomes activated. Pressing the "GO" button will, for an initial query, send the query to the server process 18.
  • the server process handles the query and initiates the server process 18.
  • the server process 18 returns to the client process 36 a set of pricing solutions in a compact representation such as the pricing graph 38'.
  • the query entry window 360 is shown.
  • the query entry window 360 is produced by activating either the ORIGIN or DESTINATION controls 352 in the window 350.
  • the query window 360 includes a user entry area 361 for entering a destination code or origin code (as appropriate) such as a three letter airport code or a location such as a city, region or country (e.g., Turkey) .
  • Region 364 depicts a listing of airports in a region about the location entered in area 361, whereas area 364 lists origins and destinations of a flight slice (none shown) that has been selected for the query.
  • the user can enter more than one airport or region.
  • Window 370 appears after a user query input to the server process 18 producing the pricing graph 38' that is sent to the client process 36 (FIG. 3) .
  • Window 370 is an example of a single slice journey. Since window 370 depicts a one-way (i.e., single slice journey), only controls 352 corresponding to the first slice are shown as activated with information about the slice. Window 370 includes the same controls or buttons 352, as described above with respect to window 350.
  • the window 370 also includes a series of user preference controls 354, here "Nonstop”, “Direct”, “Online (on the same airline)” and “Select” shown as not activated and "1st class", “2nd class” and “Refundable” shown activated.
  • the Nonstop, Direct and Online controls when selected by a user will eliminate all components from the pricing solution that do not correspond to nonstop, direct or online flights.
  • a select control operates in conjunction with the user marking one or more potential pricing solutions such that the numbers which appear shaded out are activated. When one or more of the pricing solutions are activated and the select button is pressed, the client process extracts pricing solutions from the pricing graph.
  • the "1st class”, “2nd class” and “Refundable” controls when activated eliminate fares that do not correspond to these classes of travel .
  • the window 370 also includes a listing 372 of airports involved in the results provided from the pricing graph 38', as well as, a listing 374 of airlines.
  • the window 370 has a graphical region that provides a visual representation of pricing solutions extracted from the pricing graph 38' .
  • One preferred representation of the pricing solution is a horizontal bar graph 376.
  • the itineraries are ordered by increasing total fare with each entry 376a of the bar graph corresponding to a set of flight segments on airlines that provide travel from the origin (e.g., 'ESB') to the destination (e.g., SAN, San Diego
  • the bar graph representation displays a metric of the pricing solution in a graph format.
  • the first entry 376a there are two legs 377a, 377b on airline "TK” with a stopover 377c at airport “JFK” and two legs 377d and 377e on airline "HP” arriving in San Diego (SAN) .
  • twenty-one possible solutions are represented in the horizontal bar graph ordered by increasing total fare. This typically represents a small fraction of the total number of pricing solutions that may be represented by the pricing graph 38'. Other ones, if they exist, can be revealed by manipulation of a scroll bar 402.
  • a window 380 illustrates a sample pricing solution including an itinerary 382 and fares 384.
  • a window is produced by double-clicking on an itinerary such as 376a.
  • Such a pricing solution is extracted from the pricing-graph 38' by invalidating 304e all other itineraries in the same slice and then using procedure 304a to find the single cheapest remaining pricing-solution.
  • the window 380 illustrates the sample outbound itinerary 382 with fares 384.
  • the itinerary 382 can be selected, for example, by double clicking on the itinerary or by using the right button of a computer mouse and so forth. For example, what is displayed in this interface are the itineraries (which are TERMINAL
  • NODES in the pricing graph 38' along with their associated "lowest prices" that are computed by running algorithm 304b (with value function such that it computes for every node in the graph the lowest total price for any pricing solution involving the node.
  • Window 390 illustrates a round trip journey between Boston (BOS) and San Diego (SAN) .
  • the window 390 includes a section 380 including user controls 352 that permit user entry and modification of the results in the window as described above in conjunction with FIG. 22. Here, however, controls are shown activated for both slice 1 and slice 2 of the journey.
  • the window also includes the airport 372 and airline lists 374 and a graphical representation 400 of information (e.g., itineraries) with a subsection 402 corresponding to outbound or first slice information (e.g., itineraries) and section 404 corresponding to inbound or second slice information.
  • Each graphical section 402, 404 is a horizontal bar graph and includes scroll bar controls 403 and 405, respectively.
  • the window also includes user preference controls 354 shown activated for the first and the second slices of the journey.
  • the first ITINERARY 392a will produce an itinerary window 410 (FIG. 25) that depicts information corresponding to the selected outbound itinerary 412 as well as information for possible return itineraries 414 selected in accordance with the current outbound itinerary.
  • the window 405 also includes fare information 416.
  • a window 390' is shown.
  • This window depicts a subset of the set of pricing solutions represented by the pricing graph as displayed in window 390 (FIG. 24) .
  • the subset is selected by activating the "Select" button and highlighting a pricing solution (e.g., 392g, FIG. 24).
  • the window 390' depicts possible return itineraries that can be matched with the selected outbound itinerary 392g and the corresponding total fares for the itinerary.
  • This operation modifies the pricing solutions and is performed within the client process 36.
  • the client process uses the node invalidating function described in conjunction with FIG. 19.
  • Another process that can use the node invalidated function 307 described in conjunction with FIG. 19 would permit the user to point and click at certain airports and/or airlines represented as icons in fields 390 and 392.
  • selecting airline and/or airport pricing solutions that do not include the selected airline or airports are not extracted from the pricing graph 38' .
  • selecting an airline or airport does not extract solutions containing the selected airline and/or airport from the pricing graph.
  • the pricing graph can be viewed in other ways through the activation of the pull down menus shown in any of FIGS. 22, 24 and 26.
  • the refresh display will permit storing queries and permit a user to refresh the display.
  • the outbound display menu will permit the user to resort the data according to any one of a number of characteristics. Example characteristics include, but are not necessarily limited to, cost, duration, departure time, arrival time, number of legs, number of segments and so forth.
  • the outbound display can also be adjusted to allow a user to change the horizontal axis to a time or duration axis as well as change the itinerary size to have it displayed small or large.
  • the search properties allow a user to conduct a faring search by computing fares or not computing fares, that is, by providing complete pricing solutions or merely just activating the schedule portion of the server process 18.
  • the search properties also permit the user to search by legs or segments, specify a search time, a number of itineraries and number of extra itineraries to discard.
  • Each of the display options referred to above make use of one or more of the value functions and processes described in conjunction with FIG. 19 and permitting the client process to extract or manipulate the pricing graph 38' . Accordingly, the pull down menus as well as the other controls on the graphical user interface are the user interface to the "value" functions and enumeration processes described above.
  • the window 500 includes an ensemble of travel options depicted as a histogram 502.
  • the histogram 502 is a plot of an metric or option such as time as the x axis versus the number of itineraries on the y axis.
  • Portions of the histogram representation can be selected and the processes above will invalidate all travel node that are not selected. These will provide corresponding changes in a bar graph representation 504 disposed below the histogram 502. This will also affect a list airports 506 by possible changing a visual appearance of icons in the list 506.

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Development Economics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Game Theory and Decision Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

La présente invention concerne un système de planification des itinéraires d'une compagnie aérienne. Ce système comprend un ordinateur serveur exécutant un programme serveur au moyen d'un programme de recherche permettant de chercher un ensemble de solutions tarifaires en fonction d'au moins un point de destination et un point d'origine. Le procédé de recherche représente l'ensemble des solutions tarifaires sous la forme d'une courbe acyclique dirigée. Ce système comprend également un ordinateur client qui exécute un programme client au niveau de l'ensemble des solutions tarifaires. Le programme client possède un programme de manipulation qui manipule l'ensemble des solutions tarifaires en réponse aux préférences de l'utilisateur. Par ailleurs, cette invention concerne de nombreux programmes qui comprennent un programme réceptif aux préférences de l'utilisateur ainsi qu'à l'ensemble des solutions tarifaires fournissant des solutions tarifaires triées en fonction des préférences de l'utilisateur, un programme qui trie les solutions tarifaires pour produire un sous-ensemble dudit ensemble de solutions tarifaires en fonction des préférences spécifiées de l'utilisateur, ainsi qu'un programme qui supprime de la courbe acyclique dirigée les noeuds qui ne sont plus contenus dans le sous-ensemble de solutions tarifaires.
PCT/US1999/014964 1998-07-02 1999-07-01 Systeme de planification d'itineraires WO2000002153A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP99932166A EP1092203A1 (fr) 1998-07-02 1999-07-01 Systeme de planification d'itineraires
AU48530/99A AU4853099A (en) 1998-07-02 1999-07-01 Travel planning system

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US10962298A 1998-07-02 1998-07-02
US09/109,873 1998-07-02
US09/109,871 US6275808B1 (en) 1998-07-02 1998-07-02 Pricing graph representation for sets of pricing solutions for travel planning system
US09/109,622 1998-07-02
US09/109,876 US6381578B1 (en) 1998-07-02 1998-07-02 Factored representation of a set of priceable units
US09/109,486 US6377932B1 (en) 1998-07-02 1998-07-02 Rules validation for travel planning system
US09/109,876 1998-07-02
US09/109,328 1998-07-02
US09/109,873 US6307572B1 (en) 1998-07-02 1998-07-02 Graphical user interface for travel planning system
US09/109,328 US6609098B1 (en) 1998-07-02 1998-07-02 Pricing graph representation for sets of pricing solutions for travel planning system
US09/109,871 1998-07-02
US09/109,327 US6295521B1 (en) 1998-07-02 1998-07-02 Travel planning system
US09/109,327 1998-07-02
US09/109,486 1998-07-02

Publications (1)

Publication Number Publication Date
WO2000002153A1 true WO2000002153A1 (fr) 2000-01-13

Family

ID=27568688

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/US1999/014964 WO2000002153A1 (fr) 1998-07-02 1999-07-01 Systeme de planification d'itineraires
PCT/US1999/014961 WO2000002152A2 (fr) 1998-07-02 1999-07-01 Representation de la courbe des tarifications des ensembles de solutions tarifaires pour un systeme de planification d'itineraires

Family Applications After (1)

Application Number Title Priority Date Filing Date
PCT/US1999/014961 WO2000002152A2 (fr) 1998-07-02 1999-07-01 Representation de la courbe des tarifications des ensembles de solutions tarifaires pour un systeme de planification d'itineraires

Country Status (3)

Country Link
EP (2) EP1145170A3 (fr)
AU (2) AU4852999A (fr)
WO (2) WO2000002153A1 (fr)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2366403A (en) * 2000-08-29 2002-03-06 British Airways Plc Electronic reservation system
CN1333232C (zh) * 2001-01-12 2007-08-22 城市旅行康姆公司 在地图上以电子形式图形地显示旅行信息的处理
US7305356B2 (en) 2001-05-25 2007-12-04 Amadeus Americas, Inc. Travel value index
AU2002250493B2 (en) * 2001-04-02 2008-07-17 Expedia, Inc. Optimized system and method for finding best fares
WO2011020209A1 (fr) * 2009-08-17 2011-02-24 Love Travel Holdings Limited Système et procédé destinés à créer des itinéraires partagés
AU2005264909B2 (en) * 2004-06-18 2011-04-14 Expedia, Inc. Method and system for presenting rates for travel services
WO2015058233A1 (fr) * 2013-10-22 2015-04-30 Corporate Travel Management Group Pty Ltd Procédé, dispositif et système de sélection et de réservation de produit de voyage

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6377932B1 (en) * 1998-07-02 2002-04-23 Ita Software, Inc. Rules validation for travel planning system
US6609098B1 (en) 1998-07-02 2003-08-19 Ita Software, Inc. Pricing graph representation for sets of pricing solutions for travel planning system
AU2001243182A1 (en) 2000-02-16 2001-08-27 Travel Analytics, Inc. Tool for analyzing corporate airline bids
GB0019955D0 (en) * 2000-08-14 2000-09-27 Cyberes Systems Ltd On-line interactive travel booking
US9286601B2 (en) 2012-09-07 2016-03-15 Concur Technologies, Inc. Methods and systems for displaying schedule information
US9400959B2 (en) 2011-08-31 2016-07-26 Concur Technologies, Inc. Method and system for detecting duplicate travel path information
US7974892B2 (en) 2004-06-23 2011-07-05 Concur Technologies, Inc. System and method for expense management
US8620750B2 (en) 2010-10-21 2013-12-31 Concur Technologies, Inc. Method and system for targeting messages to travelers
US11747153B1 (en) 2022-07-21 2023-09-05 Travelshift ehf. Apparatus and associated method for determining a travel itinerary
CN116433256B (zh) * 2022-12-06 2024-05-28 南京贝特威信息技术有限公司 一种面向全球民航客票燃油费实时计算方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4862357A (en) * 1987-01-28 1989-08-29 Systemone Holdings, Inc. Computer reservation system with means to rank travel itineraries chosen in terms of schedule/fare data
EP0451371A1 (fr) * 1990-04-13 1991-10-16 Koninklijke Philips Electronics N.V. Méthode et système d'organisation et d'accès à des données décrivant des produits et appartenant à un processus technique
US5570283A (en) * 1994-11-18 1996-10-29 Travelnet, Inc. Corporate travel controller
EP0762306A2 (fr) * 1995-09-06 1997-03-12 Sabre Inc. Système pour la planification et la gestion des voyages dans une entreprise
US5832454A (en) * 1995-10-24 1998-11-03 Docunet, Inc. Reservation software employing multiple virtual agents

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5191523A (en) * 1989-11-06 1993-03-02 Prism Group, Inc. System for synthesizing travel cost information

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4862357A (en) * 1987-01-28 1989-08-29 Systemone Holdings, Inc. Computer reservation system with means to rank travel itineraries chosen in terms of schedule/fare data
EP0451371A1 (fr) * 1990-04-13 1991-10-16 Koninklijke Philips Electronics N.V. Méthode et système d'organisation et d'accès à des données décrivant des produits et appartenant à un processus technique
US5570283A (en) * 1994-11-18 1996-10-29 Travelnet, Inc. Corporate travel controller
EP0762306A2 (fr) * 1995-09-06 1997-03-12 Sabre Inc. Système pour la planification et la gestion des voyages dans une entreprise
US5832454A (en) * 1995-10-24 1998-11-03 Docunet, Inc. Reservation software employing multiple virtual agents

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NDUMU D T ET AL: "Towards desktop personal travel agents", BT TECHNOLOGY JOURNAL, JULY 1998, BT LAB, UK, vol. 16, no. 3, pages 69 - 78, XP002118723, ISSN: 1358-3948 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2366403A (en) * 2000-08-29 2002-03-06 British Airways Plc Electronic reservation system
CN1333232C (zh) * 2001-01-12 2007-08-22 城市旅行康姆公司 在地图上以电子形式图形地显示旅行信息的处理
AU2002250493B2 (en) * 2001-04-02 2008-07-17 Expedia, Inc. Optimized system and method for finding best fares
US10346402B2 (en) 2001-04-02 2019-07-09 Expedia, Inc. Optimized system and method for finding best fares
US10387418B2 (en) 2001-04-02 2019-08-20 Expedia, Inc. Sparse tree data structure for selective retrieval of database records
US7305356B2 (en) 2001-05-25 2007-12-04 Amadeus Americas, Inc. Travel value index
AU2005264909B2 (en) * 2004-06-18 2011-04-14 Expedia, Inc. Method and system for presenting rates for travel services
US8768860B2 (en) 2004-06-18 2014-07-01 Expedia, Inc. Method and system for presenting rates for travel services
US10062125B2 (en) 2004-06-18 2018-08-28 Expedia, Inc. Presenting rates for travel services
WO2011020209A1 (fr) * 2009-08-17 2011-02-24 Love Travel Holdings Limited Système et procédé destinés à créer des itinéraires partagés
WO2015058233A1 (fr) * 2013-10-22 2015-04-30 Corporate Travel Management Group Pty Ltd Procédé, dispositif et système de sélection et de réservation de produit de voyage

Also Published As

Publication number Publication date
AU4853099A (en) 2000-01-24
WO2000002152A3 (fr) 2001-10-11
EP1145170A2 (fr) 2001-10-17
EP1145170A3 (fr) 2002-09-11
EP1092203A1 (fr) 2001-04-18
WO2000002152A2 (fr) 2000-01-13
AU4852999A (en) 2000-01-24

Similar Documents

Publication Publication Date Title
US8571903B1 (en) Pricing graph representation for sets of pricing solutions for travel planning system
US6275808B1 (en) Pricing graph representation for sets of pricing solutions for travel planning system
US6295521B1 (en) Travel planning system
US6307572B1 (en) Graphical user interface for travel planning system
US6381578B1 (en) Factored representation of a set of priceable units
US6377932B1 (en) Rules validation for travel planning system
US7340402B1 (en) Generating a diverse set of travel options
WO2000002153A1 (fr) Systeme de planification d'itineraires
US8005696B2 (en) Incremental searching in multi-passenger multi-route travel planning
Torrens et al. Smartclients: Constraint satisfaction as a paradigm for scaleable intelligent information systems
US7305356B2 (en) Travel value index
US20070168245A1 (en) User interface for inputting multi-passenger multi-route travel planning query
US8005695B2 (en) Bias of queries for multi-passenger multi-route travel planning
US8595039B2 (en) Multi-passenger multi-route travel planning
WO2006102134A2 (fr) Systeme, procede et programme informatique permettant de reduire la charge d'un systeme d'inventaire par l'affichage d'informations de disponibilite de produits pour une gamme de parametres associes a un produit
US8731980B2 (en) Low fare search for ticket changes
EP1769437A2 (fr) Systemes, procedes et programmes informatiques de recherche et de presentation d'informations sur les produits bon marche disponibles pour des combinaisons de dates de depart et de retour donnees, ou des plages de combinaisons de dates de depart et de retour donnees
US7340403B1 (en) Method, system, and computer-readable medium for generating a diverse set of travel options
US8589195B2 (en) Multi-passenger multi-route travel planning
US8751272B1 (en) Fare compare—a system for collecting and displaying price information
WO2007084511A2 (fr) Planification multi-routes multi-passagers
US20070168854A1 (en) User interface for presentation of solutions in multi-passenger multi-route travel planning
US8185419B2 (en) Incremental searching with partial solutions for multi-passenger multi-route travel planning
US20080154630A1 (en) Method for Generating A Diverse Set of Travel Options
US20080140464A1 (en) Travel planning system that produces answers involving mulitple sales channels/PNRs/tickets per answer

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 1999932166

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1999932166

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642