Transporting items using a distributed multi-agent allocation method
A distributed multi-agent allocation method using task and resource-skill agents optimizes the allocation of items to vehicles and robots, addressing inefficiencies in logistics by reducing resource usage and ensuring real-time delivery optimization.
Patent Information
- Application Number
- JP2024537915
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-12-23
- Filing Date
- 2022-12-21
- Publication Date
- 2025-01-22
AI Technical Summary
The logistics of transporting items between disparate computerized systems, including vehicles and robots, is inefficient and lacks an effective method for allocation and delivery, particularly in heterogeneous environments.
A distributed multi-agent allocation method using a computer-based system that involves task agents and resource-skill agents, employing a simplified bidding process based on the Fisher market clearing task allocation algorithm to optimize the allocation of items to vehicles and robots, reducing computational and memory resources while ensuring real-time convergence.
The method enables efficient, real-time allocation of items to vehicles and robots, minimizing resource usage and costs, and optimizing delivery processes by considering item-specific parameters such as weight, urgency, and environmental requirements.
Smart Images

Figure 2025501580000001_ABST
Abstract
Description
[Technical field]
[0001] cross reference This application claims priority from U.S. Provisional Patent No. 63 / 293,101, filed Dec. 23, 202, which is incorporated herein in its entirety. [Background technology]
[0002] Logistics has become an important aspect of the daily lives of businesses and individuals (customers). Although computing and communications allow people from all over the world to interact at the speed of light, the transportation of goods from businesses to other businesses and from businesses to customers is still largely performed by low-tech ships and vehicles. Moreover, logistics companies must maintain warehouses where the goods are stored before they are delivered.
[0003] The resources, or "computerized systems," that provide the delivery capabilities in these logistics problems are heterogeneous, as they can be one or more types of vehicles, robots, or drones. These heterogeneous vehicles are assigned to transport items from their starting points to their destinations.
[0004] The items to be delivered can also be heterogeneous: they are classified by the capacity required to transport them and by the utility the system derives from the transport. Summary of the Invention [Problem to be solved by the invention]
[0005] There is an increasing need to provide an efficient method for transporting items that can be based on an efficient method for allocating delivery of items between disparate computerized systems.
[0006] The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of this specification, however, the invention, together with its objects, features, and advantages, both as to organization and method of operation, may best be understood by reference to the following detailed description when read in conjunction with the accompanying drawings. [Brief description of the drawings]
[0007] [Figure 1] FIG. 1 illustrates an example of a method. [Diagram 2] FIG. 1 illustrates an example of a method. [Diagram 3] FIG. 1 illustrates an example of a method. [Figure 4] FIG. 1 illustrates an example of a method. [Diagram 5] FIG. 1 illustrates an example of a method. [Figure 6] FIG. 1 illustrates an example of a method. [Figure 7] FIG. 1 illustrates an example of a computerized system, a set of GOP items, and targets. [Figure 8] FIG. 2 illustrates an example of a computerized system, a set of GOP items located on a source. [Figure 9] FIG. 1 illustrates an example of a computerized system and a set of sources hosted by a robot that transports items from a warehouse. [Figure 10] FIG. 2 illustrates an example of a task agent and associated areas. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0008] In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, and components have not been described in detail so as not to obscure the present invention.
[0009] It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or similar elements.
[0010] Because the illustrated embodiments of the invention can, for the most part, be implemented using electronic components and circuits known to those skilled in the art, details have not been described to a greater extent than is deemed necessary above for the sake of understanding and appreciation of the concepts underlying the invention and in order not to obscure or distract from the teachings of the invention.
[0011] References herein to methods should be applied mutatis mutandis to systems capable of performing the methods, and should be applied mutatis mutandis to non-transitory computer readable media storing instructions that, when executed by a computer, result in the performance of the methods.
[0012] References herein to a system should be applied mutatis mutandis to a method that may be performed by the system, and should be applied mutatis mutandis to a non-transitory computer-readable medium storing instructions that, when executed by a computer, result in the performance of the method.
[0013] References to the term "transporting" may apply mutatis mutandis to "shipping" and / or "collecting" and / or "delivering."
[0014] A computerized system is a system including computational resources and memory resources and configured to execute instructions. A computational resource may include one or more processing circuits. A processing circuit may be implemented as a central processing unit (CPU) and / or one or more other integrated circuits, such as an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), a full custom integrated circuit, or a combination of such integrated circuits. A memory resource may include one or more memory units and / or one or more memory banks and / or registers, etc. A computerized system may include one or more integrated circuits and / or one or more systems on a chip and / or one or more printed circuit boards, etc. A computerized system may execute instructions, such as instructions that cause the computerized system to host agents that are task agents or resource skill agents. A computerized system may be a vehicle or may be included in a vehicle. A vehicle is an entity that may transport items. The vehicle may be a ground vehicle, an air vehicle, a surface vehicle, a robot, an autonomous vehicle, a vehicle with driver assistance capabilities, and the like.
[0015] References to transporting a group of items to a target set may apply mutatis mutandis to transporting a group of items from a source set.
[0016] References to a computerized system should apply mutatis mutandis to a vehicle or any other self-propelled or mobile computerized system. For example, where a computerized system is described as carrying an item, the computerized system is deemed to include a propulsion unit and / or motor, as well as a means for transporting one or more items.
[0017] A computer-based method may be provided for performing a task of delivering a group of items (GOI) to a set of targets. The computer-based method is a distributed method that involves performing multiple bidding iterations among a plurality of computerized systems until convergence. Upon convergence, an allocation of items of the GOI among at least some of the plurality of computerized systems is obtained. During the multiple bidding iterations, one of the computerized systems may act as a task agent and the other computerized systems may act as resource-skill agents (RSAs). The task agents may be required to perform more calculations than the RSAs, but in any case, the calculations are relatively simple and do not require extensive computational resources, which may enable even computerized systems with relatively limited computational and memory resources to act as task agents. The RSAs may allocate fewer computational and memory resources to the multiple bidding iterations and may be easier to implement. Multiple bidding iterations also involve the exchange of messages (such as bidding messages or task agent messages with RSA required contributions) that can be extremely compact (e.g., having a size not exceeding 150, 200, 250 bytes), which also dramatically reduces the memory resources used to store such messages, reduces the communication resources required to carry such messages, reduces the costs associated with retransmission of dropped messages, and makes it possible to conduct bidding iterations under strict bandwidth constraints. Task agent messages that signal GOI-related task skills are also compact.
[0018] The simplicity of multiple bidding iterations makes it possible to run the bidding process in real time, e.g., performing each bidding iteration in sub-seconds, sub-five seconds, sub-ten seconds, sub-minutes, etc.
[0019] The bidding process does not evaluate all possible allocations of the computerized system to carrying any of the items, and may utilize a local optimization process, dramatically shortening the bidding process and providing significant savings in computational and memory resources.
[0020] The proposed method may involve allocating task agents to areas containing a set of targets, although the bidding process may be responsive to the GOI as a whole as well as to individual items. The allocation of task agents may be based on one or more parameters of the task agents, such as available computational resources (although the required amount of resources is limited) and / or available memory resources, the location of the computerized agent with respect to the area, whether the task agent has already delivered an item in the area, etc. The allocation of task agents to areas may be determined in a distributed manner (with the participation of at least some of the computerized agents), in a centralized manner, by an entity different from the computerized system that may act as an agent (task agent or RSA), etc.
[0021] The definition of an area may be dynamically determined based on the location of targets that should receive the items, which may change over time. The area may be defined in any manner, such as by clustering and / or grouping targets to provide sets of targets and / or by clustering and / or grouping items to provide different GOIs.
[0022] There may be multiple task agents allocated to different areas and responsive to different GOIs. A single RSA may participate in multiple bidding iterations with more than a single task agent in the same time period. The decision of an RSA to participate in the delivery of an item located in a given area (associated with the giving task agent) may affect the allocation of RSAs of other task agents that are rejected by that RSA.
[0023] The method may utilize at least some portions of the Fisher market clearing task allocation algorithm, although other algorithms may be used.
[0024] The proposed solution is scalable in the sense that the required computational and / or memory resources of the claimed method can be polynomial or quasi-polynomial (quadratic for distributed solvers) in the number of agents and tasks (amounts greater than 2), especially when utilizing at least some parts of the Fisher Market Clearing Task Allocation Algorithm. In practice, several seconds are required to determine the allocation of hundreds of agents and tasks.
[0025] Even when using at least some parts of the Fisher Market Clearing process, the method differs in various aspects from the Fisher Market Clearing process, for example, by allocating task agents per area and by conducting bidding iterations based on one or more GOI parameters as well as single item parameters.
[0026] FIG. 1 illustrates one example of a computer-based method 100 for performing the task of transporting a group of items (GOI) to a set of targets.
[0027] The method 100 may begin with an initialization step 110. The initialization step may include allocating a computerized system to perform the method 100. This computerized system may be referred to as a task agent (TA) computerized system.
[0028] Step 110 may be followed by step 120 of receiving, by the TA computerized system, (i) a request to perform a task, (ii) a GOI-related task skill required to transport a group of items, and (iii) one or more parameters of a task utility function.
[0029] For simplicity of explanation, it is assumed that the items may be initially located at the same location (eg, at the output of a warehouse).
[0030] Step 120 may include receiving information such as the items that need to be transported, the destination of the items, the current location of the items (if not located at the same location), the utility derived from transporting the items (taking into account the importance of the items), the urgency of delivery of the items, the cost for a late delivery, the capabilities required of the vehicles transporting the items, such as the ability to handle a certain weight, the transport vehicles ("last mile vehicles"), their current locations relative to the pickup location, the capabilities, the cost of not having them complete their current assignments, and their current locations.
[0031] Step 120 may be followed by step 130 of associating a Resource Skill Agent (RSA) with each GOI related task skill by a task agent hosted by the computerized system. The RSAs are heterogeneous.
[0032] The TA computerized system may belong to or be a first type of vehicle, and the RSA may belong to or be one or more other types of computerized systems, or alternatively, the TH computerized system may belong to or be of the same type as one of the RSAs.
[0033] The TA computerized system may have more computational and / or memory resources than at least some of the RSAs, or may have the same amount of resources as at least one of the RSAs, or even less than one or more of the RSAs.
[0034] Step 130 may be followed by step 140 of informing the RSA regarding GOI related task skills.
[0035] GOI-related task skills may reflect the overall skills required to carry out the entire task. For example, GOI-related task skills may include at least one of the following: a. Ability to carry items with a total weight that is the combined weight of all items of the GOI. b. Ability to carry items with a total volume that is the combined volume of all items of the GOI. c. Ability to transport items of all types of GOI items. Ability to carry items at an urgency that represents the timing constraints of all items of the GOI. Any GOI urgency decision function can be applied with respect to the timing constraints associated with different items of the GOI, for example a maximum urgency level, or in another example a combination of a timing constraint and the number of items involved in each value of the timing constraint. e. Ability to carry items at a priority level that represents the timing constraints of all items of a GOI. Any GOI priority function can be applied with respect to the timing constraints associated with different items of a GOI, for example the maximum priority level, or in another example a combination of a timing constraint and the number of items involved in each value of the timing constraint.
[0036] Step 140 may be followed by step 150, in which the task agents participate in multiple bidding iterations until a convergence condition is reached. The bidding iterations explore only a portion of all possible task allocations. The bidding iterations may take into account (using a task utility function) the cost of transporting items through each RSA, e.g., fuel consumption, etc.
[0037] Step 150 may include multiple iterations of step 152 participating in a bidding iteration of multiple bidding iterations.
[0038] Step 152 may include: a. receiving 153 a bidding message from the RSA, the bidding message providing information regarding (i) the RSA's proposed contribution to the execution of the task and (ii) an interruption penalty for the RSA for stopping other tasks currently being executed by the RSA; b. determining 155, by the task agent, a requested contribution of the RSA to the execution of the task based on the bidding message and one or more parameters of the task utility function, where at least some of the proposed contributions are calculated by the RSA in response to the RSA's previously requested contribution to the execution of the task. The determining may apply a local optimization process. Local in the sense that it is not exhaustive and does not necessarily cover all possible allocations. c. Step 157 of sending by the computerized system to the RSA the requested contribution of the RSA to the execution of the task. The requested contribution may be sent in a response message. The size of the task agent message may be equal to the size of the bidding message, may be smaller than the bidding message, or may be larger. Even when larger than the bidding message, the response message may be compact, e.g. not exceeding 300, 400 bytes, etc.
[0039] The task agent message (of step 157) may include an RSA benefit (e.g., a payment) to be made to the task agent if the task agent accepts the bid. An RSA negotiating with multiple task agents may prioritize working with the task agent that gives the highest benefit, or the selection of the task agent may be performed in light of other considerations. The task agent may determine the RSA benefit in any manner, for example, by applying a task utility function or any other function, as a percentage of the benefit the task agent will obtain from fulfilling the task.
[0040] During the penultimate bidding iteration (of multiple bidding iterations), a bidding message from the RSA may respond to the RSA's requested contribution from the previous bidding iteration.
[0041] An RSA may participate in bidding iterations with multiple task agents allocated to multiple areas, may choose to work with one of the multiple task agents during any bidding iteration, and may even change its decision between bidding iterations. Thus, the identities and / or number of RSAs participating in one bidding iteration may differ from the identities and / or number of RSAs participating in another bidding iteration.
[0042] The result of the multiple bidding iterations is an allocation of the task to selected computerized systems hosting agents. The selected computerized systems may host an RSA. One of the selected computerized systems may host a task agent.
[0043] Step 150 may be followed by determining whether a TA computerized system is allocated to transport one or more items of the GOI.
[0044] When the answer is yes, step 150 may be followed by step 160 of conveying, by the computerized system, at least one item towards at least one target of the set of targets.
[0045] When the answer is no, the computerized system does not transport any of the GOI's items.
[0046] The task utility function may provide an indication to the transport entity regarding the monetary benefit to be obtained as a result of transporting an item of the GOI. Thus, one or more parameters of the task utility function may include a benefit to be obtained from fulfilling the task and / or an item delivery urgency parameter. It is noted that the task utility function may take into account other benefits, such as reduced emissions.
[0047] GOI related task skills may be related to a GOI and may include, for example, item type carrying ability and / or item weight carrying ability and / or item volume carrying ability.
[0048] The item type may be selected from, for example, fragile items, non-fragile items, items that require certain environmental conditions during transportation of the items, or items that can be transported regardless of environmental conditions. Different types of items may require different transportation conditions.
[0049] A bidding message from a given RSA may be compact. For example, the bidding message may consist essentially of (i) the RSA's expected arrival time at the task delivery location, (ii) one or more RSA item delivery skills, (iii) the RSA's status, and (iv) at least one interruption penalty for the RSA to stop other tasks currently being performed by the RSA. The status may be limited to parameters related to delivering items other than the RSA item delivery skill, such as the status of the battery or the amount of fuel in the tank.
[0050] The at least one interruption penalty comprises a plurality of interruption penalties for stopping the other task at different stages of completion of the other task, The at least one interruption penalty may be determined by a task agent that assigned the other task to the RSA.
[0051] When the method utilizes at least a portion of the distributed solution of the Fisher Market Clearing process, that portion may include performing steps 130, 140 and 150.
[0052] In one example implementation of method 100, the GOI is transported by a computerized system to an area distribution location and then distributed from the area distribution location to a set of targets.
[0053] The TA computerized system may be configured to deliver the GOI to an area delivery location and / or to deliver one or more items of the GOI to one or more targets of the set of targets. Whether the TA computerized system does any of the above depends on the outcome of the bidding iteration.
[0054] The computerized system may belong to or be various types of vehicles: trucks, trains, planes, drones, motorcycles, robots, manned vehicles, unmanned vehicles, etc.
[0055] For example, a GOI may include a group of packages to be delivered from a warehouse to customers in a city. Method 100 may be used to determine the manner in which the packages are provided to the customers. A vehicle may include or be a computerized system that participates in the execution of method 100. One or more of the computerized systems that participate in the execution of method 100 may not belong to a vehicle or may not be a vehicle.
[0056] Packages are loaded onto trucks according to the district in the city where they are designated to be delivered, i.e., two packages addressed to the same district may be loaded onto the same truck. The trucks proceed to (and, if possible, to the center of) the location in the district where the packages they carry are designated to be delivered. Packages are unloaded from the trucks as well as other ground vehicles, such as delivery unmanned aerial vehicles and / or scooters, which carry the packages on the "last mile" to their customer's address. At the same time, packages that need to be returned may be brought onto the truck. When this delivery is complete, the truck returns to the warehouse to unload the returned packages and reload the packages to be delivered. Vehicles, such as drones and scooters, may be reassigned to deliver packages from other trucks. Unloading may be performed by a warehouse computerized system, which may apply a method (such as method 100) for allocating the warehouse computerized system to unload.
[0057] FIG. 2 illustrates one example of a method 200 for performing the task of conveying a group of items (GOI) from a set of sources.
[0058] The method 200 may begin with an initialization step 210. The initialization step may include allocating a computerized system to perform the method 200. This computerized system may be referred to as a Task Agent (TA) computerized system.
[0059] Step 210 may be followed by step 220 of receiving, by the TA computerized system, (i) a request to perform a task, (ii) a GOI-related task skill required to transport a group of items, and (iii) one or more parameters of a task utility function.
[0060] Step 220 may be followed by step 230 of associating a Resource Skill Agent (RSA) with each GOI related task skill by a task agent hosted by the computerized system. The RSAs are heterogeneous.
[0061] The TA computerized system may belong to or be a first type of vehicle, and the RSA may belong to or be one or more other types of computerized systems, or alternatively, the TH computerized system may belong to or be of the same type as one of the RSAs.
[0062] The TA computerized system may have more computational and / or memory resources than at least some of the RSAs, or may have the same amount of resources as at least one of the RSAs, or even less than one or more of the RSAs.
[0063] Step 230 may be followed by step 240 of informing the RSA regarding GOI related task skills.
[0064] GOI-related task skills may reflect the overall skills required to carry out the entire task. For example, GOI-related task skills may include at least one of the following: a. Ability to carry items with a total weight that is the combined weight of all items of the GOI. b. Ability to carry items with a total volume that is the combined volume of all items of the GOI. c. Ability to transport items of all types of GOI items. Ability to carry items at an urgency that represents the timing constraints of all items of the GOI. Any GOI urgency decision function can be applied with respect to the timing constraints associated with different items of the GOI, for example a maximum urgency level, or in another example a combination of a timing constraint and the number of items involved in each value of the timing constraint. e. Ability to carry items at a priority level that represents the timing constraints of all items of a GOI. Any GOI priority function can be applied with respect to the timing constraints associated with different items of a GOI, for example the maximum priority level, or in another example a combination of a timing constraint and the number of items involved in each value of the timing constraint.
[0065] Step 240 may be followed by step 250, in which the task agents participate in multiple bidding iterations until a convergence condition is reached. The bidding iterations explore only a portion of all possible task allocations. The bidding iterations may take into account the cost of transporting items through each RSA, such as fuel consumption.
[0066] Step 250 may include multiple iterations of step 252 participating in a bidding iteration of multiple bidding iterations.
[0067] Step 252 may include: a. receiving 253 a bidding message from the RSA, the bidding message providing information regarding (i) the RSA's proposed contribution to the execution of the task and (ii) an interruption penalty for the RSA for stopping other tasks currently being executed by the RSA; b. determining 255, by the task agent, a requested contribution of the RSA to the execution of the task based on the bidding message and one or more parameters of the task utility function, where at least some of the proposed contributions are calculated by the RSA in response to the RSA's previously requested contribution to the execution of the task. The determining may apply a local optimization process. Local in the sense that it is not exhaustive and does not necessarily cover all possible allocations. c. A step 257 of sending by the computerised system to the RSA the RSA's requested contribution to the performance of the task.
[0068] During the penultimate bidding iteration (of multiple bidding iterations), a bidding message from the RSA may respond to the RSA's requested contribution from the previous bidding iteration.
[0069] An RSA may participate in bidding iterations with multiple task agents allocated to multiple areas, may choose to work with one of the multiple task agents during any bidding iteration, and may even change its decision between bidding iterations. Thus, the identities and / or number of RSAs participating in one bidding iteration may differ from the identities and / or number of RSAs participating in another bidding iteration.
[0070] The result of the multiple bidding iterations is an allocation of the task to selected computerized systems hosting agents. The selected computerized systems may host an RSA. One of the selected computerized systems may host a task agent.
[0071] Step 250 may be followed by determining whether a TA computerized system is allocated to transport one or more items of the GOI.
[0072] When the answer is yes, step 250 may be followed by step 260 of transporting, by the computerized system, at least one item from at least one source of the set of sources.
[0073] When the answer is no, the computerized system does not transport any of the GOI's items.
[0074] The task utility function may provide an indication to the transport entity regarding the monetary benefit to be obtained as a result of transporting an item of the GOI. Thus, one or more parameters of the task utility function may include a benefit to be obtained from fulfilling the task and / or an item delivery urgency parameter. It is noted that the task utility function may take into account other benefits, such as reduced emissions.
[0075] GOI related task skills may be related to a GOI and may include, for example, item type carrying ability and / or item weight carrying ability and / or item volume carrying ability.
[0076] The item type may be selected from, for example, fragile items, non-fragile items, items that require certain environmental conditions during transportation of the items, or items that can be transported regardless of environmental conditions. Different types of items may require different transportation conditions.
[0077] A bidding message from a given RSA may be compact. For example, the bidding message may consist essentially of (i) the RSA's expected arrival time at the task delivery location, (ii) one or more RSA item delivery skills, (iii) the RSA's status, and (iv) at least one interruption penalty for the RSA to stop other tasks currently being performed by the RSA. The status may be limited to parameters related to delivering items other than the RSA item delivery skill, such as the status of the battery or the amount of fuel in the tank.
[0078] The at least one interruption penalty comprises a plurality of interruption penalties for stopping the other task at different stages of completion of the other task, The at least one interruption penalty may be determined by a task agent that assigned the other task to the RSA.
[0079] When the method utilizes at least a portion of the distributed solution of the Fisher Market Clearing process, that portion may include performing steps 230, 240, and 250.
[0080] FIG. 3 illustrates one example of a computer-based method 300 for performing the task of transporting a group of items (GOI) to a set of targets.
[0081] The method 300 may begin with an initialization step 310 .
[0082] Step 310 may include obtaining a group of items (GOI) to be delivered to a set of targets. Delivery of the GOI to the set of targets may be considered a task. The set of items may or may not be defined when step 310 is performed.
[0083] Step 310 may include receiving items to be delivered to a plurality of sets of targets and clustering and / or grouping the items to provide a GOI. The clustering and / or grouping may be responsive to the location of the targets, access information regarding access routes to the targets, type of item, etc. For example, different types of items requiring different delivery conditions may be treated separately from one another.
[0084] Step 310 may include receiving GOIs (already clustered or grouped) to be delivered to a set of targets.
[0085] Step 310 may be followed by step 320 of allocating task agents for each task. There may be a single computerized system per task (per area). Alternatively, a single computerized system may be allocated to perform more than a single task. A task is associated with one or more parameters of a task utility function.
[0086] Step 310 and / or step 320 may be performed in a centralized or distributed manner. It may be performed by the same computerized system that participates in the allocation of agents to each task, or it may be performed by a different computerized system.
[0087] When performed in a distributed manner, one or more computerized systems may participate in the execution of step 310 and at least one computerized system may participate in the execution of step 320 .
[0088] Step 320 may be followed by step 330, which includes performing method 100 by each task agent and for each task assigned to that task agent.
[0089] FIG. 4 illustrates one example of a method 400 for performing the task of conveying a group of items (GOI) from a set of sources.
[0090] The method 400 may begin with an initialization step 410 .
[0091] Step 410 may include obtaining a group of items (GOI) to be delivered from a plurality of sets of sources. The delivery of a GOI from a set of sources may be considered as a task.
[0092] Step 410 may include receiving items to be transported from a plurality of sets of sources and clustering and / or grouping the items to provide the GOI. The clustering and / or grouping may be responsive to location of the sources, access information regarding access routes to the sources, type of item, etc. For example, different types of items requiring different transport conditions may be treated separately from one another.
[0093] Step 410 may include receiving GOIs to be conveyed (already clustered or grouped) from a plurality of sets of sources.
[0094] Step 410 may be followed by step 420 of allocating a task agent for each task. There may be a single computerized system per task (per area). Alternatively, a single computerized system may be allocated to perform more than a single task.
[0095] Step 410 and / or step 420 may be performed in a centralized or distributed manner. It may be performed by the same computerized system that participates in the allocation of agents to each task, or it may be performed by different computerized systems.
[0096] When performed in a distributed manner, one or more computerized systems may participate in the execution of step 410 and at least one computerized system may participate in the execution of step 420 .
[0097] Step 420 may be followed by step 430, which includes performing method 200 by each task agent and for each task assigned to that task agent.
[0098] FIG. 5 illustrates an example method 500 for dynamically allocating and scheduling tasks for delivering a group of items (GOI).
[0099] The method 500 may begin with steps 510 and 520 .
[0100] Step 510 may include obtaining agent information for a task agent and a plurality of resource skill agents (RSAs). Each agent has an agent skill set. The RSAs have an RSA skill set related to transporting items. The task agents have a task agent skill set related to transporting items. The RSAs and task agents may be hosted by a group of computerized systems, some of which are capable of transporting items.
[0101] Step 520 may include obtaining task information regarding a group of items (GOI) to be delivered to a set of targets. A task is associated with one or more parameters of a task utility function.
[0102] Steps 510 and 520 may be followed by a step 530 of assigning multiple subtasks (of the task) to multiple agents in real time. A subtask may involve delivering an item to a target.
[0103] Step 530 may include performing a distributed resolution of the Fisher Market Clearing process without testing all possible combinations of task assignments.
[0104] Step 532 may include associating a resource skill agent (i,s) with each task skill of the task agent.
[0105] Step 534 may include performing multiple bidding iterations until a convergence condition is reached.
[0106] A single bidding iteration may include: (a) Each resource-skill agent (i,s) sends a resource-skill agent bidding message b is Calculate the value of (b) Each resource-skill agent (i,s) sends a resource-skill agent bidding message b is to the task agent. (c) The task agent estimates the relative contribution value x of each associated resource-skill agent (i,s). is Calculate the following: (d) A relative contribution value x is}}} The task agent then sends a bidding message with the value
[0107] During one or more of the multiple bidding iterations, the value of the bid message is r is Based on this, where r is is equal to (late start penalty of resource agent for skill s) * (utility contribution of resource-skill agent using skill s for the task) - (interruption penalty for resource-skill agent i using skill s to work on other tasks).
[0108] Step 534 is x is The method may also include allocating subtasks based on the value of .
[0109] During the first bidding iteration, and for each resource-skill agent (i,s), the resource-skill agent bidding message is is is equal to.
[0110] During the bidding iterations following the first bidding iteration, and for each resource skill agent (i,s), the resource skill agent bidding message is is *r is x received by the resource skill agent (i,s) from the task agent is *r is It is equal to divided by the sum of .
[0111] During each bidding iteration of the task, the task agent bidding message is is The values of b are received by the task agent from all associated resource skill agents. is can be equal to the sum of the values of
[0112] Step 534 may include ranking the tasks assigned to the resource skill agents according to the benefit accruing to the resource skill agent from performing the task by each resource skill agent.
[0113] The profit is r is x is It can be equal to multiplied by
[0114] The allocation of subtasks may include, by each resource skill agent, notifying other resource skill agents assigned to the task with the earliest time that the resource skill agent may begin the task.
[0115] Allocation of subtasks may include defining the task start time of a task as the latest time between the earliest times reported by resources, skills, and agents assigned to the task.
[0116] Generating the schedule may be responsive to task start times for the tasks.
[0117] The utility contribution of a resource-skill agent using skill s for a task may be responsive to the difference between the current agent geographic location and the task geographic location.
[0118] The resource skill agent bidding message sent by the resource skill agent consists of several values and is compact, e.g., may be smaller than 250 bytes.
[0119] Step 530 may be followed by step 540 of performing one or more subtasks to deliver one or more items by one or more computerized systems hosted at least one agent (task agent and / or RSA).
[0120] It is noted that while method 500 involves dynamically allocating and scheduling tasks for delivering a GOI, a multi-tasking method may be provided that may include dynamically allocating and scheduling multiple tasks for delivering multiple GOIs to multiple sets of targets.
[0121] The method 500 may be applied mutatis mutandis to transporting items from a set of sources.
[0122] FIG. 6 illustrates an example method 600 for dynamically allocating and scheduling tasks for delivering a group of items (GOI) to a set of targets.
[0123] The method 600 may begin with steps 610 and 620 .
[0124] Step 610 may include obtaining agent information for a task agent and a plurality of resource skill agents (RSAs). Each agent has an agent skill set. The RSAs have an RSA skill set related to transporting items. The task agents have a task agent skill set related to transporting items. The RSAs and task agents may be hosted by a group of computerized systems, some of which are capable of transporting items.
[0125] Step 620 may include obtaining task information regarding a group of items (GOI) to be delivered to a set of targets. A task is associated with one or more parameters of a task utility function.
[0126] Steps 620 and 630 may be followed by step 630 of assigning multiple subtasks (of the task) to multiple agents in real time. A subtask may involve delivering an item to a target.
[0127] Step 630 may include performing a distributed resolution of the Fisher Market Clearing process without testing all possible combinations of task assignments.
[0128] Step 632 may include associating a resource skill agent (i, s) with each task skill of each task agent (j).
[0129] Step 634 may include performing multiple bidding iterations (for each task) until a convergence condition (for each task) is reached.
[0130] A single bidding iteration may include: a. Each resource-skill agent (i,s) sends a resource-skill agent bidding message b ijs Calculate the value of b. Each resource-skill agent (i,s) sends a resource-skill agent bidding message b ijs to each associated task agent. c. Each task agent (j) estimates the relative contribution value x of each associated resource-skill agent (i,s). ijs Calculate the following: d. The relative contribution value x j by each task agent (j) and to each associated resource-skill agent ijs}}} The task agent then sends a bidding message with the value
[0131] During one or more of the multiple bidding iterations, the value of the bid message is r ijs Based on this, where r ijs is equal to (late start penalty of resource agent for skill s) * (utility contribution of resource skill agent using skill s for task j) - (interruption penalty for resource skill agent i using skill s to work on task j).
[0132] Step 634 is x ijs The method may also include allocating subtasks based on the value of .
[0133] During the first bidding iteration, and for each resource-skill agent (i,s), the resource-skill agent bidding message isijs can be equal to
[0134] During the bidding iterations following the first bidding iteration, and for each resource skill agent (i,s), the resource skill agent bidding message is ijs *r ijs x received by resource skill agent (i,s) from all associated task agents ijs *r ijs It can be equal to divided by the sum of.
[0135] During each bidding iteration, and for each task agent (j), the task agent bidding message is ijs The values of b are received by task agent (j) from all associated resource skill agents. ijs can be equal to the sum of the values of
[0136] Step 634 may include ranking the tasks assigned to the resource skill agents according to the benefit accruing to the resource skill agent from performing the task by each resource skill agent.
[0137] The profit is r ijs x ijs It can be equal to multiplied by
[0138] Allocating subtasks may include, by each resource skill agent, notifying other resource skill agents assigned to the same task of the earliest time the resource skill agent may begin the task.
[0139] Allocating subtasks may include defining a task start time for a task as the latest time between the earliest times reported by resources, skills, and agents assigned to the same task.
[0140] Allocating the subtasks may be responsive to a task start time for each of the multiple tasks.
[0141] The utility contribution of a resource-skill agent using skill s for task j may be responsive to the difference between the agent geographic location and the task geographic location.
[0142] The resource skill agent bidding message sent by the resource skill agent consists of several values and is compact, e.g., may be smaller than 250 bytes.
[0143] A resource skill agent bidding message sent by a resource skill agent may consist of several values, the number of values not exceeding the number of task agents associated with the resource skill agent.
[0144] A task agent bidding message sent by a task agent may consist of several values, the number of values not exceeding the number of resource skill agents associated with the task agent.
[0145] Step 630 may be followed by step 640 of performing one or more subtasks of delivering one or more items by one or more computerized systems hosted at least one of the task agents and / or any of the RSAs.
[0146] The method 600 may be applied mutatis mutandis to transporting items from a set of sources.
[0147] An example of a method for solving a problem related to transporting items using the Fisher Market Clearing Task is presented below.
[0148] The method may include: Model the problem as a multi-vehicle delivery optimization problem. The model may include the following parameters: (i) the packages that need to be transported, the pickup location of the package, the delivery location, the utility derived from transporting the package (taking into account the importance of the item, the urgency of the item's delivery, and the cost of late delivery), the capacity required of the vehicles transporting the package, such as the ability to handle a certain weight, (ii) the transport vehicles ("last mile vehicles"), their current locations relative to the pickup location, the capacity, the cost of not having them complete their current assignment, and their current locations. b. Reduce the model to an input to the Fisher market clearance algorithm. In the classic algorithm, the vehicle represents the "agent." The input to the algorithm is ijs is a matrix of terms, each of which defines the utility that vehicle i will derive from applying capability s to delivery j. c. conducting a bidding process based on the Fisher market clearance algorithm to find a market clearing equilibrium between the vehicle allocation utility values and the corresponding allocation of the delivery allocations, which may include coalitions formed for each of the deliveries. d. Scheduling vehicle actions and coordinating partner actions. Scheduling includes allocating vehicles to subtasks.
[0149] A more detailed example of the method is provided below.
[0150] The method may be performed by one or more computerized systems. The method may include: a. receiving a set of delivery orders, including pickup and delivery locations, package types in each order, package weights and other capacity requirements, and delivery priorities (delivery order utility functions); b. Determining a current location for each delivery vehicle in the fleet, where each delivery vehicle is also associated with a set of capabilities, such as load capacity and speed. c. Conducting an iterative bidding simulation to calculate vehicle allocation utility values from the parameters of the package utility function, as well as late pickup and delivery penalties, delivery interruption penalties, and vehicle contribution functions. d. generating a schedule of the assigned deliveries for each vehicle by ranking the assigned deliveries according to the vehicle assignment utility ranking; e. Reschedule your assigned delivery to accommodate pickup and delivery times. f. transporting (when assigned) one or more items via at least one of one or more computerized systems;
[0151] The vehicle assignment utility ranking for a given delivery assigned to a given vehicle may be equal to the delivery order utility value for the given delivery assigned to the given vehicle divided by the given vehicle's portion of the delivery order.
[0152] The late start penalty may be a function of the difference between the start time of a given delivery and the time notification of the delivery is received by the computing system. The delivery interruption penalty of a vehicle assignment utility may be a function of a predefined interruption penalty factor of the current delivery and the amount of work performed by a given vehicle. The contribution function may be the maximum contribution that a given vehicle provides to the utility of a given delivery, assuming optimal assignment of vehicles to a given delivery.
[0153] Changing the assigned delivery order of the schedule of the at least one vehicle may include applying a distribution process, and the distribution process may include sending a notification of an earliest arrival time for the shared delivery from each of the plurality of vehicles to each of the other plurality of vehicles.
[0154] Each of the multiple vehicles may determine a start time for a shared delivery as the latest of all the earliest times.
[0155] When there is a need to encourage collaboration by vehicles performing certain deliveries, the vehicle allocation utility values may be determined by concave exponential functions, where the exponents of those functions may be greater than 0 and less than 1, and thus the simulated auction will allocate more shared deliveries to the vehicles than if the vehicle allocation utility values were determined by linear functions. The exponents are set according to the need for collaboration on the deliveries.
[0156] Assume a computerized system located in a vehicle, such as a truck, a scooter, and a drone. When there are multiple tasks, the alliance of vehicles participating in each task may include at least one truck that brings the associated packages to an area delivery location, which may be a central location in the area of delivery. A scooter or drone, or both, picks up the packages from the truck and delivers them to the delivery address.
[0157] Note that a vehicle (drone or scooter) may be a member of several alliances, so after delivering a package from one truck in one area, it may deliver a package from another truck in a nearby area. Moreover, when the truck is emptied and returns to the warehouse to be reloaded, the drones and scooters can cooperate with the other trucks and continue the delivery. Battery charging and refilling may be done at specific points near the area of delivery.
[0158] It should be noted that scooters and drones are practical examples for delivery vehicles with different capabilities, and the models and methods are not limited to these types of delivery vehicles.
[0159] More formally, the Package Delivery Problem (PDP) consists of: Central location L(A i ) for M delivery areas-A 1 , A 2 , A i ..., A M . Every area i has k i Pieces of luggage - p i,1 , p i,2 , ..., p i,j , ...,
number
[0160] All luggage i,j has the following: Weight W(p i,j ) and volume (p i,j ) Type (classification) C(p i,j )∈[c 1 ,c l ,...,c C ] Revenue from luggage - R(p i,j ) Importance (urgency)-I(p i,j ) Location
number
number
[0161] Any area i and any type t l has the following required workload: Type T l Total weight of the package from
number
number
number
number
[0162] Packages may be delivered by: k with finite volume V(T) T Tracks:T 1 , T 2 , ...,
number
number
number
[0163] For each area, the derived utility is calculated as the sum of the utilities derived for each of the delivered packages.
number
number
[0164] The utility of a solution σ is the sum of the area utilities:
number
[0165] Variable r ijs may be entries of the R matrix that are the reductions in the utility (explained above) that a vehicle derives from delivering a package. They are calculated by taking into account the urgency of the package delivery, the utility derived from receiving the package, the time the vehicle would take to deliver the package, and the loss of not making another delivery. The term r ijs is capability specific, which is the case for vehicles with multiple capabilities, such as a vehicle that can both pack and deliver packages, or a vehicle with different capacities for different weight loads.
[0166] In yet another example, any of the methods described above may be applied to transporting items within a warehouse. For example, different types of mobile robots may be used to transport items from different locations in the warehouse. The mobile robot or robots may be one or more task agents or one or more areas within the warehouse.
[0167] To improve the picking and packing process in the warehouse, items to be transported can be clustered by area. This clustering process can enable a vehicle to collect several items that are located nearby in the warehouse, even though they may be needed for different orders or even need to be loaded onto different trucks (to be transported outside the warehouse).
[0168] The clustering method makes it possible to reduce the number of collection tasks, avoid vehicle traffic congestion near locations in the warehouse where popular items are stored, and speed up the collection process.
[0169] Clustering can be beneficial, for example, when a picker can pick several items and transport them to a packing area, in which case the goal of the clustering method is to identify items that can be picked together as a single task.
[0170] Clustering can be beneficial, for example, when pickers are limited to a small number of items. In this case, the goal of the clustering method is to identify similar tasks that can be performed by several pickers. Pickers are sent to areas of clusters of picking tasks, and the specific tasks of the pickers are assigned to them when they arrive.
[0171] 7 shows an example of a set of computerized systems, items of a GOP, and targets. FIG. 7 shows an area 750-1 in which a number of targets 752 are located, Q items 740-1 to 740-Q to be delivered to the targets, a task agent 710-1 hosted by a first computerized system 700-1 belonging to a truck 720-1, and an RSA hosted by various computerized systems of various vehicles, including a second computerized system 700-2 of a first motorcycle 721-1, a third computerized system 700-3 of a second motorcycle 721-2, a fourth computerized system 700-4 of a first drone 722-1, a fifth computerized system 700-5 of a second drone 722-2, and a sixth computerized system 700-6 of a first car 723-1. The first computerized system 700-1 may include computational resources such as a processor 701-1 (including one or more processing circuits), memory resources such as a memory unit 702-1, and a communication unit 701-3 for communicating with other computerized systems. Any other computerized system may include computational resources, memory resources, and communication resources.
[0172] FIG. 7 also shows informing messages 731 and 733 sent from the task agent to the RSA, and bidding messages from individual computerized systems, such as 732-2, 732-4, 732-5 and 732-6.
[0173] Figure 8 shows an example of a computerized system, a set of GOP items, and a set of sources. Figure 8 differs from Figure 7 by showing a set of sources 753 instead of a set of targets and having items (740-1 to 740-Q) within the area from which the items should be collected.
[0174] Figure 9 shows multiple robots performing the task of retrieving items of a GOI from an area in a warehouse. The items are represented by stars. The warehouse contains shelves that store the items. In Figure 9, a robot 761 hosts a task agent. Another robot 762 and another drone 763 host RSAs.
[0175] FIG. 9 illustrates the robot 791 as including a computerized system 750-1. The computerized system 750-1 may include computational resources such as a processor 751-1 (including one or more processing circuits), memory resources such as a memory unit 752-1, and a communication unit 751-3 for communicating with other computerized systems. Any other computerized system may include computational resources, memory resources, and communication resources. The memory unit 752-1 is shown as storing task agent messages such as a task agent message 751 informing the RSA regarding GOI-related task skills, bidding messages 752(1) to 752(N1) from N1 RSAs, and a task agent message 753 indicating a requested contribution. The bidding message 752(1) essentially consists of an arrival time, a status, and a penalty for aborting the task. These messages are compact, and a memory unit can store messages related to many bidding iterations without consuming significant memory space. The computational burden of RSA in particular can be so small that it can be run as a background process or by a controller or weak processor.
[0176] Any of the robots, any of the RSAs, and any of the vehicles are mobile using an engine or any other mobility unit.
[0177] FIG. 10 shows an example of task agents TA1 and TA2, a first area 1001 and a second area 1002, and associated areas. The first area 1001 is served by a first task agent TA1 and a first RSA, collectively denoted as 1011. The second area 1002 is served by a second task agent TA2 and a second RSA, collectively denoted as 1012. An RSA may participate in a bidding iteration with more than one task agent. FIG. 1 shows several RSAs participating in a bidding iteration and selecting one of the task agents. Bidding for a task agent by an RSA that has been selected to work with another task agent is denoted as a "failed bid."
[0178] It should be noted that any combination and task agent and / or RSA may be provided. Any combination of steps of any method shown in the specification and / or drawings may be combined, for example, method 200 may be performed to collect GOI from a source and, once collection is completed, method 100 may be performed to deliver the GOI to a set of targets. In yet another example, method 100 may precede method 200.
[0179] The present application provides significant technical improvements over the prior art, particularly in computer science.
[0180] References to the terms "comprising" or "having" should be construed as also referring to "consisting of" or "consisting essentially of." For example, methods that include several steps may each include additional steps, may be limited to several steps, or may include additional steps that do not materially affect the basic and novel characteristics of the method.
[0181] The invention may also be implemented in a computer program for running on a computer system, the computer program comprising at least code portions for performing the steps of a method according to the invention when run on a programmable apparatus such as a computer system, or for enabling the programmable apparatus to perform the functions of a device or system according to the invention. The computer program may cause the storage system to allocate disk drives into disk drive groups.
[0182] A computer program is a listing of instructions, such as a particular application program and / or operating system. A computer program may include, for example, one or more of a subroutine, function, procedure, object method, object implementation, executable application, applet, servlet, source code, object code, shared library / dynamic load library, and / or other sequence of instructions designed for execution on a computer system.
[0183] A computer program may be stored internally in a computer program product, such as a non-transitory computer readable medium. All or a portion of a computer program may be provided on a computer readable medium that is permanently, removably or remotely coupled to an information processing system. A computer readable medium may include, for example, any number of magnetic storage media, including disk and tape storage media, optical storage media, such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media, non-volatile memory storage media, including flash memory, EEPROM, EPROM, ROM, etc., semiconductor-based memory units, ferromagnetic digital memory, MRAM, registers, buffers or caches, main memory, RAM, etc. A computer process generally includes a program or part of a program that is running, current program values and state information, and resources used by the operating system to manage the execution of the process. An operating system (OS) is software that manages the sharing of the computer's resources and provides the programmer with the interface used to access those resources. An operating system processes system data and user input and responds by allocating and managing tasks and internal system resources as services to users and programs of the system. A computer system may, for example, include at least one processing unit, associated memory, and several input / output (I / O) devices. When executing a computer program, the computer system processes information according to the computer program and produces resulting output information via the I / O devices.
[0184] In the foregoing specification, the invention has been described with reference to specific examples of embodiments thereof. It will, however, be apparent that various modifications and changes can be made therein without departing from the broader spirit and scope of the invention as set forth in the appended claims.
[0185] Moreover, terms such as "front," "back," "top," "bottom," "over," "under," and the like in the description and in the claims, if any, are used for descriptive purposes and not necessarily to describe permanent relative positions, and it is to be understood that terms so used are interchangeable under appropriate circumstances such that the embodiments of the invention described herein are capable of operation in other orientations other than those shown or otherwise described herein, for example.
[0186] Those skilled in the art will recognize that the boundaries between logic blocks are merely exemplary, and that alternative embodiments may merge logic blocks or circuit elements, or impose alternate decompositions of functionality on various logic blocks or circuit elements. It should therefore be understood that the architectures illustrated herein are merely exemplary, and that many other architectures may be implemented which achieve substantially the same functionality.
[0187] An arrangement of components to achieve the same functionality is effectively "associated" such that the desired functionality is achieved. Thus, any two components herein that are combined to achieve a particular functionality may be considered to be "associated" with one another such that the desired functionality is achieved, regardless of architecture or intermediary components. Similarly, any two components so associated may also be considered to be "operably connected" or "operably coupled" with one another to achieve the desired functionality.
[0188] Moreover, those skilled in the art will recognize that the boundaries between operations described above are merely exemplary. Multiple operations may be combined into a single operation, a single operation may be distributed among additional operations, and operations may be performed with at least partial overlap in time. Moreover, alternative embodiments may include multiple instances of a particular operation, and the order of operations may be altered in various other embodiments.
[0189] Also for example, in one embodiment the illustrated examples may be implemented as circuits located on a single integrated circuit or within the same device. Alternatively, the examples may be implemented as any number of separate integrated circuits or separate devices interconnected with each other in a suitable manner.
[0190] Also, for example, the instances, or portions thereof, may be implemented as a soft or code representation of a physical circuit, or of a logical representation that can be translated into a physical circuit, such as in any suitable type of hardware description language.
[0191] Furthermore, the present invention is not limited to physical devices or units implemented in non-programmable hardware, but may also be applied to programmable devices or units capable of performing desired device functions by operating in accordance with suitable program code, such as mainframes, minicomputers, servers, workstations, personal computers, notepads, personal digital assistants, electronic games, automotive and other embedded systems, cell phones and various other wireless devices, generally referred to in this application as "computer systems."
[0192] However, other modifications, variations and alternatives are also possible. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
[0193] In the claims, reference signs placed between parentheses shall not be construed as limiting the claims. The word "comprising" does not exclude the presence of elements or steps other than those recited in the claim. Furthermore, the terms "a" or "an" as used herein are defined as one or more than one. Also, the use of introductory phrases such as "at least one" and "one or more" in the claims should not be construed as implying that the introduction of another claim element by the indefinite article "a" or "an" limits a particular claim containing such introduced claim element to an invention containing only one such element, even when the same claim contains the introductory phrase "one or more" or "at least one" and an indefinite article such as "a" or "an". The same applies to the use of definite articles. Unless otherwise stated, terms such as "first" and "second" are used to arbitrarily distinguish between the elements that such terms describe. Thus, these terms are not necessarily intended to indicate a temporal or other priority of such elements. The mere fact that certain measures are recited in mutually different claims does not indicate that a combination of these measures cannot be used to advantage.
[0194] While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art, and it is therefore to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.
Claims
1. 1. A computer-based method for performing a task of transporting a group of items (GOI) to a set of targets, the method comprising: receiving, by a computerized system, (i) a request to perform the task, (ii) a GOI-related task skill required to transport the group of items, and (iii) one or more parameters of a task utility function; associating a resource skill agent (RSA) with each GOI-related task skill by a task agent hosted by the computerized system, the RSA being heterogeneous; Informing the RSA regarding the GOI related task skills; participating, by the task agents, in a number of bidding iterations until a convergence condition is reached, the bidding iterations exploring only a portion of all possible task allocations; conveying, by the computerized system, the at least one item toward the at least one target of the set of targets when the computerized system is assigned during the plurality of bidding iterations to convey the at least one item toward the at least one target of the set of targets; Including, Participating in a bidding iteration of the plurality of bidding iterations comprises: (a) receiving a bidding message from the RSA, the bidding message providing information regarding (i) the RSA's proposed contribution to the execution of the task, and (ii) an interruption penalty for the RSA to stop other tasks currently being executed by the RSA; (b) determining, by the task agent, a requested contribution of the RSA to the execution of the task based on the bidding message and the one or more parameters of the task utility function, where at least some of the proposed contributions are calculated by the RSA in response to a previously requested contribution of the RSA to the execution of the task; (c) sending, by said computerized system and to said RSA, said requested contribution of said RSA to said performance of said task; The computer-based method includes:
2. The method of claim 1 , wherein the one or more parameters of the task utility function comprise at least one of: (i) a profit gained from fulfilling the task; or (ii) an item delivery urgency parameter.
3. The method of claim 2 , wherein the GOI-related task skills comprise at least two of an item type carrying ability, an item weight carrying ability, and an item volume carrying ability.
4. 4. The method of claim 3, wherein the item type is selected from among fragile items, non-fragile items, items that require certain environmental conditions during transportation of the items, or items that can be transported regardless of environmental conditions.
5. The method of claim 1 , wherein the determining comprises applying a local optimization process.
6. 2. The method of claim 1, wherein a bidding message from a given RSA consists essentially of (i) the RSA's expected arrival time at a task delivery location, (ii) one or more RSA item transportation skills, (iii) the RSA's status, and (iv) at least one interruption penalty for the RSA to stop other tasks currently being performed by the RSA.
7. The method of claim 6 , wherein the at least one interruption penalty comprises a plurality of interruption penalties for stopping the other task at different stages of completion of the other task.
8. The method of claim 1 , wherein the size of a bidding message does not exceed 250 bytes.
9. The method of claim 1 , wherein said associating, said informing and said participating form part of a distributed solution to a Fisher Market Clearing process.
10. The method of claim 1 , wherein the computerized system belongs to a first type of vehicle and at least some of the RSAs are of one or more types of vehicles different from the first type.
11. 11. The method of claim 10, wherein the GOI is located within an area, the computerized system is configured to transport the GOI to an area distribution location, and the at least some of the RSAs are configured to distribute different items of the GOI from the area distribution location to the set of targets.
12. 11. The method of claim 10, wherein the GOI is located within an area, another RSA is configured to transport the GOI to an area distribution location, and the computerized system is configured to distribute some of the items of the GOI from the area distribution location to some of a set of targets.
13. The method of claim 1 , wherein the receiving, associating, informing, and participating are performed in real time.
14. 2. The method of claim 1, wherein the use of memory and computational resources of the computerized system during said participating is polynomial or quasi-polynomial in RSA numbers.
15. The method of claim 1 , wherein the GOI comprises different items associated with different item-related parameters, and the GOI-related task skills reflect the different item-related parameters.
16. A vehicle, a computerized system, the computerized system comprising: (i) receiving a request to perform a task to transport a group of items (GOI) to a set of targets; (ii) a GOI-related task skill required to transport said group of items; and (iii) one or more parameters of a task utility function; associating a resource skill agent (RSA) with each GOI-related task skill by a task agent hosted by the computerized system, the RSA being heterogeneous; Informing the RSA regarding the GOI related task skills; participating, by the task agents, in a number of bidding iterations until a convergence condition is reached, the bidding iterations exploring only a portion of all possible task allocations; conveying at least one item toward at least one target among the set of targets when the computerized system is allocated during the plurality of bidding iterations to convey the at least one item toward the at least one target; [0023] Participating in a bidding iteration of the plurality of bidding iterations comprises: (d) receiving a bidding message from the RSA, the bidding message providing information regarding (i) the RSA's proposed contribution to the execution of the task, and (ii) an interruption penalty for the RSA to stop other tasks currently being executed by the RSA; (e) determining, by the task agent, a requested contribution of the RSA to the execution of the task based on the bidding message and the one or more parameters of the task utility function, where at least some of the proposed contributions are calculated by the RSA in response to a previously requested contribution of the RSA to the execution of the task; (f) sending, by said computerized system and to said RSA, said requested contribution of said RSA to said performance of said task; Including, vehicles.
17. 1. A non-transitory computer readable medium for performing a task of transporting a group of items (GOI) to a set of targets, the non-transitory computer readable medium, when executed by a computerized system, causing the computerized system to: (i) receiving a request to perform the task; (ii) a GOI-related task skill required to transport the group of items; and (iii) one or more parameters of a task utility function; associating a resource skill agent (RSA) with each GOI-related task skill by a task agent hosted by the computerized system, the RSA being heterogeneous; Informing the RSA regarding the GOI related task skills; participating, by the task agents, in a number of bidding iterations until a convergence condition is reached, the bidding iterations exploring only a portion of all possible task allocations; conveying at least one item toward at least one target among the set of targets when the computerized system is allocated during the plurality of bidding iterations to convey the at least one item toward the at least one target; storing an instruction to perform the Participating in a bidding iteration of the plurality of bidding iterations comprises: (a) receiving a bidding message from the RSA, the bidding message providing information regarding (i) the RSA's proposed contribution to the execution of the task, and (ii) an interruption penalty for the RSA to stop other tasks currently being executed by the RSA; (b) determining, by the task agent, a requested contribution of the RSA to the execution of the task based on the bidding message and the one or more parameters of the task utility function, where at least some of the proposed contributions are calculated by the RSA in response to a previously requested contribution of the RSA to the execution of the task; (c) sending, by said computerized system and to said RSA, said requested contribution of said RSA to said performance of said task; A non-transitory computer readable medium comprising:
18. 1. A computer-based method for performing a task of transporting a group of items (GOI) from a set of sources, the method comprising: receiving, by a computerized system, (i) a request to perform the task, (ii) a GOI-related task skill required to transport the group of items, and (iii) one or more parameters of a task utility function; associating a resource skill agent (RSA) with each GOI-related task skill by a task agent hosted by the computerized system, the RSA being heterogeneous; Informing the RSA regarding the GOI related task skills; participating, by the task agents, in a number of bidding iterations until a convergence condition is reached, the bidding iterations exploring only a portion of all possible task allocations; conveying, by the computerized system, the at least one item from at least one source of the set of sources when the computerized system is allocated during the plurality of bidding iterations to convey the at least one item from the at least one source; Including, Participating in a bidding iteration of the plurality of bidding iterations comprises: (a) receiving a bidding message from the RSA, the bidding message providing information regarding (i) the RSA's proposed contribution to the execution of the task, and (ii) an interruption penalty for the RSA to stop other tasks currently being executed by the RSA; (b) determining, by the task agent, a requested contribution of the RSA to the execution of the task based on the bidding message and the one or more parameters of the task utility function, where at least some of the proposed contributions are calculated by the RSA in response to a previously requested contribution of the RSA to the execution of the task; (c) sending, by said computerized system and to said RSA, said requested contribution of said RSA to said performance of said task; The computer-based method includes: