Register or Login To Download This Patent As A PDF
| United States Patent Application |
20090094085
|
| Kind Code
|
A1
|
|
Kantarjiev; Christopher Angel
;   et al.
|
April 9, 2009
|
Scheduling delivery of products via the internet
Abstract
Methods and apparatus for scheduling delivery of an order via a wide area
network. A delivery interface is generated in which a plurality of
delivery windows are presented. The delivery interface is transmitted to
a remote platform via the wide area network. In response to selection of
a first one of the plurality of delivery windows, it is determined
whether the order may be delivered in the first delivery window. Where it
is determined that the order may be delivered in the first delivery
window, delivery of the order is scheduled in the first delivery window.
| Inventors: |
Kantarjiev; Christopher Angel; (Palo Alto, CA)
; Nijhawan; Sandeep; (San Jose, CA)
; Miller; Justin; (Sunnyvale, CA)
|
| Correspondence Address:
|
IPVENTURE, INC.
5150 EL CAMINO REAL, SUITE A-22
LOS ALTOS
CA
94022
US
|
| Serial No.:
|
287696 |
| Series Code:
|
12
|
| Filed:
|
October 9, 2008 |
| Current U.S. Class: |
705/8 |
| Class at Publication: |
705/8 |
| International Class: |
G06Q 10/00 20060101 G06Q010/00 |
Claims
1. A computer implemented method for scheduling delivery of an order via a
wide area network, comprising:generating a delivery interface in which a
plurality of delivery windows are presented;transmitting the delivery
interface to a remote platform via the wide area network;in response to
selection of a first one of the plurality of delivery windows,
determining whether the order may be delivered in the first delivery
window; andwhere it is determined that the order may be delivered in the
first delivery window, scheduling delivery of the order in the first
delivery window.
Description
RELATED APPLICATION DATA
[0001]This application is a continuation of U.S. patent application Ser.
No. 09/568,613, filed May 10, 2000, entitled SCHEDULING DELIVERY OF
PRODUCTS VIA THE INTERNET, which is incorporated herein by reference for
all purposes, which claims priority from U.S. Provisional Patent
Application No. 60/133,646, filed May 11, 1999, entitled ELECTRONIC
COMMERCE ENABLED DELIVERY SYSTEM AND METHOD, the entirety of which is
incorporated herein by reference for all purposes. This application also
relates to a number of commonly assigned, copending U.S. patent
applications filed simultaneously herewith including U.S. patent
application Ser. No. 09/568,603, now U.S. Pat. No. 7,177,825 entitled
INTEGRATED SYSTEM FOR ORDERING, FULFILLMENT, AND DELIVERY OF CONSUMER
PRODUCTS USING A DATA NETWORK (Attorney docket no. WVANP001), U.S. patent
application Ser. No. 09/568,570, now U.S. Pat. No. 7,370,005, entitled
INVENTORY REPLICATION BASED UPON ORDER FULFILLMENT RATES (Attorney docket
no. WVANP002), U.S. patent application Ser. No. 09/568,614, entitled
REAL-TIME DISPLAY OF AVAILABLE PRODUCTS OVER THE INTERNET (Attorney
docket no. WVANP003), U.S. patent application Ser. No. 09/568,572, now
U.S. Pat. No. 6,975,937 entitled TECHNIQUE FOR PROCESSING CUSTOMER
SERVICE TRANSACTIONS AT CUSTOMER SITE USING MOBILE COMPUTING DEVICE
(Attorney docket no. WVANP005), U.S. patent application Ser. No.
09/568,823, now U.S. Pat. No. 7,197,547 entitled LOAD BALANCING TECHNIQUE
IMPLEMENTED IN A DATA NETWORK DEVICE UTILIZING A DATA CACHE (Attorney
docket no. WVANP006), U.S. patent application Ser. No. 09/568,569, now
U.S. Pat. No. 6,622,127, entitled ORDER ALLOCATION TO SELECT FROM
INVENTORY LOCATIONS STOCKING FEW UNITS OF INVENTORY (Attorney docket no.
WVANP007), U.S. patent application Ser. No. 09/566,912, now U.S. Pat. No.
6,332,334, entitled METHOD AND APPARATUS FOR HANDLING AND TRANSPORTING
TEMPERATURE-SENSITIVE ITEMS (Attorney docket no. WVANP008), and U.S.
patent application Ser. No. 09/568,571, now U.S. Pat. No. 7,139,637,
entitled ORDER ALLOCATION TO MINIMIZE CONTAINER STOPS IN A DISTRIBUTION
CENTER (Attorney docket no. WVANP009). Each of the disclosures of these
copending applications is incorporated herein by reference in its
entirety for all purposes.
BACKGROUND OF THE INVENTION
[0002]The present invention relates to the field of electronic commerce.
In particular, the invention relates to a technique for selling and
delivering consumer products to customers using a data network. Still
more specifically, the present invention provides methods and apparatus
by which scheduling of deliveries for products ordered through the
present system is provided via the Internet.
[0003]Electronic commerce via the Internet is rapidly changing the way in
which products and services are purchased by and delivered to consumers.
An important challenge faced by most businesses engaging in commerce over
the Internet relates to the manner in which their products actually get
to consumers.
[0004]Most Internet retailers rely on third party services such as UPS and
Federal Express to deliver the products purchased on their sites. This
model has some advantages for the retailers in that they don't have to
invest in and develop delivery infrastructures. However, the downside is
the potential negative effects such a model has on customer satisfaction.
That is, once an order is picked up from the retailer by the delivery
service, the retailer loses control of the remainder of the transaction
and runs the risk that any mistakes by the delivery service will reflect
negatively on the retailer. For example, the retailer lacks the ability
to deliver products during precise delivery windows. Rather they must
rely on the delivery service which may make the customer wait around for
inconveniently long periods of time.
[0005]In addition, if the customer's order is damaged or incorrect, there
is no immediate recourse for the customer because the delivery service is
not controlled by the retailer. The customer must typically go through a
rather cumbersome process to return the order using the same or some
other third party delivery service. This can intensify any feelings of
frustration the customer might have with regard to the error. Obviously
this is undesirable from the retailer's perspective.
[0006]In view of the foregoing, there is a need for techniques which allow
e-commerce retailers to efficiently develop effective delivery
capabilities. More specifically, there is a need for techniques by which
such retailers may effect precise delivery of their products to
customers.
SUMMARY OF THE INVENTION
[0007]According to the present invention, methods and apparatus are
provided by which the delivery of products ordered over the Internet may
be scheduled in an effective and precise manner. The techniques described
herein allow an e-commerce retailer to communicate precise available
delivery windows to a customer over the Internet which reflect an
accurate picture of the product and delivery resources which are actually
available at the time the customer schedules the delivery. That is, when
a customer indicates that scheduling of a delivery is desired, the system
of the present invention computes and displays the available delivery
windows to the customer which, according to a specific embodiment, are
half-hour windows. The techniques of the present invention are then able
to schedule the delivery window selected by the customer without
compromising any previous commitments made to other customers. This is
accomplished by generating the delivery window grid and scheduling the
selected window with reference to available resource capacity which is
reflective of the previous commitments.
[0008]Thus, the present invention provides methods and apparatus for
scheduling delivery of an order via a wide area network. A delivery
interface is generated in which a plurality of delivery windows are
presented. The delivery interface is transmitted to a remote platform via
the wide area network. In response to selection of a first one of the
plurality of delivery windows, it is determined whether the order may be
delivered in the first delivery window. Where it is determined that the
order may be delivered in the first delivery window, delivery of the
order is scheduled in the first delivery window.
[0009]According to another specific embodiment of the invention, methods
and apparatus are described for generating a delivery interface in which
a plurality of delivery windows are presented on a remote platform via a
wide area network. According to the invention, which of the plurality of
delivery windows are available for delivery of an order is determined
with reference to currently available delivery resources and at least one
of a plurality of previously scheduled delivery stops.
[0010]According to another embodiment, methods and apparatus are described
for generating a schedule interface in which a plurality of schedule
windows are presented on a remote platform via a wide area network.
According to the invention, which of the plurality of schedule windows
are available for scheduling an appointment is determined with reference
to currently available appointment resources and at least one of a
plurality of previously scheduled appointments.
[0011]A further understanding of the nature and advantages of the present
invention may be realized by reference to the remaining portions of the
specification and the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012]FIG. 1 is a block diagram of an integrated system architecture in
accordance with a specific embodiment of the present invention.
[0013]FIG. 2 is a diagram illustrating a "hub and spoke" distribution
system according to a specific embodiment of the present invention.
[0014]FIG. 3 is a flow diagram which illustrates the interactions between
software modules which effect the delivery scheduling process according
to a specific embodiment of the present invention.
[0015]FIG. 4 is a flowchart illustrating the delivery scheduling process
according to a specific embodiment of the invention.
[0016]FIG. 5 is a flowchart illustrating generation of the delivery window
grid according to a specific embodiment of the present invention.
DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS
[0017]FIG. 1 shows a schematic block diagram illustrating various systems,
subsystems and/or components of an integrated system architecture 100 for
use with a specific embodiment of the present invention. The system of
FIG. 1 as well as other systems which may be used in conjunction with the
present invention are described in greater detail in copending U.S.
patent application Ser. No. 09/568,603, now U.S. Pat. No. 7,177,825
entitled INTEGRATED SYSTEM FOR ORDERING, FULFILLMENT, AND DELIVERY OF
CONSUMER PRODUCTS USING A DATA NETWORK (Attorney docket no. WVANP001)
incorporated by reference above. As shown in FIG. 1, system 100 includes
a plurality of subsystems and other components for effecting electronic
commerce over a data network. It will be understood that portions of the
various subsystems described herein are embodied in computer program
instructions stored in corresponding computer-readable media. A brief
description of at least a portion of the plurality of subsystems of
system 100 is presented below. System 100 of FIG. 1 includes:
[0018](1) a Publishing (PUB) Subsystem 140 which manages SKU and catalog
information (e.g. SKUs, UPCs, products, categories, descriptive
attributes, etc.), and provides an interface to merchants 133;
[0019](2) a Webstore Subsystem (WS) 132 which manages the on-line store
interface with customers, including customer shopping and ordering
transactions;
[0020](3) a Transportation Subsystem (XPS) 124 which manages delivery
window scheduling, delivery vehicle routing, capacity planning, and
mobile field device (MFD) data used by delivery couriers;
[0021](4) an Order Management Subsystem (OMS) 150 which manages pricing
data, item availability data, inventory data, vendor data, finance,
procurement, etc;
[0022](5) an Order Fulfillment Subsystem (OFS) 160 which facilitates the
fulfillment of customer orders and manages the distribution center (170)
operations; and
[0023](6) a Customer Relationship Management (CRM) Subsystem 126 for
enabling customer service representatives (CSRs) 143 to service customer
requests and track customer interaction.
[0024]According to specific embodiments, each subsystem may also comprise
at least one server and/or other components. Further, each subsystem may
be configured to utilize a dedicated or shared database server as its
persistent and transactional data backbone. Users or customers may access
data stored on one of the subsystem's database servers (e.g. Webstore
database), which then executes appropriate business logic and/or business
objects.
[0025]Each subsystem may be configured or designed to communicate with
each other via a plurality of interfaces. According to a specific
embodiment, the plurality of interfaces includes both synchronous and
asynchronous interfaces. Many of the various system interfaces are
configured to be asynchronous, wherein data is typically transferred in
batch mode via staging (e.g. database) tables or flat files (e.g.,
separated value files). However, at least a portion of the system
interfaces are configured as synchronous interfaces. Generally, a
synchronous interface may be used where an immediate response from a
server or component is required.
[0026]Conceptually, system 100 of FIG. 1 may be grouped into two general
subsystems, namely a Front Office system and a Back Office system. The
Front Office system is generally responsible for functions related to
customer transactions such as, for example, customer orders, billing
transactions, delivery scheduling, customer service, etc. In the
embodiment of FIG. 1, for example, the Front Office system 130 comprises
the Webstore Subsystem 132, Transportation Subsystem 124, and Customer
Relationship Management Subsystem 126. The Front Office system 130 may
also include other subsystems or components such as, for example, mobile
field device (MFD) components 112, a tax component 114, a billing
component 116, a delivery route planning component 118, a search engine
120, a catalog component 112, a Help Desk component 114, a customer
capacity allocation component 128, etc.
[0027]Additionally, the Front Office system 130 may include a centralized
database 131 which may be accessed by subsystems and/or components of
system 100. Alternatively, one or more of the Front Office systems and/or
components may each comprise a respective database which is accessible by
other subsystems and/or components of system 100. [00028] The Back Office
system generally includes all subsystems and/or components which are not
part of the Front Office system. Thus, as shown in FIG. 1, for example,
the Back Office system includes the PUB 140, OMS 150, and OFS 160
subsystems. However, the invention is not limited to the particular
embodiment shown in FIG. 1, and it will be appreciated that the specific
configuration of system 100 may be modified by one having ordinary skill
in the art to suit specific applications.
[0028]As shown in FIG. 1, the Front Office 130 comprises a plurality of
separate subsystems such as, for example, Webstore Subsystem (WS) 132,
Transportation Subsystem (XPS) 124, and Customer Relationship Management
(CRM) Subsystem 126. Each subsystem may be implemented via a combination
of hardware and/or software, and further may include a plurality of
different functional components, modules, and/or plug-in applications.
[0029]At least a portion of the software residing at the Front Office
system may include a presentation layer, an application layer, a business
object layer, a database access layer, or any combination thereof.
According to a specific embodiment, the presentation layer
handles the
actual presentation of information to users via an appropriate medium.
The application layer
handles the appropriate application logic for the
various subsystems of the Front Office. For example, in the Webstore
Subsystem 132, it is the application layer (referred to as the shopping
engine) which determines that a customer cannot check out an order unless
the customer has selected a delivery window, or provided billing
information. The business object layer (referred to as the Bobo--Bucket
of business objects) provides objects with a fixed set of functionality
(e.g. methods or procedures) that may be manipulated by the application
layer. According to a specific embodiment, the business objects do not
know about each other, and the application layer
handles the coordination
between the various business objects. The database access layer provides
connectivity and data access APIs to the Front Office database 131 (also
referred to as the Webstore database). According to a specific
embodiment, the database access layer performs pooling and caching of
connection objects, where appropriate.
[0030]It is also important for a common database schema to be adopted by
each of the Front Office systems. According to a specific embodiment, the
database 131 is implemented as a shared database which may be accessed by
each of the Front Office systems.
[0031]The Webstore Subsystem (WS) 132 provides an interface for enabling
customers to access the on-line store (e.g. Webstore). In a specific
embodiment where the Webstore is implemented as a website on the World
Wide Web, customers may access the Webstore via the Internet or World
Wide Web using any one of a plurality of conventional browsers. The
Webstore user interface may be designed to provide a rich set of
functions without requiring any special browser plug-ins. Thus, according
to a specific embodiment, customers may access the Webstore using any
client machine, regardless of the machine's operating system platform.
Additionally, for security purposes, the Webstore interface also supports
data encryption for exchange of any sensitive or private information
between the customers and the website. According to a specific
embodiment, the Webstore interface is implemented using a secure http
protocol (HTTPS), commonly known to those skilled in the art.
[0032]In accordance with a specific embodiment, the Webstore Subsystem 132
supports a number of customer related features such as, for example, self
registration; accessing of customer account information; browsing of
product categories and category hierarchy; viewing of product images and
product information; key word searches; delivery scheduling; accessing of
customer order history; customizable shopping lists; on-line shopping and
ordering; etc.
[0033]The Webstore Subsystem (referred to as the Webstore) may be
implemented using at least one server which is connected to the data
network. According to a specific embodiment, the Webstore is implemented
using a plurality of web servers (e.g. web server farm) which helps to
minimize server response time and provide real-time failover and
redundancy capabilities. Further, according to a specific embodiment, in
order to keep the web server response time to a minimum, the Webstore may
be configured such that all processing is performed on a single server,
within one process. Where a plurality of Webstore servers are used,
redundant processing may be performed by at least a portion of the
servers so that a single Webstore server may handle all Webstore
processing tasks associated with a particular on-line customer. It will
be appreciated that the Webstore server boundaries may be crossed where
appropriate, such as, for example, when accessing the Front Office
database via the data network.
[0034]According to a specific implementation, the presentation layer of
the WS software is implemented in ASP, which generates HTML data that is
sent back to the customer browser. The application software layer or
shopping engine layer may be implemented as COM objects. The business
object layer of the software may provide the following business objects:
(1) a customer object which implements customer functionality and
attributes; (2) a catalog object which implements the product category
hierarchy, SKUs, price, and available-to-promise (ATP) information; (3)
an order object which implements the shopping cart, order management,
billing, and check-out procedures; (4) a session object which implements
state over HTTP; and (5) a delivery object which implements customer
delivery scheduling. Further, the WS is preferably configured or designed
to minimize customer response time and to provide for scalability.
[0035]Additionally, as shown in FIG. 1, the Front Office system may
include a number of integrated components which provide additional
functionality. For example, the WS may include a plurality of components
which provide additional functionality such as, for example, computation
of taxes, search capability, credit card billing, etc. Thus, as shown in
FIG. 1, for example, the WS 132 includes at least one catalog component
122; a tax computation component 114 for computing taxes for each order
line item that is sold; a search component 120 for processing text search
requests; and a credit (or debit) card server (CC) component 116 for
handling credit and/or debit card authorizations and funds captures.
According to at least one embodiment, one or more of these components may
be implemented as an asynchronous process in order to reduce or minimize
impact on the Webstore server's response time and availability.
[0036]The Transportation Subsystem (XPS) 124 generally
handles delivery
window scheduling, delivery vehicle routing, capacity planning, and
mobile field device programming used by delivery couriers. Accordingly,
the Transportation Subsystem may be configured to provide the following
functional features: (1) delivery grid computation and presentation; (2)
delivery scheduling, and delivery window reservation; (3) deliveries to
customer sites with appropriate billing actions and processing, including
processing of adjustments, credits, and returns; (4) adjusting delivery
operation parameters such as, for example, truck route plans, delivery
vehicle usage, service duration, parking time, delivery courier
scheduling, data to be downloaded into MFDs, etc.; (5) changing order
state based on cutoff time; and (6) capacity management.
[0037]As shown in FIG. 1, for example, the Transportation Subsystem 124
may comprise a plurality of components and/or other subsystems including,
Route Planner 118, MFD server 112, mobile field devices 106,
transportation resource management (TRM) software 108, couriers 110, and
customer capacity allocator 128. In alternate embodiments, at least a
portion of these components such as, for example, the MFD server 112, may
be implemented as a separate subsystem and may reside external to the
Transportation Subsystem.
[0038]Route Planner 118 provides an interface to access the transportation
resource management (TRM) software 108. According to a specific
embodiment, the TRM component may keep track of the current state of all
delivery windows which may be organized according to a per-zone basis.
Delivery vehicles may be assigned to zones as part of the delivery
planning. The Route Planner 118, working in conjunction with TRM 108,
allocates specific routes and stops to specific delivery vehicles.
Preferably, a stop will be scheduled for a particular customer within
that customer's selected delivery time window. When a customer selects a
delivery window, the delivery window business object submits the request
to the Transportation Subsystem's Route Planner 118. The Route Planner
then performs a verification check to verify that the selected delivery
window can be promised to the customer.
[0039]Although the MFD server 112 may conceptually be grouped with the
Transportation Subsystem, in a specific embodiment, the MFD server
component 112 may configured to include at least one back-end server
which resides in a particular area data center. Thus, different areas may
be serviced by different MFD servers. The same may be said for Route
Planner 118. Moreover, each zone in a particular area may serviced from a
station which may be connected to the area data center via the data
network. Each mobile field device (MFD) unit or client 106 may connect to
an area MFD server 112 via the data network, and download and/or upload
various types of information, including, for example, customer order
history information, delivery information (e.g. vehicle delivery routes,
stops, etc.), customer returns information, credits, adjustments, etc.
[0040]The Customer Relationship Management Subsystem 126 is an interactive
application which may be used by customer service representatives (CSRs)
143 to manage customer service requests and to track customer
interaction. The functionality provided by the CRM subsystem may include,
for example, accessing customer information; issuing credits for various
customer issues (e.g. complaints, returns, damaged goods, etc.); handling
work flow for processing customer issues; etc. The CRM subsystem provides
CSRs (sometimes referred to as customer service operators--CSOs) with the
ability to access, view, and edit customer information in accordance with
customer requests.
[0041]The Order Fulfillment Subsystem 160 manages all functionality of the
distribution center (DC) 170. In the embodiment of FIG. 1, the OFS
includes appropriate hardware and/or software for managing the DC
facility 170, including, for example, a warehouse management system (e.g.
software application), at least one database 161, at least one interface
162, and an automated material handling (AMH) controller component 163,
which manages the conveyor, carousel, and scanner components. In a
specific implementation, the Order Fulfillment Subsystem 160 may be
implemented using a warehouse management system such as, for example, the
MOVE warehouse management system provided by Optum, Inc. of Costa Mesa,
Calif. The warehouse system also provides the interface with the Order
Management Subsystem. In a specific embodiment, this interface is
implemented using a business host interface (BHI). The warehouse
management subsystem may also provide the interface for allowing the OMS
subsystem to communicate with the OFS database 161.
[0042]The Order Management Subsystem (OMS) 150 manages a variety of
aspects related to the integrated system architecture of the present
invention, including, for example, pricing, availability, inventory,
vendors, financials, procurement, and data flows between various
subsystems. OMS includes an inventory component which is responsible for
maintaining inventory records, determining inventory availability, and
replenishment of inventory stock. OMS subsystem 150 includes graphical
user interface 152, and at least one database 151 for storing various
data received from at least a portion of the other subsystems.
[0043]The Order Management Subsystem may be configured to support both
asynchronous and synchronous interfaces with the other subsystems. In a
specific embodiment, the OMS is configured to support an asynchronous
interface with each of the other subsystems. This configuration provides
a number of advantages described in greater detail below. Additionally,
each OMS interface is configurable, and may be configured to support the
running of batch processes as often as is desirable.
[0044]According to a specific implementation, all PUB-OMS and WS-OMS
interface programs are configured to operate at the database schema
level. New and updated data may be posted to a persistent message queue
(e.g. staging tables) within the data source database. From there, the
data may be processed into the destination database.
[0045]Implementation of the various interfaces between OMS and the other
subsystems may be accomplished using a variety of different techniques
commonly known to one having ordinary skill in the art. The following
description provides an example of at least one such technique which may
be used for interfacing OMS with the other subsystems. However, it will
be appreciated that the specific interfaces described below may be
implemented using other techniques commonly known to those skilled in the
art.
[0046]The interface between the OMS and the Webstore Subsystem may be
implemented, for example, using a plurality of executable programs. A
first portion of the executable programs may be responsible for moving
data from the Webstore to the OMS. This data may include, for example,
new/updated customer data, new/updated order data, order cutoff
information, order billing information, customer return information,
customer credits and fees (e.g. bill adjustment data), etc. A second
portion of the executable programs is responsible for moving data from
the OMS to the Webstore Subsystem. This data may include, for example,
inventory data, availability data, pricing data, and information about
shipped customer orders.
[0047]FIG. 2 illustrates the "hub and spoke" nature of a product
distribution system designed according to a specific embodiment of the
invention. Trucks 202 leave Distribution Center (DC) 170 to deliver
customer orders to a plurality of stations 204 each of which is
associated with a zone 206. Each zone 206 may be divided into a plurality
of subzones 208 each of which may contain a plurality of customer stops
210. A plurality of vans 212 is associated with each station 204 for
delivery the customer orders to the appropriate customer stops 210. The
orders (comprising one or more totes) on trucks 202 are transferred to
vans 212 at stations 204 which then execute an assigned van route
according to the delivery schedule generated as described below.
[0048]A specific embodiment of a delivery scheduling process will now be
described with reference to FIGS. 3 through 5. When the customer selects
"Schedule Delivery" in the Webstore interface (402) XpBobo in WS
subsystem 132 generates and presents a delivery window grid to the
customer (404), generation of which will be described in greater detail
below with reference to FIG. 5. When the customer selects one of the
available delivery windows (406), XpBobo sends the new van stop and the
set of routes to the Route Planner 118 for scheduling of the new van stop
on any of the routes (408). According to a specific embodiment, this is
done by computing the actual distance between stops using driving speeds
and a variety of other parameters including, for example, whether or not
the selected delivery window is during rush hour. According to a specific
embodiment, the scheduling of the new stop on a route already having
scheduled stops is favored. This is achieved by using a cost model which
penalizes adding the stop to a new route but which doesn't add any cost
for adding the first several, e.g., 6, stops to the new route. According
to a specific embodiment, the Route Planner module employs third party
software (i.e., TRM 108) called SOC provided by Descartes of Toronto,
Ontario, Canada.
[0049]If Route Planner 118 cannot place the new stop on any of the routes
(410), it may attempt to do so through a process referred to herein as
"shoehorning" as long as shoehorning hasn't already been attempted (412
and 414). That is, according to a specific embodiment, XpBobo reduces the
service duration (described below) originally set for the new stop and
calls the Route Planner to try again with the new value. According to
various embodiments, this shoehorning procedure may be repeated some set
number of times. If the stop still can't be fit in (410) and no more
shoehorning is desired (412), then a message is presented to the user
indicating that the selected delivery window is unavailable (416). If, on
the other hand, the new stop does fit into an existing route (410), it is
inserted into the route (418).
[0050]According to a specific embodiment, when the delivery window grid is
generated, XpBobo makes the assumption that the customer's order will
correspond to some number of totes. According to a more specific
embodiment, the number is the same for all customers and corresponds to,
for example, the average order size in the system, e.g., three. According
to an alternate embodiment, the number of totes assumed is based on the
particular customer's past order history, e.g., if the customer averages
12 totes per order, the delivery window grid is generated based on that
assumption.
[0051]Referring back to FIG. 4, the number of totes is estimated and
updated at checkout (420) based on the items in the customer's cart and
information in the catalog about the volume of those items. This is
necessary because in scheduling delivery, the customer is reserving a
number of different types of capacity, e.g., van capacity, service
duration (i.e., the amount of time allotted for bringing the totes into
the customer's home may change with the number of totes), etc. Thus, at
checkout, XpBobo again contacts the Route Planner with the updated number
of totes for the purpose of updating the schedule. Any excess capacity
recovered as a result of this updating is then returned to the system.
[0052]It is possible that when the Route Planner recomputes the schedule
that the actual size of the order pushes one or more subsequent stops out
of their delivery windows in which case the Route Planner rejects the
order. That is, if the customer's stop no longer fits into an existing
route (422), XpBobo may adjust some parameters associated with the stop
(424), e.g., the number of totes or the service duration, and resends the
request to the Route Planner until the order is accepted.
[0053]According to another embodiment, even where the customer's stop does
not fit into an existing route, it is nevertheless scheduled in the
selected window. The window violations are then either taken care of
later, e.g., during a nightly optimization, or handled on a case-by-case
basis by the operations staff.
[0054]Each night, another client of Route Planner 118 specifies groups of
jobs to be optimized together. This typically opens up additional slack
time, i.e., time periods in existing routes, in which additional stops
may be scheduled the next day.
[0055]An additional optimization occurs at cutoff time, i.e., the time at
which the orders on a set of van routes are sent to the OFS for
fulfillment, by Cutoff Route Planner 302. This provides some fine tuning
of the routes as well as takes care of last minute cancellations by
customers. According to a specific embodiment, where there are multiple
deliveries to a single address, this additional optimization may collapse
them into a single delivery.
[0056]Each service area, e.g., the San Francisco Bay Area or Atlanta, is
divided into zones corresponding to a particular station, each of which
may be further divided into subzones. Each of the zones and subzones have
tables associated therewith which have a plurality of parameters
including open hours, service duration, parking time, etc. For example,
for a particular subzone 6 minutes might be allocated for parking instead
of 2 minutes for a different subzone. Further detail regarding these
parameters will be discussed below.
[0057]According to a more specific embodiment, there is an additional
layer of lookup logic in which an address or address range is associated
with a specific latitude/longitude pair and subzone without using the
geocoder module and the polygon interior test. Instead, a direct lookup
in a database table is performed. This allows the capability to correct
geocoding errors, assign specific addresses to special subzones, and to
deny service to addresses that are otherwise in a valid service area
without having to edit the subzone boundary polygons.
[0058]When a customer registers with Webvan, a geocoder module provided by
Descartes takes the delivery address and determines a latitude and
longitude pair which Xpbobo then uses to perform a polygon-interior test
to determine if the delivery address is in any of its delivery subzones.
Each subzone may include multiple polygons. If the address is not in one
of the delivery subzones, the registration module indicates to the user
that the user's area is not currently being serviced. According to a
specific embodiment, the registration module recognizes when the delivery
address is associated with another metropolitan area serviced by Webvan
(e.g., by looking at the zip code) and provides the appropriate URL to
the user.
[0059]If the specified delivery address is within an existing subzone, the
address is associated with the appropriate zone and subzone and the
corresponding table values. When a customer schedules a delivery, the set
of routes and the open hours used in the various transactions including
the delivery window grid generation are based upon the table values for
the zone and subzone corresponding to the customer's address. The values
for a particular zone are inherited by its subzones but may be
overridden. The open hours for a particular subzone would, for example,
override the open hours for the enclosing zone if different. Thus, a
particular downtown area may be closed for deliveries during rush hour
while adjacent, less congested areas remain open.
[0060]There are five values of interest to the delivery scheduling process
which may be specified on the zone, subzone, or customer address level.
Parking time, base service duration, per tote service duration, step
threshold, and step duration. The beginning of the service duration for a
particular delivery stop must fall within the promised window while the
parking time does not need to. That is, the driver may park the van
before the delivery window, but may not ring the customer's doorbell
until the delivery window begins.
[0061]According to a specific embodiment, parking time is a fixed value
for each subzone (or even for a particular customer) which may evolve
over time based on feedback from drivers. The base service duration is
the basic amount of time it takes to execute a delivery which may be
specified at the zone, subzone, and customer address levels. The per tote
service duration is a number of seconds added to the base service
duration for each tote in the order.
[0062]Step threshold and step duration attempt to capture the fact that
certain orders may require multiple trips between the van and the
delivery location to unload all of the totes. Step threshold identifies
how many totes the driver can carry at once which may be set to take
information about the specific customer residence into account, e.g., the
driver can only carry one tote because of access difficulties. The step
duration is the amount of time to add to the base service duration for
each step threshold reached by the current order. That is, if the step
threshold is 3 and there are 8 totes, 2 step durations are added to the
base service duration. Thus, the total service duration=base service
duration+n per tote service durations+m step durations, where n is the
number of totes in the order and m is the number of step thresholds
exceeded.
[0063]In the WS database there are two tables which relate to delivery
scheduling. The first table is the Van Routes Table which contains all of
the available van routes with their constraints. These are created empty
by XP services component 124 called the Zone Window Creator (ZWC) which
runs once a day, e.g., at night, and posts the van routes data to the WS
database. Each entry in this table corresponds to a window of time during
which a delivery resource, e.g., a van, will be deployed from a
particular station to service stops. These zone delivery windows are also
created with reference to the delivery hours in effect for that zone.
[0064]The second table is the Van Stops Table each entry of which
corresponds to a customer order which needs to be serviced. Most van
stops have a pointer which points to a van route in the Van Route Table
and includes the estimated time of arrival and departure if the stop can
be serviced. That is, van stops may be created and stored in this table
even where it turns out they can't be serviced. In such instances, these
entries do not have pointers to particular van routes.
[0065]The ZWC creates van routes for the Van Routes Table with reference
to truck route plans each of which identifies when a truck is scheduled
to leave the Distribution Center and when it is scheduled to arrive at a
particular station. According to a specific embodiment, system
constraints dictate that when a truck reaches a station there must be a
set of vans either at the station or about to return to the station. Each
route corresponds to the time period when a particular van is out
servicing stops. When the same van returns to the station and then leaves
again, it corresponds to a different route.
[0066]The ZWC also refers to the "open hours" for each area and zone, the
number of vans available in each zone, and a parameter called "stagger
duration" which reflects the fact that vans will arrive back at the
station at staggered intervals relative to a particular truck arrival
from the DC to ensure that all of the delivery windows are covered by at
least one van. Using all of this information, the ZWC generates the van
routes each of which indicates when a particular van is scheduled to
leave the station to service stops and when it is expected to return. If,
for example, three truck arrivals are scheduled for a particular station
on a given day, there are three routes created by the ZWC for each van at
that station.
[0067]According to an alternative embodiment, the van return times are not
necessarily constrained by truck arrivals at the station. For example, if
a van has enough capacity to stay out longer than the time between truck
arrivals at the station, then that van is allowed to stay out servicing
stops despite the scheduled arrival of a truck at the station. According
to this embodiment, vans are only brought back to the station when they
are empty.
[0068]The generation of the delivery window grid referred to in FIG. 4
will now be described with reference to FIG. 5. In response to a user
selecting "Schedule Delivery" in the Webstore interface, the delivery
grid estimator portion of XpBobo, generates the delivery window grid with
reference to the Van Routes, Van Stops tables, and the current customer's
latitude and longitude. According to a specific embodiment, the delivery
window grid represents seven days, each having 20-25 half-hour windows
(depending upon the open hours for the particular zone). The grid
represents 7 times 4 sets of 3-6 routes. That is, 7 days times 4 truck
waves from the DC per day times 3-6 van routes per wave.
[0069]For each existing van route in the user's service zone, the process
computes the "slack time" between each pair of existing stops on the
route to determine whether there is sufficient time to deliver a standard
load to the user's address. If there are no stops on the route, i.e., the
route is still empty, the slack time for that route is the entire
duration of the route. The process also determines whether there is
enough free capacity on the van to accommodate the customer's order.
According to a specific embodiment, if there is not sufficient van
capacity, XpBobo determines whether a "recharge" trip to the station is
possible between two stops.
[0070]Referring now to FIG. 5, initially, all of the delivery windows of
the delivery window grid are designated as unavailable (502). XpBobo then
gets the first route for the customer's zone (504) and if there are any
stops on the route (506) XpBobo gets the first stop (508) and computes
the slack time between the beginning of the route and the first stop
(510). If the slack time is sufficient to accommodate insertion of the
new stop without jeopardizing existing commitments to previously
scheduled customers (512), the corresponding window in the grid is
changed to indicate that the window is available (514). According to one
embodiment, an graphical element associated with the window is presented
as green rather than red to indicate its availability.
[0071]If, on the other hand, the slack time is not sufficient for
insertion of the new stop (512), XpBobo determines whether the end of the
current route has been reached (516). If not, XpBobo gets the next pair
of stops (518), e.g., the first and second stops, and computes the slack
time between the pair of stops (510). This continues until the end of the
route is reached (516) at which point, XpBobo determines whether there
are any additional routes for the customer's zone (520). If so, XpBobo
gets the next route (522) and repeats the process described above. Where
a route does not yet have any stops assigned to it (506), all of the
windows in the grid corresponding to the duration of the route are
changed to available (524). If no routes remain (520) the delivery window
grid is displayed to the customer (526) and the process ends.
[0072]According to a specific embodiment, XpBobo uses two kinds of
computations--a "forward" computation by which it computes the "earliest
arrival time" at the customer's location, and a "backward" computation by
which it computes the "latest arrival time" at that location.
[0073]The slack time between existing stops on a route is determined using
information from the Van Stops table for the existing stops. Each stop
has an associated promised delivery window and a plurality of time-based
parameters the aggregation of which represents the time allotted for the
stop. These parameters include drive time to the stop relative to the
previous stop (or the station for the first and last stops), parking
time, and service time.
[0074]When there is any slack between stops on a particular route, a
driving time estimate is done to determine if there is sufficient time to
insert a new stop for the user's address. According to a specific
embodiment, this is done without using the absolute real time information
from the Route Planner. Instead, the estimates are computed using
approximations of driving speed and real-driving distances based on
straight-line distances computed from latitude/longitude values. The
delivery grid estimator calculates whether a stop is reachable between
any two existing stops, or the station and an existing stop, or an
existing stop and the station, first by computing a forward driving
distance from the previous stop to compute an earliest-arrival time and
then by back-computing from the next stop to compute a latest-arrival
time. Using these two times and the amount of slack available, it decides
whether a specific window can be shown open to the user.
[0075]If there is enough time between existing stops to drive to the new
unassigned stop, park, deliver a "standard" load, and drive to the second
stop without violating existing promises, e.g., the delivery window of
the second stop, and if there is sufficient capacity in the van
associated with the route, the associated window is presented to the user
as available, e.g., the window is colored green. If there are multiple
windows between the two existing stops for which this is true, all are
colored green. As described above with reference to FIG. 5, this is done
for each pair of existing stops on each route. More generally, if there
is enough slack time in any of the van routes associated with the user's
service zone for a given delivery window, that window is presented as
available.
[0076]According to a specific embodiment, the delivery grid is adjusted
for the open hours available for each day of the week. In the case of
non-uniform hours, e.g., 9 am to 5 pm on weekends and 7 am to 10 pm on
weekdays, the grid is adjusted so that the display is centered correctly
and unavailable times are clearly marked as such. According to a more
specific embodiment, the entire display computation is done in C++ as
opposed to ASP and a precomputed grid is handled over to the ASP layer
that then simply displays it as HTML.
[0077]As mentioned above, parking time and service duration parameters may
be set at the zone level, the sub-zone level, and even at the customer's
address level. Thus, the parking time may be set high for a particular
sub-zone where parking is scarce, or the service duration for a
particular customer might be set high where, for example, the stop has a
lot of steps. According to a specific embodiment, there are fixed and
variable portions of the service duration parameter. That is, for
example, the service duration is computed based on the number of totes
being delivered to that stop.
[0078]According to a specific embodiment, the module which estimates the
drive time between stops varies the average drive speed used in the
calculation based on the distance between the stops. For example, the
average speed used is higher when the distance between the stops is
greater reflecting the fact that freeways and expressways are more likely
to be used. According to an alternate embodiment, the driving time is
determined with reference to the actual along-road distance.
[0079]According to a specific embodiment, if a van is determined not to
have enough capacity to add the totes (initially assumed to be three
totes) for the new unassigned stop, it is determined whether there is
sufficient time between existing stops to drive back to the station to
"recharge," i.e., pick up the additional totes. If so, and all of the
other parameters fall into place, the window is indicated as available in
the grid.
[0080]According to a specific embodiment, certain delivery windows in the
grid include an indication that a van will be in the user's neighborhood,
e.g., a house icon. Such an indication may be included where, for
example, the drive time between a first existing stop and the new
unassigned stop (or between the new unassigned stop and a second existing
stop) is below a threshold value. Alternatively, such an icon might be
displayed where, for example, the customer already has a delivery
scheduled, or where it is desirable to provide incentives (financial or
otherwise) to select particular windows.
[0081]According to another specific embodiment, certain delivery windows
may be displayed as unavailable, e.g., colored red, even though the
above-described procedure would otherwise display them as available,
e.g., green. This might occur, for example, where the ratio of driving
time to the available slack time exceeds some threshold. Using such a
threshold avoids driving extremely long distances to serve a single stop.
This approach would tend to show delivery windows as available where
additional stops could be accommodated on the way to the new stop.
[0082]The capacity management service in the XP services subsystem runs
periodically and queries the WS database regarding reserved tote
capacity. Trucks depart the DC en route to the stations in "waves." If
the tote capacity for a particular truck is exceeded by the number of
orders, all of the routes corresponding to the vans delivering totes on
that truck are made unavailable for further scheduling by the capacity
management service, i.e., their routes are closed. The capacity
management service also checks against the tote processing capacity of
the DC. Customer service operators have the ability to override closed
routes for preferred customers.
[0083]Customer capacity allocation is a technique by which the system
rations delivery windows. According to a specific embodiment, a routine
runs every night which ranks customers according to shipment frequency
and average order size; the greater the frequency and larger the order
size, the more highly ranked the customer. The routine also ranks the
delivery windows according to how long before their scheduled time the
windows fill up; the earlier filled windows being the more desirable
windows. The system then allocates or reserves specific percentages of
selected ranks of delivery windows to specific percentages of selected
ranks customers. During generation of the delivery window grid, the
customer's ranking is taken into account when determining which delivery
windows to indicate as available. For example, a highly desirable window
might be shown as unavailable to an infrequent customer to ensure that
frequent and high volume customers have the best selection of delivery
windows. However, if the desirable windows are not filled by the more
highly ranked customers at some point before the delivery date (e.g., one
or two days in advance), they are opened up to all customers to ensure
that they are filled.
[0084]While the invention has been particularly shown and described with
reference to specific embodiments thereof, it will be understood by those
skilled in the art that changes in the form and details of the disclosed
embodiments may be made without departing from the spirit or scope of the
invention. For example, the system described above with reference to FIG.
1 is only one system configuration in which the techniques described
herein may be implemented. In addition, the scheduling techniques
described herein may also be used for the scheduling of things other than
deliveries. For example, the scheduling of appointments could be achieved
using the techniques described herein. Therefore, the scope of the
invention should be determined with reference to the appended claims.
* * * * *