Method, system and program for organizing temporary device groups

The method of forming temporary device groups based on feature usage scores addresses the challenge of collaborative computing by optimizing device collaboration and resource sharing, enhancing task resolution capabilities.

JP7597470B2Active Publication Date: 2024-12-10INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2022540931
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-01-08
Filing Date
2020-12-16
Publication Date
2024-12-10
Estimated Expiration
2040-12-16

AI Technical Summary

Technical Problem

Existing technologies struggle to efficiently organize temporary device groups for collaborative computing, particularly in scenarios where individual devices lack the capability to resolve complex tasks independently.

Method used

A computer-implemented method and system for forming temporary device groups by evaluating individual feature usage scores, allowing devices to join or form groups based on shared functionality and data exchange, with thresholds determining group membership and functionality sharing.

Benefits of technology

Enables efficient collaboration among devices, enhancing their capabilities to address complex tasks by leveraging shared resources and functionalities, optimizing performance and resource utilization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007597470000001
    Figure 0007597470000001
  • Figure 0007597470000002
    Figure 0007597470000002
  • Figure 0007597470000003
    Figure 0007597470000003
Patent Text Reader

Abstract

Techniques are provided for organizing temporary device groups for collaborative computing. A list of capabilities of each of a plurality of devices is stored, and a determination is made from the plurality of devices to form a device group including a recipient device, the recipient device performing one of the capabilities. An individual capability usage score is generated, and a request to form the device group is sent to the recipient device in response to the individual capability usage score exceeding a device threshold. In response to receiving an indication of approval to form the device group from the recipient device, the device group is formed for a temporary period of time, and capabilities and data are shared within the device group.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] Embodiments of the present invention relate to organizing temporary device groups for collaborative computing. [Background technology]

[0002] The Internet of Things (IoT) may be described as a group of devices that are connected to the Internet and communicate with each other and / or other parts of the Internet. Each of the devices typically includes electronics and software that enable the device to collect information and communicate information with other devices. For example, a device may include sensors to receive and track information. The device may then share that information with other devices. Summary of the Invention

[0003] According to certain embodiments, a computer-implemented method for organizing a temporary device group for collaborative computing is provided. The computer-implemented method includes the acts of: storing a list of functions for each of a plurality of devices; determining to form a device group including a recipient device from the plurality of devices, the recipient device performing one of the functions; generating an individual function usage score; and transmitting a request to the recipient device in response to the individual function usage score exceeding a device threshold. In response to receiving an indication of approval to form the device group from the recipient device, the device group is formed and functions and data are shared within the device group for a temporary period of time.

[0004] According to another embodiment, a computer program product is provided for organizing a temporary device group for collaborative computing. The computer program product comprises a computer-readable storage medium having program code embodied therein, the program code being executable by at least one processor to perform operations. A list of functions for each of a plurality of devices is stored. A decision is made to form a device group including a recipient device from the plurality of devices, the recipient device performing one of the functions. An individual function usage score is generated. In response to the individual function usage score exceeding a device threshold, a request to form the device group is transmitted to the recipient device. In response to receiving an indication of approval to form the device group from the recipient device, the device group is formed and functions and data are shared within the device group for a temporary period of time.

[0005] According to yet another embodiment, a computer system for organizing temporary device groups for collaborative computing is provided. The computer system includes one or more processors, one or more computer-readable memories, and one or more tangible computer-readable storage devices, and program instructions for performing operations are stored in at least one of the one or more tangible computer-readable storage devices for execution by at least one of the one or more processors via at least one of the one or more memories. A list of functions of each of the plurality of devices is stored. A decision is made to form a device group including a recipient device from the plurality of devices, and the recipient device executes one of the functions. An individual function usage score is generated. In response to the individual function usage score exceeding a device threshold, a request to form the device group is sent to the recipient device. In response to receiving an indication of approval to form the device group from the recipient device, the device group is formed for a temporary period of time, and functions and data are shared within the device group.

[0006] According to one aspect, a computer-implemented method is provided, the computer-implemented method including operations for storing a list of functions for each of a plurality of devices; determining to form a device group including a recipient device from the plurality of devices, where the recipient device performs one of the functions; generating an individual function usage score; in response to the individual function usage score exceeding a device threshold, sending a request to the recipient device to form the device group; and in response to receiving an indication of approval to form the device group from the recipient device, forming the device group for a temporary period of time, where functions and data are shared within the device group.

[0007] According to another aspect, a computer program product is provided, the computer program product comprising a computer readable storage medium having program code embodied therein, the program code being executable by at least one processor to perform operations to: store a list of functions for each of a plurality of devices; determine to form a device group from the plurality of devices including a recipient device, where the recipient device performs one of the functions; generate an individual function usage score; in response to the individual function usage score exceeding a device threshold, sending a request to the recipient device to form the device group; and in response to receiving an indication of approval to form the device group from the recipient device, forming the device group for a temporary period of time, where functions and data are shared within the device group.

[0008] According to another aspect, a computer system is provided comprising one or more processors, one or more computer readable memories, and one or more tangible computer readable storage devices, wherein program instructions are stored in at least one of the one or more tangible computer readable storage devices for execution by at least one of the one or more processors via at least one of the one or more memories to perform operations including storing a list of functions for each of a plurality of devices; determining to form a device group from the plurality of devices including a recipient device, where the recipient device performs one of the functions; generating an individual function usage score; in response to the individual function usage score exceeding a device threshold, sending a request to the recipient device to form the device group; and in response to receiving an indication of approval to form the device group from the recipient device, forming the device group for a temporary period of time, where functions and data are shared within the device group.

[0009] Preferred embodiments of the present invention will now be described, by way of example only, with reference to the following drawings in which: [Brief description of the drawings]

[0010] [Figure 1A] FIG. 1 illustrates, in a block diagram, a computing environment in accordance with certain embodiments. [Figure 1B] FIG. 1 illustrates, in a block diagram, an alternative computing environment including a gateway device according to certain embodiments. [Diagram 2] FIG. 1 illustrates, in block diagram form, an example of device grouping as described in certain embodiments. [Diagram 3] FIG. 13 illustrates, in a block diagram, another example of device grouping as described in certain embodiments. [Figure 4]FIG. 13 illustrates an example of dynamic device group creation as described in certain embodiments. [Diagram 5] FIG. 1 illustrates an example of functional complementation as described in certain embodiments. [Figure 6] FIG. 13 illustrates another example of functional complementation as described in certain embodiments. [Figure 7] FIG. 2 illustrates, in block diagram form, components of a device described in certain embodiments. [Figure 8] FIG. 13 illustrates an example of roles divided by sharing functionality between two device groups, as described in certain embodiments. [Figure 9] FIG. 1 illustrates an example of functionality provision with rewards, as described in certain embodiments. [Figure 10] FIG. 1 illustrates an example of a function optimization as described in certain embodiments. [Figure 11] FIG. 4 illustrates in flow chart form the operation of a switching function as described in certain embodiments. [Figure 12] 4 is a flowchart illustrating operations for creating a device group according to certain embodiments. [Figure 13] 1 is a flowchart illustrating operations for exiting a device group as described in certain embodiments. [Figure 14] 4 is a flowchart illustrating operations for joining an existing device group, as described in certain embodiments. [Figure 15] FIG. 4 illustrates, in a flowchart, operations for determining a configuration of a device, as described in certain embodiments. [Figure 16] FIG. 2 illustrates a computing node according to certain embodiments. [Figure 17] FIG. 1 illustrates a cloud computing environment according to certain embodiments. [Figure 18] FIG. 2 illustrates abstract model layers according to certain embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011] In the drawings, like reference numbers represent like parts throughout.

[0012] The description of various embodiments of the present invention is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many changes and modifications that do not depart from the scope and spirit of the described embodiments will be apparent to those skilled in the art. The terms used in this specification are selected to best explain the principles of the embodiments, practical applications, or technical improvements beyond the technology found in the market, or to enable other skilled in the art to understand the embodiments disclosed herein.

[0013] FIG. 1A illustrates in block diagram form a computing environment described in certain embodiments. The management server 100 is coupled to the devices 150a...150n via a communication path 190 (e.g., the Internet, an intranet, Radio-Frequency Identification (RFID), etc.). In various embodiments, there may be more than one device. The management server 100 includes a global grouping system 110. Each of the devices 150a...150n includes a local grouping system 152a...152n, a local function 154a...154n, and a sensor 156a...156n. The local function 154a...154n of a device represents a function that the device can perform. The sensor 156a...156n receives and tracks information. In other embodiments, the sensor is separate from the device 150a...150n, and the device 150a...150n receives information from the sensor (e.g., a sensor on a building, a traffic light, etc.). The devices 150a...150n may be mobile devices (e.g., in a vehicle). A device 150a...150n that receives a request to provide a function 154a...154n may be referred to as a "recipient" device. A device 150a...150n that sends a request for a function 154a...154n may be referred to as a "sender" device. Any device 150a...150n may be a recipient device, a sender device, or both a recipient device and a sender device. An example of a function 154a...154n in a vehicle is providing camera images from a camera of the surrounding environment. A device 150a...150n that is physically close to another device 150a...150n may be referred to as a neighboring device or a nearby device.

[0014] For any operation performed by a device 150a...150n, it should be understood that the local grouping system 152a...152n of that device 150a...150n performs those operations. For any operation performed by the management server 100, it should be understood that the global grouping system 110 performs those operations.

[0015] 1B illustrates, in block diagram form, an alternative computing environment including a gateway device, as described in certain embodiments. In FIG. 1B, management server 100 is connected to gateway device 180, which is also connected to devices 150a...150n. In an embodiment including gateway device 180, management server 100 and devices 150a...150n communicate with each other via gateway device 180.

[0016] The embodiment allows the creation of temporary complementary device groups. The device groups may be called virtual devices since the device groups may function as a single device. The local grouping system 152a...152n of each device 150a...150n provides, via the communication path 190, to the local grouping system 152a...152n of each of the other devices 150a...150n, a list of functions 154a...154n provided to the other devices 150a...150n and functions 154a...154n that the device 150a...150n would like to be provided by the other devices 150a...150n.

[0017] The local grouping systems 152a...152n of the devices 150a...150n calculate individual feature usage scores to determine whether to join, remain in, and leave a device group. In certain embodiments, a device 150a...150n joins or remains in a device group if its individual feature usage score exceeds a device threshold, and does not join or leave a device group if its individual feature usage score is equal to or less than a device usage threshold.

[0018] In certain embodiments, the individual function usage score of one device 150a...150n takes into account both the increase in efficiency of the one device 150a...150n when using a function of another device 150a...150n ("function usage gain") and the decrease in efficiency of the one device 150a...150n when providing the function to another device 150a...150n ("function usage loss"). In certain embodiments, the local grouping systems 152a...152n of the devices 150a...150n calculate the individual function usage score by summing the uses of the functions. In certain embodiments, the function usage gain includes a positive value or is zero (e.g., indicating minimal gain), while the function usage loss includes a negative value or is zero (e.g., indicating minimal loss). For example, the feature usage gain may be +5 while the feature usage loss may be -3, resulting in an individual feature usage score of +2, which is compared to the device threshold.

[0019] In certain embodiments, a feature usage gain is detected when a particular feature 154a...154n is provided by another device 150a...150n, and a feature usage loss is detected when a particular feature 154a...154n is provided to another device 150a...150n.

[0020] In certain embodiments, the functionality 154a...154n is provided to another device 150a...150n without receiving the functionality 154a...154n from the other device 150a...150n. In other embodiments, the functionality 154a...154n is received from another device 150a...150n without being provided to the other device 150a...150n. In yet other embodiments, the functionality 154a...154n is exchanged between devices 150a...150n.

[0021] In certain embodiments, functions 154a...154n that devices 150a...150n provide to other devices 150a...150n are classified as functions 154a...154n that cause function usage loss because they may have little benefit to the device 150a...150n itself and require additional resources of the device 150a...150n. In certain embodiments, functions 154a...154n provided by other devices 150a...150n are classified as functions 154a...154n that provide function usage benefit because they allow the device 150a...150n to utilize resources for its own workload and help solve problems that the device 150a...150n may not be able to solve independently.

[0022] In certain embodiments, the feature usage gain or feature usage loss value for a feature 154a...154n may be set by the local grouping system 152a...152n of the device 150a...150n providing the feature 154a...154n, may be set by the local grouping system 152a...152n of the device 150a...150n receiving the feature, or may be set based on factors (e.g., quantitative metrics and feature details (e.g., image resolution of onboard cameras, reliability of obstacle perception sensors, capability for platooning, etc.)). In addition, each device 150a...150n may have a different value of the device threshold for that device 150a...150n. Furthermore, the device threshold may be a single value or may be a range.

[0023] The function usage benefit of receiving a function 154a...154n from another device 150a...150n may be expressed as increasing the efficiency of the device 150a...150n, for example, based on utilizing the sensors of the other device 150a...150n, discovering the work savings that result from not using the function 154a...154n of the device 150a...150n itself (i.e., one's own device), and discovering the positive impact that results from diverting excess resources to other functions 154a...154n of the device 150a...150n itself (i.e., one's own device).

[0024] The functionality usage loss of providing a function 154a...154n to another device 150a...150n may be represented as a reduction in the efficiency of the device 150a...150n, based on, for example, a slower speed of the sender device 150a...150 itself, additional burdens resulting from providing the function 154a...154n (e.g., increased power consumption and reduced fuel efficiency of the device 150a...150n itself), and the possibility of providing monetary compensation for providing the function 154a...154n (i.e., a fee is paid for one device 150a...150n to provide the function to another device 150a...150n).

[0025] If the local grouping system 152a...152n of a device 150a...150n determines that an individual feature usage score for a particular feature 154a...154n provided by another device 150a...150n exceeds the device threshold of the sender device 150a...150n, the local grouping system 152a...152n issues a request (e.g., a signal, message, etc.) to create a device group, which is sent to one or more devices 150a...150n.

[0026] If the local grouping system 152a...152n of the recipient device 150a...150n receiving the request to generate a device group determines that the individual feature usage score exceeds the recipient device's 150a...150n's device threshold for joining a device group to provide a particular feature 154a...154n, the local grouping system 152a...152n of the recipient device 150a...150n sends a device group generation approval response (e.g., a signal, message, etc.) back to the local grouping system 152a...152n of the request sender device 150a...150n. This may occur when a recipient device 150a...150n has not received a feature from another device 150a...150n but has an individual feature usage score that still exceeds the device threshold of the recipient device 150a...150n (e.g., the feature usage loss is considered to be a minimum for that device 150a...150n or the value that would be assigned if the feature were still above the device threshold). The sender device 150a...150n and the recipient device 150a...150n then form a device group to function as a single virtual device, and the local grouping systems 152a...152n of each device 150a...150n in the device group coordinate and cooperate by exchanging data (e.g., camera images).

[0027] The local grouping system 152a...152n of the sender device 150a...150n that initiated the creation of a device group may operate as a single virtual device and may iteratively create new device groups including other devices or device groups. In an embodiment, the sum including the individual function usage scores of each device 150a...150n in the device group may be referred to as a collective function usage score of the virtual device formed by the device group.

[0028] Devices 150a...150n that are part of a device group may further join a second device group if doing so does not cause a decrease in the collective feature usage score such that the collective feature usage score falls below a device group threshold (or "collective" threshold).

[0029] An example of device grouping according to certain embodiments is illustrated in block diagram form in Figure 2. In Figure 2, devices 150a and 150b in device group A cooperate with each other, while devices 150b and 150c in device group B cooperate with each other.

[0030] Another example of device grouping as described in certain embodiments is illustrated in block diagram form in Figure 3. In Figure 3, a management server 300 is connected to devices in device group A 310 and devices in device group B 320. Device group A 310 and device group B 320 include a common device 330 that belongs to both device groups.

[0031] In certain embodiments, devices 150a...150n may leave a device group, which triggers a reconfiguration of the device group. The device group operates as a virtual device 150a...150n based on a collective feature usage score, while individual devices 150a...150n within a device group periodically update their individual feature usage scores and leave a device group if the feature usage loss due to remaining in the device group falls below the device threshold for that device 150a...150n. For example, a device 150a...150n may leave a device group if being in the device group results in unacceptable delays in local processing at that device 150a...150n.

[0032] When a particular device 150a...150n leaves the device group, functionality may be reconfigured among the devices 150a...150n remaining in the device group. This reconfiguration may include swapping complementary functionality and may include rearrangement of the devices 150a...150n remaining in the device group (e.g., for devices in a motorcade of vehicles, the vehicles may form a new configuration in which the front vehicle moves to the rear of the motorcade). As a result of the reconfiguration, another device 150a...150n may leave the device group based on its individual feature usage score, or a new device 150a...150n may join the device group based on its individual feature usage score.

[0033] In certain embodiments, the devices 150a...150n and device groups cooperate with the management server 100. The management server 100 may be notified in advance that the candidate devices 150a...150n may join the device group by intentionally detouring (e.g., a device in a vehicle causes the vehicle to detour off the route to join the device group), that the candidate devices 150a...150n may decrease or increase their speed (e.g., a device in a vehicle that is moving faster or slower may join the device group), and that the candidate devices 150a...150n are in standby mode (while in standby mode, the candidate devices 150a...150n wait for another device 150a...150n that can provide the desired functionality to become available (e.g., physically pass by) so that the candidate devices 150a...150n may form a new device group with the other devices 150a...150n). As consideration for the unilateral provision of the functionality, a monetary reward, such as a reduction in tolls or taxes, may be given (eg, may be processed by the management server 100).

[0034] Thus, multiple devices 150a...150n may form temporary device groups to complement features among the devices 150a...150n. In certain embodiments, a device group is terminated when one device 150a...150n remains in the device group due to other devices 150a...150n leaving based on the individual feature usage scores of the devices 150a...150n. In other embodiments, a device group may exist for a determined period of time. A device 150a...150n may leave a device group at any particular time. A device 150a...150n may join one or more device groups. The devices 150a...150n may autonomously form device groups by coordinating with each other without the management server 100. Alternatively, the devices 150a...150n may form device groups in cooperation with the management server 100, with requests to form groups and responses to those requests going through the management server 100.

[0035] In certain embodiments, if the devices 150a...150n are physically far apart, the devices 150a...150n may use the management server 100 to route requests and responses. In such cases, the devices 150a...150n that are physically far apart may not be able to communicate with each other directly. In certain embodiments, if two devices 150a...150n are physically close to each other (e.g., in a neighborhood or vicinity of each other), the devices 150a...150n may communicate requests and responses to form a device group directly to each other or through the management server 100.

[0036] In embodiments where the devices 150a...150n are Internet of Things (IoT) mobile devices (e.g., devices 150a...150n in a vehicle connected to a communication path to communicate), a problem that is difficult to solve by one of the devices 150a...150n, or a problem that is not solved by a single device 150a...150n, may be solved by the device 150a...150n temporarily cooperating with one or more other devices 150a...150n. These other devices 150a...150n may be referred to as neighboring devices.

[0037] For example, an autonomous vehicle includes devices 150a...150n for determining the surrounding environment and controlling the autonomous vehicle. However, the devices 150a...150n in the autonomous vehicle may not be able to obtain information about the surrounding environment in a blind spot at an intersection (e.g., about other cars, pedestrians, cyclists, etc.), or about the situation ahead that is blocked by a tall vehicle in front of the autonomous vehicle. In an embodiment, the autonomous vehicle devices 150a...150n request assistance from the devices 150a...150n of nearby (adjacent) vehicles. The devices 150a...150n of nearby (adjacent) vehicles then provide the autonomous vehicle devices 150a...150n with information about the blind spot or the situation ahead, such that the capabilities of the devices 150a...150n of the autonomous vehicle (e.g., the autonomous vehicle that cannot collect the desired data) are complemented by the capabilities of the devices 150a...150n of nearby (adjacent) vehicles, and the autonomous vehicle devices 150a...150n can continue autonomous operation.

[0038] In many cases, the devices 150a...150n in a vehicle (e.g., individual IoT mobile devices) may operate autonomously and gather information about their destination, their speed of travel, the types of sensors in operation, and the capabilities of the vehicle's available resources. However, embodiments enable the devices 150a...150n to cooperate with other devices 150a...150n for better performance and to obtain information that the devices 150a...150n may not be able to obtain.

[0039] In the case of a convoy of vehicles (e.g., trucks) traveling together, embodiments may implement fixed device groups assuming coordinated operation of the devices 150a...150n of the vehicles in the convoy for the same purpose. In addition, embodiments may enable temporary coordinated operation of the devices 150a...150n when a wide variety of devices 150a...150n are present in a mixed state (e.g., for devices 150a...150n in a vehicle, a mixed state may indicate that the vehicles are traveling at different speeds) while the functions of the devices 150a...150n are complemented without interfering with the purpose of the operation of each of the devices 150a...150n.

[0040] 4 illustrates an example of dynamic device group creation 400 according to certain embodiments. In this example, at block 400, devices from vehicle A and vehicle B form a device group. Then, at block 410, a device from vehicle C joins the device group. Then, at block 420, a device from vehicle D joins the device group. Then, at block 430, a device from vehicle B leaves the device group.

[0041] In this example, the creation of device groups is repeated while the functions are complementary to each other. Dependency on a function of a sender device 150a...150n of a nearby (adjacent) vehicle allows the function of the receiver device 150a...150n to be omitted and excess resources to be moved to other functions of the receiver device 150a...150n. For example, dependency on the perimeter monitoring function of a sender device 150a...150n of another vehicle allows the perimeter monitoring function of the receiver device 150a...150n to be stopped and resources to be used for the communication function of the receiver device 150a...150n's vehicle entertainment system.

[0042] In certain embodiments, the receiver device 150a...150n may partially rely on the capabilities of the sender device 150a...150n, or may fully rely on the capabilities of the sender device 150a...150n. In the case of partial dependency, the receiver device 150a...150n of the vehicle may use some of the capabilities provided by the sender device 150a...150n of the other vehicle (e.g., camera images taken by a nearby vehicle) while continuing to drive autonomously using its own capabilities as well (e.g., using its own camera to generate camera images when visibility is partially obstructed). Meanwhile, the receiver device 150a...150n of the vehicle may fully rely on the capabilities of the sender device 150a...150n of another vehicle (e.g., using the camera images of the sender device 150a...150n of the other vehicle) and follow the other vehicle without detecting the surrounding situation by itself (e.g., without using its own camera).

[0043] In an embodiment, devices 150a...150n may leave a device group based on their individual feature usage scores.

[0044] There may be increased delays due to slower speeds and detouring. For example, if a device 150a...150n of a relatively faster moving vehicle forms a device group that includes a device 150a...150n of a relatively slower moving vehicle, the device 150a...150n of the relatively faster moving vehicle will slow the speed of the relatively faster moving vehicle to the speed of the relatively slower moving vehicle.

[0045] Although devices 150a...150n may derive some benefit from forming a device group, the individual feature usage scores also take into account the disadvantages.

[0046] FIG. 5 illustrates an example of functional complementation as described in certain embodiments. At block 500, vehicle A passes vehicle B. The perimeter monitoring function of the device of vehicle A recognizes that it lacks the ability to obtain data regarding a portion of the environment. The perimeter monitoring function of the device of vehicle B recognizes that it lacks the ability to obtain data regarding a portion of the environment. In light of this, at block 510, the devices of vehicle A and vehicle B form a temporary device group to integrate the perimeter monitoring functions and share data regarding the surrounding environment. Specifically, the device of vehicle A monitors the left side while the device of vehicle B monitors the right side, mutually complementing the perimeter monitoring functions. At block 520, there is an increase in distance between vehicle A and vehicle B, which causes the device group to automatically disband based on the individual feature usage scores.

[0047] FIG. 6 illustrates another example of functional complementation described in certain embodiments. In block 600, vehicle A, vehicle B, and a bicycle are approaching an intersection with poor visibility (houses making it difficult for vehicle A to see the bicycle). In block 610, the device of vehicle A and the device of vehicle B form a device group via the management server 100, which knows that the intersection has poor visibility and, by continuously monitoring the vehicle's location, knows that the two vehicles are approaching this area and notifies vehicle A and vehicle B that the formation of a device group may provide complementary functionality. In this case, the device of vehicle A has not yet detected the bicycle in its blind spot, but the device of vehicle B detects the bicycle by its camera. In block 620, vehicle A avoids a collision with the bicycle because the device of vehicle A has received information about the bicycle from the device of vehicle B. The sharing of data between the devices in the device group also prevents vehicle A and vehicle B from colliding with each other.

[0048] FIG. 7 illustrates in block diagram form the components of the devices described in certain embodiments. In FIG. 7, a management server 700 is connected to a device group including device 710 and device 750. There may be additional devices in the device group, and each of the devices may include the same or different units as those shown in devices 710 and 750. Also, exemplary units are shown in devices 710 and 750. In other embodiments, there may be other units that include fewer units or different combinations of units. Also, each of devices 710, 750 may include shared functionality in addition to data obtained via sub-devices. The units of devices that function together may be represented as a local grouping system 152a...152n.

[0049] The sub-devices of the devices 710 and 750 may include sensors, actuators, cameras, etc. The data processing unit of the device 710 processes sensor data from the sensors, instructs the device control unit to control the actuators, and transmits the processing results to the management server 700 via the data transmission unit according to a predetermined processing procedure. The data processing unit of the device 750 receives data from the sub-devices and transmits the data to the device 710.

[0050] The capability information exchange units of the devices 710, 750 exchange information about capabilities provided by the devices and capabilities that are desirable to be provided by other devices.

[0051] The group management unit of the device 710 sends, via the group generation request sending unit of the device 710, a group generation request to other devices for the functions determined by the data processing unit (e.g., according to surrounding conditions) or the types of functions provided by other devices.

[0052] When the group generation request receiving unit of the device 750 receives the group generation request, the group management unit of the device 750 judges whether to join the device group. If approval is granted, an approval response is sent to the group generation approval receiving unit of the device 710 via the group generation approval sending unit of the device 750.

[0053] The group management units of both devices 710, 750 instruct the lower-level data processing functions to perform functional complementation between devices in the device group (e.g., sending and receiving data and sharing data processing results), thereby performing mutual functional complementation via the intra-group data receiving unit, intra-group data transmitting unit, processing result receiving unit, processing request transmitting unit, processing result transmitting unit, and processing request receiving unit.

[0054] The group management units of the devices 710, 750 further send an exit notification to the device group via a group exit notification sending unit (eg, according to the need depending on the change in the surrounding situation).

[0055] When a device leaves or joins a device group, if a change in the configuration of the functional complementarity between the devices 710, 750 is required, a change in the configuration of another device in the device group is requested via a configuration change request sending unit.

[0056] In a particular embodiment, the management server 700 may notify a particular device of the approaching status of a device group entry candidate device. In addition, the management server 700 may relay a group creation request sent to the device group entry candidate device according to the approaching status. The management server 700 may reward the device owner with a monetary reward for providing functionality to another device.

[0057] FIG. 8 illustrates an example 800 of roles divided by sharing functions, as described in certain embodiments. In FIG. 8, device group 1 includes vehicle A, vehicle B, and vehicle C, forming a convoy moving at high speed. Vehicle A is moving autonomously using a forward monitoring function. Vehicles B and C follow vehicle A ahead without monitoring ahead, but the devices of vehicles B and C obtain data from the forward monitoring function of the device of vehicle A. The devices of vehicles B and C share the results of side and rear monitoring with the device of vehicle A.

[0058] In FIG. 8, device group 2 includes a slow vehicle D, a slow vehicle E, and a fast vehicle F. Vehicle D is moving autonomously using a forward looking function. Vehicles E and F follow vehicle D ahead without looking ahead, but the devices of vehicles E and F obtain data from the forward looking function of the device of vehicle D. Also, the devices of vehicles E and F share the results of side and rear looking with the device of vehicle D.

[0059] In this example, integration and separation trigger changes in configuration: when a vehicle in device group 1 approaches and passes a vehicle in device group 2, the devices in the vehicle in device group 1 temporarily belong to the same device group as the devices in the vehicle in device group 2, and these devices share the perimeter monitoring function.

[0060] If vehicles A, B, and C move away from vehicles D, E, and F due to speed differences, vehicles A, B, and C and vehicles D, E, and F will be separated back into device groups 1 and 2, respectively.

[0061] A fast vehicle F may exit device group 2 formed by other slow vehicles D and E, and then vehicle F may join device group 1 formed by fast vehicles A, B, and C.

[0062] Each time a device leaves or joins a device group, the roles of individual devices may be re-arranged.

[0063] FIG. 9 illustrates an example 900 of reward-linked functionality provisioning for devices in a device group 900, according to certain embodiments. In this example, a device in vehicle A requests a lead vehicle in a moving convoy from a management server 900. The management server 900 may inform vehicle A of an estimated approach time of a vehicle that can take the lead. The management server 900 may also inform device vehicle B of the request. Vehicle B detouring to a location where the device in vehicle B joins with the device in vehicle A according to the request made by the device in vehicle A.

[0064] After the device in vehicle B joins with the device in vehicle A, the device in vehicle B provides data to the device in vehicle A while vehicles A and B are traveling in the convoy.

[0065] In this example, vehicle A cannot drive at high speeds (e.g., due to a problem with its autonomous driving capabilities). Also in this example, vehicle B is a high-speed vehicle that has autonomous driving capabilities as well as the ability to lead other vehicles. In this example, vehicle A forms a device group that includes vehicle B.

[0066] In certain embodiments, a reward may be given to vehicle B. For example, vehicle B may be offered a discount on tolls, a reduction in road taxes, etc., in return for taking the lead.

[0067] In addition, a dedicated lead vehicle may be run at all times as a public service (eg, a pacemaker vehicle).

[0068] 10 illustrates an example 1000 of performance optimization as described in certain embodiments, in which the configuration and layout of individual devices are dynamically determined to optimize the performance of an entire group of devices.

[0069] The embodiments provide an effective convoy moving with vehicular devices communicating and cooperating to form a particular configuration. A leading vehicle with high performance is placed at the front of the convoy. A trailing vehicle with low performance is placed in an intermediate position. A vehicle scheduled to leave midway is placed in the passing lane. Furthermore, the configuration and layout may be dynamically changed whenever a vehicular device leaves or joins a device group.

[0070] The embodiments also enable energy saving by having the devices of the vehicles communicate and cooperate to form an energy saving configuration. Taking into account the shape of the vehicles, a vehicle arrangement shape with low aerodynamic resistance is selected. For example, a taller vehicle is arranged as a lead vehicle to act as a windbreak. Vehicles that are disadvantaged may be compensated (e.g., the lead vehicle is used as a windbreak).

[0071] 11 illustrates in a flow chart the operation of the exchange feature described in certain embodiments. Control begins at block 1100 with each device 150a...150n sending a list of offered features and a list of desired features to each other device 150a...150n. At block 1102, each device 150a...150n receives a list of features from each other device 150a...150n and stores each list. In certain embodiments, each of the devices 150a...150n sends a list of features to the management server 100, which distributes the list of features to each of the other devices 150a...150n.

[0072] FIG. 12 illustrates in a flow chart the operations for creating a device group, according to certain embodiments. After two devices 150a...150n form a device group, processing may continue to add more devices 150a...150n or other device groups to the created device group. Control begins at block 1200, where a sender device 150a...150n generates an individual feature usage score. At block 1202, the sender device 150a...150n determines whether the individual feature usage score exceeds a first device threshold. If so, processing proceeds to block 1204; if not, processing is complete.

[0073] At block 1204, the sender device 150a...150n sends a request to the recipient device 150a...150n to form a device group. The recipient device 150a...150n may be selected based on the features the recipient device 150a...150n can provide and the features the sender device 150a...150n wants to use. At block 1206, the recipient device 150a...150n receives the request. At block 1208, the recipient device 150a...150n generates an individual feature usage score.

[0074] At block 1210, the recipient devices 150a...150n determine whether the individual feature usage scores exceed a second device threshold. If so, processing continues at block 1212; if not, processing continues at block 1216. In certain embodiments, the device threshold may be device specific. In certain embodiments, the first device threshold and the second device threshold are the same value, while in other embodiments, the first device threshold and the second device threshold are different values.

[0075] At block 1212, the recipient device 150a...150n sends a response acknowledging the creation of the device group. At block 1214, a device group is created that includes the sending device 150a...150n and the recipient device 150a...150n, and the sending device 150a...150n and the recipient device 150a...150n share functions and data generated by the functions.

[0076] At block 1216, the recipient device 150a...150n sends a response denying the creation of the device group and the device group is not created.

[0077] In certain embodiments, the sender device 150a...150n sends a request to the management server 100, which forwards the request to the recipient device 150a...150n. In certain embodiments, the recipient device 150a...150n sends a response to the management server 100, which forwards the response to the sender device 150a...150n.

[0078] 13 is a flow chart illustrating operations for exiting a device group, according to certain embodiments. Control begins at block 1300, where devices 150a...150n in a device group determine their individual feature usage scores. This determination may be performed periodically. At block 1302, the devices 150a...150n determine whether their individual feature usage scores exceed a device threshold. If so, processing continues at block 1304; if not, processing continues at block 1306.

[0079] At block 1304, the device 150a...150n decides to remain in the device group. At block 1306, the device 150a...150n leaves the device group.

[0080] 14 is a flow chart illustrating operations for joining an existing device group, according to certain embodiments. Control begins at block 1400 where a device 150a...150n considering joining a device group determines its individual feature usage score. At block 1402, the device 150a...150n determines whether its individual feature usage score exceeds a device threshold. If so, processing continues at block 1404; if not, processing continues at block 1406.

[0081] At block 1404, the device 150a...150n joins the device group. At block 1406, the device 150a...150n determines not to join the device group.

[0082] 15 illustrates in a flow chart the operations for determining the configuration of devices 150a...150n, according to certain embodiments. Control begins at block 1500, where either devices 150a...150n or management server 100 identify the configuration of devices 150a...150n. At block 1502, either devices 150a...150n or management server 100 communicate the configuration to devices 150a...150n, which migrate to form the configuration.

[0083] The devices 150a...150n forming a device group may be connected or autonomous vehicles, drones or other moving entities.

[0084] In certain embodiments, the embodiments are applicable to edge computing (including processing of data near the edge of the network), fog computing (using edge devices to perform computation, storage, and communication), or pervasive computing (facilitating the efficient running of IoT services and applications at the network edge).

[0085] Certain embodiments are directed to creating device groups by multiple mobile devices 150a...150n exchanging via a communication unit functions that the multiple mobile devices 150a...150n may provide to other devices 150a...150n and functions that are desirable to be provided by other devices 150a...150n. Each mobile device 150a...150n calculates an individual function usage score (based on energy, time, or reward) when a particular function is provided to the individual mobile device 150a...150n by another device 150a...150n (e.g., due to a change in obtaining data about the surrounding environment) and when the individual mobile device 150a...150n provides a particular function to another device 150a...150n. If a device 150a...150n determines based on its individual feature usage score that it would benefit from a particular feature offered by the neighboring device 150a...150n, it may send a request to the neighboring device 150a...150n to create a device group. If the neighboring device 150a...150n determines based on its own individual feature usage score that it would benefit from joining the device group, it may send back a response approving the creation of the device group.

[0086] In certain embodiments, a collective feature usage score is calculated for the created device group as if it were one virtual device.

[0087] Individual devices 150a...150n within a device group may recalculate their individual feature usage scores at specific intervals and may exit the device group based on their individual feature usage scores falling below a device threshold.

[0088] Additionally, the devices 150a...150n may communicate with the management server 100 to receive information about other devices 150a...150n, such as information about approaching vehicle candidate devices 150a...150n that may join the device group.

[0089] FIG. 16 illustrates a computing environment 1610 in accordance with certain embodiments. In certain embodiments, the computing environment is a cloud computing environment. With reference to FIG. 16, computer node 1612 is only one example of a suitable computing node and is not intended to suggest any limitation as to the scope of use or functionality of the embodiments of the invention described herein. In any event, computer node 1612 may implement and / or perform any of the functions described above.

[0090] Computer node 1612 may be a computer system capable of operating in numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, or configurations, or combinations thereof, suitable for use with computer node 1612 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, microprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, microcomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of these systems or devices.

[0091] The computer node 1612 may be described in the general context of computer system executable instructions, such as program modules being executed by the computer system. Typically, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer node 1612 may be practiced in a distributed cloud computing environment where tasks are performed by remote processing devices linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.

[0092] 16, computer node 1612 is shown in the form of a general purpose computing device. Components of computer node 1612 may include, but are not limited to, one or more processors or processing units 1616, a system memory 1628, and a bus 1618 that couples various system components including the system memory 1628 to the one or more processors or processing units 1616.

[0093] Bus 1618 may represent one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures, including, by way of example only, an Industry Standard Architecture (ISA) bus, a MicroChannel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus.

[0094] Computer node 1612 typically includes a variety of computer system readable media. Such media can be any available media that can be accessed by computer node 1612 and includes both volatile and nonvolatile media, removable and non-removable media.

[0095] The system memory 1628 may include computer system readable media in the form of volatile memory, such as random access memory (RAM) 1630 and / or cache memory 1632. The computer node 1612 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, a storage system 1634 may be provided for reading from and writing to a non-removable, non-volatile magnetic medium (not shown, and typically referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive may be provided for reading from and writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical medium. In such an example, each may be connected to the bus 1618 by one or more data media interfaces. As shown and described in detail below, the system memory 1628 may include at least one program product comprising a series of (e.g., at least one) program modules configured to perform the functions of an embodiment of the present invention.

[0096] For example, programs / utilities 1640 including a set of (at least one) program modules 1642 may be stored in system memory 1628, including, but not limited to, an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or a combination thereof, may include an implementation of a network environment. The program modules 1642 typically perform the functions and / or methods of embodiments of the present invention described herein.

[0097] The computer node 1612 may also communicate with one or more external devices 1614, such as a keyboard, pointing device, display 1624, one or more devices that allow a user to interact with the computer node 1612, or any device that allows the computer node 1612 to communicate with one or more other computing devices (e.g., network cards, modems, etc.), or combinations thereof. Such communication may occur via an input / output (I / O) interface 1622. Additionally, the computer node 1612 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), or a public network (e.g., the Internet), or combinations thereof, via a network adapter 1620. As shown in the figure, the network adapter 1620 communicates with other components of the computer node 1612 via a bus 1618. It should be understood that other hardware and / or software components, not shown, may be used with the computer node 1612. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.

[0098] In certain embodiments, the management server 100 and / or each of the devices 150a...150n have an architecture of computer nodes 1612. In certain embodiments, the management server 100 and / or each of the devices 150a...150n are part of a cloud infrastructure. In certain alternative embodiments, the management server 100 and / or each of the devices 150a...150n are not part of a cloud infrastructure.

[0099] Cloud implementation Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings presented herein is not limited to a cloud computing environment. Rather, embodiments of the invention may be implemented in conjunction with any other type of computing environment now known or later developed.

[0100] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computational resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) and for rapidly provisioning and releasing these resources with minimal administrative effort or interaction with a service provider. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0101] The features are as follows: On-Demand Self-Service: Cloud customers can automatically provision server time, network storage, and other computing power as they need it, without any unilateral, human interaction with the service provider. Broad network access: Cloud capabilities are available over the network and can be accessed using standard mechanisms, facilitating usage by heterogeneous thin- or thick-client platforms (e.g., mobile phones, laptops, and PDAs). Resource Pool: The provider's computing resources are pooled and offered to multiple consumers using a multi-tenant model. Different physical and virtual resources are dynamically allocated and reallocated according to demand. There is a location-independent sense, consumers usually have no control or knowledge regarding the exact location of the resources offered, although at a higher level of abstraction they may be able to specify a location (e.g. country, state, or data center). Rapid Elasticity: Cloud capacity can be provisioned quickly and elastically, in some cases automatically, to scale out quickly, and quickly released to scale in quickly. Capacity available for provisioning often appears to consumers as unlimited, available for purchase in any amount at any time. Metered Services: Cloud systems leverage metering to automatically control and optimize resource usage at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services utilized.

[0102] The service model is as follows: SaaS (Software as a Service): The capability provided to the consumer is the use of the provider's applications running on a cloud infrastructure. Those applications can be accessed from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or individual application functionality, except for the possibility of limited user-specific application configuration settings. PaaS (Platform as a Service): The capability provided to a consumer is to deploy applications that the consumer creates or acquires, written using programming languages ​​and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the configuration of the application hosting environment. Infrastructure as a Service (IaaS): The capability provided to a consumer is the provisioning of processing, storage, network, and other basic computing resources over which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating systems, storage, and deployed applications, and in some cases has limited control over selected network components (e.g., host firewalls).

[0103] The deployment model is as follows: Private Cloud: This cloud infrastructure is operated solely for one organization. It can be managed by this organization or a third party and can exist on-premise or off-premise. Community Cloud: This cloud infrastructure is shared by multiple organizations to support a specific community with shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It can be managed by these organizations or a third party and can reside on-premise or off-premise. Public Cloud: This cloud infrastructure is available for use by general users or large industry organizations and is owned by an organization that sells cloud services. Hybrid cloud: This cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain unique but are bound together by standardized or proprietary technologies that allow for the portability of data and applications (e.g., cloud bursting to balance the load between clouds).

[0104] A cloud computing environment is a service-oriented environment with an emphasis on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that contains a network of interconnected nodes.

[0105] 17, an exemplary cloud computing environment 1720 is illustrated. As illustrated, the cloud computing environment 1720 includes one or more cloud computing nodes 1710 with which local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or cell phone 1754A, a desktop computer 1754B, a laptop computer 1754C, or an automobile computer system 1754N, or combinations thereof, may communicate. The nodes 1710 may communicate with each other. The nodes 1710 may be physically or virtually grouped together in one or more networks (not shown), such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as previously described herein. This allows the cloud computing environment 1720 to provide an infrastructure, platform, and / or SaaS that does not require the cloud consumer to maintain resources on a local computing device. The types of computing devices 1754A-N shown in FIG. 17 are intended as examples only, and it will be understood that the computing node 1710 and cloud computing environment 1720 can communicate with any type of computer-controlled device via any type of network and / or network-addressable connection (e.g., a connection using a web browser).

[0106] Referring now to Figure 18, there is shown a set of functional abstraction layers provided by cloud computing environment 1720 (Figure 17). It should be understood in advance that the components, layers, and functions shown in Figure 18 are intended to be illustrative only and that embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0107] The hardware and software layer 1860 includes hardware and software components. Examples of hardware components include mainframes 1861, Reduced Instruction Set Computer (RISC) architecture based servers 1862, servers 1863, blade servers 1864, storage devices 1865, and networks and network components 1866. In some embodiments, the software components include network application server software 1867 and database software 1868.

[0108] The virtualization layer 1870 comprises an abstraction layer that can provide virtual entities such as virtual servers 1871 , virtual storage 1872 , virtual networks including virtual private networks 1873 , virtual applications and operating systems 1874 , and virtual clients 1875 .

[0109] As an example, the management layer 1880 may provide the following functions: Resource provisioning 1881 dynamically procures computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 1882 tracks costs as resources are utilized within the cloud computing environment and generates and sends bills for the utilization of those resources. As an example, those resources may include application software licenses. Security verifies identity of cloud users and tasks, and protects data and other resources. User portal 1883 provides users and system administrators with access to the cloud computing environment. Service level management 1884 allocates and manages cloud computing resources to meet required service levels. Service level agreement (SLA) planning and execution 1885 pre-provisions and procures cloud computing resources in anticipation of upcoming demands and in accordance with SLAs.

[0110] The Workload Layer 1890 illustrates examples of functionality available in a cloud computing environment. Examples of workloads and functionality provided by this layer include mapping and navigation 1891, software development and lifecycle management 1892, virtual classroom instructional delivery 1893, data analytics processing 1894, transaction processing 1895, and organization of temporary device groups for collaborative computing 1896.

[0111] Thus, in certain embodiments, software or programs implementing the organization of temporary device groups for collaborative computing, in accordance with embodiments described herein, are provided as a service in a cloud environment.

[0112] Additional embodiment details The present invention may be a system, method, or computer program product, or any combination thereof, at any possible level of technical detail of integration. The computer program product may include a computer readable storage medium including computer readable program instructions for causing a processor to perform aspects of the present invention.

[0113] A computer readable storage medium may be a tangible device that can hold 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 thereof. A non-exhaustive list of more specific examples of computer readable storage media includes portable floppy disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves in which the instructions are recorded, and any suitable combination of these. As used herein, a computer-readable storage medium should not itself be construed as a transitory signal, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or an electrical signal transmitted over a wire.

[0114] The computer readable program instructions described herein may be downloaded from a computer readable storage medium to each computing device / processing device or to an external computer or external storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. This network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface within each computing device / processing device receives the computer readable program instructions from the network and transfers the computer readable program instructions for storage on a computer readable storage medium within each computing device / processing device.

[0115] The computer readable program instructions for carrying out the 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, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk®, C++, and 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, partially on the user's computer as a standalone software package, partially on the user's computer and on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or wide area network (WAN), or the connection may be made to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, to carry out aspects of the invention, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer readable program instructions to customize the electronic circuitry by utilizing state information of the computer readable program instructions.

[0116] 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, are implemented by computer readable program instructions.

[0117] These computer readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, produce means for performing the functions / operations specified in the blocks of the flowcharts and / or block diagrams. These computer readable program instructions may be stored on a computer readable storage medium and capable of directing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer readable storage medium on which the instructions are stored comprises an article of manufacture containing instructions for performing aspects of the functions / operations specified in the blocks of the flowcharts and / or block diagrams.

[0118] Computer readable program instructions may be loaded into a computer, other programmable data processing apparatus, or other device such that the instructions, which execute on the computer, other programmable apparatus, or other device, perform the functions / acts specified in the blocks of the flowcharts and / or block diagrams, thereby causing a series of operable steps to be performed on the computer, other programmable apparatus, or other device to generate a computer-implemented process.

[0119] The flowcharts 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 diagram may represent a module, segment, or portion of instructions, comprising one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions shown in the blocks may occur in a different order than the order shown in the figures. For example, two blocks shown in succession may in fact be executed simultaneously as one step, or may be executed substantially simultaneously in a partially or fully overlapping manner in time, or may be executed in reverse order, depending on the functionality involved. It is also noted that each block in the block diagrams and / or flowchart illustrations, as well as combinations of blocks included in the block diagrams and / or flowchart illustrations, may be implemented by a dedicated hardware-based system that performs the specified functions or operations or executes a combination of dedicated hardware and computer instructions.

[0120] The terms "an embodiment," "embodiment," "embodiments," "the embodiment," "the embodiment," "one or more embodiments," "some embodiments," and "one embodiment" mean "one or more (but not all) embodiments of the present invention," unless expressly specified otherwise.

[0121] The terms "including," "comprising," "having," and variations thereof mean "including, but not limited to," unless expressly specified otherwise.

[0122] An enumerated list of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise.

[0123] The terms "a," "an," and "the" mean "one or more," unless expressly specified otherwise.

[0124] Devices that are in communication with each other need not be in continuous communication with each other unless explicitly specified otherwise In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries.

[0125] A description of an embodiment including multiple components in communication with each other does not imply that all such components are required. On the contrary, a variety of optional components are described to illustrate the wide variety of possible embodiments of the present invention.

[0126] Where a single device or item is described herein, it will be readily apparent that two or more devices / items (whether cooperating or not) are used in place of the single device / item. Similarly, where two or more devices or items are described herein (whether cooperating or not), it will be readily apparent that a single device / item may be used in place of the two or more devices or items, or that a different number of devices / items are used in place of the number of devices or programs shown. The functionality and / or features of a device may alternatively be embodied by one or more other devices not explicitly described as having such functionality / features. Thus, other embodiments of the invention need not include the device itself.

[0127] The foregoing description of various embodiments of the invention has been provided for purposes of illustration and description. It is not intended that these descriptions be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in light of the above. It is intended that the scope of the invention be limited not by this Detailed Description, but by the claims appended hereto. The above specification, examples, and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, embodiments of the invention reside in the claims appended hereto later.

[0128] The foregoing description provides examples of embodiments of the present invention, and variations and permutations may be made in other embodiments.

Claims

1. 1. A computer-implemented method comprising: storing a list of capabilities for each of a plurality of devices, the list of capabilities including capabilities provided by each of the plurality of devices and capabilities desired to be provided by each of the plurality of devices; determining, by a sender device, to form a device group from the plurality of devices including a recipient device, the recipient device performing one of the functions that the sender device desires to be provided; generating, by the sender device, an individual feature usage score indicative of a sum of feature usage gains and feature usage losses for the list of features; sending, by the sender device, a request to the recipient device to form a device group in response to the individual feature usage score exceeding a device threshold; generating a second individual feature usage score by the recipient device; sending, by the recipient device, an indication of approval to form a device group to the sender device in response to the second individual feature usage score exceeding a second device threshold; forming, by the sender device, the device group for a temporary period of time in response to receiving from the recipient device the indication of approval to form the device group, wherein functions and data are shared within the device group; 23. A computer-implemented method comprising the steps of:

2. The operation, Periodically determining new individual feature usage scores; and The computer-implemented method of claim 1 , further comprising: in response to the new individual feature usage score not exceeding the device threshold, exiting the device group.

3. The computer-implemented method of claim 1 , wherein a new device of the plurality of devices joins the device group based on generating another individual feature usage score.

4. The computer-implemented method of claim 1 , wherein a device of the plurality of devices participates in multiple device groups.

5. The computer-implemented method of claim 1 , wherein a sender device and the recipient device communicate with each other via a management server.

6. The computer-implemented method of claim 1, wherein Software as a Service (SaaS) is configured to perform the operations of the method.

7. A computer program product comprising a computer readable storage medium having program code embodied therein, the program code causing at least one processor to: storing a list of capabilities for each of a plurality of devices, the list of capabilities including capabilities provided by each of the plurality of devices and capabilities desired to be provided by each of the plurality of devices; determining, by a sender device, to form a device group from the plurality of devices including a recipient device, the recipient device performing one of the functions that the sender device desires to be provided; generating, by the sender device, an individual feature usage score indicative of a sum of feature usage gains and feature usage losses for the list of features; sending, by the sender device, a request to the recipient device to form a device group in response to the individual feature usage score exceeding a device threshold; generating a second individual feature usage score by the recipient device; sending, by the recipient device, an indication of approval to form a device group to the sender device in response to the second individual feature usage score exceeding a second device threshold; forming, by the sender device, the device group for a temporary period of time in response to receiving from the recipient device the indication of approval to form the device group, wherein functions and data are shared within the device group; A computer program product for causing a computer to perform operations for:

8. The program code is executed by at least one processor to: Periodically determining new individual feature usage scores; and exiting the device group in response to the new individual feature usage score not exceeding the device threshold.

8. The computer program product of claim 7, further comprising:

9. The computer program product of claim 7 , wherein a new device of the plurality of devices joins the device group based on generating another individual feature usage score.

10. The computer program product of claim 7 , wherein a device of the plurality of devices participates in multiple device groups.

11. The computer program product of claim 7 , wherein a sender device and the recipient device communicate with each other via a management server.

12. The computer program product of claim 7, wherein SaaS (Software as a Service) is configured to perform the operations of the computer program product.

13. 1. A computer system comprising one or more processors, one or more computer readable memories, and one or more tangible computer readable storage devices, program instructions are stored in at least one of the one or more tangible computer-readable storage devices for execution by at least one of the one or more processors via at least one of the one or more memories; storing a list of capabilities for each of a plurality of devices, the list of capabilities including capabilities provided by each of the plurality of devices and capabilities desired to be provided by each of the plurality of devices; determining, by a sender device, to form a device group from the plurality of devices including a recipient device, the recipient device performing one of the functions that the sender device desires to be provided; generating, by the sender device, an individual feature usage score indicative of a sum of feature usage gains and feature usage losses for the list of features; sending, by the sender device, a request to the recipient device to form a device group in response to the individual feature usage score exceeding a device threshold; generating a second individual feature usage score by the recipient device; sending, by the recipient device, an indication of approval to form a device group to the sender device in response to the second individual feature usage score exceeding a second device threshold; forming, by the sender device, the device group for a temporary period of time in response to receiving from the recipient device the indication of approval to form the device group, wherein functions and data are shared within the device group; A computer system that performs operations including:

14. The operation, Periodically determining new individual feature usage scores; and 14. The computer system of claim 13, further comprising: exiting the device group in response to the new individual feature usage score not exceeding the device threshold.

15. The computer system of claim 13 , wherein a new device of the plurality of devices joins the device group based on generating another individual feature usage score.

16. The computer system of claim 13 , wherein a device of the plurality of devices participates in multiple device groups.

17. 14. The computer system of claim 13, wherein a sender device and the recipient device communicate with each other via a management server.

18. The computer system of claim 13, wherein SaaS (Software as a Service) is configured to perform the operations of the computer system.

19. A computer program which, when run on a computer, causes the computer to carry out the method of any one of claims 1 to 6.

Citation Information

Patent Citations

  • Method, computer-readable medium, and mobile device for sharing computational tasks among multiple devices, including at least one mobile device

    JP2016521876A

  • Information notification device, mobile body, and information notification system

    JP2018147055A

  • Base station device and communication system

    JP2018148284A

  • Hierarchical mobile ad-hoc network and methods for performing reactive routing therein using ad-hoc on-demand distance vector routing (AODV)

    US20030204625A1

  • Security for internet of things devices

    US20180302424A1