WO2020131987A1 - Grouping orders in a delivery system - Google Patents

Grouping orders in a delivery system Download PDF

Info

Publication number
WO2020131987A1
WO2020131987A1 PCT/US2019/067036 US2019067036W WO2020131987A1 WO 2020131987 A1 WO2020131987 A1 WO 2020131987A1 US 2019067036 W US2019067036 W US 2019067036W WO 2020131987 A1 WO2020131987 A1 WO 2020131987A1
Authority
WO
WIPO (PCT)
Prior art keywords
preparation
delivery
time
order
food item
Prior art date
Application number
PCT/US2019/067036
Other languages
French (fr)
Inventor
Robert Eric PRESTEZOG
Original Assignee
Zume, 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
Application filed by Zume, Inc. filed Critical Zume, Inc.
Publication of WO2020131987A1 publication Critical patent/WO2020131987A1/en

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/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group
    • 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/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/083Shipping
    • 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
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Definitions

  • the present disclosure generally relates to grouping orders in a delivery system, and more particularly, to forming order grouping plans of individual orders and order groups based on an evaluation score.
  • a method of grouping orders in a food item preparation and delivery system may include generating an array of received food item orders; assigning a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; selecting an order with highest score; and performing an iteration.
  • Performing an iteration may include generating combinations of the order with the highest score with other orders; assigning scores to the combinations; and selecting a combination with a highest score.
  • the method may also include generating a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; providing the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; providing results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and processing the received orders based on results of the delivery model.
  • the computing device may include a communication system configured to communicate wirelessly with one or more other devices including an on-board controller of a preparation and delivery hub; a memory configured to store instructions; and a processor coupled to the communication system and the memory.
  • the processor in conjunction with the instructions stored in the memory, may be configured to receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; perform an iteration that includes generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score.
  • the processor may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; provide results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and provide instructions to the on board controller based on results of the delivery model.
  • the hub may include one or more preparation
  • the on-board controller may be configured to control preparation and delivery operations of the hub; receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; and perform an iteration.
  • the iteration may include generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score.
  • the on-board controller may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with the one or more preparation equipment and/or preparation personnel at a hub;
  • FIG. 1 is a schematic diagram of a food delivery environment that includes a central controller communicably coupled to order entry, food production, and food distribution modules, according to one illustrated embodiment.
  • FIGs. 2A, 2B and 2C are schematic diagrams of a food delivery environment such as that depicted in FIG. 1 that show a food production module in which food is prepared and loaded into racks that are, in turn, loaded into a vehicle where the food may be prepared under controlled conditions, which in some instance may be while en route to the consumer destination, according to one illustrated embodiment.
  • FIG. 3 is a schematic diagram of a food delivery system that includes a centralized production module and central controller along with a number of vehicles in which food is prepared under controlled conditions, which in some instances may be while en route to a number of consumer destinations distributed across a geographic area using a delivery itinerary, according to one illustrated embodiment.
  • FIG. 4 is a block diagram of a food delivery system controller, according to one or more illustrated embodiments.
  • FIG. 5A through 5C illustrate a conceptual overview of a food item
  • FIG. 6 illustrates an example flow of major operations in a food item preparation and delivery system with order grouping.
  • FIG. 7 an example iteration process for selecting an order group scored according to a cost function.
  • FIG. 8 illustrates example screenshots of a food item ordering application with delivery estimate notification at different stages.
  • FIG. 9 is a flow diagram for a method of grouping orders in a food item preparation and delivery system.
  • FIG. 10 is a flow diagram for a method of iteratively determining and evaluating order groupings scored according to a cost function.
  • a system may begin a process for grouping orders by gathering information associated with orders, preparation equipment, delivery personnel, vehicles, delivery location, and other factors that may impact preparation and deliveries.
  • Various models such as delivery model, preparation model, etc. may be generated or retrieved.
  • Candidates may be generated from single orders and scored using a cost function. A candidate with highest score may be selected. Then, the iterative process may be performed, where combinations of the candidates with increasing numbers may be grouped
  • the group of candidates with highest score from the iteration may be flattened to generate a preparation sequence.
  • the preparation sequence may be fed into the preparation model, and results of the preparation model ay be fed into a delivery model. Estimated delivery times may be provided to customers as delivery ranges.
  • FIG. 1 shows a delivery system environment 100 according one illustrated embodiment.
  • the delivery system includes at least one controller 102, an order module 104, a production module 106 communicably coupled to the controller via a network 108, and a distribution module 112 communicably coupled to the controller 102 via a network 114.
  • a rack 110 can be used to transfer prepared food items between the production module 106 and the distribution module 108.
  • a routing module 116 and a preparation module 118 are shown communicably coupled to each other and to the distribution module 114.
  • the order module 104 may be shared between or combined and performed by another system component.
  • the controller 102 may perform various order entry functions rather than a dedicated order entry module 104.
  • the controller 102 can include one or more systems or devices used to coordinate the receipt or generation of food item orders.
  • the order entry module 104 can receive food orders placed by consumers using any number or variety of sources.
  • the order entry module 104 may include a telephonic interface to conventional or voice over Internet Protocol (VoIP) telephonic equipment 120a.
  • VoIP voice over Internet Protocol
  • Such telephonic interfaces may be in the form of automated or semi-automated interfaces where the consumer enters data by entering a defined key sequence corresponding to a desired food product, destination address, delivery time, etc.
  • Some telephonic interfaces may include an attendant operated interface where the consumer places a verbal order with the attendant who then enters data corresponding to a desired food product, destination address, delivery time, etc. into the controller 102, for example using a touchscreen or keyboard entry device.
  • the order entry module 104 may include a network interface, for example a network interface communicably coupled to the Internet, over which orders may be placed via smartphone 120b, or via any type of computing device 120c.
  • order information corresponding to a desired food item, destination address, delivery time, and the like may be provided by the consumer in a format requiring minimal or no reformatting by the order module 104 prior to providing the data representative of the order to the controller 102.
  • the controller 102 can provide the consumer placing an order for a food item with an estimated delivery time for the item.
  • the estimated delivery time may be based on the time to produce the food item in the production module plus the estimated time to prepare the food item which may be in transit by the distribution module 112.
  • Such estimated delivery times may take into account factors such as the complexity of preparation and the time required for the desired or defined cooking or other preparation process associated with the ordered food item.
  • Such estimated delivery times may also take into account factors such as road congestion, traffic, time of day, and other factors affecting the delivery of the food item by the distribution module 112.
  • the estimated delivery time may reflect the availability of the ordered food item on a vehicle that has been pre staged in a particular area.
  • the controller 102 can schedule the production of food items in accordance with the received or generated orders.
  • the controller 102 may be collocated with or even incorporated into the production module 106. Responsive to receipt of one or more outputs provided by the controller 102, food items are prepared or assembled within the production unit 106.
  • the production module 106 may autonomously perform the partial preparation or assembly of at least a portion of the food products at the direction of the controller 102. For example, crust dough may be kneaded and formed, sauce spread and cheese and pepperoni placed on top of the sauce using one or more automated or semi-automated systems upon receipt or generation of food item order data indicative of a pepperoni pizza by the controller 102.
  • Each of the prepared or assembled food items provided by the production module 106 can be loaded or otherwise placed into one or more rack 110 to transfer the prepared or assembled food items from the production module 106 to the delivery module 108.
  • the controller 102 may be a portion of or may be communicably coupled to an inventory control or enterprise business system such that the inventory of food ingredients and other items is maintained at one or more defined levels within the production module 106.
  • the network 108 communicably coupling the controller 102 to the production module 106 can be a wired network, a wireless network, or any combination thereof.
  • the network 108 can include a local area network, a wide area network, a worldwide network, a private network, a corporate intranet, a worldwide public network such as the Internet, or any combination thereof.
  • all or a portion of the controller 102 can be located remote from the production module 106, for example in a corporate server, or in a network connected or“cloud” based server.
  • the vehicle or dark kitchen can include various components or systems to support the operation of the appliance units (e.g., oven, blender, cooler, etc.), for example a power distribution bus, a communications bus, and the like.
  • the appliance units e.g., oven, blender, cooler, etc.
  • a power distribution bus e.g., a power distribution bus, a communications bus, and the like.
  • power and cooking condition instructions are supplied to the appliance units either individually or via the power distribution and communications buses.
  • Environmental conditions within each of the appliance units may be controlled, and may be controlled en route to the consumer destination such that the food in the appliance unit is cooked shortly prior to or upon arrival at the consumer destination.
  • the controller 102 can communicate via network 114 with the distribution module 112 to control some or all environmental conditions and preparation functions (e.g., cooking, blending, cool down, etc.) in each of the appliance units.
  • the controller 102 can also determine an optimal delivery itinerary, estimated delivery times, and available preparation times for each appliance unit, as discussed in further detail below.
  • a routing module 116 communicably coupled to the distribution module 112 can provide some or all of the delivery routing instructions, including static or dynamic delivery itinerary preparation and time of arrival estimates that are used to determine the available cooking time and to control or otherwise adjust environmental and preparation conditions within the appliance units.
  • the location of each appliance unit or rack 110 in the distribution module 112 may be monitored using geolocation information.
  • geolocation information may be determined through the use of time-of-flight triangulation performed by the controller 102 and/or routing module 116.
  • geolocation information may be determined using one or more global positioning technologies, for example the Global Positioning System (GPS) or similar.
  • GPS Global Positioning System
  • the controller 102, the routing module 116, and/or the preparation module 118 may use the location information to statically or dynamically create and/or update delivery itinerary information and estimated time of arrival information for each consumer destination.
  • the system 100 advantageously and significantly reduces the time required for delivery of prepared food items to consumer destinations by preparing or completing the preparation of food items within the distribution module 112 rather than the production module 106.
  • the preparation of food items can be completed using individually controllable appliance units on a vehicle instead of a more conventional stationary appliance unit such as a range or oven located in the production module 106.
  • the overall time required to prepare, cook, and deliver food items to a consumer location is reduced and the overall quality of the delivered food items is improved.
  • the time for delivery and quality of delivered food is improved over current systems in which food items are prepared in a central location and then loaded onto a delivery vehicle for delivery to the consumer location.
  • the system 100 may group present order data for a number of individual orders into one or more order groups of present order data based at least in part on one or more grouping criteria. Grouping the present order data may include grouping individual orders together based at least in part on order grouping algorithms and/or software. The grouped present order data may be used to at least partially generate the delivery schedule. The system 100 may determine respective availabilities of delivery vehicles to be used to deliver the food items to delivery destinations, such as customer delivery locations.
  • the order grouping may be performed by software (which may be referred to as an“order grouper”) which makes plans for the preparation and delivery of active orders on a hub-by-hub basis.
  • the order grouper may receive messages indicating that a hub’s orders need to be replanned, i.e. , regrouped, and may produce a delivery plan in response to every such message such that the most recent plan overrides any previous plan.
  • Such a plan may have several components: order grouping (i.e. , which orders get delivered together);
  • preparation sequence i.e., order in which the food items are prepared
  • preparation delays i.e., should any of the orders be intentionally delayed in preparation
  • the order grouper may also supply information to an estimated time of arrival (ETA) calculator relating to situations in which deliveries are limited by driver availability. For example, the next available driver time as a result of the plan determined by the order grouper may be used as an input to the ETA calculation of the next or a future order.
  • ETA estimated time of arrival
  • the need for a new delivery plan may be triggered in particular situations, such as, for example, new orders, cancelled orders, drivers starting or ending shifts, ovens turning on or off, etc.
  • the order grouper may only decide which orders should be delivered together, i.e., grouped together, rather than deciding which particular drivers should deliver which particular orders.
  • a compatible vehicle i.e., a vehicle which is capable of delivering order group.
  • FIGs. 2A, 2B, and 2C depict an illustrative food preparation and delivery system 200 in which food items 204 are prepared in the preparation module 106 and loaded into racks 110.
  • the racks 110 are transferred to the distribution module 112 where they are loaded onto vehicles 240.
  • the environmental and preparation conditions within each of the appliance units 210 are adjusted to complete the preparation process shortly before delivery of the food items 204 to the next delivery vehicle and in some cases where the preparation vehicle is also the delivery vehicle, shortly before delivery of the food items to the consumer location.
  • the controller 102 receives data indicative of one or more food item orders received by the order entry module 104.
  • the controller 102 communicates the food item orders to the production module 106.
  • various ingredients and food products are combined, mixed, or assembled 202 to provide a food item 204 per the order data received from the controller 102.
  • the prepared or assembled food items 204 are placed into individual cooking units 210, for example prepared pizzas may be placed into individual appliance units 210 (in this example, ovens) for baking.
  • each of the food items 204 may be prepared on a cleaned and sanitized food preparation surface 206 that can be separated and removed from the appliance unit 210.
  • Such food preparation surfaces may include surfaces that are commonly associated with the preparation of a particular food item. For example, a pizza may be placed on a cleaned and sanitized hearthstone food preparation surface 206 while a hamburger may be placed on a cleaned and sanitized grilling food preparation surface 206.
  • the appliance units 210 may include a housing 212 disposed at least partially about an interior cavity 214 formed by one or more surfaces 220. Food items are cooked under defined cooking conditions within the interior cavity 214. A hinged or otherwise displaceable door 216 is used to isolate the interior cavity 214 from the external environment. In at least some instances, the door 216 may be mechanically or electro-mechanically held closed while the preparation process is underway.
  • the appliance unit 210 can include a heat source or heat element 218 that is used to provide heat to the interior cavity 214. In addition to the heat source or heating element 218, additional elements such as convection fan(s), humidifiers, gas burners, or similar (not shown in FIGs. 2A and 2B for clarity) may be installed in place of or along with the heat source or heat element 218 in the appliance unit 210, and which may be controllable for control one or more environmental conditions of the appliance unit.
  • Each appliance unit 210 can include one or more indicators or display panels 222 that provide information about and/or the status of the food item in the respective appliance unit 210.
  • the display panel 222 may include a text display that provides information such as the type of food item 204 in the appliance unit 210; consumer name and location information associated with the food item 204 in the appliance unit 210; the status of the food item 204 in the appliance unit 210 (e.g.,“DONE,”“COMPLETE,”“2 MIN REMAINING”); or combinations thereof.
  • the data provided to the display 222 may be provided by the controller 102, the routing module 116, the preparation module 118, or any combination thereof.
  • the display 222 can include a controller capable of independently controlling the environmental and preparation conditions within its respective appliance unit 210.
  • information indicative of the preparation conditions for the cooking unit 210 may be provided to the display 222 in the form of any number of setpoints or other similar control parametric data by the controller 102, the preparation module 118, or any
  • One or more power interfaces 224 may be disposed in, on, or about each of the appliance units 210.
  • the power interface 224 is used to provide at least a portion of the power to the appliance unit 210.
  • Such power may be in the form of electrical power generated by the vehicle 240 or by a generator installed on the vehicle 240.
  • Such power may be in the form of a combustible gas (e.g., hydrogen, propane, compressed natural gas, liquefied natural gas) supplied from a combustible gas reservoir carried by the vehicle.
  • a combustible gas e.g., hydrogen, propane, compressed natural gas, liquefied natural gas
  • two or more power interfaces 224 may be installed, for example one electrical power interface 224a supplying power to the display 222 and a convection fan and one combustible gas power interface 224 supplying energy to the heating element 218 may be included on a single appliance unit 210.
  • One or more power distribution devices 234 can be located in the rack 110 holding multiple appliance units, and/or in the appliance units such that the corresponding appliance unit power interface 224 is physically and/or electrically coupled to the appropriate power distribution device 234 when the appliance unit 210 is placed in the rack 110 or directly within the vehicle.
  • the power distribution devices 234 can include an electrical bus for distributing electrical power to some or all of the appliance units.
  • the power distribution devices 234 can include a gas distribution header or manifold for distributing a combustible gas to some or all of the appliance units.
  • the power distribution devices may include one or more quick connect or similar devices to physically and/or electrically couple the power distribution devices 234 to the appropriate power distribution system (e.g., electrical, combustible gas, or other) onboard the vehicle 240.
  • the appropriate power distribution system e.g., electrical, combustible gas, or other
  • One or more communications interfaces 226 may be disposed in, on, or about each of the appliance units 210.
  • the communications interface 226 is used to bidirectionally communicate at least data indicative of the environmental and preparation conditions existent within the respective appliance unit 210.
  • the communications interface 226 can include a wireless communications interface, a wired communications interface, or any combination thereof. Some or all of the power to operate the communications interface 226 can be provided by the power interface 224.
  • the communications interface 226 can provide bidirectional wireless communication with a central controller 102.
  • the communications interface 226 can provide bidirectional wired or wireless communication with a vehicle mounted system such as the routing module 116 or the preparation module 118.
  • Instructions including data indicative of the environmental and preparation conditions within the appliance unit 210 can be communicated to the display 222 via the communications interfaces 226.
  • environmental and preparation parameters may be determined at least in part by the preparation module 118 based on estimated time of arrival information provided by the routing module 116.
  • One or more wired or wireless communications buses 236 can be located in each rack such that the corresponding appliance unit communications interface 224 is communicably coupled to the communications bus 236 when the appliance unit 210 is placed in the rack 110.
  • the communications buses 236 may be wired or wirelessly communicably coupled to the controller 102, the routing module 116, the preparation module 118 or any combination thereof.
  • Each of the racks 110 can accommodate the insertion of any number of food items or insertion of preparation units 210 holding food items.
  • the environmental and preparation conditions within each of the appliance units 210 can be individually adjusted to control the completion time of the particular food item within the appliance unit 210.
  • the rack may accommodate the insertion of multiple appliance units 210 and/or food items, the rack 110 need not be completely filled with appliance units 210 during operation.
  • each of the racks 110 may be equipped with any number of moving devices 236 to facilitate the movement of the rack 110.
  • Such moving devices 236 can take any form including rollers, casters, wheels, and the like.
  • the rack 110 containing any number of appliance units 210 is shown loaded into the cargo compartment 241 of a vehicle 240.
  • the rack 110 is shown communicably coupled 238 to a cooking module 118 onboard the vehicle 240.
  • the rack 110 is also shown physically and operationally coupled 258 to a power source 260 onboard the vehicle 240.
  • the power source 260 supplies power to the various appliance units 210 in the cooking rack 110 via the power bus 234.
  • the preparation module 118 provides via the communications bus 236 the data and other information indicative of instructions used to control the environmental and preparation conditions in each of the appliance units 210.
  • either or both the routing module 116 and the preparation module 118 may be disposed remote from the vehicle 240.
  • the controller 102 may provide some or all of the functionality associated with either or both the routing module 116 and the preparation module 118.
  • the routing module 116 and/or the controller 102 can be bidirectionally communicably coupled 248 to a display device 250 located in the vehicle 240 which may also be the delivery vehicle, or the delivery vehicle may be a vehicle separate from vehicle 240.
  • the display device 250 can provide the driver of the delivery vehicle with routing information 252 in the form of text directions, voice instructions, or a map.
  • the display device 250 can also provide the driver of the delivery vehicle with a delivery itinerary 254 that lists a number of consumer delivery destinations and provides a local estimated time of arrival at each respective consumer delivery destination.
  • the routing information 252 and the delivery itinerary 254 can be determined in whole or in part by the routing module 116, the controller 102, or any combination thereof.
  • the appliance unit 210 containing the respective food item 204 is turned off and the food item is transferred to a package or transport container 242 such as a box, carton, bag, or similar device for transport to the consumer.
  • packages or transport containers 242 may be readied or pre-staged to accept food items from each of the appliance units 210.
  • a transport container rack 243 containing a number of packages or transport containers 242 can be positioned adjacent or proximate the appliance units 210 in the cargo compartment 241 of the vehicle 240.
  • FIG. 3 shows a schematic diagram of a food delivery system 300 that includes a centralized production module 106 and controller 102 along with a number of vehicles 240a-240n in which food items are prepared in a number of appliance units 210 for delivery to a number of consumer delivery destinations 304a- 304n (collectively“consumer delivery destinations 304”) distributed across a geographic area 302.
  • the vehicles 240a-240n may be the same or different from the delivery vehicle delivering the order to the customer location.
  • the delivery driver in each of the delivery vehicles can follow their respective routing instructions 252 and the delivery itinerary 254 provided by the controller 102 and/or routing module 116.
  • the routing instructions 252 and delivery itinerary 254 may be dynamically updated or adjusted during the delivery process to reflect the latest traffic, road conditions, road closures, etc.
  • traffic, road condition, and road closure information may be obtained via one or more of: a commercial source of traffic information, crowd-sourced traffic information 306, or some combination thereof.
  • the controller 102 and/or routing modules 116 in each of the delivery vehicles can provide up-to-the-minute routing instructions 252 and delivery itineraries 254.
  • FIG. 4 and the following discussion provide a brief, general description of an exemplary central controller 102 that may be used to provide the controller 102.
  • the order entry module 104, the routing module 116, and the preparation module 118 are described herein as functional elements of a central controller 102, one of ordinary skill in the art would readily appreciate that some or all of the functionality of the order entry module 104, routing module 116, or the preparation module 118 may be performed using one or more additional computing devices which may be external to the controller 102.
  • an order entry module 104 may be disposed in a national or regional call or order aggregation center that is remote from the controller 102.
  • routing module 116, and/or the preparation module 118 may be disposed in some or all of the vehicles 240 or a stationary vehicle or commissary (e.g., dark kitchen) or food service location open to the public.
  • the controller 102 may implement some or all of the various functions and operations discussed immediately above in reference to FIGs. 1 , 2, and 3.
  • program modules may be stored in both local and remote memory storage devices and executed using one or more local or remote processors, microprocessors, digital signal processors, controllers, or combinations thereof.
  • the controller 102 may take the form of any current or future developed computing system capable of executing one or more instruction sets.
  • the controller 102 includes a processing unit 406, a system memory 408 and a system bus 410 that communicably couples various system components including the system memory 408 to the processing unit 406.
  • the controller 102 will at times be referred to in the singular herein, but this is not intended to limit the embodiments to a single system, since in certain embodiments, there will be more than one system or other networked computing device involved.
  • the processing unit 406 may be any logic processing unit, such as one or more central processing units (CPUs), microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), etc.
  • CPUs central processing units
  • DSPs digital signal processors
  • ASICs application-specific integrated circuits
  • FPGAs field programmable gate arrays
  • the system bus 410 can employ any known bus structures or architectures, including a memory bus with memory controller, a peripheral bus, and a local bus.
  • the system memory 408 includes read-only memory (“ROM”) 412 and random access memory (“RAM”) 414.
  • ROM read-only memory
  • RAM random access memory
  • a basic input/output system (“BIOS”) 416 which can form part of the ROM 412, contains basic routines that help transfer information between elements within the controller 102, such as during start-up. Some embodiments may employ separate buses for data, instructions and power.
  • the controller 102 also includes one or more internal non-transitory storage systems 418.
  • Such internal non-transitory storage systems 418 may include, but are not limited to, any current or future developed persistent storage device 420.
  • Such persistent storage devices 420 may include, without limitation, magnetic storage devices such as hard disc drives, electromagnetic storage devices such as memristors, molecular storage devices, quantum storage devices, electrostatic storage devices such as solid state drives, and the like.
  • the controller 102 may also include one or more optional removable non- transitory storage systems 422.
  • Such removable non-transitory storage systems 422 may include, but are not limited to, any current or future developed removable persistent storage device 426.
  • Such removable persistent storage devices 326 may include, without limitation, magnetic storage devices, electromagnetic storage devices such as memristors, molecular storage devices, quantum storage devices, and electrostatic storage devices such as secure digital (“SD”) drives, USB drives, memory sticks, or the like.
  • the one or more internal non-transitory storage systems 418 and the one or more optional removable non-transitory storage systems 422 communicate with the processing unit 406 via the system bus 410.
  • the one or more internal non-transitory storage systems 418 and the one or more optional removable non-transitory storage systems 422 may include interfaces or device controllers (not shown) communicably coupled between non-transitory storage system and the system bus 410, as is known by those skilled in the relevant art.
  • the non-transitory storage systems 418, 422, and their associated storage devices 420, 426 provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the controller 102.
  • Those skilled in the relevant art will appreciate that other types of storage devices may be employed to store digital data accessible by a computer, such as magnetic cassettes, flash memory cards, Bernoulli cartridges, RAMs,
  • Program modules can be stored in the system memory 408, such as an operating system 430, one or more application programs 432, other programs or modules 434, drivers 436 and program data 438.
  • the application programs 432 may include, for example, one or more machine executable instruction sets capable of providing an order entry module 104 able to receive food item orders in any form of communication, including without limitation, voice orders, text orders, and digital data orders.
  • the application programs 432 may additionally include one or more machine executable instruction sets capable of providing a routing module 116 able to provide text, voice, and/or graphical routing instructions to the output devices 250 in some or all of the vehicles 240Such a routing module machine executable instruction set may also be executable by one or more controllers in a routing module 116 installed in some or all of the delivery vehicles.
  • the application programs 432 may further include one or more preparation module machine executable instructions sets capable of outputting environmental and preparation instructions to the appliance units 210 in the cargo compartment 241 of each vehicle 240.
  • Such a preparation module machine executable instruction set may be executed in whole or in part by one or more controllers in the preparation module 118 installed in some or all of the vehicles 240.
  • the routing module 116 and/or the preparation module 118 may provide a backup controller in the event controller 102 becomes communicably decoupled from the vehicle 240.
  • the routing module 116 and/or the preparation module 118 installed in each vehicle may include non-transitory storage to store routing and delivery itinerary data and environmental and preparation data communicated to the respective module by the controller 102.
  • the application programs 432 may, for example, be stored as one or more executable instructions.
  • the system memory 408 may also include other programs/modules 434, such as including logic for calibrating and/or otherwise training various aspects of the controller 102.
  • the other programs/modules 434 may additionally include various other logic for performing various other operations and/or tasks.
  • the system memory 408 may also include any number of communications programs 440 to permit the controller 102 to access and exchange data with other systems or components, such as with the routing modules 116, preparation modules 118, and/or output devices 250 installed in each of the vehicles 240.
  • programs/modules 434, drivers 436, program data 438 and communications 440 can be stored on the persistent storage device 420 of the one or more internal non- transitory storage systems 418 or the removable persistent storage device 426 of the one or more optional removable non-transitory storage systems 422.
  • a user can enter commands and information into the controller 102 using one or more input/output (I/O) devices 442.
  • I/O devices 442 may include any current or future developed input device capable of transforming a user action or a received input signal to a digital input.
  • Example input devices include, but are not limited to, a touchscreen, a physical or virtual keyboard, a microphone, a pointing device, or the like.
  • These and other input devices are connected to the processing unit 406 through an interface 446 such as a universal serial bus (“USB”) interface communicably coupled to the system bus 410, although other interfaces such as a parallel port, a game port or a wireless interface or a serial port may be used.
  • a display 470 or similar output device is communicably coupled to the system bus 410 via a video interface 450, such as a video adapter or graphical processing unit (“GPU”).
  • a video interface 450 such as a video adapter or graphical processing unit (“GPU”).
  • the controller 102 operates in an environment using one or more of the network interfaces 456 to optionally communicably couple to one or more remote computers, servers, display devices 250 and/or other devices via one or more communications channels, for example, one or more networks such as the network 114.
  • These logical connections may facilitate any known method of permitting computers to communicate, such as through one or more LANs and/or WANs.
  • Such networking environments are well known in wired and wireless enterprise-wide computer networks, intranets, extranets, and the Internet.
  • the database interface 452 which is communicably coupled to the system bus 410, may be used for establishing communications with a database stored on one or more computer-readable media 460.
  • a database 460 may include a repository for storing information regarding food item environmental and preparation conditions as a function of time, etc.
  • FIG. 5A through 5C illustrate a conceptual overview of a food item
  • Diagram 500A shows a preparation truck with an on-board controller (502) performing actions 504 associated with order grouping in a food item preparation and delivery system.
  • the truck may act as the hub for the system providing prepared food items to delivery vehicles 506 upon parking at a hub location.
  • the delivery vehicles 506 may include human driven vehicles such as cars, bicycles, motorbikes, vans, and similar ones, or autonomous vehicles such as ground based drones or aerial drones.
  • the delivery vehicles may perform actions 508 such as picking up prepared order groups, delivering the order groups to one or more delivery locations 510, and returning to the hub location.
  • the delivery locations 510 may include residential buildings, commercial buildings, schools, hospitals, and comparable ones.
  • Actions 504 performed by the on-board controller and other equipment in the truck may include, but are not limited to, receiving food item orders, scoring orders, iteratively generating order groupings and selecting a preparation sequence based on scoring of the candidate groupings at each iteration.
  • a preparation and a delivery model may be used to process the preparation sequence resulting in estimated delivery times for selected order groupings, and orders may be processed according to the selection.
  • Diagram 500B shows a different configuration of the food item preparation and delivery system, where the actions 504 are controlled by a remote controller 501 which may transmit instructions for processing orders to on-board controllers and other equipment on preparation and truck 503, which may receive the instructions and process the orders (505).
  • Delivery vehicles 506 may perform actions 508 in delivering the prepared food item orders (order groups) to the delivery locations 510.
  • Diagram 500C shows yet another configuration, where the remote controller 501 performs actions 504 and transmits instructions to on-board controllers and other equipment on multiple trucks 513, which may act as multiple hubs in different hub locations and receive instructions and process respective orders (515).
  • the order grouping process may further take into account availability of multiple hubs (e.g., their closeness to a delivery location and/or availability of preparation equipment at each hub.
  • an order grouping plan may specify sets of orders that need to be picked up together and a sequence of deliveries within a group. Delivery updates may be provided during checkout, as items are added to the cart for an online order (or over the phone), following placement of an order (once payment is made), and/or when the group is en route to the delivery location.
  • a preparation schedule is a plan for preparing (e.g., cooking, blending, cooling, etc.) multiple food items at a hub (e.g., en route preparation and/or delivery vehicle) with limited resources.
  • limited resources may include supplies, preparation equipment (e.g., ovens), and personnel time.
  • the preparation plan may specify a preferred cooking sequence, an order and selection of preparation equipment (appliances, ovens), or even include a delayed preparation. For example, “Cook order #1 now, but don’t start order #2 until 12:30”. In another example,“Cook order #1 now, then Cook order #3, and don’t start order #2 until 12:30”
  • the orders are not necessarily prepared in the order received but rather in order to time to prepare and may be optimized for estimated delivery and/or grouping multiple orders into a single delivery vehicle for delivery to multiple and proximate customer locations.
  • An order grouping system may determine which orders may be delivered together, when delivery can be expected, when to start preparing, and which order to use in preparation. For these determinations, some information may be already known and there may be some expectation of what will happen in the future based on the determinations.
  • Flubs in a system may include, in addition to trucks, other vehicles such as buses, vans, watercraft, or containers that may be carried by trailer tractors or railway cars. Flubs may also include, in some examples, fixed buildings (e.g., dark kitchens). A system may include more than one hub, which may be of similar or different type. For example, a single commissary or dark kitchen may service one or more forward deployed (constellation deployment) trucks, which each may then service a plurality of delivery vehicles.
  • FIG. 6 illustrates an example flow of major operations in a food item preparation and delivery system with order grouping.
  • Diagram 600 shows orders 602 being received, followed by scoring of single orders 604.
  • An iterative process 606 may follow the initial scoring generating combinations of orders with increasing number at each iteration.
  • the combinations (order groups) may be scored and one with highest score may be selected until no higher score can be determined.
  • the combination or group of orders with highest score may be selected and flattened into an array of orders as the preparation sequence 608.
  • the preparation sequence 608 may be fed into a preparation model 610, which represents a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, and/or a time for packaging the prepared food item.
  • a preparation model 610 represents a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, and/or a time for packaging the prepared food item.
  • Results of the preparation model 610 such as estimates of a finished preparation time for a first food item in each order and/or a ready for pickup time for each order group may be fed into a delivery model 612, which may include an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to the delivery location, a time to complete delivery, and/or a time for the delivery vehicle to return to the hub.
  • Simulation results may be used for order preparation, delivery estimate generation, and/or model updates (614).
  • FIG. 7 an example iteration process for selecting an order group scored according to a cost function.
  • a grouping process may begin with identification and scoring of candidates using a cost function.
  • the cost function may be based on parameters such as a base cost of the food item (e.g., pizza), dwell time, delivery time, delivery location, and/or delivery estimate. Dwell time defines how long a prepared food item waits before being delivered. For example, deliveries of pizzas that have been out of an oven too long may reduce their value to a customer.
  • Delivery time defines how long it takes for the food item to reach the customer. Late deliveries may also reduce customer value. Delivery estimate is how long it may take from taking an order to delivering the food item. Length of delivery estimates may be proportional to revenue for a food item delivery business. Delivery location of multiple orders may be compared for proximity to group multiple orders for delivery by a single delivery vehicle.
  • the system may apply weights to convert the delivery time, dwell time, and late delivery time into dollar values.
  • a premium may be applied to having delivery vehicles available for orders which have not yet been placed.
  • a cost may be established for“next available delivery vehicle” times which are far in the future.
  • a penalty may be applied that varies based on a prediction of upcoming order volume.
  • a plan may be determined which includes a generated representative sample of some future orders.
  • An example cost function may be as follows:
  • CF Base Cost + f1 (Dwell Time) + f2(Delivery Time) - f3(Delivery Estimate)
  • the cost function parameters may be implemented as:
  • Diagram 700 shows an initial set of scored orders 702 being processed in a first stage 706 of an iterative merger process 704.
  • the process may include generating combinations of two orders as one set followed by other single orders.
  • a comparison of the scores of the sets in the first stage may result in selection of a set 708 with highest score and used in the second stage 710 of the iterative mergers process 704.
  • Various combinations as shown in the figure may be generated and scored again resulting in the selection of a new set 712 with highest score.
  • the selected set 712 with highest score may be fed into a third stage 714 of the iterative merger process 704, where further combinations may be generated (additional number of orders grouped).
  • a scoring and comparison of the newly generated sets may not yield one with a higher score than the set 712.
  • the iterative merger process 704 may be stopped (716) at the third stage.
  • the selected set 712 may then be flattened into a preparation sequence to be fed into a preparation model.
  • FIG. 8 illustrates example screenshots of a food item ordering application with delivery estimate notification at different stages.
  • delivery updates may be provided during checkout, as items are added to the cart for an online order, following placement of an order, and/or when the group is en route to the delivery location.
  • Screenshot 802 is an example of presentation of delivery estimate to a customer before checkout time. Presentation before placement of the order may allow a customer to decide on timing. For example, if the customer is unsure, they will be able to receive delivery at the indicated time(s), they may opt for delaying the delivery (i.e., select a later delivery time).
  • Screenshot 804 is an example of presentation of the delivery estimate 808 upon placement of the order.
  • Screenshot 806 shows an example delivery update after the order is placed.
  • the post order placement delivery updates may be provided once, at regular intervals, or upon demand.
  • a system may begin a process for grouping orders by gathering (receiving) information associated with orders, preparation equipment, delivery personnel, delivery vehicles, and other factors that may impact preparation and deliveries.
  • various models such as delivery model (e.g., a transit matrix), preparation model (e.g., cook times), etc. may be generated or retrieved.
  • Candidates may be generated from single orders that are to be delivered and scored using the cost function.
  • a candidate with highest score may be selected.
  • the iterative process may be performed, where combinations of the candidates may be grouped in groups of two, scored, and a combination with highest score selected in place of the highest score single order candidate.
  • the iteration may continue with generation of further combinations from the group of two with highest score and other others, and so on until no higher score can be found.
  • the group of candidates with highest score from the iteration may be flattened to generate a preparation sequence.
  • the preparation sequence may be fed into the preparation model, which may take into account, among other things, loading of preparation equipment, personnel time, actual preparation time, retrieval from preparation equipment, packaging, and/or other steps involved in preparation.
  • the parameters may include preheating oven, loading of a pizza into an oven, actual baking time and temperature, ejection from the oven, cutting, cooling, boxing, etc.
  • the implementation may begin with a current state. Some preparation equipment may be currently operating, some may be idle. Some food items may be in preparation, others may be in queue. The system may follow the preparation sequence but prioritize food items from orders that are already in preparation. The system may keep track of when each preparation equipment will be next idle and when the personnel is next idle. While a food item is in queue, the system may wait for an idle personnel and an idle preparation equipment, then mark the personnel next idle after loading time and mark the preparation equipment next idle after loading and cooking time. The food item may be marked ready after loading and cooking time (and any other steps). At the end of the computation, finished preparation times for the first food item in each order and ready for pickup times for each order group may be estimated.
  • the estimates of delivery from a transit matrix along with durations for activities like order completion (the time between arrival and completion) order pickup (the time between driver assignment and en route) may be used as part of the delivery model.
  • the system may keep track of when each driver is next idle and generate a queue of deliveries sorted by each group’s ready for pickup time. While order groups are in queue, the system may wait for next ready group and next idle driver (with capacity), step through delivery activities (pickup, transit, and back to hub transit), and mark order completion times. The system may also mark driver’s next idle time.
  • the system may estimate delivery times for each order and overall time spent driving.
  • the system may also process delayed preparation.
  • the preparation schedule may be adjusted to avoid some
  • orders may be delivered before an agreed upon delivery window. Such scenarios may become more prevalent when orders are accepted far in advance, for example the day before.
  • the system may determine an estimated time of delivery from a hub closest to the delivery location with the needed preparation equipment and supply inventory (in case of multiple hubs). The system may compute a preparation bottleneck time and evaluate when an order would be prepared if enqueued. The system may also compute a delivery bottleneck time and determine when a delivery vehicle could next pickup this order if enqueued.
  • the later of these two times may be selected and time for pickup, transit, and completion (handover at delivery location) added resulting in the point estimate of order completion.
  • the point estimate may be translated into a range to present to the customer by bringing it up to a minimum value and rounding to the nearest 5 minutes. This may be the low end of the estimated delivery range.
  • the high end may be determined by adding a constant period (e.g., 15 minutes.
  • the minimum value and the range size may be configurable by an administrator.
  • Deliveries may be simulated for each order group with transit durations and fixed time estimates for pickup and completion tasks.
  • the system may keep track of when each preparation equipment is first assigned and last ejected during
  • the system may also keep track of when a planned driver is assigned and back to base (hub).
  • the system may go through the order groups in the opposite order removing the slack from the process.
  • the start of preparation may be delayed on each order in the group until one of the following happens (1 ) an order's delivery estimate is increased to the late delivery threshold; (2) a driver's return to base at time is increased to their next assignment time; or (3) a preparation equipment's last ejected time is increased to its next assignment time.
  • the initial preparation delay may only affect when a preparation equipment is being utilized if the ready orders were waiting on a driver. Once the driver is waiting on an order to be ready, additional preparation delay may affect delivery times and preparation equipment / driver utilization.
  • the resulting delayed preparation plan may then be scored. Dwell time violations may be computed from the first-item-ready-at time for each order delivered. Estimated delivery time violations may be computed for each order, and drive time cost may be accumulated for each leg of the route.
  • the process may be adjusted to capture tradeoffs between offering fast delivery and a risk of being late on a delivery.
  • the workflow service of the process may be used to drive the models used for preparation scheduling and delivery estimate generation. More order grouping candidates may be considered while generating delivery estimates.
  • the cost function may also be used to select which hub an order may be routed to.
  • a system according to examples may be implemented as one or more processors computing the models, candidate generation, and/or iterations.
  • APIs Application Programming Interfaces
  • plans and the composition of the cost function may be visualized to allow an administrator to manage the process in real time.
  • uncertainty may be incorporated into models and scoring.
  • FIG. 9 is a flow diagram for a method of grouping orders in a food item preparation and delivery system.
  • Example methods may include one or more operations, functions, or actions as illustrated by one or more of blocks 922 through 938, which may in some embodiments be performed by a computing device such as the computing device 910 in FIG. 9 and/or other general purpose and specialized devices communicatively coupled to the computing device 910. Such operations, functions, or actions in FIG.
  • An example process for grouping orders in a food item preparation and delivery system may begin with block 922,“GENERATE ARRAY OF RECEIVED FOOD ITEM ORDERS”, where orders received by the system may be arranged in an array to be scored.
  • the cost function may be applied to each single order in the array resulting score assignments.
  • An order with highest score may be selected at block 926“SELECT AN ORDER WITH HIGHEST SCORE”.
  • the order with highest score may be fed into an iterative process at block 928,“ITERATIVELY EVALUATE COMBINATIONS SCORING EACH
  • COMBINATION where the highest scored order may be combined with other orders at each iteration and the combinations scored.
  • a combination with highest score may be the output of the iterative process at block 930“SELECT
  • the preparation sequence may be fed into the preparation model representing various preparation parameters.
  • Results of the preparation model application may be fed into a delivery model representing various delivery parameters at block 936“FEED RESULTS OF THE PREPARATION MODEL INTO DELIVERY MODEL”.
  • Results of the delivery model along with other computation results may be used to process the received orders and provide delivery estimates to customers at block 938“PROCESS THE RECEIVED ORDERS BASED ON
  • FIG. 10 is a flow diagram for a method of iteratively determining and evaluating order groupings scored according to a cost function.
  • Example methods may include one or more operations, functions, or actions as illustrated by one or more of blocks 1022 through 1036, which may in some embodiments be performed by a computing device such as the computing device 1010 in FIG. 10 and/or other general purpose and specialized devices
  • the operations described in the blocks 1022-1036 may be implemented through execution of computer-executable instructions stored in a computer- readable medium such as a computer-readable medium 1020 of a computing device 1010.
  • An example process for iteratively determining and evaluating order groupings scored according to a cost function may begin with block 1022,“SELECT SINGLE ORDER WITH HIGHEST SCORE”, where orders arranged in an array and scored according to a cost function as described herein may be compared and one with the highest score may be selected.
  • block 1024 “GENERATE
  • the scored combinations may be compared among each other at block, 1028“SELECT COMBINATION WITH HIGHEST SCORE”.
  • combination with highest score may be compared to the single order with the highest score at block 1030,“IF THE SELECTED COMBINATION HAS HIGHER SCORE, SELECT THE COMBINATION FOR NEXT STAGE”, and the selected combination may be forwarded to the next stage of the iteration.
  • block 1032 “GENERATE COMBINATIONS OF OTHER COMBINATIONS WITH THE SELECTED COMBINATION”, the selected combination with the highest score so far may be combined in various permutations with other combinations and single orders and re scored.
  • processors operated on one or more computing devices, one or more processor cores, and/or specialized processing devices, among other examples.
  • a method of grouping orders in a food item preparation and delivery system may include generating an array of received food item orders; assigning a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; selecting an order with highest score; and performing an iteration.
  • Performing an iteration may include generating combinations of the order with the highest score with other orders; assigning scores to the combinations; and selecting a combination with a highest score.
  • the method may also include generating a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; providing the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; providing results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and processing the received orders based on results of the delivery model.
  • the base cost may define a cost of a food item
  • the dwell time may define how long the food item waits after being prepared and before being delivered to a customer
  • the delivery time may define how long it takes for the food item to reach the customer
  • the delivery estimate may define how long it takes from taking an order for the food item to delivering the food item to the customer.
  • Performing the iteration may further include generating combinations of two single orders in a first stage, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration.
  • Providing the preparation sequence into the preparation model may include retrieving or
  • Providing results of the preparation model into the delivery model may include retrieving or generating the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
  • the method may also include prioritizing food items associated with orders already in preparation while providing the preparation sequence into the preparation model.
  • the method may further include monitoring when each preparation equipment and each preparation personnel will be next idle; and while the food item is in queue, designating the preparation personnel next idle after a loading time, designating the preparation equipment next idle after the loading time and a preparation time, and designating the food item ready after the loading time and the preparation time.
  • Providing results of the preparation model into the delivery model may also include providing estimates of one or more of a finished preparation time for a first food item in each order and a ready for pickup time for each order group to the delivery model.
  • the method may also include while a plurality of order groups is in queue, identifying a next ready order group and a next idle delivery vehicle, adding an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub, and determining an order completion time for the next ready order group.
  • the method may further include if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delaying one or more preparation steps of the next ready order group; selecting a later of the order completion time and the order pickup time; determining a point estimate of order completion by adding the transit time from the hub to a delivery location and the time to complete delivery to the selected one of the order
  • the method may further include upon completion of simulation of a predefined number of order groups, evaluating order completion times and order pickup times of the predefined number of order groups in reverse order; and delaying preparation of each order in an order group until one of increase of an order's delivery estimate to a late delivery threshold, increase of a delivery vehicle’s return time to the hub to a next delivery vehicle assignment time, or increase of a preparation equipment's last ejected time to a next preparation equipment assignment time.
  • the method may also include receiving the food item orders for a plurality of hubs; employing a plurality of preparation models
  • a computing device for managing a food item preparation and delivery system with order grouping.
  • the computing device may include a communication system configured to communicate wirelessly with one or more other devices including an on-board controller of a preparation and delivery hub; a memory configured to store instructions; and a processor coupled to the communication system and the memory.
  • the processor in conjunction with the instructions stored in the memory, may be configured to receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; perform an iteration that includes generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score.
  • the processor may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; provide results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and provide instructions to the on board controller based on results of the delivery model.
  • the base cost may define a cost of a food item
  • the dwell time may define how long the food item waits after being prepared and before being delivered to a customer
  • the delivery time may define how long it takes for the food item to reach the customer
  • the delivery estimate may define how long it takes from taking an order for the food item to delivering the food item to the customer.
  • the processor may be further configured to generate combinations of two single orders in a first stage of the iteration, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration.
  • the processor may be configured to retrieve or generate the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item.
  • the processor may be configured to retrieve or generate the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
  • the processor may be further configured to prioritize food items associated with orders already in preparation while providing the preparation sequence into the preparation model.
  • the processor may be further configured to monitor when each preparation equipment and each preparation personnel will be next idle; and while the food item is in queue, designate the preparation personnel next idle after a loading time, designate the preparation equipment next idle after the loading time and a preparation time, and designate the food item ready after the loading time and the preparation time.
  • the processor may be configured to provide estimates of one or more of a finished preparation time for a first food item in each order and a ready for pickup time for each order group to the delivery model.
  • the processor may be further configured to while a plurality of order groups is in queue, identify a next ready order group and a next idle delivery vehicle, add an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub, determine an order completion time for the next ready order group, and if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delay one or more preparation steps of the next ready order group.
  • the processor may be further configured to select a later of the order completion time and the order pickup time; and determine a point estimate of order completion by adding the transit time from the hub to a delivery location and the time to complete delivery to the selected one of the order completion time and the order pickup time.
  • the processor may be further configured to translate the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range.
  • the processor may be further configured to upon completion of simulation of a predefined number of order groups, evaluate order completion times and order pickup times of the predefined number of order groups in reverse order; and instruct the on-board controller to delay
  • the processor may be further configured to receive the food item orders for a plurality of hubs; employ a plurality of preparation models representing availability and preparation times associated with one or more preparation
  • a food item preparation and delivery hub with order grouping may include one or more preparation equipment; a communication system configured to facilitate wired or wireless communication with one or more delivery vehicles and remote computing devices; and an on-board controller.
  • the on-board controller may be configured to control preparation and delivery operations of the hub; receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; and perform an iteration.
  • the iteration may include generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score.
  • the on-board controller may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with the one or more preparation equipment and/or preparation personnel at a hub;
  • the base cost may define a cost of a food item
  • the dwell time may define how long the food item waits after being prepared and before being delivered to a customer
  • the delivery time may define how long it takes for the food item to reach the customer
  • the delivery estimate may define how long it takes from taking an order for the food item to delivering the food item to the customer.
  • the on-board controller may be further configured to generate combinations of two single orders in a first stage of the iteration, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration.
  • the on board controller may be configured to retrieve or generate the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item.
  • the on-board controller may be configured to retrieve or generate the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
  • the on-board controller may be further configured to monitor when each preparation equipment and each preparation personnel will be next idle; and while the food item is in queue, designate the preparation personnel next idle after a loading time, designate the preparation equipment next idle after the loading time and a preparation time, and designate the food item ready after the loading time and the preparation time.
  • the on-board controller may be further configured to while a plurality of order groups is in queue, identify a next ready order group and a next idle delivery vehicle, add an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub, determine an order completion time for the next ready order group, and if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delay one or more preparation steps of the next ready order group.
  • the on board controller may be further configured to select a later of the order completion time and the order pickup time; determine a point estimate of order completion by adding the transit time from the hub to the delivery location and the time to complete delivery to the selected one of the order completion time and the order pickup time; and translate the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range.
  • the terms“food item” and“food product” refer to any item or product intended for human consumption.
  • “food item” and“food product” refer to any item or product intended for human consumption.
  • One of ordinary skill in the culinary arts and food preparation will readily appreciate the broad applicability of the systems, methods, and apparatuses described herein across any number of prepared food items or products, including cooked and uncooked food items or products, and ingredients or components of food items and products.
  • well- known structures associated with computing systems including client and server computing systems, machine learnings, machine learning systems, as well as networks, including various types of telecommunications networks, have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the embodiments.
  • Examples of food items include entrees, pizzas, appetizers, hors d’oeuvre, antipasti, deserts, candy, confectionary items, pastries, side dishes, soups, pasta, salads, salad bar items, sandwiches, a particular course of a multi-course meal, breakfast items, brunch items, lunch items, happy hour menu items, dinner items, late night menu items, main course items,
  • beverages alcohol, wine, beer, liquor, cocktails, soft drinks, coffee, tea, buffet items, combination meals, vegetarian dishes, meat dishes, fish dishes, chicken dishes, pork dishes, roasts, gluten free dishes, organic dishes, vegan dishes, animal product dishes, dietary needs dishes, special order items, menu items, off-menu items, substitution items, customized menu items, customized meals, catered items, build- your-own pizzas, build-your-own menu items, build-your-own meals, take-out items, promotional items, specials, coupon items and pre-packaged items.
  • vehicle refers to any car, truck, van, or other vehicle useful in preparing (e.g., cooking, heating, mixing, cooling, etc. as
  • the size and shape of the vehicle may depend in part on licensing requirements of the locality in which the vehicle is intended to operate. In some instances, the size and shape of the vehicle may depend on the street layout and the surrounding environment of the locality in which the vehicle is intended to operate. For example, small, tight city streets may require a vehicle that is comparatively shorter and/or narrower than a vehicle that can safely and conveniently navigate larger, suburban thoroughfares.
  • service area refers to a physical area in which food items are provided or made available to consumers.
  • the physical area is defined as a region in which physical sale locations (e.g., stores, vending machines, kiosks) are located and delivery vehicles provide or make available food items.
  • the region may be defined, for example, by physical boundaries (e.g., streets, rivers); postal codes; provincial, county, or local government organization; or combinations thereof.
  • the service area is a geographic region comprising a plurality of food services establishments supplied by a logistics provider or commissary.
  • a service area represents an area serviced or defined by one or more of logistics suppliers, processors, trucking companies, shipping companies, wholesalers, resellers, supply chains managers, producers, farms, agricultural cooperatives, plantations,
  • order refers to a set of one or more food items for delivery to a customer.
  • order group refers to a set of one or more orders for delivery by a determined vehicle taking a determined route involving a single round-trip from the hub to delivery location(s) corresponding to the order(s) of the set of one or more orders and returning to the hub.
  • order grouping plan refers to a set of orders and/or order groups which, taken together, represent all orders currently pending at a hub.
  • a processing system may be implemented utilizing any suitable
  • any two components herein combined to achieve a particular functionality may be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermediate components.
  • any two components so associated may also be viewed as being “operably connected”, or “operably coupled”, to each other to achieve the desired functionality, and any two components capable of being so associated may also be viewed as being “operably couplable”, to each other to achieve the desired functionality.
  • operably couplable include but are not limited to physically connectable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components.
  • ranges disclosed herein also encompass any and all possible subranges and combinations of subranges thereof. Any listed range can be easily recognized as sufficiently describing and enabling the same range being broken down into at least equal halves, thirds, quarters, fifths, tenths, etc. As a non-limiting example, each range discussed herein can be readily broken down into a lower third, middle third and upper third, etc. As will also be understood by one skilled in the art all language such as“up to,”“at least,”“greater than,”“less than,” and the like include the number recited and refer to ranges which can be subsequently broken down into subranges as discussed above. Finally, a range includes each individual member. Thus, for example, a group having 1 -3 cells refers to groups having 1 , 2, or 3 cells. Similarly, a group having 1 -5 cells refers to groups having 1 , 2, 3, 4, or 5 cells, and so forth.

Landscapes

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

Abstract

A system according to examples may begin a process for grouping orders by gathering information associated with orders, preparation equipment, delivery personnel, delivery vehicles, and other factors that may impact preparation and deliveries. Various models such as delivery model, preparation model, etc. may be generated or retrieved. Candidates may be generated from single orders and scored using a cost function. A candidate with highest score may be selected. Then, the iterative process may be performed, where combinations of the candidates with increasing numbers may be grouped combinations with highest score selected until no higher score can be found. The group of candidates with highest score from the iteration may be flattened to generate a preparation sequence. The preparation sequence may be fed into the preparation model, and results of the preparation model ay be fed into a delivery model. Estimated delivery times may be provided to customers as delivery ranges.

Description

GROUPING ORDERS IN A DELIVERY SYSTEM
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001 ] This application claims the benefit of U.S. Provisional Patent Application Serial No. 62/782,968 filed on December 20, 2018. The disclosures of the above- listed provisional application are hereby incorporated by reference for all purposes.
BACKGROUND
[0002] Technical Field
[0003] The present disclosure generally relates to grouping orders in a delivery system, and more particularly, to forming order grouping plans of individual orders and order groups based on an evaluation score.
[0004] Description of the Related Art
[0005] Conventional order grouping may be done ad hoc or automatically based on proximity of delivery locations. Algorithms may be applied to reduce total travel distance and time for delivery vehicles. Such approaches do not account for preparation schedules and limited oven availability and the resulting possibility of bottlenecks in the preparation process, nor do they consider dwell time for orders or order groups containing multiple preparation items, or multiple orders being delivered to multiple proximate locations, but received at different times.
BRIEF SUMMARY
[0006] According to some examples, a method of grouping orders in a food item preparation and delivery system is described. The method may include generating an array of received food item orders; assigning a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; selecting an order with highest score; and performing an iteration. Performing an iteration may include generating combinations of the order with the highest score with other orders; assigning scores to the combinations; and selecting a combination with a highest score. The method may also include generating a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; providing the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; providing results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and processing the received orders based on results of the delivery model.
[0007] According to other examples, a computing device for managing a food item preparation and delivery system with order grouping is described. The computing device may include a communication system configured to communicate wirelessly with one or more other devices including an on-board controller of a preparation and delivery hub; a memory configured to store instructions; and a processor coupled to the communication system and the memory. The processor, in conjunction with the instructions stored in the memory, may be configured to receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; perform an iteration that includes generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score. The processor may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; provide results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and provide instructions to the on board controller based on results of the delivery model.
[0008] According to further examples, a food item preparation and delivery hub with order grouping is described. The hub may include one or more preparation
equipment; a communication system configured to facilitate wired or wireless communication with one or more delivery vehicles and remote computing devices; and an on-board controller. The on-board controller may be configured to control preparation and delivery operations of the hub; receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; and perform an iteration. The iteration may include generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score. The on-board controller may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with the one or more preparation equipment and/or preparation personnel at a hub;
provide results of the preparation model into a delivery model representing
availability and delivery times associated with one or more delivery vehicles; and process the received orders based on results of the delivery model.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] FIG. 1 is a schematic diagram of a food delivery environment that includes a central controller communicably coupled to order entry, food production, and food distribution modules, according to one illustrated embodiment.
[0010] FIGs. 2A, 2B and 2C are schematic diagrams of a food delivery environment such as that depicted in FIG. 1 that show a food production module in which food is prepared and loaded into racks that are, in turn, loaded into a vehicle where the food may be prepared under controlled conditions, which in some instance may be while en route to the consumer destination, according to one illustrated embodiment.
[0011 ] FIG. 3 is a schematic diagram of a food delivery system that includes a centralized production module and central controller along with a number of vehicles in which food is prepared under controlled conditions, which in some instances may be while en route to a number of consumer destinations distributed across a geographic area using a delivery itinerary, according to one illustrated embodiment.
[0012] FIG. 4 is a block diagram of a food delivery system controller, according to one or more illustrated embodiments.
[0013] FIG. 5A through 5C illustrate a conceptual overview of a food item
preparation and delivery system with order grouping in various configurations. [0014] FIG. 6 illustrates an example flow of major operations in a food item preparation and delivery system with order grouping.
[0015] FIG. 7 an example iteration process for selecting an order group scored according to a cost function.
[0016] FIG. 8 illustrates example screenshots of a food item ordering application with delivery estimate notification at different stages.
[0017] FIG. 9 is a flow diagram for a method of grouping orders in a food item preparation and delivery system.
[0018] FIG. 10 is a flow diagram for a method of iteratively determining and evaluating order groupings scored according to a cost function.
DETAILED DESCRIPTION
[0019] In the following description, certain specific details are set forth in order to provide a thorough understanding of various disclosed implementations. However, one skilled in the relevant art will recognize that implementations may be practiced without one or more of these specific details, or with other methods, components, materials, etc. In other instances, well-known structures associated with computer systems, server computers, and/or communications networks have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the
implementations.
[0020] Briefly stated, technologies are described for grouping orders in a food item preparation and delivery system. A system according to examples may begin a process for grouping orders by gathering information associated with orders, preparation equipment, delivery personnel, vehicles, delivery location, and other factors that may impact preparation and deliveries. Various models such as delivery model, preparation model, etc. may be generated or retrieved. Candidates may be generated from single orders and scored using a cost function. A candidate with highest score may be selected. Then, the iterative process may be performed, where combinations of the candidates with increasing numbers may be grouped
combinations with highest score selected until no higher score can be found. The group of candidates with highest score from the iteration may be flattened to generate a preparation sequence. The preparation sequence may be fed into the preparation model, and results of the preparation model ay be fed into a delivery model. Estimated delivery times may be provided to customers as delivery ranges.
[0021 ] FIG. 1 shows a delivery system environment 100 according one illustrated embodiment. The delivery system includes at least one controller 102, an order module 104, a production module 106 communicably coupled to the controller via a network 108, and a distribution module 112 communicably coupled to the controller 102 via a network 114. In at least some implementations, a rack 110 can be used to transfer prepared food items between the production module 106 and the distribution module 108. A routing module 116 and a preparation module 118 are shown communicably coupled to each other and to the distribution module 114. Although illustrated as discrete components, some or all of the functions performed by the order module 104, production module 106, distribution module 112, routing module 116, and preparation module 118 may be shared between or combined and performed by another system component. For example, the controller 102 may perform various order entry functions rather than a dedicated order entry module 104.
[0022] The controller 102 can include one or more systems or devices used to coordinate the receipt or generation of food item orders. In at least some instances, the order entry module 104 can receive food orders placed by consumers using any number or variety of sources. In some instances, the order entry module 104 may include a telephonic interface to conventional or voice over Internet Protocol (VoIP) telephonic equipment 120a. Such telephonic interfaces may be in the form of automated or semi-automated interfaces where the consumer enters data by entering a defined key sequence corresponding to a desired food product, destination address, delivery time, etc. Some telephonic interfaces may include an attendant operated interface where the consumer places a verbal order with the attendant who then enters data corresponding to a desired food product, destination address, delivery time, etc. into the controller 102, for example using a touchscreen or keyboard entry device. In some instances, the order entry module 104 may include a network interface, for example a network interface communicably coupled to the Internet, over which orders may be placed via smartphone 120b, or via any type of computing device 120c. In such instances, order information corresponding to a desired food item, destination address, delivery time, and the like may be provided by the consumer in a format requiring minimal or no reformatting by the order module 104 prior to providing the data representative of the order to the controller 102.
[0023] In embodiments, the controller 102 can provide the consumer placing an order for a food item with an estimated delivery time for the item. The estimated delivery time may be based on the time to produce the food item in the production module plus the estimated time to prepare the food item which may be in transit by the distribution module 112. Such estimated delivery times may take into account factors such as the complexity of preparation and the time required for the desired or defined cooking or other preparation process associated with the ordered food item. Such estimated delivery times may also take into account factors such as road congestion, traffic, time of day, and other factors affecting the delivery of the food item by the distribution module 112. In other instances, the estimated delivery time may reflect the availability of the ordered food item on a vehicle that has been pre staged in a particular area.
[0024] The controller 102 can schedule the production of food items in accordance with the received or generated orders. In some instances, the controller 102 may be collocated with or even incorporated into the production module 106. Responsive to receipt of one or more outputs provided by the controller 102, food items are prepared or assembled within the production unit 106. In at least some instances, the production module 106 may autonomously perform the partial preparation or assembly of at least a portion of the food products at the direction of the controller 102. For example, crust dough may be kneaded and formed, sauce spread and cheese and pepperoni placed on top of the sauce using one or more automated or semi-automated systems upon receipt or generation of food item order data indicative of a pepperoni pizza by the controller 102. Each of the prepared or assembled food items provided by the production module 106 can be loaded or otherwise placed into one or more rack 110 to transfer the prepared or assembled food items from the production module 106 to the delivery module 108.
[0025] In some instances, the controller 102 may be a portion of or may be communicably coupled to an inventory control or enterprise business system such that the inventory of food ingredients and other items is maintained at one or more defined levels within the production module 106. In some instances, where the controller 102 and the production module 106 are discrete entities, the network 108 communicably coupling the controller 102 to the production module 106 can be a wired network, a wireless network, or any combination thereof. The network 108 can include a local area network, a wide area network, a worldwide network, a private network, a corporate intranet, a worldwide public network such as the Internet, or any combination thereof. In at least some instances, all or a portion of the controller 102 can be located remote from the production module 106, for example in a corporate server, or in a network connected or“cloud” based server.
[0026] The vehicle or dark kitchen can include various components or systems to support the operation of the appliance units (e.g., oven, blender, cooler, etc.), for example a power distribution bus, a communications bus, and the like. Within the distribution module 112, power and cooking condition instructions are supplied to the appliance units either individually or via the power distribution and communications buses.
[0027] Environmental conditions (e.g., temperature, humidity, speed, etc.) within each of the appliance units may be controlled, and may be controlled en route to the consumer destination such that the food in the appliance unit is cooked shortly prior to or upon arrival at the consumer destination. In at least some instances the controller 102 can communicate via network 114 with the distribution module 112 to control some or all environmental conditions and preparation functions (e.g., cooking, blending, cool down, etc.) in each of the appliance units. In some instances, the controller 102 can also determine an optimal delivery itinerary, estimated delivery times, and available preparation times for each appliance unit, as discussed in further detail below. In other instances, a routing module 116 communicably coupled to the distribution module 112 can provide some or all of the delivery routing instructions, including static or dynamic delivery itinerary preparation and time of arrival estimates that are used to determine the available cooking time and to control or otherwise adjust environmental and preparation conditions within the appliance units.
[0028] In at least some instances, the location of each appliance unit or rack 110 in the distribution module 112 may be monitored using geolocation information. Such geolocation information may be determined through the use of time-of-flight triangulation performed by the controller 102 and/or routing module 116. Such geolocation information may be determined using one or more global positioning technologies, for example the Global Positioning System (GPS) or similar. The controller 102, the routing module 116, and/or the preparation module 118 may use the location information to statically or dynamically create and/or update delivery itinerary information and estimated time of arrival information for each consumer destination.
[0029] The system 100 advantageously and significantly reduces the time required for delivery of prepared food items to consumer destinations by preparing or completing the preparation of food items within the distribution module 112 rather than the production module 106. For example, the preparation of food items can be completed using individually controllable appliance units on a vehicle instead of a more conventional stationary appliance unit such as a range or oven located in the production module 106. By moving at least a portion of the preparation process to the production module 112, the overall time required to prepare, cook, and deliver food items to a consumer location is reduced and the overall quality of the delivered food items is improved. Significantly, the time for delivery and quality of delivered food is improved over current systems in which food items are prepared in a central location and then loaded onto a delivery vehicle for delivery to the consumer location.
[0030] In implementations, the system 100 may group present order data for a number of individual orders into one or more order groups of present order data based at least in part on one or more grouping criteria. Grouping the present order data may include grouping individual orders together based at least in part on order grouping algorithms and/or software. The grouped present order data may be used to at least partially generate the delivery schedule. The system 100 may determine respective availabilities of delivery vehicles to be used to deliver the food items to delivery destinations, such as customer delivery locations.
[0031 ] In implementations, the order grouping may be performed by software (which may be referred to as an“order grouper”) which makes plans for the preparation and delivery of active orders on a hub-by-hub basis. The order grouper may receive messages indicating that a hub’s orders need to be replanned, i.e. , regrouped, and may produce a delivery plan in response to every such message such that the most recent plan overrides any previous plan. Such a plan may have several components: order grouping (i.e. , which orders get delivered together);
preparation sequence (i.e., order in which the food items are prepared); and preparation delays (i.e., should any of the orders be intentionally delayed in preparation). The order grouper may also supply information to an estimated time of arrival (ETA) calculator relating to situations in which deliveries are limited by driver availability. For example, the next available driver time as a result of the plan determined by the order grouper may be used as an input to the ETA calculation of the next or a future order. In implementations, the need for a new delivery plan may be triggered in particular situations, such as, for example, new orders, cancelled orders, drivers starting or ending shifts, ovens turning on or off, etc. in embodiments, the order grouper may only decide which orders should be delivered together, i.e., grouped together, rather than deciding which particular drivers should deliver which particular orders. In such a case, when an order group is ready for pickup, it may be assigned to the first available driver at the hub with a compatible vehicle (i.e., a vehicle which is capable of delivering order group).
[0032] FIGs. 2A, 2B, and 2C depict an illustrative food preparation and delivery system 200 in which food items 204 are prepared in the preparation module 106 and loaded into racks 110. The racks 110 are transferred to the distribution module 112 where they are loaded onto vehicles 240. The environmental and preparation conditions within each of the appliance units 210 are adjusted to complete the preparation process shortly before delivery of the food items 204 to the next delivery vehicle and in some cases where the preparation vehicle is also the delivery vehicle, shortly before delivery of the food items to the consumer location.
[0033] Referring now to FIGs. 2A and 2B, the controller 102 receives data indicative of one or more food item orders received by the order entry module 104. The controller 102 communicates the food item orders to the production module 106. Within the production module 106 various ingredients and food products are combined, mixed, or assembled 202 to provide a food item 204 per the order data received from the controller 102. The prepared or assembled food items 204 are placed into individual cooking units 210, for example prepared pizzas may be placed into individual appliance units 210 (in this example, ovens) for baking. In at least some instances, each of the food items 204 may be prepared on a cleaned and sanitized food preparation surface 206 that can be separated and removed from the appliance unit 210. Such food preparation surfaces may include surfaces that are commonly associated with the preparation of a particular food item. For example, a pizza may be placed on a cleaned and sanitized hearthstone food preparation surface 206 while a hamburger may be placed on a cleaned and sanitized grilling food preparation surface 206.
[0034] The appliance units 210 may include a housing 212 disposed at least partially about an interior cavity 214 formed by one or more surfaces 220. Food items are cooked under defined cooking conditions within the interior cavity 214. A hinged or otherwise displaceable door 216 is used to isolate the interior cavity 214 from the external environment. In at least some instances, the door 216 may be mechanically or electro-mechanically held closed while the preparation process is underway. The appliance unit 210 can include a heat source or heat element 218 that is used to provide heat to the interior cavity 214. In addition to the heat source or heating element 218, additional elements such as convection fan(s), humidifiers, gas burners, or similar (not shown in FIGs. 2A and 2B for clarity) may be installed in place of or along with the heat source or heat element 218 in the appliance unit 210, and which may be controllable for control one or more environmental conditions of the appliance unit.
[0035] Each appliance unit 210 can include one or more indicators or display panels 222 that provide information about and/or the status of the food item in the respective appliance unit 210. In some instances the display panel 222 may include a text display that provides information such as the type of food item 204 in the appliance unit 210; consumer name and location information associated with the food item 204 in the appliance unit 210; the status of the food item 204 in the appliance unit 210 (e.g.,“DONE,”“COMPLETE,”“2 MIN REMAINING”); or combinations thereof. In other instances, the display panel 222 may include one or more indicators that provide the status of the food item 204 in the appliance unit 210 (e.g., GREEN =“DONE;” YELLOW =“<5 MIN REMAINING;” RED =“>5 MIN
REMAINING”). The data provided to the display 222 may be provided by the controller 102, the routing module 116, the preparation module 118, or any combination thereof. In at least some instances, the display 222 can include a controller capable of independently controlling the environmental and preparation conditions within its respective appliance unit 210. In such instances, information indicative of the preparation conditions for the cooking unit 210 may be provided to the display 222 in the form of any number of setpoints or other similar control parametric data by the controller 102, the preparation module 118, or any
combination thereof.
[0036] One or more power interfaces 224 may be disposed in, on, or about each of the appliance units 210. The power interface 224 is used to provide at least a portion of the power to the appliance unit 210. Such power may be in the form of electrical power generated by the vehicle 240 or by a generator installed on the vehicle 240. Such power may be in the form of a combustible gas (e.g., hydrogen, propane, compressed natural gas, liquefied natural gas) supplied from a combustible gas reservoir carried by the vehicle. In some instances, two or more power interfaces 224 may be installed, for example one electrical power interface 224a supplying power to the display 222 and a convection fan and one combustible gas power interface 224 supplying energy to the heating element 218 may be included on a single appliance unit 210.
[0037] One or more power distribution devices 234 can be located in the rack 110 holding multiple appliance units, and/or in the appliance units such that the corresponding appliance unit power interface 224 is physically and/or electrically coupled to the appropriate power distribution device 234 when the appliance unit 210 is placed in the rack 110 or directly within the vehicle. The power distribution devices 234 can include an electrical bus for distributing electrical power to some or all of the appliance units. The power distribution devices 234 can include a gas distribution header or manifold for distributing a combustible gas to some or all of the appliance units. In at least some instances, the power distribution devices may include one or more quick connect or similar devices to physically and/or electrically couple the power distribution devices 234 to the appropriate power distribution system (e.g., electrical, combustible gas, or other) onboard the vehicle 240.
[0038] One or more communications interfaces 226 may be disposed in, on, or about each of the appliance units 210. The communications interface 226 is used to bidirectionally communicate at least data indicative of the environmental and preparation conditions existent within the respective appliance unit 210. The communications interface 226 can include a wireless communications interface, a wired communications interface, or any combination thereof. Some or all of the power to operate the communications interface 226 can be provided by the power interface 224. In at least some instances, the communications interface 226 can provide bidirectional wireless communication with a central controller 102. In at least some instances, the communications interface 226 can provide bidirectional wired or wireless communication with a vehicle mounted system such as the routing module 116 or the preparation module 118. Instructions including data indicative of the environmental and preparation conditions within the appliance unit 210 can be communicated to the display 222 via the communications interfaces 226. In at least some implementations such instructions may include one or more environmental parameters (e.g., oven temperature = 425°F, air flow = HIGH, humidity = 65%, pressure = 1 ATM) and/or one or more preparation system parameters (e.g., set flame size = LOW, mixer speed = HIGH) associated with completing or finishing the preparation of the food item in the respective appliance unit 210 based on an estimated time of arrival at the consumer destination location. Such environmental and preparation parameters may be determined at least in part by the preparation module 118 based on estimated time of arrival information provided by the routing module 116.
[0039] One or more wired or wireless communications buses 236 can be located in each rack such that the corresponding appliance unit communications interface 224 is communicably coupled to the communications bus 236 when the appliance unit 210 is placed in the rack 110. In at least some instances, the communications buses 236 may be wired or wirelessly communicably coupled to the controller 102, the routing module 116, the preparation module 118 or any combination thereof.
[0040] Each of the racks 110 can accommodate the insertion of any number of food items or insertion of preparation units 210 holding food items. The environmental and preparation conditions within each of the appliance units 210 can be individually adjusted to control the completion time of the particular food item within the appliance unit 210. Although the rack may accommodate the insertion of multiple appliance units 210 and/or food items, the rack 110 need not be completely filled with appliance units 210 during operation. In at least some implementations, each of the racks 110 may be equipped with any number of moving devices 236 to facilitate the movement of the rack 110. Such moving devices 236 can take any form including rollers, casters, wheels, and the like. [0041 ] Referring now to FIGs. 2A and 2C, the rack 110 containing any number of appliance units 210 is shown loaded into the cargo compartment 241 of a vehicle 240. The rack 110 is shown communicably coupled 238 to a cooking module 118 onboard the vehicle 240. The rack 110 is also shown physically and operationally coupled 258 to a power source 260 onboard the vehicle 240. The power source 260 supplies power to the various appliance units 210 in the cooking rack 110 via the power bus 234. The preparation module 118 provides via the communications bus 236 the data and other information indicative of instructions used to control the environmental and preparation conditions in each of the appliance units 210.
Although shown as discrete functional elements onboard the vehicle 240, either or both the routing module 116 and the preparation module 118 may be disposed remote from the vehicle 240. For example, the controller 102 may provide some or all of the functionality associated with either or both the routing module 116 and the preparation module 118.
[0042] In at least some instances, the routing module 116 and/or the controller 102 can be bidirectionally communicably coupled 248 to a display device 250 located in the vehicle 240 which may also be the delivery vehicle, or the delivery vehicle may be a vehicle separate from vehicle 240. The display device 250 can provide the driver of the delivery vehicle with routing information 252 in the form of text directions, voice instructions, or a map. In addition, the display device 250 can also provide the driver of the delivery vehicle with a delivery itinerary 254 that lists a number of consumer delivery destinations and provides a local estimated time of arrival at each respective consumer delivery destination. The routing information 252 and the delivery itinerary 254 can be determined in whole or in part by the routing module 116, the controller 102, or any combination thereof.
[0043] Once the preparation of a food item 204 is completed, the appliance unit 210 containing the respective food item 204 is turned off and the food item is transferred to a package or transport container 242 such as a box, carton, bag, or similar device for transport to the consumer. In at least some instances, packages or transport containers 242 may be readied or pre-staged to accept food items from each of the appliance units 210. For example, a transport container rack 243 containing a number of packages or transport containers 242 can be positioned adjacent or proximate the appliance units 210 in the cargo compartment 241 of the vehicle 240.
[0044] FIG. 3 shows a schematic diagram of a food delivery system 300 that includes a centralized production module 106 and controller 102 along with a number of vehicles 240a-240n in which food items are prepared in a number of appliance units 210 for delivery to a number of consumer delivery destinations 304a- 304n (collectively“consumer delivery destinations 304”) distributed across a geographic area 302. As noted above the vehicles 240a-240n may be the same or different from the delivery vehicle delivering the order to the customer location. The delivery driver in each of the delivery vehicles can follow their respective routing instructions 252 and the delivery itinerary 254 provided by the controller 102 and/or routing module 116.
[0045] In at least some instances, the routing instructions 252 and delivery itinerary 254 may be dynamically updated or adjusted during the delivery process to reflect the latest traffic, road conditions, road closures, etc. Such traffic, road condition, and road closure information may be obtained via one or more of: a commercial source of traffic information, crowd-sourced traffic information 306, or some combination thereof. By dynamically updating traffic information, the controller 102 and/or routing modules 116 in each of the delivery vehicles can provide up-to-the-minute routing instructions 252 and delivery itineraries 254.
[0046] FIG. 4 and the following discussion provide a brief, general description of an exemplary central controller 102 that may be used to provide the controller 102. Although the order entry module 104, the routing module 116, and the preparation module 118 are described herein as functional elements of a central controller 102, one of ordinary skill in the art would readily appreciate that some or all of the functionality of the order entry module 104, routing module 116, or the preparation module 118 may be performed using one or more additional computing devices which may be external to the controller 102. For example, an order entry module 104 may be disposed in a national or regional call or order aggregation center that is remote from the controller 102. In another example, the routing module 116, and/or the preparation module 118 may be disposed in some or all of the vehicles 240 or a stationary vehicle or commissary (e.g., dark kitchen) or food service location open to the public. The controller 102 may implement some or all of the various functions and operations discussed immediately above in reference to FIGs. 1 , 2, and 3.
[0047] Although not required, some portion of the embodiments will be described in the general context of computer-executable instructions or logic, such as program application modules, objects, or macros being executed by a computer. Those skilled in the relevant art will appreciate that the illustrated embodiments as well as other embodiments can be practiced with other computer system configurations, including handheld devices for instance Web enabled cellular phones or PDAs, multiprocessor systems, microprocessor-based or programmable consumer electronics, personal computers (“PCs”), network PCs, minicomputers, mainframe computers, and the like. The embodiments can be practiced in distributed
computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network. In a distributed computing environment, program modules may be stored in both local and remote memory storage devices and executed using one or more local or remote processors, microprocessors, digital signal processors, controllers, or combinations thereof.
[0048] The controller 102 may take the form of any current or future developed computing system capable of executing one or more instruction sets. The controller 102 includes a processing unit 406, a system memory 408 and a system bus 410 that communicably couples various system components including the system memory 408 to the processing unit 406. The controller 102 will at times be referred to in the singular herein, but this is not intended to limit the embodiments to a single system, since in certain embodiments, there will be more than one system or other networked computing device involved.
[0049] The processing unit 406 may be any logic processing unit, such as one or more central processing units (CPUs), microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), etc.
[0050] The system bus 410 can employ any known bus structures or architectures, including a memory bus with memory controller, a peripheral bus, and a local bus. The system memory 408 includes read-only memory (“ROM”) 412 and random access memory (“RAM”) 414. A basic input/output system (“BIOS”) 416, which can form part of the ROM 412, contains basic routines that help transfer information between elements within the controller 102, such as during start-up. Some embodiments may employ separate buses for data, instructions and power.
[0051 ] The controller 102 also includes one or more internal non-transitory storage systems 418. Such internal non-transitory storage systems 418 may include, but are not limited to, any current or future developed persistent storage device 420. Such persistent storage devices 420 may include, without limitation, magnetic storage devices such as hard disc drives, electromagnetic storage devices such as memristors, molecular storage devices, quantum storage devices, electrostatic storage devices such as solid state drives, and the like.
[0052] The controller 102 may also include one or more optional removable non- transitory storage systems 422. Such removable non-transitory storage systems 422 may include, but are not limited to, any current or future developed removable persistent storage device 426. Such removable persistent storage devices 326 may include, without limitation, magnetic storage devices, electromagnetic storage devices such as memristors, molecular storage devices, quantum storage devices, and electrostatic storage devices such as secure digital (“SD”) drives, USB drives, memory sticks, or the like.
[0053] The one or more internal non-transitory storage systems 418 and the one or more optional removable non-transitory storage systems 422 communicate with the processing unit 406 via the system bus 410. The one or more internal non-transitory storage systems 418 and the one or more optional removable non-transitory storage systems 422 may include interfaces or device controllers (not shown) communicably coupled between non-transitory storage system and the system bus 410, as is known by those skilled in the relevant art. The non-transitory storage systems 418, 422, and their associated storage devices 420, 426 provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the controller 102. Those skilled in the relevant art will appreciate that other types of storage devices may be employed to store digital data accessible by a computer, such as magnetic cassettes, flash memory cards, Bernoulli cartridges, RAMs,
ROMs, smart cards, etc. [0054] Program modules can be stored in the system memory 408, such as an operating system 430, one or more application programs 432, other programs or modules 434, drivers 436 and program data 438.
[0055] The application programs 432 may include, for example, one or more machine executable instruction sets capable of providing an order entry module 104 able to receive food item orders in any form of communication, including without limitation, voice orders, text orders, and digital data orders. The application programs 432 may additionally include one or more machine executable instruction sets capable of providing a routing module 116 able to provide text, voice, and/or graphical routing instructions to the output devices 250 in some or all of the vehicles 240Such a routing module machine executable instruction set may also be executable by one or more controllers in a routing module 116 installed in some or all of the delivery vehicles. The application programs 432 may further include one or more preparation module machine executable instructions sets capable of outputting environmental and preparation instructions to the appliance units 210 in the cargo compartment 241 of each vehicle 240.
[0056] Such a preparation module machine executable instruction set may be executed in whole or in part by one or more controllers in the preparation module 118 installed in some or all of the vehicles 240. In at least some instances, the routing module 116 and/or the preparation module 118 may provide a backup controller in the event controller 102 becomes communicably decoupled from the vehicle 240. In another implementation, the routing module 116 and/or the preparation module 118 installed in each vehicle may include non-transitory storage to store routing and delivery itinerary data and environmental and preparation data communicated to the respective module by the controller 102. The application programs 432 may, for example, be stored as one or more executable instructions.
[0057] The system memory 408 may also include other programs/modules 434, such as including logic for calibrating and/or otherwise training various aspects of the controller 102. The other programs/modules 434 may additionally include various other logic for performing various other operations and/or tasks.
[0058] The system memory 408 may also include any number of communications programs 440 to permit the controller 102 to access and exchange data with other systems or components, such as with the routing modules 116, preparation modules 118, and/or output devices 250 installed in each of the vehicles 240.
[0059] While shown in FIG. 4 as being stored in the system memory 408, all or a portion of the operating system 430, application programs 432, other
programs/modules 434, drivers 436, program data 438 and communications 440 can be stored on the persistent storage device 420 of the one or more internal non- transitory storage systems 418 or the removable persistent storage device 426 of the one or more optional removable non-transitory storage systems 422.
[0060] A user can enter commands and information into the controller 102 using one or more input/output (I/O) devices 442. Such I/O devices 442 may include any current or future developed input device capable of transforming a user action or a received input signal to a digital input. Example input devices include, but are not limited to, a touchscreen, a physical or virtual keyboard, a microphone, a pointing device, or the like. These and other input devices are connected to the processing unit 406 through an interface 446 such as a universal serial bus (“USB”) interface communicably coupled to the system bus 410, although other interfaces such as a parallel port, a game port or a wireless interface or a serial port may be used. A display 470 or similar output device is communicably coupled to the system bus 410 via a video interface 450, such as a video adapter or graphical processing unit (“GPU”).
[0061 ] In some embodiments, the controller 102 operates in an environment using one or more of the network interfaces 456 to optionally communicably couple to one or more remote computers, servers, display devices 250 and/or other devices via one or more communications channels, for example, one or more networks such as the network 114. These logical connections may facilitate any known method of permitting computers to communicate, such as through one or more LANs and/or WANs. Such networking environments are well known in wired and wireless enterprise-wide computer networks, intranets, extranets, and the Internet.
[0062] Further, the database interface 452, which is communicably coupled to the system bus 410, may be used for establishing communications with a database stored on one or more computer-readable media 460. For example, such a database 460 may include a repository for storing information regarding food item environmental and preparation conditions as a function of time, etc.
[0063] FIG. 5A through 5C illustrate a conceptual overview of a food item
preparation and delivery system with order grouping in various configurations.
[0064] Diagram 500A shows a preparation truck with an on-board controller (502) performing actions 504 associated with order grouping in a food item preparation and delivery system. The truck may act as the hub for the system providing prepared food items to delivery vehicles 506 upon parking at a hub location. It is to be appreciated that the truck depicted in Diagram 500A, 500B, and 500C may include any number of or be replaced by any appropriate vehicle, commissary, kiosk, etc. The delivery vehicles 506 may include human driven vehicles such as cars, bicycles, motorbikes, vans, and similar ones, or autonomous vehicles such as ground based drones or aerial drones. The delivery vehicles may perform actions 508 such as picking up prepared order groups, delivering the order groups to one or more delivery locations 510, and returning to the hub location. The delivery locations 510 may include residential buildings, commercial buildings, schools, hospitals, and comparable ones.
[0065] Actions 504 performed by the on-board controller and other equipment in the truck may include, but are not limited to, receiving food item orders, scoring orders, iteratively generating order groupings and selecting a preparation sequence based on scoring of the candidate groupings at each iteration. A preparation and a delivery model may be used to process the preparation sequence resulting in estimated delivery times for selected order groupings, and orders may be processed according to the selection.
[0066] Diagram 500B shows a different configuration of the food item preparation and delivery system, where the actions 504 are controlled by a remote controller 501 which may transmit instructions for processing orders to on-board controllers and other equipment on preparation and truck 503, which may receive the instructions and process the orders (505). Delivery vehicles 506 may perform actions 508 in delivering the prepared food item orders (order groups) to the delivery locations 510.
[0067] Diagram 500C shows yet another configuration, where the remote controller 501 performs actions 504 and transmits instructions to on-board controllers and other equipment on multiple trucks 513, which may act as multiple hubs in different hub locations and receive instructions and process respective orders (515). In the example configuration of diagram 500C, the order grouping process may further take into account availability of multiple hubs (e.g., their closeness to a delivery location and/or availability of preparation equipment at each hub.
[0068] In some examples, an order grouping plan may specify sets of orders that need to be picked up together and a sequence of deliveries within a group. Delivery updates may be provided during checkout, as items are added to the cart for an online order (or over the phone), following placement of an order (once payment is made), and/or when the group is en route to the delivery location.
[0069] A preparation schedule is a plan for preparing (e.g., cooking, blending, cooling, etc.) multiple food items at a hub (e.g., en route preparation and/or delivery vehicle) with limited resources. Examples of limited resources may include supplies, preparation equipment (e.g., ovens), and personnel time. The preparation plan may specify a preferred cooking sequence, an order and selection of preparation equipment (appliances, ovens), or even include a delayed preparation. For example, “Cook order #1 now, but don’t start order #2 until 12:30”. In another example,“Cook order #1 now, then Cook order #3, and don’t start order #2 until 12:30”
[0070] In this manner, the orders are not necessarily prepared in the order received but rather in order to time to prepare and may be optimized for estimated delivery and/or grouping multiple orders into a single delivery vehicle for delivery to multiple and proximate customer locations. An order grouping system according to examples may determine which orders may be delivered together, when delivery can be expected, when to start preparing, and which order to use in preparation. For these determinations, some information may be already known and there may be some expectation of what will happen in the future based on the determinations.
[0071 ] Flubs in a system according to embodiments may include, in addition to trucks, other vehicles such as buses, vans, watercraft, or containers that may be carried by trailer tractors or railway cars. Flubs may also include, in some examples, fixed buildings (e.g., dark kitchens). A system may include more than one hub, which may be of similar or different type. For example, a single commissary or dark kitchen may service one or more forward deployed (constellation deployment) trucks, which each may then service a plurality of delivery vehicles.
[0072] FIG. 6 illustrates an example flow of major operations in a food item preparation and delivery system with order grouping.
[0073] Diagram 600 shows orders 602 being received, followed by scoring of single orders 604. An iterative process 606 may follow the initial scoring generating combinations of orders with increasing number at each iteration. The combinations (order groups) may be scored and one with highest score may be selected until no higher score can be determined. The combination or group of orders with highest score may be selected and flattened into an array of orders as the preparation sequence 608. The preparation sequence 608 may be fed into a preparation model 610, which represents a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, and/or a time for packaging the prepared food item.
[0074] Results of the preparation model 610 such as estimates of a finished preparation time for a first food item in each order and/or a ready for pickup time for each order group may be fed into a delivery model 612, which may include an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to the delivery location, a time to complete delivery, and/or a time for the delivery vehicle to return to the hub. Simulation results may be used for order preparation, delivery estimate generation, and/or model updates (614).
[0075] FIG. 7 an example iteration process for selecting an order group scored according to a cost function.
[0076] In some examples, a grouping process may begin with identification and scoring of candidates using a cost function. The cost function may be based on parameters such as a base cost of the food item (e.g., pizza), dwell time, delivery time, delivery location, and/or delivery estimate. Dwell time defines how long a prepared food item waits before being delivered. For example, deliveries of pizzas that have been out of an oven too long may reduce their value to a customer.
Delivery time defines how long it takes for the food item to reach the customer. Late deliveries may also reduce customer value. Delivery estimate is how long it may take from taking an order to delivering the food item. Length of delivery estimates may be proportional to revenue for a food item delivery business. Delivery location of multiple orders may be compared for proximity to group multiple orders for delivery by a single delivery vehicle.
[0077] In other examples, the system may apply weights to convert the delivery time, dwell time, and late delivery time into dollar values. A premium may be applied to having delivery vehicles available for orders which have not yet been placed. A cost may be established for“next available delivery vehicle” times which are far in the future. In addition, a penalty may be applied that varies based on a prediction of upcoming order volume. A plan may be determined which includes a generated representative sample of some future orders.
[0078] An example cost function may be as follows:
CF = Base Cost + f1 (Dwell Time) + f2(Delivery Time) - f3(Delivery Estimate)
In an example implementation, where standard delivery time is 30 minutes, the cost function parameters may be implemented as:
Base Cost = $0.21 for every minute spent driving
f1 (dwell_minutes) = $0.01 * (dwell_minutes - 30)L2 , if dwell_minutes is over 30 f2(late_minutes) = $0.10 * (late_minutes)A2 , if the delivery is late
[0079] Diagram 700 shows an initial set of scored orders 702 being processed in a first stage 706 of an iterative merger process 704. The process may include generating combinations of two orders as one set followed by other single orders. A comparison of the scores of the sets in the first stage may result in selection of a set 708 with highest score and used in the second stage 710 of the iterative mergers process 704. Various combinations as shown in the figure may be generated and scored again resulting in the selection of a new set 712 with highest score. The selected set 712 with highest score may be fed into a third stage 714 of the iterative merger process 704, where further combinations may be generated (additional number of orders grouped). A scoring and comparison of the newly generated sets may not yield one with a higher score than the set 712. Thus, the iterative merger process 704 may be stopped (716) at the third stage. The selected set 712 may then be flattened into a preparation sequence to be fed into a preparation model.
[0080] FIG. 8 illustrates example screenshots of a food item ordering application with delivery estimate notification at different stages.
[0081 ] As mentioned previously, delivery updates may be provided during checkout, as items are added to the cart for an online order, following placement of an order, and/or when the group is en route to the delivery location. Screenshot 802 is an example of presentation of delivery estimate to a customer before checkout time. Presentation before placement of the order may allow a customer to decide on timing. For example, if the customer is unsure, they will be able to receive delivery at the indicated time(s), they may opt for delaying the delivery (i.e., select a later delivery time). Screenshot 804 is an example of presentation of the delivery estimate 808 upon placement of the order. Screenshot 806 shows an example delivery update after the order is placed. The post order placement delivery updates may be provided once, at regular intervals, or upon demand.
[0082] A system according to examples may begin a process for grouping orders by gathering (receiving) information associated with orders, preparation equipment, delivery personnel, delivery vehicles, and other factors that may impact preparation and deliveries. Next, various models such as delivery model (e.g., a transit matrix), preparation model (e.g., cook times), etc. may be generated or retrieved. Candidates may be generated from single orders that are to be delivered and scored using the cost function. A candidate with highest score may be selected. Then, the iterative process may be performed, where combinations of the candidates may be grouped in groups of two, scored, and a combination with highest score selected in place of the highest score single order candidate. The iteration may continue with generation of further combinations from the group of two with highest score and other others, and so on until no higher score can be found. The group of candidates with highest score from the iteration may be flattened to generate a preparation sequence.
[0083] The preparation sequence may be fed into the preparation model, which may take into account, among other things, loading of preparation equipment, personnel time, actual preparation time, retrieval from preparation equipment, packaging, and/or other steps involved in preparation. In a practical example, the parameters may include preheating oven, loading of a pizza into an oven, actual baking time and temperature, ejection from the oven, cutting, cooling, boxing, etc.
[0084] The implementation may begin with a current state. Some preparation equipment may be currently operating, some may be idle. Some food items may be in preparation, others may be in queue. The system may follow the preparation sequence but prioritize food items from orders that are already in preparation. The system may keep track of when each preparation equipment will be next idle and when the personnel is next idle. While a food item is in queue, the system may wait for an idle personnel and an idle preparation equipment, then mark the personnel next idle after loading time and mark the preparation equipment next idle after loading and cooking time. The food item may be marked ready after loading and cooking time (and any other steps). At the end of the computation, finished preparation times for the first food item in each order and ready for pickup times for each order group may be estimated.
[0085] The estimates of delivery from a transit matrix along with durations for activities like order completion (the time between arrival and completion) order pickup (the time between driver assignment and en route) may be used as part of the delivery model. The system may keep track of when each driver is next idle and generate a queue of deliveries sorted by each group’s ready for pickup time. While order groups are in queue, the system may wait for next ready group and next idle driver (with capacity), step through delivery activities (pickup, transit, and back to hub transit), and mark order completion times. The system may also mark driver’s next idle time. At the end of the delivery model processing, the system may estimate delivery times for each order and overall time spent driving.
[0086] In some examples, the system may also process delayed preparation. In such scenarios, the preparation schedule may be adjusted to avoid some
undesirable outcomes such as order groups being ready to be picked up before a driver is available to make a delivery. Preparation of such order groups may be delayed potentially reducing the dwell time. In other examples, orders may be delivered before an agreed upon delivery window. Such scenarios may become more prevalent when orders are accepted far in advance, for example the day before. [0087] In generating an estimated time of delivery, the system may determine an estimated time of delivery from a hub closest to the delivery location with the needed preparation equipment and supply inventory (in case of multiple hubs). The system may compute a preparation bottleneck time and evaluate when an order would be prepared if enqueued. The system may also compute a delivery bottleneck time and determine when a delivery vehicle could next pickup this order if enqueued. The later of these two times may be selected and time for pickup, transit, and completion (handover at delivery location) added resulting in the point estimate of order completion. The point estimate may be translated into a range to present to the customer by bringing it up to a minimum value and rounding to the nearest 5 minutes. This may be the low end of the estimated delivery range. The high end may be determined by adding a constant period (e.g., 15 minutes. The minimum value and the range size may be configurable by an administrator.
[0088] Deliveries may be simulated for each order group with transit durations and fixed time estimates for pickup and completion tasks. The system may keep track of when each preparation equipment is first assigned and last ejected during
preparation. The system may also keep track of when a planned driver is assigned and back to base (hub).
[0089] After all groups are simulated, the system may go through the order groups in the opposite order removing the slack from the process. The start of preparation may be delayed on each order in the group until one of the following happens (1 ) an order's delivery estimate is increased to the late delivery threshold; (2) a driver's return to base at time is increased to their next assignment time; or (3) a preparation equipment's last ejected time is increased to its next assignment time. The initial preparation delay may only affect when a preparation equipment is being utilized if the ready orders were waiting on a driver. Once the driver is waiting on an order to be ready, additional preparation delay may affect delivery times and preparation equipment / driver utilization. The resulting delayed preparation plan may then be scored. Dwell time violations may be computed from the first-item-ready-at time for each order delivered. Estimated delivery time violations may be computed for each order, and drive time cost may be accumulated for each leg of the route.
[0090] In some examples, the process may be adjusted to capture tradeoffs between offering fast delivery and a risk of being late on a delivery. In other examples, the workflow service of the process may be used to drive the models used for preparation scheduling and delivery estimate generation. More order grouping candidates may be considered while generating delivery estimates. In cases with multiple hubs, the cost function may also be used to select which hub an order may be routed to. A system according to examples may be implemented as one or more processors computing the models, candidate generation, and/or iterations.
Alternatively or in addition, Application Programming Interfaces (APIs) may be used to push part or all of the computing to one or more servers (local or remote) to allow faster computation. In further examples, plans and the composition of the cost function may be visualized to allow an administrator to manage the process in real time. In yet other examples, uncertainty may be incorporated into models and scoring.
[0091 ] FIG. 9 is a flow diagram for a method of grouping orders in a food item preparation and delivery system.
[0092] Example methods may include one or more operations, functions, or actions as illustrated by one or more of blocks 922 through 938, which may in some embodiments be performed by a computing device such as the computing device 910 in FIG. 9 and/or other general purpose and specialized devices communicatively coupled to the computing device 910. Such operations, functions, or actions in FIG.
9 and in the other figures, in some embodiments, may be combined, eliminated, modified, and/or supplemented with other operations, functions or actions, and need not necessarily be performed in the exact sequence as shown. The operations described in the blocks 922-938 may be implemented through execution of computer-executable instructions stored in a computer-readable medium such as a computer-readable medium 920 of a computing device 910.
[0093] An example process for grouping orders in a food item preparation and delivery system may begin with block 922,“GENERATE ARRAY OF RECEIVED FOOD ITEM ORDERS”, where orders received by the system may be arranged in an array to be scored. At block 924,“ASSIGN A SCORE TO EACH ORDER BASED ON ONE OR MORE PARAMETERS”, the cost function may be applied to each single order in the array resulting score assignments. An order with highest score may be selected at block 926“SELECT AN ORDER WITH HIGHEST SCORE”. [0094] The order with highest score may be fed into an iterative process at block 928,“ITERATIVELY EVALUATE COMBINATIONS SCORING EACH
COMBINATION”, where the highest scored order may be combined with other orders at each iteration and the combinations scored. A combination with highest score may be the output of the iterative process at block 930“SELECT
COMB/NATION WITH HIGHEST SCORE”. At block 932,“FLATTEN SINGLE ORDERS IN THE COMBINATION WITH THE HIGHEST SCORE TO GENERA TE PREPARATION SEQUENCE”, the combination with the highest score may be flattened into an array as the preparation sequence.
[0095] At block 934,“FEED THE PREPARATION SEQUENCE INTO
PREPARATION MODEL”, the preparation sequence may be fed into the preparation model representing various preparation parameters. Results of the preparation model application may be fed into a delivery model representing various delivery parameters at block 936“FEED RESULTS OF THE PREPARATION MODEL INTO DELIVERY MODEL”. Results of the delivery model along with other computation results may be used to process the received orders and provide delivery estimates to customers at block 938“PROCESS THE RECEIVED ORDERS BASED ON
RESULTS OF THE DELIVERY MODEL”.
[0096] FIG. 10 is a flow diagram for a method of iteratively determining and evaluating order groupings scored according to a cost function.
[0097] Example methods may include one or more operations, functions, or actions as illustrated by one or more of blocks 1022 through 1036, which may in some embodiments be performed by a computing device such as the computing device 1010 in FIG. 10 and/or other general purpose and specialized devices
communicatively coupled to the computing device 1010. Such operations, functions, or actions in FIG. 10 and in the other figures, in some embodiments, may be combined, eliminated, modified, and/or supplemented with other operations, functions or actions, and need not necessarily be performed in the exact sequence as shown. The operations described in the blocks 1022-1036 may be implemented through execution of computer-executable instructions stored in a computer- readable medium such as a computer-readable medium 1020 of a computing device 1010. [0098] An example process for iteratively determining and evaluating order groupings scored according to a cost function may begin with block 1022,“SELECT SINGLE ORDER WITH HIGHEST SCORE”, where orders arranged in an array and scored according to a cost function as described herein may be compared and one with the highest score may be selected. At block 1024,“GENERATE
COMBINATIONS OF OTHER ORDERS WITH THE ORDER WITH HIGHEST SCORE”, the order with the highest score may be combined in various permutations with other orders in the array resulting in arrays of combinations. At block 1026 “SCORE COMBINATIONS”, the combinations may be scored according to the same cost function.
[0099] The scored combinations may be compared among each other at block, 1028“SELECT COMBINATION WITH HIGHEST SCORE”. The selected
combination with highest score may be compared to the single order with the highest score at block 1030,“IF THE SELECTED COMBINATION HAS HIGHER SCORE, SELECT THE COMBINATION FOR NEXT STAGE”, and the selected combination may be forwarded to the next stage of the iteration. At block 1032,“GENERATE COMBINATIONS OF OTHER COMBINATIONS WITH THE SELECTED COMBINATION”, the selected combination with the highest score so far may be combined in various permutations with other combinations and single orders and re scored.
[00100] At block 1034,“IF THERE IS A NEW COMBINATION WITH HIGHER SCORE, RETURN TO 1032”, another comparison may be performed and a determination made whether there is a new combination with even higher score. If there is one, the combination with highest score may be fed into the iterative process back at block 1032 and the combination generation, scoring, and comparison may be repeated. If there is no new combination found with an even higher score, the process may be stopped and the combination with highest score forwarded to a preparation model for further processing at block 1036“IF THERE IS NO NEW COMBINATION WITH HIGHER SCORE, END PROCESS”.
[00101 ] The operations included in the processes described above are for illustration purposes. Grouping orders in a food item preparation and delivery system and iteratively determining and evaluating order groupings scored according to a cost function may be implemented by similar processes with fewer or additional operations, as well as in different order of operations using the principles described herein. The operations described herein may be executed by one or more
processors operated on one or more computing devices, one or more processor cores, and/or specialized processing devices, among other examples.
[00102] According to some examples, a method of grouping orders in a food item preparation and delivery system is described. The method may include generating an array of received food item orders; assigning a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; selecting an order with highest score; and performing an iteration. Performing an iteration may include generating combinations of the order with the highest score with other orders; assigning scores to the combinations; and selecting a combination with a highest score. The method may also include generating a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; providing the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; providing results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and processing the received orders based on results of the delivery model.
[00103] According to other examples, the base cost may define a cost of a food item, the dwell time may define how long the food item waits after being prepared and before being delivered to a customer, the delivery time may define how long it takes for the food item to reach the customer, and the delivery estimate may define how long it takes from taking an order for the food item to delivering the food item to the customer. Performing the iteration may further include generating combinations of two single orders in a first stage, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration. Providing the preparation sequence into the preparation model may include retrieving or
generating the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item. Providing results of the preparation model into the delivery model may include retrieving or generating the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
[00104] According to further examples, the method may also include prioritizing food items associated with orders already in preparation while providing the preparation sequence into the preparation model. The method may further include monitoring when each preparation equipment and each preparation personnel will be next idle; and while the food item is in queue, designating the preparation personnel next idle after a loading time, designating the preparation equipment next idle after the loading time and a preparation time, and designating the food item ready after the loading time and the preparation time. Providing results of the preparation model into the delivery model may also include providing estimates of one or more of a finished preparation time for a first food item in each order and a ready for pickup time for each order group to the delivery model. The method may also include while a plurality of order groups is in queue, identifying a next ready order group and a next idle delivery vehicle, adding an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub, and determining an order completion time for the next ready order group. The method may further include if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delaying one or more preparation steps of the next ready order group; selecting a later of the order completion time and the order pickup time; determining a point estimate of order completion by adding the transit time from the hub to a delivery location and the time to complete delivery to the selected one of the order
completion time and the order pickup time; and/or translating the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range. [00105] According to some examples, the method may further include upon completion of simulation of a predefined number of order groups, evaluating order completion times and order pickup times of the predefined number of order groups in reverse order; and delaying preparation of each order in an order group until one of increase of an order's delivery estimate to a late delivery threshold, increase of a delivery vehicle’s return time to the hub to a next delivery vehicle assignment time, or increase of a preparation equipment's last ejected time to a next preparation equipment assignment time. The method may also include receiving the food item orders for a plurality of hubs; employing a plurality of preparation models
representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at each hub; employing another delivery model representing availability and delivery times associated with one or more delivery vehicles for the plurality of hubs; and processing the received orders based one or more of a hub closest to a delivery location or a hub capable of preparing the received orders closest to a delivery estimate.
[00106] According to other examples, a computing device for managing a food item preparation and delivery system with order grouping is described. The computing device may include a communication system configured to communicate wirelessly with one or more other devices including an on-board controller of a preparation and delivery hub; a memory configured to store instructions; and a processor coupled to the communication system and the memory. The processor, in conjunction with the instructions stored in the memory, may be configured to receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; perform an iteration that includes generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score. The processor may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub; provide results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and provide instructions to the on board controller based on results of the delivery model.
[00107] According to further examples, the base cost may define a cost of a food item, the dwell time may define how long the food item waits after being prepared and before being delivered to a customer, the delivery time may define how long it takes for the food item to reach the customer, and the delivery estimate may define how long it takes from taking an order for the food item to delivering the food item to the customer. The processor may be further configured to generate combinations of two single orders in a first stage of the iteration, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration. To provide the preparation sequence into the preparation model, the processor may be configured to retrieve or generate the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item. To provide results of the preparation model into the delivery model, the processor may be configured to retrieve or generate the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
[00108] According to some examples, the processor may be further configured to prioritize food items associated with orders already in preparation while providing the preparation sequence into the preparation model. The processor may be further configured to monitor when each preparation equipment and each preparation personnel will be next idle; and while the food item is in queue, designate the preparation personnel next idle after a loading time, designate the preparation equipment next idle after the loading time and a preparation time, and designate the food item ready after the loading time and the preparation time. To provide results of the preparation model into the delivery model, the processor may be configured to provide estimates of one or more of a finished preparation time for a first food item in each order and a ready for pickup time for each order group to the delivery model. The processor may be further configured to while a plurality of order groups is in queue, identify a next ready order group and a next idle delivery vehicle, add an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub, determine an order completion time for the next ready order group, and if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delay one or more preparation steps of the next ready order group.
[00109] According to other examples, the processor may be further configured to select a later of the order completion time and the order pickup time; and determine a point estimate of order completion by adding the transit time from the hub to a delivery location and the time to complete delivery to the selected one of the order completion time and the order pickup time. The processor may be further configured to translate the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range. The processor may be further configured to upon completion of simulation of a predefined number of order groups, evaluate order completion times and order pickup times of the predefined number of order groups in reverse order; and instruct the on-board controller to delay
preparation of each order in an order group until one of increase of an order's delivery estimate to a late delivery threshold, increase of a delivery vehicle’s return time to the hub to a next delivery vehicle assignment time, or increase of a
preparation equipment's last ejected time to a next preparation equipment
assignment time. The processor may be further configured to receive the food item orders for a plurality of hubs; employ a plurality of preparation models representing availability and preparation times associated with one or more preparation
equipment and/or preparation personnel at each hub; employ another delivery model representing availability and delivery times associated with one or more delivery vehicles for the plurality of hubs; and instruct an on-board controller of one or more of a hub closest to a delivery location or a hub capable of preparing the received orders closest to a delivery estimate to process the received orders.
[00110] According to further examples, a food item preparation and delivery hub with order grouping is described. The hub may include one or more preparation equipment; a communication system configured to facilitate wired or wireless communication with one or more delivery vehicles and remote computing devices; and an on-board controller. The on-board controller may be configured to control preparation and delivery operations of the hub; receive a plurality of food item orders; generate an array of the received food item orders; assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order; select an order with highest score; and perform an iteration. The iteration may include generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and selection of a combination with a highest score. The on-board controller may also be configured to generate a preparation sequence by flattening single orders in the combination with the highest score when a combination with highest score is reached in the iteration; provide the preparation sequence into a preparation model representing availability and preparation times associated with the one or more preparation equipment and/or preparation personnel at a hub;
provide results of the preparation model into a delivery model representing
availability and delivery times associated with one or more delivery vehicles; and process the received orders based on results of the delivery model.
[00111 ] According to some examples, the base cost may define a cost of a food item, the dwell time may define how long the food item waits after being prepared and before being delivered to a customer, the delivery time may define how long it takes for the food item to reach the customer, and the delivery estimate may define how long it takes from taking an order for the food item to delivering the food item to the customer. The on-board controller may be further configured to generate combinations of two single orders in a first stage of the iteration, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration. To provide the preparation sequence into the preparation model, the on board controller may be configured to retrieve or generate the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item. To provide results of the preparation model into the delivery model, the on-board controller may be configured to retrieve or generate the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
[00112] According to other examples, the on-board controller may be further configured to monitor when each preparation equipment and each preparation personnel will be next idle; and while the food item is in queue, designate the preparation personnel next idle after a loading time, designate the preparation equipment next idle after the loading time and a preparation time, and designate the food item ready after the loading time and the preparation time. The on-board controller may be further configured to while a plurality of order groups is in queue, identify a next ready order group and a next idle delivery vehicle, add an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub, determine an order completion time for the next ready order group, and if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delay one or more preparation steps of the next ready order group. The on board controller may be further configured to select a later of the order completion time and the order pickup time; determine a point estimate of order completion by adding the transit time from the hub to the delivery location and the time to complete delivery to the selected one of the order completion time and the order pickup time; and translate the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range.
[00113] As used herein the terms“food item” and“food product" refer to any item or product intended for human consumption. One of ordinary skill in the culinary arts and food preparation will readily appreciate the broad applicability of the systems, methods, and apparatuses described herein across any number of prepared food items or products, including cooked and uncooked food items or products, and ingredients or components of food items and products. In some instances, well- known structures associated with computing systems including client and server computing systems, machine learnings, machine learning systems, as well as networks, including various types of telecommunications networks, have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the embodiments. Examples of food items, as referred to herein, include entrees, pizzas, appetizers, hors d’oeuvre, antipasti, deserts, candy, confectionary items, pastries, side dishes, soups, pasta, salads, salad bar items, sandwiches, a particular course of a multi-course meal, breakfast items, brunch items, lunch items, happy hour menu items, dinner items, late night menu items, main course items,
beverages, alcohol, wine, beer, liquor, cocktails, soft drinks, coffee, tea, buffet items, combination meals, vegetarian dishes, meat dishes, fish dishes, chicken dishes, pork dishes, roasts, gluten free dishes, organic dishes, vegan dishes, animal product dishes, dietary needs dishes, special order items, menu items, off-menu items, substitution items, customized menu items, customized meals, catered items, build- your-own pizzas, build-your-own menu items, build-your-own meals, take-out items, promotional items, specials, coupon items and pre-packaged items.
[00114] As used herein the term“vehicle” refers to any car, truck, van, or other vehicle useful in preparing (e.g., cooking, heating, mixing, cooling, etc. as
appropriate) a food item for distribution to a customer. The size and shape of the vehicle may depend in part on licensing requirements of the locality in which the vehicle is intended to operate. In some instances, the size and shape of the vehicle may depend on the street layout and the surrounding environment of the locality in which the vehicle is intended to operate. For example, small, tight city streets may require a vehicle that is comparatively shorter and/or narrower than a vehicle that can safely and conveniently navigate larger, suburban thoroughfares.
[00115] As used herein the term“service area” refers to a physical area in which food items are provided or made available to consumers. The physical area is defined as a region in which physical sale locations (e.g., stores, vending machines, kiosks) are located and delivery vehicles provide or make available food items. The region may be defined, for example, by physical boundaries (e.g., streets, rivers); postal codes; provincial, county, or local government organization; or combinations thereof. The service area is a geographic region comprising a plurality of food services establishments supplied by a logistics provider or commissary. A service area represents an area serviced or defined by one or more of logistics suppliers, processors, trucking companies, shipping companies, wholesalers, resellers, supply chains managers, producers, farms, agricultural cooperatives, plantations,
agricultural areas, markets, sales regions, distributors, retailers, importers, exporters, restaurants, restaurant chains, commissaries, grocery stores, co-ops, farmers markets, snack stands, concession stands, food trucks, food carts, vending kiosks, locker kiosks, hot dog carts, pop-up restaurants, supper clubs, temporary
restaurants, venues, festivals, concerts, neighborhoods, boroughs, camps, community centers, cities, towns, counties, states, commonwealths, provinces, parishes, municipalities, districts, regions, countries and governments.
[00116] As used herein, the term“order” (or“individual order”) refers to a set of one or more food items for delivery to a customer. The term“order group” refers to a set of one or more orders for delivery by a determined vehicle taking a determined route involving a single round-trip from the hub to delivery location(s) corresponding to the order(s) of the set of one or more orders and returning to the hub. The term“order grouping plan” refers to a set of orders and/or order groups which, taken together, represent all orders currently pending at a hub.
[00117] Unless the context requires otherwise, throughout the specification and claims that follow, the word "comprising" is synonymous with "including," and is inclusive or open-ended (i.e. , does not exclude additional, unrecited elements or method acts).
[00118] Reference throughout this specification to "one implementation" or "an implementation" means that a particular feature, structure or characteristic described in connection with the implementation is included in at least one implementation. Thus, the appearances of the phrases "in one implementation" or "in an
implementation" in various places throughout this specification are not necessarily all referring to the same implementation. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations.
[00119] As used in this specification and the appended claims, the singular forms "a," "an," and "the" include plural referents unless the context clearly dictates otherwise. It should also be noted that the term "or" is generally employed in its sense including "and/or" unless the context clearly dictates otherwise. [00120] The headings and Abstract of the Disclosure provided herein are for convenience only and do not interpret the scope or meaning of the implementations.
[00121 ] The present disclosure is not to be limited in terms of the particular embodiments described in this application, which are intended as illustrations of various aspects. Many modifications and variations can be made without departing from its spirit and scope. Functionally equivalent methods and apparatuses within the scope of the disclosure, in addition to those enumerated herein, are possible from the foregoing descriptions. Such modifications and variations are intended to fall within the scope of the appended claims. The present disclosure is to be limited only by the terms of the appended claims, along with the full scope of equivalents to which such claims are entitled. The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.
[00122] A processing system may be implemented utilizing any suitable
commercially available components, such as those found in data
computing/communication and/or network computing/communication systems. The herein described subject matter sometimes illustrates different components contained within, or connected with, different other components. Such depicted architectures are merely exemplary, and in fact, many other architectures may be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively
"associated" such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality may be seen as "associated with" each other such that the desired functionality is achieved, irrespective of architectures or intermediate components. Likewise, any two components so associated may also be viewed as being "operably connected", or "operably coupled", to each other to achieve the desired functionality, and any two components capable of being so associated may also be viewed as being "operably couplable", to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically connectable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components. [00123] With respect to the use of substantially any plural and/or singular terms herein, those having skill in the art can translate from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations may be expressly set forth herein for sake of clarity.
[00124] In general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as“open” terms (e.g., the term“including” should be interpreted as“including but not limited to,” the term “having” should be interpreted as“having at least,” the term“includes” should be interpreted as“includes but is not limited to,” etc.). It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation, no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim recitation to embodiments containing only one such recitation, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an" (e.g.,“a” and/or“an” should be interpreted to mean“at least one” or“one or more”); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should be interpreted to mean at least the recited number (e.g., the bare recitation of "two recitations," without other modifiers, means at least two recitations, or two or more recitations).
[00125] Furthermore, in those instances where a convention analogous to“at least one of A, B, and C, etc.” is used, in general, such a construction is intended in the sense one having skill in the art would understand the convention (e.g.,“a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). It will be further understood by those within the art that virtually any disjunctive word and/or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase“A or B” will be understood to include the possibilities of“A” or“B” or“A and B.”
[00126] For any and all purposes, such as in terms of providing a written description, all ranges disclosed herein also encompass any and all possible subranges and combinations of subranges thereof. Any listed range can be easily recognized as sufficiently describing and enabling the same range being broken down into at least equal halves, thirds, quarters, fifths, tenths, etc. As a non-limiting example, each range discussed herein can be readily broken down into a lower third, middle third and upper third, etc. As will also be understood by one skilled in the art all language such as“up to,”“at least,”“greater than,”“less than,” and the like include the number recited and refer to ranges which can be subsequently broken down into subranges as discussed above. Finally, a range includes each individual member. Thus, for example, a group having 1 -3 cells refers to groups having 1 , 2, or 3 cells. Similarly, a group having 1 -5 cells refers to groups having 1 , 2, 3, 4, or 5 cells, and so forth.
[00127] While various aspects and embodiments have been disclosed herein, other aspects and embodiments are possible. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.

Claims

WHAT IS CLAIMED IS:
1. A method of grouping orders in a food item preparation and delivery system, the method comprising:
generating an array of received food item orders;
assigning a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order;
selecting an order with highest score;
performing an iteration comprising:
generating combinations of the order with the highest score with other orders;
assigning scores to the combinations; and
selecting a combination with a highest score;
when a combination with highest score is reached in the iteration, generating a preparation sequence by flattening single orders in the combination with the highest score;
providing the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation
equipment and/or preparation personnel at a hub;
providing results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and processing the received orders based on results of the delivery model.
2. The method of claim 1 , wherein the base cost defines a cost of a food item, the dwell time defines how long the food item waits after being prepared and before being delivered to a customer, the delivery time defines how long it takes for the food item to reach the customer, and the delivery estimate defines how long it takes from taking an order for the food item to delivering the food item to the customer.
3. The method of claim 1 , wherein performing the iteration further comprises: generating combinations of two single orders in a first stage, then
combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration.
4. The method of claim 1 , wherein providing the preparation sequence into the preparation model comprises:
retrieving or generating the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item.
5. The method of claim 1 , wherein providing results of the preparation model into the delivery model comprises:
retrieving or generating the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
6. The method of claim 1 , further comprising:
prioritizing food items associated with orders already in preparation while providing the preparation sequence into the preparation model.
7. The method of claim 1 , further comprising:
monitoring when each preparation equipment and each preparation personnel will be next idle; and
while the food item is in queue,
designating the preparation personnel next idle after a loading time, designating the preparation equipment next idle after the loading time and a preparation time, and
designating the food item ready after the loading time and the preparation time.
8. The method of claim 1 , wherein providing results of the preparation model into the delivery model comprises:
providing estimates of one or more of a finished preparation time for a first food item in each order and a ready for pickup time for each order group to the delivery model.
9. The method of claim 1 , further comprising:
while a plurality of order groups is in queue,
identifying a next ready order group and a next idle delivery vehicle, adding an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub, and
determining an order completion time for the next ready order group.
10. The method of claim 9, further comprising:
if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delaying one or more preparation steps of the next ready order group.
11. The method of claim 9, further comprising:
selecting a later of the order completion time and the order pickup time;
determining a point estimate of order completion by adding the transit time from the hub to a delivery location and the time to complete delivery to the selected one of the order completion time and the order pickup time.
12. The method of claim 11 , further comprising:
translating the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range.
13. The method of claim 1 , further comprising:
upon completion of simulation of a predefined number of order groups, evaluating order completion times and order pickup times of the predefined number of order groups in reverse order; and delaying preparation of each order in an order group until one of increase of an order's delivery estimate to a late delivery threshold, increase of a delivery vehicle’s return time to the hub to a next delivery vehicle assignment time, or increase of a preparation equipment's last ejected time to a next preparation equipment assignment time.
14. The method of claim 1 , further comprising:
receiving the food item orders for a plurality of hubs;
employing a plurality of preparation models representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at each hub;
employing another delivery model representing availability and delivery times associated with one or more delivery vehicles for the plurality of hubs; and
processing the received orders based one or more of a hub closest to a delivery location or a hub capable of preparing the received orders closest to a delivery estimate.
15. A computing device for managing a food item preparation and delivery system with order grouping, the computing device comprising:
a communication system configured to communicate wirelessly with one or more other devices including an on-board controller of a preparation and delivery hub;
a memory configured to store instructions; and
a processor coupled to the communication system and the memory, the processor, in conjunction with the instructions stored in the memory, configured to:
receive a plurality of food item orders;
generate an array of the received food item orders;
assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order;
select an order with highest score;
perform an iteration comprising:
generation of combinations of the order with the highest score with other orders; assignment of scores to the combinations; and
selection of a combination with a highest score;
when a combination with highest score is reached in the iteration, generate a preparation sequence by flattening single orders in the
combination with the highest score;
provide the preparation sequence into a preparation model representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at a hub;
provide results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and
provide instructions to the on-board controller based on results of the delivery model.
16. The computing device of claim 15, wherein the base cost defines a cost of a food item, the dwell time defines how long the food item waits after being prepared and before being delivered to a customer, the delivery time defines how long it takes for the food item to reach the customer, and the delivery estimate defines how long it takes from taking an order for the food item to delivering the food item to the customer.
17. The computing device of claim 15, wherein the processor is further configured to:
generate combinations of two single orders in a first stage of the iteration, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration.
18. The computing device of claim 15, wherein, to provide the preparation sequence into the preparation model, the processor is configured to:
retrieve or generate the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item.
19. The computing device of claim 15, wherein, to provide results of the preparation model into the delivery model, the processor is configured to:
retrieve or generate the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
20. The computing device of claim 15, wherein the processor is further configured to:
prioritize food items associated with orders already in preparation while providing the preparation sequence into the preparation model.
21. The computing device of claim 16, wherein the processor is further configured to:
monitor when each preparation equipment and each preparation personnel will be next idle; and
while the food item is in queue,
designate the preparation personnel next idle after a loading time, designate the preparation equipment next idle after the loading time and a preparation time, and
designate the food item ready after the loading time and the
preparation time.
22. The computing device of claim 15, wherein, to provide results of the preparation model into the delivery model, the processor is configured to:
provide estimates of one or more of a finished preparation time for a first food item in each order and a ready for pickup time for each order group to the delivery model.
23. The computing device of claim 15, wherein the processor is further configured to: while a plurality of order groups is in queue,
identify a next ready order group and a next idle delivery vehicle, add an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub,
determine an order completion time for the next ready order group, and if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delay one or more preparation steps of the next ready order group.
24. The computing device of claim 23, wherein the processor is further configured to:
select a later of the order completion time and the order pickup time;
determine a point estimate of order completion by adding the transit time from the hub to a delivery location and the time to complete delivery to the selected one of the order completion time and the order pickup time.
25. The computing device of claim 24, wherein the processor is further configured to:
translate the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range.
26. The computing device of claim 15, wherein the processor is further configured to:
upon completion of simulation of a predefined number of order groups, evaluate order completion times and order pickup times of the predefined number of order groups in reverse order; and
instruct the on-board controller to delay preparation of each order in an order group until one of increase of an order's delivery estimate to a late delivery threshold, increase of a delivery vehicle’s return time to the hub to a next delivery vehicle assignment time, or increase of a preparation equipment's last ejected time to a next preparation equipment assignment time.
27. The computing device of claim 15, wherein the processor is further configured to:
receive the food item orders for a plurality of hubs;
employ a plurality of preparation models representing availability and preparation times associated with one or more preparation equipment and/or preparation personnel at each hub;
employ another delivery model representing availability and delivery times associated with one or more delivery vehicles for the plurality of hubs; and
instruct an on-board controller of one or more of a hub closest to a delivery location or a hub capable of preparing the received orders closest to a delivery estimate to process the received orders.
28. A food item preparation and delivery hub with order grouping, the hub comprising:
one or more preparation equipment;
a communication system configured to facilitate wired or wireless
communication with one or more delivery vehicles and remote computing devices; and
an on-board controller configured to:
control preparation and delivery operations of the hub;
receive a plurality of food item orders;
generate an array of the received food item orders;
assign a score to each order based on one or more parameters comprising a base cost, a dwell time, a delivery time, and a delivery estimate associated with each order;
select an order with highest score;
perform an iteration comprising:
generation of combinations of the order with the highest score with other orders;
assignment of scores to the combinations; and
selection of a combination with a highest score;
when a combination with highest score is reached in the iteration, generate a preparation sequence by flattening single orders in the
combination with the highest score; provide the preparation sequence into a preparation model representing availability and preparation times associated with the one or more preparation equipment and/or preparation personnel at a hub;
provide results of the preparation model into a delivery model representing availability and delivery times associated with one or more delivery vehicles; and
process the received orders based on results of the delivery model.
29. The hub of claim 28, wherein the base cost defines a cost of a food item, the dwell time defines how long the food item waits after being prepared and before being delivered to a customer, the delivery time defines how long it takes for the food item to reach the customer, and the delivery estimate defines how long it takes from taking an order for the food item to delivering the food item to the customer.
30. The hub of claim 28, wherein the on-board controller is further configured to: generate combinations of two single orders in a first stage of the iteration, then combinations of X orders with other single orders, where X is incremented by 1 from 2 in each subsequent stage until the combination with the highest score is reached in the iteration.
31. The hub of claim 28, wherein, to provide the preparation sequence into the preparation model, the on-board controller is configured to:
retrieve or generate the preparation model based on one or more of a number of available preparation equipment, a number of occupied preparation equipment, a time for loading a preparation equipment, a time for preparation personnel to load and operation the preparation equipment, a time for completion of preparation, a time for retrieval of the prepared food item from the preparation equipment, or a time for packaging the prepared food item.
32. The hub of claim 28, wherein, to provide results of the preparation model into the delivery model, the on-board controller is configured to:
retrieve or generate the delivery model based on one or more of an order pickup time, when each delivery vehicle is next idle, a transit time from the hub to a delivery location, a time to complete delivery, or a time for the delivery vehicle to return to the hub.
33. The hub of claim 28, wherein the on-board controller is further configured to: monitor when each preparation equipment and each preparation personnel will be next idle; and
while the food item is in queue,
designate the preparation personnel next idle after a loading time, designate the preparation equipment next idle after the loading time and a preparation time, and
designate the food item ready after the loading time and the preparation time.
34. The hub of claim 28, wherein the on-board controller is further configured to: while a plurality of order groups is in queue,
identify a next ready order group and a next idle delivery vehicle, add an order pickup time, a transit time from the hub to a delivery location, a time to complete delivery, and a time for the delivery vehicle to return to the hub,
determine an order completion time for the next ready order group, and if the order completion time for the next ready order group is later than the order pickup time of the next idle delivery vehicle, delay one or more preparation steps of the next ready order group.
35. The hub of claim 34, wherein the on-board controller is further configured to: select a later of the order completion time and the order pickup time;
determine a point estimate of order completion by adding the transit time from the hub to the delivery location and the time to complete delivery to the selected one of the order completion time and the order pickup time; and
translate the point estimate to an estimated delivery range by selecting the point estimate as a low end of the estimated delivery range and adding a constant period of time for a high end of the estimated delivery range.
PCT/US2019/067036 2018-12-20 2019-12-18 Grouping orders in a delivery system WO2020131987A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862782968P 2018-12-20 2018-12-20
US62/782,968 2018-12-20

Publications (1)

Publication Number Publication Date
WO2020131987A1 true WO2020131987A1 (en) 2020-06-25

Family

ID=71100569

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2019/067036 WO2020131987A1 (en) 2018-12-20 2019-12-18 Grouping orders in a delivery system

Country Status (1)

Country Link
WO (1) WO2020131987A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200118071A1 (en) * 2018-10-13 2020-04-16 Walmart Apollo, Llc Delivery prediction generation system
WO2022245295A3 (en) * 2021-05-19 2023-01-19 Grabtaxi Holdings Pte. Ltd System and method for predicting delivery time for batch orders

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188492A1 (en) * 2001-06-11 2002-12-12 Borton Robert L. Food-making, -delivery, and -carry-out system and method
US20080319864A1 (en) * 2007-06-21 2008-12-25 Qsr Automations, Inc. Method of dynamically routing food items through a restaurant kitchen
US20090106124A1 (en) * 2000-12-08 2009-04-23 Ping Yang Method and apparatus for ordering and delivering of meals
US20090307096A1 (en) * 2003-04-18 2009-12-10 Delivery Management Solutions, Inc., Method and system for order optimization
US20180240181A1 (en) * 2015-03-23 2018-08-23 Amazon Technologies, Inc. Prioritization of Items for Delivery

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090106124A1 (en) * 2000-12-08 2009-04-23 Ping Yang Method and apparatus for ordering and delivering of meals
US20020188492A1 (en) * 2001-06-11 2002-12-12 Borton Robert L. Food-making, -delivery, and -carry-out system and method
US20090307096A1 (en) * 2003-04-18 2009-12-10 Delivery Management Solutions, Inc., Method and system for order optimization
US20080319864A1 (en) * 2007-06-21 2008-12-25 Qsr Automations, Inc. Method of dynamically routing food items through a restaurant kitchen
US20180240181A1 (en) * 2015-03-23 2018-08-23 Amazon Technologies, Inc. Prioritization of Items for Delivery

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200118071A1 (en) * 2018-10-13 2020-04-16 Walmart Apollo, Llc Delivery prediction generation system
WO2022245295A3 (en) * 2021-05-19 2023-01-19 Grabtaxi Holdings Pte. Ltd System and method for predicting delivery time for batch orders

Similar Documents

Publication Publication Date Title
CN110944880B (en) Fleet of robotic vehicles for food product preparation
US11816624B2 (en) Delivery of food items by aerial or ground drones to and from delivery vehicles
US20200070717A1 (en) Vehicle with context sensitive information presentation
US20220156695A1 (en) Intelligent network of autonomous delivery robots
US20190050952A1 (en) Multi-modal vehicle implemented food preparation, cooking, and distribution systems and methods
US7505929B2 (en) Method, system and computer product for auction of deliverable prepared food via the internet
US20090106124A1 (en) Method and apparatus for ordering and delivering of meals
US20070150375A1 (en) Method and apparatus for efficient meal delivery
US20240070720A1 (en) Vehicle with context sensitive information presentation
CN107506964A (en) A kind of Distribution logistics network share method, system and terminal based on standard container
US20150294227A1 (en) Dynamic rule based aircraft catering logistics system
CN107180369A (en) Merchandise items information processing method, apparatus and system
US20160189069A1 (en) Creating pre-order catalogs based on real-time inventories and carrier-related data
US20190213532A1 (en) System for crowdsourced cold-chain compliant item selection
WO2020131987A1 (en) Grouping orders in a delivery system
US20240020595A1 (en) Coordinated food production, preparation, and delivery
WO2022137229A1 (en) Optimizied delivery scheme
US20220164768A1 (en) System and Method for Optimized Delivery Based on Customer Location
CN111489214B (en) Order allocation method, condition setting method, device and electronic equipment
US20220351120A1 (en) System and method for proactive aggregation
Garnett Wise moves
Eglese et al. The grocery superstore vehicle scheduling problem
CN107004217A (en) Operational administrative
Lahiri et al. Rebel Foods’ Cloud Kitchen Technologies: Food for Thought?
US20200265506A1 (en) Systems and Methods for Managing a Marketplace of Homemade Foods

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19898862

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19898862

Country of ref document: EP

Kind code of ref document: A1