U.S. patent application number 15/997488 was filed with the patent office on 2018-10-04 for determining tasks to be performed by a modular entity.
The applicant listed for this patent is Google LLC. Invention is credited to Kevin D. Brune, Gilbert Cabillic, Eric HC Liu, Yoshimichi Matsuoka, Gaurav Shah.
Application Number | 20180285162 15/997488 |
Document ID | / |
Family ID | 57589148 |
Filed Date | 2018-10-04 |
United States Patent
Application |
20180285162 |
Kind Code |
A1 |
Liu; Eric HC ; et
al. |
October 4, 2018 |
Determining Tasks to be Performed by a Modular Entity
Abstract
Systems and methods of determining tasks to be performed by a
modular entity are disclosed. For instance, data associated with
one or more tasks performed by one or more first modular entities
within one or more modular computing environments can be obtained.
Each first modular entity includes at least one modular component.
A performance score can be determined for each task performed by
each first modular entity. The performance scores can provide a
measure of efficiency of a performance of a task by a first modular
entity. An entity profile can be determined for each first modular
entity based at least in part on the determined performance scores.
At least one task to be performed by at least one modular entity
can be determined based at least in part on the determined entity
profiles for the one or more first modular entities.
Inventors: |
Liu; Eric HC; (Redwood City,
CA) ; Brune; Kevin D.; (Maple Valley, WA) ;
Matsuoka; Yoshimichi; (Sunnyvale, CA) ; Cabillic;
Gilbert; (Brece, FR) ; Shah; Gaurav; (San
Jose, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Google LLC |
Mountain View |
CA |
US |
|
|
Family ID: |
57589148 |
Appl. No.: |
15/997488 |
Filed: |
June 4, 2018 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15130436 |
Apr 15, 2016 |
9990235 |
|
|
15997488 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/285 20190101;
G06F 16/24578 20190101; G06F 9/5027 20130101; G06F 2209/501
20130101; G06F 2209/508 20130101; G06F 9/5055 20130101 |
International
Class: |
G06F 9/50 20060101
G06F009/50; G06F 17/30 20060101 G06F017/30 |
Claims
1. A computer-implemented method of determining tasks to be
performed by a modular entity, the method comprising: obtaining, by
one or more computing devices, data associated with one or more
tasks performed by one or more first modular entities within one or
more modular computing environments, each first modular entity
comprising at least one modular component; determining, by the one
or more computing devices, a performance score for each task
performed by each first modular entity, each performance score
providing a measure of efficiency of a performance of a task by a
first modular entity; determining, by the one or more computing
devices, an entity profile for each first modular entity based at
least in part on the determined performance scores; determining, by
the one or more computing devices, at least one task to be
performed by at least one modular entity based at least in part on
the determined entity profiles for the one or more first modular
entities.
2. The computer-implemented method of claim 1, wherein determining,
by the one or more computing devices, an entity profile for each
first modular entity comprises: comparing, by the one or more
computing devices, the performance scores for each first modular
entity to a performance threshold; and classifying, by the one or
more computing devices, at least one modular entity as a specialist
for one or more tasks based at least in part on the comparison.
3. The computer-implemented method of claim 1, wherein determining,
by the one or more computing devices, a performance score for each
task performed by each first modular entity comprises determining a
performance score for each task performed by each computing device
within each first modular entity.
4. The method of claim 1, further comprising receiving, by the one
or more computing devices, data indicative of a request to perform
a task by the second modular entity; and wherein determining, by
the one or more computing devices, at least one task to be
performed by the second modular entity comprises determining
whether to perform the requested task based at least in part on the
determined entity profiles.
5. The computer-implemented method of claim 1, wherein the one or
more modular entities comprise a modular component or a modular
combination of devices.
6. The computer-implemented method of claim 5, wherein the modular
combination of devices comprises a plurality of computing devices
or components connected via an ad hoc network.
7. The computer-implemented method of claim 1, further comprising
identifying, by the one or more computing devices, a plurality of
candidate tasks associated with a second modular entity; and
wherein determining, by the one or more computing devices, at least
one task to be performed by at least one modular entity comprises
determining at least one task to be performed by the second modular
entity from the plurality of candidate tasks based at least in part
on determined entity profiles for the one or more first modular
entities.
8. The computer-implemented method of claim 1, wherein determining,
by the one or more computing devices, at least one task to be
performed by the second modular entity comprises: identifying, by
the one or more computing devices, at least one comparable entity
profile to the second modular entity; and determining, by the one
or more computing devices, at least one task to be performed by the
second modular entity based at least in part on the comparable
entity profile.
9. The computer-implemented method of claim 8, wherein a comparable
entity profile to the second modular entity is an entity profile
for a modular entity having at least one shared modular component
or modular component type with the second modular entity.
10. The computer-implemented method of claim 1, wherein
determining, by the one or more computing devices, at least one
task to be performed by the second modular entity comprises
allocating one or more subtasks to at least one computing device
within the second modular entity.
11. The computer-implemented method of claim 1, wherein
determining, by the one or more computing devices, at least one
task to be performed by the second modular entity comprises
determining at least one task to be performed by the second modular
entity based at least in part on one or more available resources of
the second modular entity.
12. The computer-implemented method of claim 1, wherein the
performance scores are determined based at least in part on a
performance speed, an amount of resources used, or an amount of
errors produced in performing the task.
13. The computer-implemented method of claim 1, wherein
determining, by the one or more computing devices, at least one
task to be performed by at least one modular entity comprises
determining at least one task to be performed by the first modular
entity.
14. A computing system comprising: one or more processors; and one
or more memory devices, the one or more memory devices storing
computer-readable instructions that when executed by the one or
more processors cause the one or more processors to perform
operations, the operations comprising: obtaining data associated
with one or more tasks performed by one or more first modular
entities within one or more modular computing environments, each
first modular entity comprising at least one modular component;
determining a performance score for each task performed by each
first modular entity, each performance score providing a measure of
efficiency of a performance of a task by a first modular entity;
determining an entity profile for each first modular entity based
at least in part on the determined performance scores; determining
at least one task to be performed by at least one modular entity
based at least in part on the determined entity profiles for the
one or more first modular entities.
15. The computing system of claim 14, wherein determining an entity
profile for each first modular entity comprises: comparing the
performance scores for each first modular entity to a performance
threshold; and classifying at least one modular entity as a
specialist for one or more tasks based at least in part on the
comparison.
16. The computing system of claim 14, wherein determining a
performance score for each task performed by each first modular
entity comprises determining a performance score for each task
performed by each computing device within each first modular
entity.
17. The computing system of claim 14, wherein determining at least
one task to be performed by the second modular entity comprises:
identifying at least one comparable entity profile to the second
modular entity; and determining at least one task to be performed
by the second modular entity based at least in part on the
comparable entity profile.
18. One or more tangible, non-transitory computer-readable media
storing computer-readable instructions that when executed by one or
more processors cause the one or more processors to perform
operations, the operations comprising: obtaining data associated
with one or more tasks performed by one or more first modular
entities within one or more modular computing environments, each
first modular entity comprising at least one modular component;
determining a performance score for each task performed by each
first modular entity, each performance score providing a measure of
efficiency of a performance of a task by a first modular entity;
determining an entity profile for each first modular entity based
at least in part on the determined performance scores; determining
at least one task to be performed by at least one modular entity
based at least in part on the determined entity profiles for the
one or more first modular entities.
19. The one or more tangible, non-transitory computer-readable
media of claim 18, wherein determining an entity profile for each
first modular entity comprises: comparing the performance scores
for each first modular entity to a performance threshold; and
classifying at least one modular entity as a specialist for one or
more tasks based at least in part on the comparison.
20. The one or more tangible, non-transitory computer-readable
media of claim 18, wherein determining at least one task to be
performed by the second modular entity comprises: identifying at
least one comparable entity profile to the second modular entity;
and determining at least one task to be performed by the second
modular entity based at least in part on the comparable entity
profile.
Description
FIELD
[0001] The present disclosure relates generally to modular
computing systems, and more particularly to determining tasks to be
performed by a modular entity
BACKGROUND
[0002] Modular systems such as a modular computing system can have
multiple different modular electronic components. Modular
components can be removable, replaceable, and/or interchangeable.
In general, different modular components of a modular device or
system can be capable of performing different functions, including
a specialized function and/or one or more general functions.
[0003] As an example, specialized modular components can perform
one or more specific functions using one or more specific
resources. Examples of specialized modular components can include a
camera modular component, a battery modular component, or other
modular component configured to perform a particular task. Thus, in
some examples, the specific functions can include capturing an
image, supplying power, or performing a specific function using
special hardware (e.g., performing a cryptographic function, a
graphics processing function, etc.).
[0004] Other modular components can have the capability to perform
general functions using their general resources, such as a memory
and a processor. For example, modular components can have the
ability to communicate with an external modular component or device
(e.g., through a hardwired connection or using a wireless
connection). Examples of general functions include performing a
processing task, storing data in memory, or utilizing communication
bandwidth.
[0005] Modular components can be combined with other modular
components or devices. In some examples, such combination can
utilize physical combination, for example, by attaching modular
components to each other or a common structure. For example, a
processing modular component from a modular phone can be removably
physically combined with an interface modular component (e.g., HDMI
or USB) to provide video-playback functionality. In other examples,
combinations of modular components can include physically
unconnected devices, such as, for example, modular components that
are communicatively connected over one or more wireless
communication links.
SUMMARY
[0006] Aspects and advantages of embodiments of the present
disclosure will be set forth in part in the following description,
or may be learned from the description, or may be learned through
practice of the embodiments.
[0007] One example aspect of the present disclosure is directed to
a computer-implemented method of determining tasks to be performed
by a modular entity. The method includes obtaining, by one or more
computing devices, data associated with one or more tasks performed
by one or more first modular entities within one or more modular
computing environments. Each first modular entity includes at least
one modular component. The method further includes determining, by
the one or more computing devices, a performance score for each
task performed by each first modular entity. Each performance score
provides a measure of efficiency of a performance of a task by a
first modular entity. The method further includes determining, by
the one or more computing devices, an entity profile for each first
modular entity based at least in part on the determined performance
scores. The method further includes determining, by the one or more
computing devices, at least one task to be performed by at least
one modular entity based at least in part on the determined entity
profiles for the one or more first modular entities.
[0008] Other example aspects of the present disclosure are directed
to systems, apparatus, tangible, non-transitory computer-readable
media, user interfaces, memory devices, and electronic devices for
determining tasks to be performed by a modular entity.
[0009] These and other features, aspects and advantages of various
embodiments will become better understood with reference to the
following description and appended claims. The accompanying
drawings, which are incorporated in and constitute a part of this
specification, illustrate embodiments of the present disclosure
and, together with the description, serve to explain the related
principles.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Detailed discussion of embodiments directed to one of
ordinary skill in the art are set forth in the specification, which
makes reference to the appended figures, in which:
[0011] FIG. 1 depicts an example modular entity according to
example embodiments of the present disclosure;
[0012] FIG. 2 depicts an overview of an example system for
determining tasks to be performed by a modular entity according to
example embodiments of the present disclosure;
[0013] FIG. 3 depicts a flow diagram of an example method of
determining tasks to be performed by a modular entity according to
example embodiments of the present disclosure; and
[0014] FIG. 4 depicts an example system according to example
embodiments of the present disclosure.
DETAILED DESCRIPTION
[0015] Reference now will be made in detail to embodiments, one or
more examples of which are illustrated in the drawings. Each
example is provided by way of explanation of the embodiments, not
limitation of the present disclosure. In fact, it will be apparent
to those skilled in the art that various modifications and
variations can be made to the embodiments without departing from
the scope or spirit of the present disclosure. For instance,
features illustrated or described as part of one embodiment can be
used with another embodiment to yield a still further embodiment.
Thus, it is intended that aspects of the present disclosure cover
such modifications and variations.
[0016] Example aspects of the present disclosure are directed to
determining tasks to be performed by computing entities within a
modular computing environment. For instance, data associated with
tasks performed by a plurality of modular entities (e.g. modular
computing devices, combinations of modular computing devices,
modular components, etc.) can be obtained. A performance score for
each performed task can be determined and associated with the
modular entity that performed the task. The performance scores can
provide a measure of efficiency of a performance of a task by a
modular entity. Entity profiles can be determined for each modular
entity based at least in part on the performance scores. The entity
profiles and/or performance scores can then be used to determine
tasks to be performed by the corresponding modular entities and/or
additional modular entities.
[0017] More particularly, a modular entity can be a modular
component or a combination of modular components within a modular
computing environment. For instance, a modular entity can be a
modular computing device made up of one or more modular components.
As another example, a modular entity can be a modular component
within a modular computing device. In some implementations, a
modular entity can be a combination of modular components connected
via an ad hoc network. A modular entity can be configured to
perform one or more tasks or subtasks. Modular components and/or
modular computing devices within a modular entity can share
functionality and/or resources to complete such tasks or subtasks.
In this manner, tasks and/or subtasks can be allocated to one or
more components within a modular entity based at least in part on
the functionalities and/or available resources of the
components.
[0018] Some modular entities may be well suited to perform
particular tasks. More particularly, the functionalities and/or
available resources of a modular entity can dictate the efficiency
at which a modular entity can perform a particular task. In this
manner, a performance score can be determined for each performed
task to reflect the efficiency with which the task was performed.
The performance scores can then be associated with the modular
entity that performed the task. In some implementations, the
performance scores can be determined based at least in part on a
speed with which the task was performed, an amount of resources
used to perform the task, an amount of errors produced by
performing the task and/or various other suitable metrics or
parameters. In implementations wherein the modular entity includes
a combination of modular components, a performance score can be
determined for each task or subtask performed by each modular
component. In this manner, the performance scores can be determined
to identify modular components, modular computing devices, etc.
that are well suited to perform particular tasks.
[0019] The performance scores can be used to determine an entity
profile for the modular entities. For instance, entity profiles can
be determined for one or more modular components, modular computing
devices, combinations of modular computing devices, ad hoc network
configurations, etc. (e.g. modular entities). An entity profile can
provide an indication of one or more tasks that a modular entity is
well suited to perform. For instance, an entity profile may include
a list of tasks that the modular entity is well suited to perform.
In some implementations, the determination of an entity profile can
include comparing the performance scores determined for the modular
entity to a performance threshold. The performance threshold can be
indicative of an acceptable performance score for determining
whether a modular entity is well suited for performing a particular
task. In this manner, if the performance score achieved by the
modular entity in performing the task is greater than the
threshold, the task may be added to the list of tasks stored in the
entity profile. For instance, in some implementations, if the
performance score is greater than the threshold, the modular entity
may be designated as a "specialist" for the task.
[0020] In some implementations, one or more machine learning and/or
pattern recognition techniques can be used to determine tasks that
are well suited for one or more modular entities. For instance, one
or more supervised or unsupervised learning algorithms can be used
to determine patterns in task performance by different modular
entities, and to determine tasks that such modular entities are
well suited to perform to achieve a desired output. In some
implementations, tasks or capabilities of various modular
components within a modular entity can be combined in various
manners to achieve a desired result. For instance, such tasks or
capabilities may be combined in a serial manner and/or in a
parallel manner to achieve a desired result. In some
implementations, various manners in which resources are allocated
within a modular entity can be analyzed to determine suitable tasks
for the modular entity. Such learned information can be included in
the entity profile associated with the modular component.
[0021] As indicated, one or more entity profiles can be used to
determine future tasks to be performed by a modular entity. For
instance, the entity profile for a modular entity can be accessed
to determine a task to perform and/or a resource allocation in the
performance of the task by the modular entity. In particular, one
or more tasks can be chosen from the list of tasks associated with
the entity profile. In some implementations, one or more comparable
entity profiles of a modular entity can be accessed to determine a
task to perform and/or a resource allocation. A comparable entity
profile can be an entity profile that corresponds to a modular
entity that is similar to the current modular entity. In
particular, similar modular entities can be modular entities that
share at least one modular component type. In this manner, the
comparable entity profiles can be used to determine a task to be
performed by the modular entity.
[0022] The entity profiles may further be used to determine an
allocation of resources of a modular entity in performing a task.
For instance, one or more subtasks may be allocated to one or more
computing devices and/or components within a modular entity to
complete the task. Such resource allocation may be determined based
at least in part on the availability of the resources within the
modular entity. In this manner, the allocation of resource may be
determined to provide an efficient use of resources in performing
the task.
[0023] In some implementations, one or more entity profiles can be
identified to determine one or more additional modular components
to add to a modular entity to perform a desired task. For instance,
one or more entity profiles corresponding to modular entities
designated a "specialist" for a task can be accessed and compared
to a current modular entity that desires to perform the same, or
similar, task. Based at least in part on the comparison, it may be
determined that a modular entity would be better suited to perform
a particular task if an additional or different component was
included within the modular entity. In some implementations, if
such additional or different component is available, it can be
added to the modular entity, for instance, via communication over a
network.
[0024] With reference now to the figures, example aspects of the
present disclosure will be discussed in greater detail. For
instance, FIG. 1 depicts an example modular entity 100 according to
example embodiments of the present disclosure. Modular entity 100
includes a modular computing device 102 having associated modular
components 104, 106, and 108. Modular components 104-108 can join
or interface with modular entity 100 through a physical connection
with modular computing device 102 and/or through a wireless
connection with modular computing device 102, such as through
direct wireless communication. Modular entity 100 further includes
network devices 110, 112 connected to modular computing device 102,
for instance, via a wireless ad hoc network. In some
implementations, modular computing device 102, modular components
104-108, and/or network devices 110, 112 can advertise their
respective availability and/or capabilities, and can communicate
among each other to create and/or join the ad hoc network. For
instance, the ad hoc network can be created based at least on a
desired task to be performed by the modular entity. Members can be
added to the ad hoc network based at least in part on one or more
available resources and/or capabilities of the members in view of
the desired task.
[0025] For instance, each component or device can have one or more
capabilities or functions that can be implemented by the modular
entity. For instance, a component or device can have a display
screen function, an image capture function, a power function,
and/or various other suitable capabilities or functions. In some
implementations, a component or device may have capabilities or
functions that can contribute to capabilities of other components
or devices within the modular computing environment. For instance,
a modular component can include memory to be added to a total
device memory, processing capability to be added to a total device
processing capability, battery storage to be added to a total
device battery storage, etc.
[0026] It will be appreciated that example modular entity 100 is
depicted for illustrative purposes only. In this regard, it will be
further appreciated that modular entity 100 can include various
other suitable configurations without deviating from the scope of
the preset disclosure. In particular, a modular entity can include
any suitable number of devices or components that communicate using
various suitable communication techniques (e.g. physical
connection, near field communication, ad hoc network, etc.). In
some implementations, a modular entity can include a single modular
component.
[0027] FIG. 2 depicts an example system 200 of determining tasks to
be performed by a modular entity according to example embodiments
of the preset disclosure. System 200 includes a scorer 202, a
profiler 204, and a task allocator 206. System 100 can be
implemented in one or more computing devices. For instance, in
various implementations, system 100 can be implemented in a central
server communicatively coupled to a plurality of modular entities,
in the modular entities themselves, and/or within individual
components or devices that contribute to a modular entity. In some
implementations, one or more aspects of system 100 can be included
in various locations. For instance, scorer 202 may be implemented
within the central server, while profiler 204 and task allocator
206 can be implemented by a modular entity. It will further be
appreciated that system 100 is depicted for illustrative purposes
only, and that various other suitable systems having various other
suitable configurations can be used without deviating from the
scope of the present disclosure. For instance one or more
components of system 100 may be combined, or one or more additional
components may be added without deviating from the scope of the
present disclosure.
[0028] Scorer 202 can be configured to determine performance scores
for performed tasks. In particular, scorer 202 can be configured to
obtain data associated with one or more tasks performed by a
plurality of modular entities. The tasks can be global tasks to be
achieved by an entire modular entity and/or subtasks to be achieved
by a subset of devices or components within a modular entity. For
instance, a subtask can be performed by one or more components or
devices within a modular entity in service of achieving a global
task.
[0029] Scorer 202 can be configured to determine a performance
score for each performed task. As indicated the performance score
can be indicative of an efficiency with which the task was
performed. In some implementations, the performance score can be
determined based at least in part on a speed with which the task
was performed, an amount of resources used in performing the task,
an amount of errors produced in performing the task and/or various
other suitable metrics.
[0030] Scorer 202 can further receive data indicative of the
modular entities that perform the tasks. For instance, the data
indicative of the modular entities can include the components or
devices included in the entity, the communication techniques used
by the various components or devices within entity (e.g. ad hoc
network, physical connection, etc.) The determined performance
scores can then be associated with the modular entities that
performed the tasks. In some implementations, the performance
scored can further be associated with the components or devices
that performed the task. For instance, if a task is performed by a
subset of devices of the modular entity, the performance score
determined for the task can be associated with the modular entity
and/or the subset.
[0031] The associated performance scores can be provided to
profiler 204. Profiler 204 can be determined to create and maintain
entity profiles associated with a plurality of modular entities. An
entity profile can include data indicative of a modular entity, as
well as data associated with various tasks performed by the modular
entity. In some implementations, the entity profile can include the
performance scores for the tasks performed by the modular
entity.
[0032] Profiler 204 can be configured to determine tasks that a
modular entity is well suited to perform. For instance, profiler
204 may be configured to classify a modular entity as a specialist
for a particular task. In implementations wherein a modular entity
includes multiple components or devices, profiler 204 may be
further configured to classify one or more components or devices
within a modular entity as a specialist for a particular task.
[0033] In some implementations, profiler 204 can determine tasks
that a modular entity is well suited to perform based at least in
part on the performance scores associated with the entity. For
instance, profiler 204 can compare the performance score for a task
to a performance threshold. A performance score that is greater
than the performance threshold can indicate that the modular entity
has a high capacity for performing the task. For instance, a
modular entity can be classified or otherwise designated as a
specialist for a task if the associated performance score for the
task is greater than the performance threshold.
[0034] An entity profile for a modular entity can include a listing
of obtained tasks performed by the modular entity, a number of
times that tasks have been performed by the modular entity, and
associated performance scores for the tasks. In some
implementations, the entity profile can further include an
indication of tasks for which the modular entity is a specialist.
In some implementations, an entity profile can store a listing of
only those tasks that the modular entity has been determined to be
well suited to perform. In some implementations, a separate entity
profile can be created for each component or device within a
modular entity. In this manner, for modular entities that include
multiple components or devices, separate entity profiles can be
created for each component or device specifying a list of obtained
tasks performed by the component or device, and associated
performance scores for the tasks.
[0035] As indicated, profiler 204 may use one or more machine
learning techniques to determine tasks that a modular entity is
well suited for. In particular, profiler 204 may include learning
model 208. Learning model 208 can be any suitable machine learning
model or network, such a neural network, a convolutional neural
network, Naive Bayes, nearest neighbor model, support vector
machine, and/or various other suitable model. In some
implementations, learning model 208 can be trained (e.g. using
supervised or unsupervised learning techniques) to predict tasks
that a modular entity is well suited to perform. In this manner,
learning model 208 can receive as input data indicative of a
modular entity, and produce an output specifying one or more tasks.
In some implementations, learning model 208 can provide an output
indicative of a predicted performance score for modular entity in
performing a task. In some implementations, learning model 208 can
recognize patterns in task performance by different modular
entities, and determine that such combinations can be used to
perform one or more functions or tasks to achieve a desired output.
Learning model 208 outputs associated with a modular entity can be
included in the corresponding entity profile associated with the
modular entity, and further used in allocating or suggesting one or
more tasks to be performed by modular entities.
[0036] For instance, task allocator 206 can be configured to
receive modular entity data 210. Modular entity data 210 can be
associated with a request for task allocation, task recommendation,
and/or task scheduling associated with a modular entity. In some
implementations, the request can be made based at least in part on
a user interaction with a user interface associated with the
requesting modular entity. Modular entity data 210 can include data
indicative of the requesting modular entity, such as an identifier
associated with the modular entity, a listing of components or
devices that contribute to the modular entity, one or more tasks to
be performed by the modular entity, available resources of the
modular entity, capabilities of the modular entity, and/or various
other suitable data associated with the requesting modular
entity.
[0037] For instance, in some implementations, the requesting
modular entity can request a list of tasks that the modular entity
is well suited to perform. In some implementations, the requesting
modular entity can request an allocation of subtasks or tasklets to
be performed by the components or devices that contribute to the
modular entity to achieve a global task. In some implementations,
the requesting modular entity can request one or more suggested
tasks to perform. In some implementations, the requesting modular
entity can request a recommendation on whether the modular entity
is well suited to perform a particular task. It will be appreciated
that various other suitable requests can be made.
[0038] Task allocator 208 can fulfill the requests based at least
in part on entity profiles 212 determined by profiler 204. For
instance, in some implementations, task allocator 208 can obtain an
entity profile determined for the requesting modular entity to
fulfill the request. If the requesting modular entity does not have
a corresponding entity profile, task allocator 208 can obtain one
or more comparable entity profiles. A comparable entity profile can
be an entity profile corresponding to a modular entity having one
or more shared components or devices, and/or component or device
types with the requesting modular entity.
[0039] In this manner, task allocator 208 can determine one or more
tasks to be performed by a requesting modular entity based at least
in part on the obtained entity profile and the data indicative of
the requesting modular entity (e.g. capabilities, available
resources, etc.). For instance, task allocator 208 can determine
one or more tasks that the requesting modular entity is well suited
to perform based at least in part on the performance scores
included in the entity profile. In some implementations, task
allocator 208 can determine a schedule or allocation of tasks to be
performed by the requesting modular entity. For instance, task
allocator 208 can suggest or determine that two or more tasks or
subtasks be performed in a serial or parallel manner. Task
allocator 208 may further determine suggested ad hoc combinations
of modular components or devices that can be used to perform a
desired task. For instance, task allocator can identify one or more
additional components or devices to be added to the requesting
modular entity to achieve the desired task. The requesting modular
entity may then seek out such additional components or devices, and
may add the additional components or devices as desired.
[0040] In some implementations, system 200 may offer one or more
services to the requesting modular entity to achieve the desired
task. For instance, in implementations wherein at least a portion
of system 200 is located at a central server device, the server may
offer one or more available resources to the requesting modular
entity.
[0041] As indicated, at least a portion of system 200 can be
implemented by a central server, a modular entity, and/or a
component or device within the modular entity. In implementations,
wherein system 200 is implemented by a modular entity, the modular
entity may be configured to recognize that certain modular
components or devices within the modular entity are better suited
to perform particular tasks or subtasks, and to allocate such tasks
or subtasks accordingly. In implementations, wherein system 200 in
implemented by an individual component or device, the component or
device may recognize or learn which tasks that the component or
device is well suited to perform. In implementations, wherein
system 200 is implemented by the central server, a modular entity
or device can communicate with the server to determine suitable
tasks to perform.
[0042] FIG. 3 depicts a flow diagram of an example method (300) of
determining tasks to be performed by a modular entity according to
example embodiments of the present disclosure. Method (300) can be
implemented by one or more computing devices, such as one or more
of the computing devices depicted in FIG. 4. In particular
implementations, the method (300) can be implemented by the scorer
202, profiler 204, and/or task allocator 206 depicted in FIG. 2. In
addition, FIG. 3 depicts steps performed in a particular order for
purposes of illustration and discussion. Those of ordinary skill in
the art, using the disclosures provided herein, will understand
that the steps of any of the methods discussed herein can be
adapted, rearranged, expanded, omitted, or modified in various ways
without deviating from the scope of the present disclosure.
[0043] At (302), method (300) can include obtaining data associated
with one or more tasks performed by a plurality of modular
entities. As indicated, a modular entity can include a computing
device or component, a modular combination of components or
devices, an ad hoc combination of components or devices, and/or
various other suitable modular entities. Each modular entity can
perform one or more computing tasks or subtasks. For instance, one
or more components or devices that contribute to a modular entity
may perform one or more tasks or subtasks. A task or subtask may be
any suitable computing task using available resources of the
entity, component and/or device. For instance, the task may be
associated with one or more processing functions, memory functions,
storage functions, and/or other suitable computing function.
[0044] At (304), method (300) can include determining a performance
score for each performed task. As indicated, a performance score
can be indicative of an efficiency with which a task is performed.
In some implementations, a performance score can be a number in a
desired scale. The performance scores can be determined based at
least in part on a speed with which a task is performed, an amount
of resources used in performing a task, an amount of errors
produced in performing a task, etc.
[0045] At (306), method (300) can include associating the
determined performance scores with the corresponding modular
entities. For instance, the performance score determined for a task
can be associated with the modular entity that performed the task.
In implementations wherein a modular entity includes multiple
components or devices, the performance scores can further be
associated with the components or devices that performed the task.
For instance, if a task is performed by a subset of devices of a
modular entity, the corresponding performance score can be
associated with the modular entity and the subset.
[0046] At (308), method (300) can include determining an entity
profile for each modular entity based at least in part on the
associated performance scores. The entity profile can include
identifying information associated with the modular entity, such as
identifying information associated with the components or devices
that contribute to the modular entity. The entity profile can
further include an indication of tasks that the modular entity is
well suited for. Determining such tasks can include comparing the
associated performance scores to a threshold. In this manner,
modular entities having an associated performance score for a task
that is greater than the threshold can be determined to be well
suited to perform the task. In some implementations, the
determination of which tasks that the modular entity is well suited
for can be made based at least in part on one or more additional
modular entities. For instance, if a comparable modular entity to
the modular entity is well suited for a particular task, it may be
determined that the modular entity is also well suited for the
task. In some implementations, machine learning techniques can be
used to determine tasks that a modular entity is well suited for.
For instance, a machine learning model can be configured to receive
data indicative of a modular entity as an input, and to provide a
prediction of one or more tasks that the modular entity is well
suited for. As another example, a machine learning model can be
configured to receive data indicative of a modular entity and data
indicative of a particular task as inputs, and to estimate a
performance score as output. As indicated, the machine learning
model can be trained using a set of training data that specifies
performance scores for a plurality of modular entities in
performing a plurality of tasks.
[0047] At (310), method (300) can include obtaining data associated
with a requesting modular entity. For instance, the requesting
modular entity can request information associated with performing
one or more tasks. Such requests can include requests for a
suggested task to perform, a performance score (e.g. a predicted
performance score or an actual previously determined performance
score) for performing the tasks, task allocation, task scheduling,
additional services, and/or various other suitable request. The
data associated with the requesting modular entity can further
include data indicative of the components or devices that
contribute to the requesting modular entity, available resources of
the requesting modular entity, capabilities of the requesting
modular entity, currently scheduled tasks, and/or other suitable
information associated with the requesting modular entity.
[0048] At (312), method (300) can include determining one or more
tasks for the requesting modular entity. For instance, the one or
more tasks can be determined based at least in part on the
determined entity profiles and the data associated with the
requesting modular entity. In particular, the one or more tasks may
be determined based at least in part on the capabilities of the
modular entity, the available resources of the modular entity, a
currently schedule of task performance associated with the modular
entity, and/or one or more entity profiles associated with the
modular entity. For instance, one or more entity profiles
associated with the requesting modular entity can be accessed to
determine tasks that the modular entity is currently well suited to
perform. The associated entity profiles may include an entity
profile previously created for the requesting modular entity and/or
one or more comparable entity profiles created for comparable
entity profiles. As indicated, a comparable entity profile can be
an entity profile created for a modular entity having shared
components or component types with the requesting modular entity.
In this manner, a comparable entity profile can be an entity
profile for a modular entity that may be well suited to perform
similar tasks as the requesting modular entity. In some
implementations, tasks determined for the requesting modular entity
can be determined using machine learning techniques. For instance,
data indicative of the requesting modular entity can be provided as
input to a machine learning model configured to predict tasks that
are well suited for the input modular entity. In some
implementations, determining one or more tasks for the requesting
modular entity can include determining a task and/or subtask
allocation, a task schedule, an order in which tasks are to be
performed, a manner in which tasks are to be performed, a suggested
network or modular combination, a proposal for provision of
additional services, a performance score listing, and/or various
other suitable information associated with tasks to be performed by
the requesting modular entity.
[0049] FIG. 4 depicts an example computing system 400 that can be
used to implement the methods and systems according to example
aspects of the present disclosure. The system 400 can be
implemented using a client-server architecture that includes a
server 410 that communicates with one or more modular entities 430
over a network 440. The system 400 can be implemented using other
suitable architectures, such as a single computing device.
[0050] The system 400 includes a server 410, such as a web server.
The server 410 can be implemented using any suitable computing
device(s). The server 410 can have one or more processors 412 and
one or more memory devices 414. The server 410 can also include a
network interface used to communicate with one or more modular
entities 430 over the network 440. The network interface can
include any suitable components for interfacing with one more
networks, including for example, transmitters, receivers, ports,
controllers, antennas, or other suitable components.
[0051] The one or more processors 412 can include any suitable
processing device, such as a microprocessor, microcontroller,
integrated circuit, logic device, or other suitable processing
device. The one or more memory devices 414 can include one or more
computer-readable media, including, but not limited to,
non-transitory computer-readable media, RAM, ROM, hard drives,
flash drives, or other memory devices. The one or more memory
devices 414 can store information accessible by the one or more
processors 412, including computer-readable instructions 416 that
can be executed by the one or more processors 412. The instructions
416 can be any set of instructions that when executed by the one or
more processors 412, cause the one or more processors 412 to
perform operations. For instance, the instructions 416 can be
executed by the one or more processors 412 to implement a scorer
202, a profiler 204, and a task allocator 206 described with
reference to FIG. 2.
[0052] As shown in FIG. 4, the one or more memory devices 414 can
also store data 418 that can be retrieved, manipulated, created, or
stored by the one or more processors 412. The data 418 can include,
for instance, entity profile data, modular entity data, and other
data. The data 418 can be stored in one or more databases. The one
or more databases can be connected to the server 410 by a high
bandwidth LAN or WAN, or can also be connected to server 410
through network 440. The one or more databases can be split up so
that they are located in multiple locales.
[0053] The server 410 can exchange data with one or more modular
entities 430 over the network 440. Although two modular entities
430 are illustrated in FIG. 8, any number of modular entities 430
can be connected to the server 410 over the network 440. Each
modular entity 430 can be a component, a computing device or a
combination of components and/or computing devices. In some
implementations, the combination of components and/or computing
devices can be a modular combination and/or a combination formed
through communication over an ad hoc network. The modular entities
430 can be configured to perform a plurality of computing tasks. In
some implementations, a modular entity 430 can be configured to
share resources among the devices within the modular entity to
perform a plurality of computing tasks. In some implementations, a
modular entity 430 may include one or more modular components that
contribute functionality to the modular entity 430. Further, the
modules depicted in FIG. 4 may be implemented by modular entity 430
in a modular manner, or via an ad hoc network.
[0054] Similar to the server 410, a modular entity 430 can include
one or more processor(s) 432 and/or a memory 434. As indicated,
modular entity 430 can include a combination of components that
perform one or more functions, as contribution to the modular
entity 430. For instance, a component may provide one or more
functions, such as one or more processing functions and/or one or
more memory-based functions. In this manner a modular entity may
include any number of the modules depicted in FIG. 4. The one or
more processor(s) 432 can include one or more central processing
units (CPUs), graphics processing units (GPUs) dedicated to
efficiently rendering images or performing other specialized
calculations, and/or other processing devices. The memory 434 can
include one or more computer-readable media and can store
information accessible by the one or more processors 432, including
instructions 436 that can be executed by the one or more processors
432 and data 438. For instance, the memory 434 can store
instructions 436 for implementing a user interface module
determined according to example aspects of the present
disclosure.
[0055] The modular entity 430 of FIG. 8 can include various
input/output devices for providing and receiving information from a
user, such as a touch screen, touch pad, data entry keys, speakers,
and/or a microphone suitable for voice recognition. For instance,
the modular entity 430 can have a display device 435 for presenting
a user interface according to example aspects of the present
disclosure.
[0056] The modular entity 430 can also include a network interface
used to communicate with one or more remote computing devices (e.g.
server 410) over the network 440. The network interface can include
any suitable components for interfacing with one more networks,
including for example, transmitters, receivers, ports, controllers,
antennas, or other suitable components.
[0057] The network 440 can be any type of communications network,
such as a local area network (e.g. intranet), wide area network
(e.g. Internet), cellular network, or some combination thereof. The
network 440 can also include a direct connection between a modular
entity 430 and the server 410. In general, communication between
the server 410 and a modular entity 430 can be carried via network
interface using any type of wired and/or wireless connection, using
a variety of communication protocols (e.g. TCP/IP, HTTP, SMTP,
FTP), encodings or formats (e.g. HTML, XML), and/or protection
schemes (e.g. VPN, secure HTTP, SSL).
[0058] The technology discussed herein makes reference to servers,
databases, software applications, and other computer-based systems,
as well as actions taken and information sent to and from such
systems. One of ordinary skill in the art will recognize that the
inherent flexibility of computer-based systems allows for a great
variety of possible configurations, combinations, and divisions of
tasks and functionality between and among components. For instance,
server processes discussed herein may be implemented using a single
server or multiple servers working in combination. Databases and
applications may be implemented on a single system or distributed
across multiple systems. Distributed components may operate
sequentially or in parallel.
[0059] While the present subject matter has been described in
detail with respect to specific example embodiments thereof, it
will be appreciated that those skilled in the art, upon attaining
an understanding of the foregoing may readily produce alterations
to, variations of, and equivalents to such embodiments.
Accordingly, the scope of the present disclosure is by way of
example rather than by way of limitation, and the subject
disclosure does not preclude inclusion of such modifications,
variations and/or additions to the present subject matter as would
be readily apparent to one of ordinary skill in the art.
* * * * *