This invention relates generally to delivery of items and, more specifically, relates to secure, private market share augmentation with simultaneous operational efficiency improvements for delivery companies on a network.
This section is intended to provide a background or context to the invention disclosed below. The description herein may include concepts that could be pursued, but are not necessarily ones that have been previously conceived, implemented or described. Therefore, unless otherwise explicitly indicated herein, what is described in this section is not prior art to the description in this application and is not admitted to be prior art by inclusion in this section.
The market for delivery of items is growing significantly, expanding beyond the classic parcel delivery companies (such as DHL and FedEx) to home delivery of groceries (Redmart, Amazon Prime, FreshDirect), restaurant take-out food (Grab Food, UberEats, and the like), laundry services (HonestBee), as well as new players in traditional parcel delivery (GogoVan, EasyParcel, and the like). GogoVan allows people to hire a van, and EasyParcel is a logistics service platform that allows people to check for delivery rate from different courier companies and book for delivery online.
Many of these companies are emerging due to the peer-to-peer revolution started by Uber (a service for hiring an on-demand private driver) and AirBnB (a service for renting accommodations from private owners). While some of the above companies use dedicated delivery staff and vehicles, others use part time staff on their own vehicles.
This emergence of many new players has opened up possibilities for cross-company optimization and machine learning, potentially of benefit to all parties. However, due to the highly competitive nature of the industry, traditional methods for sharing data and insights would not be welcomed.
This section is meant to be exemplary and not meant to be limiting.
In an exemplary embodiment, a method comprises accessing by a computer system encrypted graph information corresponding to multiple delivery providers and comprising vehicle routes for the delivery providers. The method includes forming by the computer system a complete graph based on the encrypted graph information, and performing by the computer system an identification of a bottleneck in the complete graph. The method includes sending by the computer system one or more messages to any delivery providers affected by the identified bottleneck to alert the affected delivery providers of the identified bottleneck. An apparatus could comprise one or more memories having computer-readable code thereon and one or more processors. The one or more processors, in response to retrieval and execution of the computer-readable code, could cause the apparatus to perform the operations of the method in this paragraph. In another exemplary embodiment, a computer program product comprises a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a computer system to cause the device to perform the operations of the method in this paragraph.
In a further exemplary embodiment, a method includes sending, by a computer system to another computer system over a network, graph information corresponding to a delivery provider and comprising vehicle routes for the delivery provider. The graph information is either encrypted by the computer system prior to the sending or will be encrypted by the other computer system. The method includes receiving, by the computer system and from the other computer system, one or more messages indicating the delivery provider is affected by an identified bottleneck. The method includes sending by the computer system one or more messages to alert one or more vehicles whose routes are affected by the identified bottleneck. The one or more vehicles are controlled by the delivery provider. An apparatus could comprise one or more memories having computer-readable code thereon and one or more processors. The one or more processors, in response to retrieval and execution of the computer-readable code, could cause the apparatus to perform the operations of the method in this paragraph. In another exemplary embodiment, a computer program product comprises a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a computer system to cause the device to perform the operations of the method in this paragraph.
In a further exemplary embodiment, a method includes accessing by a computer system encrypted graph information corresponding to multiple delivery providers and comprising routes taken by or to be taken by vehicles for the delivery providers. The method includes forming by the computer system a complete graph based on the encrypted graph information, and performing, using the complete graph and by the computer system, an identification of possible market share augmentation for one or more of the delivery providers. The method includes sending one or more messages to the one or more delivery providers to alert the one or more delivery providers of the identified possible market share augmentation. An apparatus could comprise one or more memories having computer-readable code thereon and one or more processors. The one or more processors, in response to retrieval and execution of the computer-readable code, could cause the apparatus to perform the operations of the method in this paragraph. In another exemplary embodiment, a computer program product comprises a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a computer system to cause the device to perform the operations of the method in this paragraph.
The following abbreviations that may be found in the specification and/or the drawing figures are defined as follows:
2HCLI 2-hop cover labeling index
BC blockchain
DP delivery provider
ID identification
MPC multi-party communication
SMC secure multi-party computation
SWHE somewhat homomorphic encryption
TEE trusted execution environment
The table below lists notations that are used in the text and/or figures, and also the meaning of that notation.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments. All of the embodiments described in this Detailed Description are exemplary embodiments provided to enable persons skilled in the art to make or use the invention and not to limit the scope of the invention which is defined by the claims.
As previously described, there has been an emergence of many new players in delivery services, which has opened up possibilities for cross-company optimization and machine learning, potentially of benefit to all parties. However, due to the highly competitive nature of the industry, traditional methods for sharing data and insights would not be welcomed. New approaches are disclosed herein that may be used to create new business and/or improve overall efficiency in this sector.
Improvements using the exemplary embodiments can be divided into operational efficiency and market share augmentation. Operational efficiency concerns the efficiency of each delivery provider and the efficiency of the group of providers as a whole. Market share augmentation involves one delivery provider improving its market share based on information from one or more other providers (or other companies, or the like).
Regarding operational efficiency, operational efficiency suffers when delivery is attempted at a client location but is infeasible, possibly due to lack of parking at the location, or missing the time window due to unforeseen congestion or other obstacles. As each delivery provider consolidates their deliveries to each location during acceptable time windows, the delivery provider does not receive data from their delivery staff that can be leveraged to improve the operational efficiency of the other delivery staff, except on a long-term trend basis. However, other delivery providers have real-time information from their delivery staff as to, for instance, the status of the available parking and reachability of the destination under current conditions. Optimizing the parking and the routing for each delivery provider as a function of all other delivery providers allows for significantly enhanced operational efficiency for all. However, the client delivery data is highly confidential to each company. As such, the methods proposed below ensure no leakage of confidential data to competitors.
Turning to
Each route 110, 120, 130 is a route of deliveries by a different delivery provider 180. For instance, DHL (a package delivery company) may be a delivery provider 180-1, FedEx (Federal Express, another package delivery company) may be delivery provider 180-2, and UberEats (a food delivery service, delivering food from local restaurants) could be delivery provider 180-3. These providers 180 do not share information, but their routes 110, 120, 130, respectively, share the infrastructure (roads, clients, parking, and the like). A part of the route 130 is illustrated by reference 131, and this is the originally planned delivery route. The lightning bolt 140 signifies a perturbation that prevents that link from being used. This perturbation was observed by the (e.g., driver of) the vehicle 190-1, and therefore by DHL 180-1, who suffered likely delays as a result. Similarly, the vehicle 190-3 for UberEats 180-3 would also suffer similar delays.
However, the providers 180 may have real-time information from their delivery staff as to the status of the available parking and reachability of the destination under current conditions. Optimizing the parking and the routing for each delivery company 180 as a function of all other delivery companies 180 allows for significantly enhanced operational efficiency for all. In fact, (secure) information sharing would allow DHL 180-1 and UberEats 180-3 to perform real-time re-routing to avoid the problem at the lightning bolt 140.
This is illustrated by the bottom part 102 of
Regarding market share augmentation, market share and customer data is one of the most valuable by-products of many companies' operations. These data are often leveraged for cross-sell or upsell as well as re-selling data or insights from them to other companies, e.g., from advertisement companies to other types of goods or services. A solution to the operational efficiency problem described with respect to
In order to implement improvements in market share augmentation while maintaining privacy, in an exemplary embodiment, private aggregation by key is performed such that keys include client ID, client location, delivery provider, and also all products purchased for each key value are determined. Additionally, for private set functions, which may be queried by any delivery provider 180, these might include the following: 1) a set of delivery providers used by each client, and the complement of the set (e.g., indicating which delivery providers are not used by each client); 2) a set of products purchased by each client from each delivery provider (e.g., as well as other data regarding the customer's relationship with each of the providers), and complement of this set over other delivery providers (e.g., indicating which products are not purchased from each delivery provider); and/or 3) a set of products purchased by all clients in a neighborhood of each client, and a complement of the set over other clients. That is, for market share augmentation, the products delivered to a client by company A is valuable information for company B, allowing company B to offer up-sell/cross-sell opportunities to the client. A delivery provider 180 might query using these functions and determine whether clients from certain locations could be sold other products. For example, a restaurant delivery service could determine their market share might be improved by advertising in a certain neighborhood. Similarly, a package delivery company wanting to increase market share in certain residential or commercial neighborhoods, which are frequent customers of a competitor delivery company, may choose to offer new customer discounts in such neighborhoods. The products delivered are less relevant for operational efficiency.
Regarding private, secure function evaluation, e.g., for market share augmentation as it concerns information on the products delivered, security of evaluations assumes a minimum number (n) of delivery companies. For instance, n>3, if similar products, larger if different product types are sold. Security here means privacy of the information. If the content being protected is of the same type, then having three companies is enough to not know from which company the product originated. If the products are different, then having the product information is enough to identify the company if n is not large enough. As an illustration, if DHL delivers parcels and UberEats delivers food, then knowing that client i is receiving food, this identifies that the client is an UberEats client. This therefore reduces privacy, and illustrates the desire to have a minimum number of companies. It is noted that this assumes that there is no confidentiality pertaining to the routes themselves.
As illustrated by block 225, blocks 205 through 245 may be performed disbursed (e.g., decentrally) using SMC or centrally, such as in a Trusted Execution Environment (TEE). Any method (e.g., blockchain, Trusted Execution Environment, TEE) may be used for secure storing of encrypted data such as a hash, user tokens, encrypted graphs, and the like. It is also noted that the operations shown are representations of the types of operations that can be performed, but the operations are not limited to these. For instance, blocks 204 and 210 are examples of graph searches (such as for a shortest path) that can be performed on encrypted data, but are not exhaustive in their disclosure and other searches may be performed.
In block 205, the server performs graph search (e.g., per delivery route i) on an encrypted graph, by solving the following problem (see block 210): Given encrypted graph j(i), origin vertex o, destination vertex d, and a constraint a, find a value of a function of interest on path P, such as the shortest distance D(P) or other function, such that a given constraint C(P)<a is satisfied. C(P) is a generic constraint function (could be time taken or any other constraint on path P and a is the limit on that value), C(P)<a. This block does not present all the examples of what kind of constraint functions or functions of interest would be used, but these are merely some possible examples. Block 210 may use protocols for performing constrained shortest path on the encrypted graph using (e.g., SomeWhat Homomorphic Encryption, SWHE, evaluation) private summation and filtering. Note also that the server may perform any required encryption (and corresponding protocols), e.g., so that each delivery provider 180 is guaranteed privacy for his or her own data. Note also that a delivery provider 180 could request the server to perform blocks 205 and 210, e.g., via a request including, e.g., the origin vertex o, destination vertex d, the constraint a, and an indication of a function of interest on path P. Furthermore, depending on implementation, each delivery provider 180 may encrypt any of its own information, including information about its (sub)graph 300-x (where x is 1, 2, or 3 in the examples).
In block 215, the delivery provider 180, j, constructs an encrypted index for G(j(i)) for each delivery route i and submits the encrypted index with a secure token. This submission will be to the (e.g., cloud) server (e.g., or to a blockchain as in
In block 230, the server stores a hash of the secure token and of the encrypted graph in a suitable database on the server. As is known, the hash is a secure way to store the token. Alternatively, the blockchain stores the hash of the secure token and of the encrypted graph. To use this, one gets the hash and the secure token, which will need to be decrypted. In block 235, the server performs secure identification of a bottleneck in the graph by performing repeated queries for each o(j(i)), which is an origin vertex (o) for each delivery provider (j) for each route (i). Identifications of a bottleneck include that the shortest distance path will have changed from what the shortest distance path previously was (e.g., the shortest path will no longer contain the link with the lightning bolt 140 in
Meanwhile, if a bottleneck is identified (block 240=Yes), the flow proceeds to block 245, where the server sends message(s) to reroute vehicle(s) based on the identified inefficiency. This sending is performed securely, e.g., using one or more secure protocols. In an exemplary embodiment, when SMC is used, a blockchain node may be used at a corresponding delivery provider 180, and the blockchain node would send the messages, and thus would be sent by the delivery provider 180. In the alternative embodiment mainly used with respect to
It is noted that each delivery provider 180 could be independently performing the blocks in
Referring to
A server 330 would use techniques such as the TEE in order to provide security of the information stored on the server and communicated to or from the server. One option for the server 330 is to be located on the cloud 380, although other options are possible.
Turning to
In this example, the blockchain (BC) 350 comprises three blockchain nodes 350-1, 350-2, and 350-3, each one at a respective delivery provider 180-1, 180-2, 180-3. Each BC node 350-1, 350-2, and 350-3 is implemented by a corresponding computer system 610-1, 610-2, or 610-3. Each BC node 350-1, 350-2, and 350-3 has its own copy of a database 340-1, 340-2, and 340-3, which should be the same even though they are independently created. Each BC node 350-1, 350-2, and 350-3 would create the entire graph 300-B. Each delivery provider 180-1, 180-2, and 180-3 is shown encrypting (see respective ones of references 311-1, 311-2, and 311-3) its own respective graph 300-1, 300-2, 300-3 (e.g., based on respective routes 110, 120, 130 from
The BC 350 in
However, the blockchain 350 may also be on the cloud 380, as illustrated in
Regardless of implementation, in an exemplary embodiment, each delivery provider 180 independently creates its own part of a graph, and then these are all “spliced” together to create a single large graph. The lat-long (latitude-longitude) identifies the exact location of a vertex. Similarly, e.g., in Singapore where postal codes refer to a building, that can be used. Also, a geo-hash can be used to precisely locate places. This allows the blockchain 350/server 330 to create the overall graph 300.
Decryption is available via the tokens for authorized participants and the authorized functions. Encrypted equality of two values can be performed under homomorphic encryption protocol, so that someone with the token could obtain the result of the equality comparison of the location values.
Secure and private aggregation and set functions for market enhancements are now described. The set of market share enhancements relies on private set intersection. Recall that the set of data is encoded for each delivery provider, j, for each delivery route, i, as G(j(i)). Each G(j(i)) is encrypted as ciphertext, and may be used along with a private and public key and a secret token. The set intersection is performed on the ciphertexts. The result is returned to the delivery provider with a proof of its correctness. The delivery provider validates the proof using the secret token.
Turning to
In block 435, the server 330 performs set functions (such as intersection, complement, union, and the like) for different client tuples for all products v. This may also be requested (e.g., see reference 510 of
S(1,2)=SetIntersect(j(i)1,j(i)2)=k1, k2;
\S(1,2)=>Su:=SetUnion (j(i)1, (j(i)2;
\SetIntersect(j(i)1,j(i)2)=SetUnion(SetIntersect (Su, j(i)1), SetIntersect(Su,(j(i)2)))=k3, k4, k5, k6.
The “\” indicates complement, the underlining indicates the element is a vector, e.g., j(i) is a vector of delivery providers, and S(1,2) is the intersection between sets 1 and 2.
And using S(1,2), the definition is applied to products v in block 435. Similarly, the definition is recursively applied to obtain the overall set intersections for delivery providers and routes 1, . . . n. See block 440, where the set function(s) are recursively applied by the server 330 to obtain, e.g., overall set intersections for all delivery providers and routes. Similarly, this may be performed for the complements and unions. Blocks 435 and 440 may use protocols for performing, e.g., private set function (e.g., intersection) operations (e.g., SWHE, or MPC). In
In block 445 of
As more specific examples, the performance of the set functions in block 435 and the recursive application of the set functions in block 440 could provide one or more of the following for a given delivery provider: identified one or more new potential customers; identified new products or services for the given service provider to promote to existing customers; identified (e.g., and recommended) products and/or complementary services for the given service provider to promote in certain geographic regions. As part of block 455, and as indicated in block 520-1 as results 520, the results 520 could provide one or more of the following:
1—Indication, for a given delivery provider, of identified one or more new potential customers;
2—Indication of identified new products or services for the given service provider to promote to existing customers; or
3—Indication of identified (e.g., and recommended) products and/or complementary services for the given service provider to promote in certain geographic regions.
For instance, the set operations performed by the set functions in blocks 435 and 440 could determine, for a given delivery provider 180, that there are other customers for other delivery providers 180, and therefore the server (or BC) would send (1) indicated above. Similarly, the set operations performed by the set functions in blocks 435 and 440 could determine, for a given delivery provider 180, that there are other products or services provided by other delivery providers 180, and therefore the server (or BC) would send (2) indicated above. Finally, the set operations performed by the set functions in blocks 435 and 440 could determine, for a given delivery provider 180, that there are other products and/or complementary services that are provided by other delivery providers 180 within certain geographical regions (e.g., determined using a complete graph 300-D and corresponding location information), and therefore the server (or BC) would send (3) indicated above.
Turning to
The computer system 610 includes one or more processors 620, one or more memories 625, one or more transceivers 630, one or more network (N/W) interfaces (I/F(s)) 645, and user interface circuitry 665, interconnected through one or more buses 627. Each of the one or more transceivers 630 includes a receiver, Rx, 632 and a transmitter, Tx, 633. The one or more buses 627 may be address, data, and/or control buses, and may include any interconnection mechanism, such as a series of lines on a motherboard or integrated circuit, fiber optics or other optical communication equipment, and the like. The one or more transceivers 630 are connected to one or more antennas 628. The one or more memories 725 include computer program code 623.
The computer system 110 includes a control module 640, comprising one of or both parts 640-1 and/or 640-2. The control module 640 performs the operations described above that are performed by a computer system, e.g., in
The user interface circuitry 665 communicates with one or more user interface elements 605, which may be formed integral with the computer system 610 or be outside the computer system 610 but coupled to the computer system 610. The interface elements 605 include one or more of the following: one or more camera(s); one or more audio device(s) (such as microphone(s), speaker(s), and the like); one or more sensor(s) (such as GPS sensor(s), fingerprint sensor(s), orientation sensor(s), and the like); one or more displays; and/or one or more keyboards. This list is not exhaustive or limiting, and other, different, or fewer elements may be used. A user 601 (a human being in this example) may interact with the computer system 610, e.g., to cause the system 610 to take certain actions. These operations may also be caused by the computer system 610, in combination with actions by the user 601 or without actions by the user 601. The computer system 610 communicates with the other computer system(s) 690 via the one or more wired or wireless networks 697, via one or both of wired link 677 and wireless link 678.
The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.