WO2019074515A1 - Sub-task assignment based on device capability - Google Patents

Sub-task assignment based on device capability Download PDF

Info

Publication number
WO2019074515A1
WO2019074515A1 PCT/US2017/056502 US2017056502W WO2019074515A1 WO 2019074515 A1 WO2019074515 A1 WO 2019074515A1 US 2017056502 W US2017056502 W US 2017056502W WO 2019074515 A1 WO2019074515 A1 WO 2019074515A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
sub
managed
devices
manager
Prior art date
Application number
PCT/US2017/056502
Other languages
French (fr)
Inventor
Syed S. Azam
Alexander Williams
John W. FREDERICK
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Priority to PCT/US2017/056502 priority Critical patent/WO2019074515A1/en
Publication of WO2019074515A1 publication Critical patent/WO2019074515A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Definitions

  • Virtual assistants refer to computing devices that can perform tasks or services for an individual. That is, a virtual assistant receives input from a user, and then executes an operation based on the received input. Some virtual assistants receive text input and/or voice input. For example, a user may say the phrase, "what is the temperature in Los Angeles.” In response, a virtual assistant can search the Internet to determine the temperature in Los Angeles and can return, via text, visual display, or vocally, the determined temperature in Los Angeles.
  • FIG. 1 is a block diagram of a computing device for sub-task assignment based on device capability, according to an example of the principles described herein.
  • FIG. 2 is a flowchart of a method for assigning sub-tasks based on device capability, according to an example of the principles described herein.
  • FIG. 3 is a diagram of a network of intelligent devices, according to an example of the principles described herein.
  • Fig. 4 is a flowchart of a method for assigning sub-tasks based on device capability, according to an example of the principles described herein.
  • FIG. 5 is a flowchart of a method for assigning sub-tasks based on device capability, according to an example of the principles described herein.
  • FIG. 8 is a diagram of a non-transitory machine-readable storage medium for assigning sub-tasks based on device capability, according to an example of the principles described herein.
  • Fig. 7 is a diagram of a non-transitory machine-readable storage medium for assigning sub-tasks based on device capability, according to an example of the principles described herein.
  • Virtual assistants refer to computing devices that can perform tasks or services for an individual. That is, a virtual assistant receives input from a user, and then executes an operation based on the received input. Some virtual assistants receive text input and/or voice input. For example, a user may say the phrase, "what is the temperature in Los Angeles.” In response, a virtual assistant can search the Internet to determine the temperature in Los Angeles and can return, via text, visual display, or vocally, the determined temperature in Los Angeles.
  • virtual assistants inherently provide automation and simplicity for their users, a more complete integration may yield even more advantages to a user.
  • different virtual assistants may be intended to carry out a limited number of tasks. Accordingly, a user on a day-to-day basis may interact with multiple virtual assistants to carry out multiple operations, which is inefficient and can be cumbersome for the user.
  • these virtual assistants may be intended to carry out a particular function, they may not be able to carry out complex tasks.
  • a user may desire to receive a verbal warning when an individual, such as a child, has left a particular room within a house
  • a monitoring device may be able to detect when an individual has left a room, but may not be able to provide a verbal warning.
  • a speaker device may be able to provide the verbal warning but not be able to detect when the individual has left the room.
  • the present specification describes a method and system for aggregating the work of multiple virtual assistants, or managed devices, via a manager device. That is, the present system of devices is structured in a hierarchy to accomplish tasks more efficiently by specializing in performing particular sub-tasks related to a task, in this system, a user issues a command to the manager device. The manager device then delegates sub-tasks of a complex task to multiple managed devices that work together to complete the complex task. That is, using the present system, rather than a single device learning and performing ail sub-tasks that form a complex task, managed devices in a network could specialize in performing particular tasks at the discretion of a user. Doing so allows for small, well-connected team of managed intelligent devices that more efficiently use their processing resources to complete a complex task.
  • the present specification describes a method for carrying out this multi-intelligent device system.
  • a task to be completed is received at a manager device.
  • the manager device then divides the task into at least one sub-task.
  • the manager device assigns each of the sub-tasks to different managed devices of a network of devices based on device capabilities.
  • the present specification also describes a computing device.
  • the computing device includes a task executer to perform a task indicated via a user input.
  • a controller of the computing device places the computing device in a manager mode based on a received designation.
  • the controller also divides the task into sub-tasks and assigns, based on device capabilities, each of the sub-tasks to different managed devices.
  • the computing device also includes a master manifest of capabilities of each of the different managed devices.
  • the master manifest is a combination of individual manifests on each of the different managed devices.
  • the present specification also describes a non-transitory machine- readable storage medium encoded with instructions executable by a
  • the machine-readable storage medium includes instructions to 1 ) receive designation of an intelligent device from a network of intelligent devices as a manager device; 2) determine capabilities of each of multiple managed devices in the network of intelligent devices to facilitate assigning at least one sub-task; 3) instructions to receive, at the manager device, a task to be completed; 4) instructions to divide, by the manager device, the task into the at least one sub-task; 5) instructions to assign, by the manager device, each of the at least one sub-task to different managed devices of the network of intelligent devices based on device capabilities; and 6)
  • using such a system and method 1 provides more efficient completion of tasks via sub-tasks assigned to different devices based on their capability; 2) reduces hardware and processing requirements for intelligent devices, thus improving their viability in the market; 3) enhances system efficiency by spreading overall workload to complete a task among several managed devices; 4) facilitates repurposing of devices within a network at different points in time; 5) facilitates addition of devices and removal of devices to enhance the customizability of a network; and 6) allows for training of intelligent devices to accomplish a variety of complex tasks.
  • the devices disclosed herein may address other matters and deficiencies in a number of technical areas.
  • intelligent device refers to a device that completes a task for an individual based on a received input.
  • An intelligent device may interact with a user and other intelligent devices and may make decisions independent of user input.
  • an intelligent devices makes decisions between various options based on received information.
  • intelligent devices include machine-learning capabilities and/or artificial neural networks where they can learn habits, preferences, and best practices.
  • manager device refers to a device that receives a task, and assigns sub-tasks associated therewith to various managed devices. The manager device also divides the task into sub-tasks.
  • the term “managed device” refers to an intelligent device of a network that receives sub-task assignments from a manager device.
  • the managed device may be any type of intelligent device with any number of capabilities.
  • the term "task executer” refers to a component of an intelligent device, be it a managed device or a manager device, which carries out a particular task or sub-task.
  • the task executer may be a processor that performs a web search responsive to a user input to determine the weather at a particular location.
  • a task executer may be a monitor that detects presence, or motion, within a room.
  • FIG. 1 is a block diagram of a computing device (100) for sub-task assignment based on device capability, according to an example of the principles described herein, in some examples, the computing device (100) is an intelligent device meaning that the computing device (100) can perform certain operations to return a result requested by an individual.
  • an intelligent computing device (100) could return information requested from the internet once a user has requested that the computing device (100) acquire such information.
  • Such intelligent devices may be capable of progressively improving performance, i.e. , learning over the course of time.
  • the intelligent devices may include artificial neural networks wherein they can learn habits, preferences, and best practices.
  • the computing device (100) includes an interface to receive such a task.
  • the interface may be a voice-enabled interface to receive the task via voice input. That is, a user may vocally request certain information, or that a certain task be performed, and the computing device (100) may retrieve the information and/or perform the certain task.
  • a user in a room may vocally request music to be played from the users music database, in this example, the computing device (100), without additional input, retrieves the music and begins playing it.
  • Such a computing device (100) may operate independent of any physical input from the user. That is, the computing device (100) may be a voice-recognition device that can detect a voice input.
  • the intelligent computing device (100) may also have a natural language processor to convert natural language input into a set of commands that can be executed by the computing device (100).
  • the intelligent computing device (100) may upload the voice input to a server, and the server may perform the natural language processing.
  • the computing device (100) includes a task executer (102).
  • the task executer (102) of the computing device (100) executes a task. For example, if the task to be completed is to identify a particular vehicle for purchase.
  • the task executer (102) may scour an internet and identify particular vehicles for purchase based on search criteria indicated by a user.
  • the computing device (100) also includes a controller (104) to carry out various operations.
  • the controller (104) places the computing device (100) into a manager mode based on a received designation. That is a user may, via a user interface, select the computing device (100) from a pool of devices to be the manager.
  • the computing device (100) which is acting as a manager may change, based on user input for example.
  • the manager is selected dynamically, for example, based on capabilities of the various devices in a network, a work load of the various devices, etc.
  • the computing device (100) which may be an intelligent computing device (100), directs the operations of the other managed computing devices of the network.
  • a manager computing device (100) may receive a task and divide the task into multiple sub- tasks.
  • a manager computing device (100) receives, via user input, a task to perform an electronic purchase of an item.
  • the manager computing device (100) may divide the task into multiple sub-tasks such as 1 ) identifying instances of the item for sale, 2) of the available instances, determining which option is the best, and 3) completing a purchase of the item, using a users personal information, i.e., credit card information.
  • the division of the task into sub-tasks may be based on capabilities of the network of managed devices.
  • a manager computing device may present ail options to a user and receive user selection of a preferred option.
  • the manager device based on the user selection, can then learn which options are best, and which are to be dropped, for subsequent task execution.
  • the controller (104) of the computing device (100) assigns each of the sub-tasks to different managed devices. For example, as a manager, the computing device (100) may select a first managed device to identify instances of the item for sale, a second managed device may determine which is the best option based on different criteria such as price, availability, delivery time, etc., and a third managed device may complete the purchase.
  • the assignation of the various sub-tasks to managed devices is based on device capability.
  • the third managed device may have an encryption device such that it could use to encrypt the user's financial information to ensure secure financial transactions. Accordingly, the third managed device may be assigned the sub-task of purchasing the item.
  • the division and assignment of sub-tasks may be based on other capabilities as well.
  • the managed devices may have different instruction sets, speeds, and/or number of cores. Accordingly, a managed device may be selected to accomplish a particular sub-task based on the processor that will accomplish the sub-task most efficiently.
  • Process load is another example of a device capability on which sub-task assignments may be made. For example, a less efficient processor may be selected if a more efficient processor is busy, or is expected to be busy, and the sub-task is a low priority task.
  • assignments are based include machine-learning capabilities of the various managed devices. For example, different managed devices may have machine-learning engines intended to accomplish different tasks. The managed device with machine learning for a particular task may be selected to perform that task.
  • a device capability on which a task assignment can be based is a connected backend server.
  • the manager computing device (100) may determine a kind of request, e.g. , a request to purchase an item, a request for information, or a request to configure a smart device. The manager computing device (100) then determines which of the backend servers coupled to the various managed devices is best able to process such a request.
  • the capabilities of the managed devices may be related to a location of the managed device. For example, a managed intelligent device near a bedroom or a car may be selected for receiving downloaded audiobooks and/or reading audio books.
  • a managed device such as a smart doorbell, may be assigned to listen for when guests arrive and/or for intruders as opposed to a device near the interior of the home.
  • Some managed intelligent devices include different types of cameras and/or sensors and may be selected for sub-tasks that rely on cameras or a particular sensor.
  • Another example of a hardware component that may be used in determining which sub-task to assign to a managed device is a storage capacity and/or storage read/write speed.
  • a storage capacity and/or storage read/write speed For example, an intelligent device with a fast write speed may be selected to receive content for streaming to a user.
  • the content may be saved to a different device with increased storage, and perhaps a slower speed, for long term storage after streaming of the content to the user.
  • device capability may be determined based on user response. For example a manager device or a user can evaluate the responses of the different managed devices to determine which performed the most satisfactorily. Based on the feedback from the user, or analysis by the manager device, the manager device can learn which managed device gives the best response for a particular type of sub-task. In this example, managed devices that consistently give poor results can be dropped.
  • the computing device (100) includes a master manifest (106) that includes a list of capabilities of each of the different managed devices.
  • the master manifest (106) is a combination of individual manifests from each of the different managed devices. For example, upon onboarding of a particular managed device, a manifest of that device, which can include static hardware components as well as dynamic capabilities such as load, available memory, and speeds, is passed to the manager computing device (100). Note that in this example, this master manifest (106) is present on a computing device (100) just while if is acting in a manager mode. When outside of the manager mode, the master manifest may be removed from the computing device (100).
  • Such a computing device (100) a!iows for the more efficient completion of tasks. That is, rather than localizing all sub-tasks to be completed at a single computing device (100), which computing device may be an intelligent computing device (100) with machine learning and natural language processing, a manager intelligent computing device (100) can direct the efforts of multiple managed devices, perhaps even directing them to operate in parallel, to distribute processing resources for completing the task across various devices. Moreover, as each managed computing device is assigned a sub-task rather than the entire task, machine-learning is applied to a smaller environment such that it may more effectively converge to generate a particular output.
  • Fig. 2 is a flowchart of a method (200) for assigning sub-tasks based on device capability, according to an example of the principles described herein.
  • the methods (200, 400, 500) may be described below as being executed or performed by a particular computing device (Fig. 1 , 100). Other suitable systems and/or controller may be used as well.
  • the methods (200, 400, 500) may be implemented in the form of executable instructions stored on at least one machine-readable storage medium of at least one of the devices and executed by at least one processor of at least one of the device.
  • the methods (200, 400, 500) may be implemented in the form of electronic circuitry (e.g., hardware). While Figs.
  • a number of the operations of the methods (200, 400, 500) may be executed concurrently or in a different order than shown in Figs. 2, 4, and 5.
  • the methods (200, 400, 500) may include more or fewer operations than are shown in Figs. 2, 4, and 5.
  • a number of the operations of the methods (200, 400, 500) may, at certain times, be ongoing and/or may repeat
  • a task to be completed is received (block 201 ) at a manager device.
  • the task is received (block 201 ) from a user in any variety of ways.
  • a user may use a voice recognition interface to vocally utter a task to be completed
  • the manager device may receive the task via another input device such as a keyboard or a touch-screen display
  • the task may be received by one of the managed devices.
  • one of the managed devices may include a microphone to pick up vocal indications of a task.
  • the managed device may provide the task or the vocal indications to the manager device.
  • the manager device divides (block 202) the task into at least one sub-task.
  • a received task may be to read a book to a child in a room.
  • This task may be broken up, by the manager device, based on capabilities of networked devices, which capabilities can include device location, device hardware, device processing speed, and historic device performance, among others.
  • Examples of sub-tasks for the task of reading a book to a child in a room may include reading the book to the child.
  • Another sub-task may include detecting that the child to be read to is in a particular location in the house, in some examples, a task may be divided into one sub- task which may include determining that the task is made up of a single sub- task.
  • Each of the sub-tasks are then assigned (block 203) by the manager device to different managed devices based on device capabilities.
  • the task of reading of the book may be assigned to an intelligent speaker based on that speaker being in the child's room.
  • the sub- task of detecting whether the child is in the room may be assigned to a motion sensor in the child's room. In this example, if the child has left the room as detected by the motion sensor, the intelligent speaker may stop reading the book, and another intelligent speaker located near the user may vocally indicate that the child has left the room and that the book reading has stopped.
  • Another example of a complex task being accomplished according to the present method (200) is financial investing.
  • the task may be to select particular financial investments, in this example, one sub-task assigned to one intelligent device may be to analyze market data and to make a competitive suggestion for investments in a market. Another intelligent device can collect market data from relevant sources. Another intelligent device could be trained to determine whether information is from relevant sources.
  • a hierarchy of devices which may be intelligent devices, is established with a manager computing device exerting control over managed devices. After a task is received and divided at the manager computing device, the manager computing device exerts control by assigning the sub-tasks to various managed devices based on the capabilities of all managed devices within a network.
  • each managed device can learn and specialize in a particular sub-task rather than expending processing resources to learn ail sub-tasks associated with a task.
  • the different managed devices can work in parallel to execute a complex task more quickly than would otherwise be possible.
  • the manager computing device can add or remove devices from the network so as to tailor the network of devices to more effectively carry out task execution.
  • the method (200) as described herein may be used to carry out any variety of tasks by breaking the task up into sub-tasks and assigning each sub-task to a variety of managed devices, which managed devices may be intelligent devices with machine-learning capabilities.
  • Fig. 3 is a diagram of a network (308) of devices, according to an example of the principles described herein.
  • devices include the manager device (310) and the managed devices (312-1 , 312-2, 312-3, 312-4, 312-5, 312-6, 312-7, 312-8).
  • Each of the managed devices (312) and the manager device (310) include components of the computing device (Fig. 1 , 100) depicted in Fig. 1. That is, each of the managed devices (312) and the manager device (310) have a task executer (Fig. 1 , 102) to execute tasks, a controller (Fig. 1 , 104) to switch the computing device (Fig. 1 , 100) between various modes.
  • Each device may also, when acting as a manager, include a master manifest (Fig. 1 , 106).
  • any number of managed devices (312) may be implemented in accordance with the principles described herein. Additionally, over time, the number of managed devices (312) may change as managed devices (312) are added and removed from the network (308).
  • any of the devices may be selected as the manager device (310), That is, the computing device (Fig, 1 , 100) that becomes the manager device (310) may have the same capabilities of the managed devices (312). in other examples, the manager device (310) may be selected based on an increased processing capabilities.
  • the manager device (310) may be a personal computing device or a mobile phone and the managed devices (312) may be specialized devices such as intelligent speakers, thermostats, home automation equipment, specialized sensors etc.
  • each of the devices i.e., the manager device (310) and the managed devices (312), may be intelligent devices capable of adjusting their operations based on historical performance and that can make decisions during the execution of those operations.
  • a task (314) may be received at the manager device (310) and divided into multiple sub-tasks (318-1 , 316-2, 316-3). Each of the sub-tasks (316) is then passed to a managed device (312). While Fig. 3 depicts particular sub-tasks (316) being passed to particular managed devices (312) and just one sub-task (318) being passed to each managed device (312), any number of sub-tasks (316) can be passed to any managed device (312) with any number of sub-tasks (316) being passed to different managed devices (312).
  • each managed device (312) may be machine- learning artificial intelligence devices that can learn and improve execution of sub-tasks (316) based on past performance. Still further, each of the devices, including the manager device (310) and the different managed devices (312) may be voice-enabled devices. For example, a user could utter a task to "find me a replacement microwave with the best price.” The manager device (310) may receive the task (314) of returning purchase options for replacement microwaves at the best price, in another example, the manager device (310), rather than returning purchase options, may actually purchase a replacement microwave at the best price.
  • any number of sub-tasks (316) may be generated.
  • the sub-tasks (316) may include finding microwave options, selecting one with a lowest price, selecting the best option for a microwave based on the price as well as other criteria such as availability, condition, etc., and in some cases a sub-task (318) may include securely purchasing the microwave. While in this example, specific reference is made to particular sub-tasks (316) for a particular task, any number, and different kinds, of sub-tasks (318) may be selected.
  • Allocating sub-tasks (318) to various managed devices (312) increases the security of any operation. For example, in the case of a secure financial transaction, were a single intelligent device is used and that one device were compromised, sensitive financial data may be lost. By comparison, when the secure financial transaction is distributed among many devices, a hacker would have to gain access to multiple devices, which is more difficult, before sensitive financial data could be acquired.
  • a manager device (310) may receive the task to lock the doors of a building when everyone is gone, in this example, some of the managed devices (312) may be motion sensors disposed at various locations throughout the building. Each of these motion sensors may receive a sub-task (316) of determining when that particular room is empty. Such a determination may be made when, after a period of time, no movement is detected within the particular room. As described above, the managed devices (312) may be intelligent devices that, based on historical data, can be more efficient at determining when a room is empty. Information from each room sensor may be passed to the manager device (310) and forwarded to another managed device (312), or forwarded directly to the other managed device (312).
  • the other managed device (312) may be a door locking mechanism that can lock a particular door for the building.
  • the manager device (310) divides the task into sub-tasks and assigns the sub-tasks (316) to different managed devices (312).
  • the manager device (310) receives output from one managed device (312) and forwards this output to another managed device (312).
  • the manager device (310) instructs the managed devices (312) to directly communicate one with another.
  • a user may utter the command, upon walking into a conference room to "initiate my next call," in this example, one of the managed devices (312) may include a microphone that receives the task (314) and passes it to the manager device (310).
  • the manager device (310) may then break up the task (314) of initiating a next call into sub-tasks (318) which may include 1 ) looking at the schedule to determine next call, 2) determining which device, i.e., a mobile device on the user or a conference phone, is best suited for the call, and 3) initiating the call on the selected device. Accordingly, each of these managed devices (312) could perform their individual sub-task (318) to facilitate completion of the task (314) of initiating an upcoming call on the user's schedule.
  • the managed devices (312) can communicate with one another.
  • the manager device (310) in addition to assigning sub-tasks to particular managed devices (312) may instruct how output from the various managed devices (312) is handled.
  • the output of the first managed device (312-1 ) which output may be a list of available microwaves, may be passed to the manager device (310) and then routed to the second managed device (312-2) to evaluate, based on customer reviews, a quality of the different available microwaves.
  • the first managed device (312-1 ) may pass the output to the second managed device (312-2) as it is generated.
  • the first managed device (312-1 ) may indicate each microwave as it is discovered, and the second managed device (312-2) may evaluate the microwave while the first managed device (312-1 ) continues to look for more microwaves.
  • the output of the first managed device (312-1 ) may be passed directly to the second managed device (312-2).
  • the managed devices (312) and the manager device (310) are all on the same network (308) such that they can communicate with one another.
  • the output may be vocal.
  • devices when devices are connected over a network, they may use network protocols to communicate.
  • these devices when devices are not connected over a network, these devices can audibly communicate with one another.
  • Fig. 4 is a flowchart of a method (400) for assigning sub-tasks (Fig. 3, 316) based on device capability, according to an example of the principles described herein.
  • a computing device (Fig. 1 , 100) receives (block 401 ) a designation to be the manager device (Fig. 3, 310). That is, through some interface, a user may place a computing device (Fig. 1 , 100) into a manager mode.
  • the computing device (Fig. 1 , 100) that becomes a manager device (Fig. 3, 310) may be any device within a network (Fig. 3, 308) of devices, in some cases, the manager device (Fig. 3, 310) may be a personal computing device, such as a desktop computer or a laptop computer, or may be a mobile device such as a smartphone.
  • the manager device (Fig. 3, 310) then receives (block 402) a task (Fig. 3, 314) to be completed and divides (block 403) the task (Fig. 3, 314) into sub-tasks (Fig. 3, 316). These may be done as described above in connection with Fig. 2.
  • the manager device determines (block 404) the capabilities of each of the managed devices (Fig. 3, 312). That is, each of the managed devices (Fig. 3, 312) have capabilities that may allow them to complete a sub-task (Fig. 3, 316). Examples of such capabilities include number of cores, processing speeds, amount of available storage, loads, etc.
  • This information can be passed to a manager device (Fig. 3, 310) which maintains a master manifest (Fig. 1 , 106) of the different capabilities, in some cases, the master manifest (Fig. 1 , 106) is dynamic, meaning that the listed capabilities for the managed devices (Fig. 3, 312) change over time. For example, a load on a particular managed device (Fig. 3, 312) may change over time.
  • the manifest (Fig. 1 , 106) may be dynamic in that capabilities are added or removed as managed devices (Fig. 3, 312) are added or removed from the network (Fig. 3, 308). That is, as new managed devices (Fig. 3, 312) become available, they, and their capabilities, can automatically be added to the network and master manifest (Fig. 1 , 106).
  • the method of reporting the supported functions from a managed device (Fig. 3, 312) to a manager device (Fig. 3, 310) could be standardized.
  • the manager device assigns (block 405) each of the sub-tasks (Fig. 3, 316) to the various managed devices (Fig. 3, 312) based on the capabilities of those managed devices (Fig. 3, 312). For example, managed devices (Fig. 3, 312) having learning capabilities related to a particular type of sub-task (Fig. 3, 318) may be assigned a sub-task (Fig. 3, 318) of that type.
  • an additional device may be added (block 408) to the network (Fig. 3, 308) of managed devices (Fig. 3, 312). That is, a user may purchase, install, and connect a new intelligent device to the network (Fig. 3, 308),
  • the manager device via a user interface or automatically, the manager device (Fig. 3, 310) can receive an individual manifest from this additional device and can then rely on that additional device in the assignation of sub-tasks (Fig. 3, 316).
  • the additional device may be added from a library or warehouse when the managed devices (Fig. 3, 312) don't support a particular sub-task. For example, if a desired task, or sub-task, is to be completed and is not supported by the available managed devices (Fig. 3, 312), then the manager device (Fig. 3, 310) could seek an available managed device (Fig. 3, 312) from a library or warehouse of available devices/functions.
  • Managed devices may also be removed (block 407) from the network (Fig. 3, 308) of managed devices (Fig. 3, 314). That is, a managed device (Fig. 3, 312) may no longer be needed, may become obsolete, or may become otherwise inoperable. Accordingly, a user may remove (block 407) that managed device (Fig. 3, 312) from the network (Fig, 3, 308). In this way, a hierarchy of devices is created wherein a user can add or remove devices from the network (Fig. 3, 308) to suit particular environments.
  • the ability to add and remove managed devices may allow for devices to be re-purposed throughout their life.
  • a particular example is provided in a network (Fig. 3, 308) intended to execute financial investment tasks (Fig. 3, 314).
  • a particular managed device Fig. 3, 312 could provide an error-checking function to let a data collection managed device (Fig, 3, 312) know that it is collecting bad sources. Accordingly, the data collection managed device (Fig. 3, 312) could enhance its collection methods.
  • the error- checking managed device Fig. 3, 312) could be re-purposed within the network (Fig. 3, 308).
  • the network of managed devices may be dynamic with managed devices (Fig. 3, 312) added and removed as desired.
  • managed devices Fig. 3, 312
  • cooperation of the system may not be available, so a manager device (Fig. 3, 310) may rely on other devices to complete tasks.
  • the manager device receives (block 408) output from a first managed device (Fig. 3, 312-1 ) and passes (block 409) that output to a second managed device (Fig. 3, 312-2).
  • the manager device is an intermediary between the different managed devices (Fig. 3, 312).
  • Fig. 5 is a flowchart of a method (500) for assigning sub-tasks based on device capability, according to an example of the principles described herein.
  • a computing device (Fig. 1 , 100) receives (block 501 ) a designation to be the manager device (Fig. 3, 310). This may be done as described above in connection with Fig. 4.
  • the manager device (Fig. 3, 310) can then receive (block 502) a task (Fig. 3, 314) to be completed, divide (block 503) the task (Fig. 3, 314) into sub-tasks (Fig. 3, 318), determine (block 504) the capabilities of each of the managed devices (Fig. 3, 312), and assign (block 505) each of the sub-tasks (Fig. 3, 316) to the various managed devices (Fig. 3, 312) based on the capabilities of those managed devices (Fig. 3, 312). These may be done as described above in connection with Fig. 4.
  • Managed devices may also be added (block 506) and removed from (block 507) from the network (Fig. 3, 308) of managed devices (Fig, 3, 314). These may be done as described above in connection with Fig. 4. in some examples, rather than being an intermediary between managed devices (Fig. 3, 312) as they complete their sub-tasks (Fig. 3, 316), the manager device (Fig. 3, 310) may direct (block 508) a first managed device (Fig, 3, 312-1 ) to communicate directly with a second managed device (Fig. 3, 312-2). For example, rather than the manager device (Fig. 3, 310) receiving output about available microwaves, this output from the first managed device (Fig. 3, 312-1 ) may be passed directly to the second managed device (Fig. 3, 312-2).
  • Fig. 8 is a diagram of a non-transitory machine-readable storage medium (618) for assigning sub-tasks (Fig. 3, 316) based on device capability, according to an example of the principles described herein.
  • a computing system includes various hardware
  • the computing system includes a processor.
  • Machine-readable storage medium (618) is communicatively coupled to the processor.
  • the machine-readable storage medium (618) includes a number of instruction sets (620, 622, 624, 626, 628, 630) for performing a designated function.
  • the machine-readable storage medium (618) causes the processor to execute the designated function of the instruction sets (620, 622, 624, 626, 628, 630).
  • the instruction sets (620, 622, 824, 626, 628, 830) may be distributed (e.g., stored) across multiple machine- readable storage mediums.
  • the processor refers to at least one processor and other resources used to process programmed instructions.
  • the processor may be a number of central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium (818).
  • the processor may fetch, decode, and execute instructions (820, 622, 624, 826, 628, 630) for assigning sub-tasks (Fig. 3, 316) to managed devices (Fig. 3, 312).
  • the processor may include a number of electronic circuits comprising a number of electronic components for performing the functionality of a number of the instructions in the machine-readable storage medium (618).
  • the machine-readable storage medium (618) represent generally any memory capable of storing data such as programmed instructions or data structures used by the computing system.
  • the machine-readable storage medium (618) includes a machine-readable storage medium that contains machine-readable program code to cause tasks to be executed by the processor.
  • the machine-readable storage medium (618) may be tangible and/or non-transitory storage medium.
  • the machine-readable storage medium (618) may be any appropriate storage medium that is not a transmission storage medium.
  • the machine-readable storage medium (618) may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions.
  • machine-readable storage medium (618) may be, for example, Random Access Memory (RAM), a storage drive, an optical disc, and the like.
  • RAM Random Access Memory
  • the machine-readable storage medium (618) may be disposed within the computing system.
  • the executable instructions may be "installed" on the computing system, in one example, the machine-readable storage medium (618) may be a portable, external or remote storage medium, for example, that allows the computing system to download the instructions from the portable/external/remote storage medium, in this situation, the executable instructions may be part of an "installation package".
  • the machine-readable storage medium (618) may be encoded with executable instructions for assigning sub-tasks (Fig. 3, 316).
  • Fig. 6, designate instructions (620), when executed by a processor, may cause the computing system to receive designation of a computing device from a network (Fig. 3, 308) of devices as a manager device (Fig. 3, 310).
  • Capabilities instructions (622), when executed by a processor, may cause the computing system to determine capabilities of each of the multiple managed devices (Fig. 3, 312) in the network (Fig. 3, 308) of computing devices to facilitate assigning at least one sub-task (Fig. 3, 316).
  • Task instructions (624), when executed by a processor, may cause the computing system to receive, at the manager device (Fig. 3, 310), a task (Fig. 3, 314) to be completed.
  • Divide instructions (826), when executed by a processor, may cause the computing system to divide, by the manager device (Fig. 3, 310), the task (Fig. 3, 314) into the at least one sub-task (Fig. 3, 316).
  • Assign instructions (628), when executed by a processor, may cause the computing system to assign, by the manager device (Fig. 3, 310), each of the at least one sub-tasks (Fig. 3, 316) to different managed devices (Fig. 3, 312) of the network of computing devices based on device capabilities.
  • Alter instructions (630), when executed by a processor, may cause the computing system to dynamically alter the network (Fig. 3, 308) of computing devices to which sub-tasks (Fig. 3, 316) are assignable. That is, the alter instructions (630) may add or remove managed devices (Fig. 3, 312) from the network (Fig. 3, 308) of computing devices.
  • the processor and machine-readable storage medium (618) are located within the same physical component, such as a server, or a network component.
  • the machine-readable storage medium (618) may be part of the physical component's main memory, caches, registers, nonvolatile memory, or elsewhere in the physical component's memory hierarchy.
  • the machine-readable storage medium (618) may be in communication with the processor over a network.
  • the computing system may be implemented on a user device, on a server, on a collection of servers, or combinations thereof.
  • Fig. 7 is a diagram of a non-transitory machine-readable storage medium (618) for assigning sub-tasks (Fig. 3, 316) based on device capability, according to an example of the principles described herein, in this example, the machine-readable storage medium (618) includes additional instructions (732, 734, 736).
  • Reduce instructions (732) when executed by a processor, may cause the computing system to reduce the capabilities of a managed device (Fig. 3, 312) to perform just a sub-task (Fig. 3, 316) associated with the managed device (Fig. 3, 312). That is, a managed device (Fig, 3, 312) may have different sensors and processors capable of completing a variety of sub-tasks (Fig. 3, 316).
  • the manager device Fig.
  • 310 may determine that that particular managed device (Fig. 3, 312) is to carry out a particular sub- task (Fig. 3, 316). Accordingly, the capabilities of that managed device (Fig. 3, 312) are limited to ensure efficient completion of that sub-task (Fig. 3, 316).
  • using such a system and method 1 provides more efficient completion of tasks via sub-tasks assigned to different devices based on their capability; 2) reduces hardware and processing requirements for intelligent devices, thus improving their viability in the market; 3) enhances system efficiency by spreading overall workload to complete a task among several managed devices; 4) facilitates repurposing of devices within a network at different points in time; 5) facilitates addition of devices and removal of devices to enhance the customizability of a network; and 6) allows for training of intelligent devices to accomplish a variety of complex tasks.
  • the devices disclosed herein may address other matters and deficiencies in a number of technical areas.
  • FIG. 1 Aspects of the present system and method are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to examples of the principles described herein.
  • Each block of the flowchart illustrations and block diagrams, and combinations of blocks in the flowchart illustrations and block diagrams, may be implemented by computer usable program code.
  • the computer usable program code may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the computer usable program code, when executed via, for example, the processor of the computing system or other programmable data processing apparatus, implement the functions or acts specified in the flowchart and/or block diagram block or blocks.
  • the computer usable program code may be embodied within a computer readable storage medium; the computer readable storage medium being part of the computer program product.
  • the computer readable storage medium is a non-transitory computer readable medium.

Abstract

In one example in accordance with the present disclosure, methods and systems for sub-task assignment based on device capability is described. According to the method, a manager device receives a task to be completed. The manager device divides the task into at least one sub-task. The manager device then assigns each of the at least one sub-tasks to different managed devices of a network of computing devices based on device capabilities.

Description

SUB-TASK ASSIGNMENT BASED ON DEVICE CAPABILITY
BACKGROUND
[0001] Virtual assistants refer to computing devices that can perform tasks or services for an individual. That is, a virtual assistant receives input from a user, and then executes an operation based on the received input. Some virtual assistants receive text input and/or voice input. For example, a user may say the phrase, "what is the temperature in Los Angeles." In response, a virtual assistant can search the Internet to determine the temperature in Los Angeles and can return, via text, visual display, or vocally, the determined temperature in Los Angeles.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] The accompanying drawings illustrate various examples of the principles described herein and are part of the specification. The illustrated examples are given merely for illustration, and do not limit the scope of the claims.
[0003] Fig. 1 is a block diagram of a computing device for sub-task assignment based on device capability, according to an example of the principles described herein.
[0004] Fig. 2 is a flowchart of a method for assigning sub-tasks based on device capability, according to an example of the principles described herein.
[0005] Fig. 3 is a diagram of a network of intelligent devices, according to an example of the principles described herein. [0006] Fig. 4 is a flowchart of a method for assigning sub-tasks based on device capability, according to an example of the principles described herein.
[0007] Fig. 5 is a flowchart of a method for assigning sub-tasks based on device capability, according to an example of the principles described herein.
[0008] Fig. 8 is a diagram of a non-transitory machine-readable storage medium for assigning sub-tasks based on device capability, according to an example of the principles described herein.
[0009] Fig. 7 is a diagram of a non-transitory machine-readable storage medium for assigning sub-tasks based on device capability, according to an example of the principles described herein.
[0010] Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements. The figures are not necessarily to scale, and the size of some parts may be exaggerated to more clearly illustrate the example shown. Moreover, the drawings provide examples and/or implementations consistent with the description; however, the description is not limited to the examples and/or implementations provided in the drawings.
DETAILED DESCRIPTION
[0011] Virtual assistants refer to computing devices that can perform tasks or services for an individual. That is, a virtual assistant receives input from a user, and then executes an operation based on the received input. Some virtual assistants receive text input and/or voice input. For example, a user may say the phrase, "what is the temperature in Los Angeles." In response, a virtual assistant can search the Internet to determine the temperature in Los Angeles and can return, via text, visual display, or vocally, the determined temperature in Los Angeles.
[0012] While such virtual assistants inarguably provide automation and simplicity for their users, a more complete integration may yield even more advantages to a user. For example, different virtual assistants may be intended to carry out a limited number of tasks. Accordingly, a user on a day-to-day basis may interact with multiple virtual assistants to carry out multiple operations, which is inefficient and can be cumbersome for the user. Moreover, as these virtual assistants may be intended to carry out a particular function, they may not be able to carry out complex tasks. For example, a user may desire to receive a verbal warning when an individual, such as a child, has left a particular room within a house, A monitoring device may be able to detect when an individual has left a room, but may not be able to provide a verbal warning. However, a speaker device may be able to provide the verbal warning but not be able to detect when the individual has left the room.
[0013] Accordingly, the present specification describes a method and system for aggregating the work of multiple virtual assistants, or managed devices, via a manager device. That is, the present system of devices is structured in a hierarchy to accomplish tasks more efficiently by specializing in performing particular sub-tasks related to a task, in this system, a user issues a command to the manager device. The manager device then delegates sub-tasks of a complex task to multiple managed devices that work together to complete the complex task. That is, using the present system, rather than a single device learning and performing ail sub-tasks that form a complex task, managed devices in a network could specialize in performing particular tasks at the discretion of a user. Doing so allows for small, well-connected team of managed intelligent devices that more efficiently use their processing resources to complete a complex task.
[0014] The present specification describes a method for carrying out this multi-intelligent device system. According to the method, a task to be completed is received at a manager device. The manager device then divides the task into at least one sub-task. The manager device assigns each of the sub-tasks to different managed devices of a network of devices based on device capabilities.
[001 S] The present specification also describes a computing device. The computing device includes a task executer to perform a task indicated via a user input. A controller of the computing device places the computing device in a manager mode based on a received designation. The controller also divides the task into sub-tasks and assigns, based on device capabilities, each of the sub-tasks to different managed devices. The computing device also includes a master manifest of capabilities of each of the different managed devices. The master manifest is a combination of individual manifests on each of the different managed devices.
[0016] The present specification also describes a non-transitory machine- readable storage medium encoded with instructions executable by a
processor. The machine-readable storage medium includes instructions to 1 ) receive designation of an intelligent device from a network of intelligent devices as a manager device; 2) determine capabilities of each of multiple managed devices in the network of intelligent devices to facilitate assigning at least one sub-task; 3) instructions to receive, at the manager device, a task to be completed; 4) instructions to divide, by the manager device, the task into the at least one sub-task; 5) instructions to assign, by the manager device, each of the at least one sub-task to different managed devices of the network of intelligent devices based on device capabilities; and 6)
instructions to dynamically alter the network of intelligent devices to which sub-tasks are assignable.
[0017] in summary, using such a system and method 1 ) provides more efficient completion of tasks via sub-tasks assigned to different devices based on their capability; 2) reduces hardware and processing requirements for intelligent devices, thus improving their viability in the market; 3) enhances system efficiency by spreading overall workload to complete a task among several managed devices; 4) facilitates repurposing of devices within a network at different points in time; 5) facilitates addition of devices and removal of devices to enhance the customizability of a network; and 6) allows for training of intelligent devices to accomplish a variety of complex tasks. However, it is contemplated that the devices disclosed herein may address other matters and deficiencies in a number of technical areas.
[0018] As used in the present specification and in the appended claims, the term "intelligent device" refers to a device that completes a task for an individual based on a received input. An intelligent device may interact with a user and other intelligent devices and may make decisions independent of user input. In some examples, an intelligent devices makes decisions between various options based on received information. In some examples, intelligent devices include machine-learning capabilities and/or artificial neural networks where they can learn habits, preferences, and best practices.
[0019] Further, as used in the present specification and in the appended claims, the term "manager device" refers to a device that receives a task, and assigns sub-tasks associated therewith to various managed devices. The manager device also divides the task into sub-tasks.
[0020] Even further, as used in the present specification and in the appended claims, the term "managed device" refers to an intelligent device of a network that receives sub-task assignments from a manager device. The managed device may be any type of intelligent device with any number of capabilities.
[0021] Still further, as used in the present specification and in the appended claims, the term "task executer" refers to a component of an intelligent device, be it a managed device or a manager device, which carries out a particular task or sub-task. For example, the task executer may be a processor that performs a web search responsive to a user input to determine the weather at a particular location. In another example, a task executer may be a monitor that detects presence, or motion, within a room.
[0022] Yet further, as used in the present specification and in the appended claims, the term "a number of" or similar language is meant to be understood broadly as any positive number including 1 to infinity.
[0023] in the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present systems and methods, it will be apparent, however, to one skilled in the art that the present apparatus, systems, and methods may be practiced without these specific details. Reference in the specification to "an example" or similar language means that a particular feature, structure, or characteristic described in connection with that example is included as described, but may or may not be included in other examples. [0024] Fig. 1 is a block diagram of a computing device (100) for sub-task assignment based on device capability, according to an example of the principles described herein, in some examples, the computing device (100) is an intelligent device meaning that the computing device (100) can perform certain operations to return a result requested by an individual. For example, an intelligent computing device (100) could return information requested from the internet once a user has requested that the computing device (100) acquire such information. Such intelligent devices may be capable of progressively improving performance, i.e. , learning over the course of time. For example, the intelligent devices may include artificial neural networks wherein they can learn habits, preferences, and best practices.
[0025] Accordingly, the computing device (100) includes an interface to receive such a task. The interface may be a voice-enabled interface to receive the task via voice input. That is, a user may vocally request certain information, or that a certain task be performed, and the computing device (100) may retrieve the information and/or perform the certain task. As a specific example, a user in a room may vocally request music to be played from the users music database, in this example, the computing device (100), without additional input, retrieves the music and begins playing it. Such a computing device (100) may operate independent of any physical input from the user. That is, the computing device (100) may be a voice-recognition device that can detect a voice input. The intelligent computing device (100) may also have a natural language processor to convert natural language input into a set of commands that can be executed by the computing device (100). In another example, the intelligent computing device (100) may upload the voice input to a server, and the server may perform the natural language processing.
[0026] The computing device (100) includes a task executer (102). The task executer (102) of the computing device (100) executes a task. For example, if the task to be completed is to identify a particular vehicle for purchase. The task executer (102) may scour an internet and identify particular vehicles for purchase based on search criteria indicated by a user.
8 [0027] The computing device (100) also includes a controller (104) to carry out various operations. For example, the controller (104) places the computing device (100) into a manager mode based on a received designation. That is a user may, via a user interface, select the computing device (100) from a pool of devices to be the manager. At different points in time, the computing device (100) which is acting as a manager may change, based on user input for example. In another example, the manager is selected dynamically, for example, based on capabilities of the various devices in a network, a work load of the various devices, etc.
[0028] While in the manager mode, the computing device (100), which may be an intelligent computing device (100), directs the operations of the other managed computing devices of the network. For example, a manager computing device (100) may receive a task and divide the task into multiple sub- tasks. As a specific example, a manager computing device (100) receives, via user input, a task to perform an electronic purchase of an item. The manager computing device (100) may divide the task into multiple sub-tasks such as 1 ) identifying instances of the item for sale, 2) of the available instances, determining which option is the best, and 3) completing a purchase of the item, using a users personal information, i.e., credit card information. In this example, the division of the task into sub-tasks may be based on capabilities of the network of managed devices.
[0029] in some examples, rather than completing a purchase of the item, a manager computing device may present ail options to a user and receive user selection of a preferred option. The manager device, based on the user selection, can then learn which options are best, and which are to be dropped, for subsequent task execution.
[0030] While in the manager mode, the controller (104) of the computing device (100) assigns each of the sub-tasks to different managed devices. For example, as a manager, the computing device (100) may select a first managed device to identify instances of the item for sale, a second managed device may determine which is the best option based on different criteria such as price, availability, delivery time, etc., and a third managed device may complete the purchase. The assignation of the various sub-tasks to managed devices is based on device capability. Using the above as an example, the third managed device may have an encryption device such that it could use to encrypt the user's financial information to ensure secure financial transactions. Accordingly, the third managed device may be assigned the sub-task of purchasing the item.
[0031] The division and assignment of sub-tasks may be based on other capabilities as well. For example, the managed devices may have different instruction sets, speeds, and/or number of cores. Accordingly, a managed device may be selected to accomplish a particular sub-task based on the processor that will accomplish the sub-task most efficiently. Process load is another example of a device capability on which sub-task assignments may be made. For example, a less efficient processor may be selected if a more efficient processor is busy, or is expected to be busy, and the sub-task is a low priority task.
[0032] in another example, device capabilities on which sub-task
assignments are based include machine-learning capabilities of the various managed devices. For example, different managed devices may have machine-learning engines intended to accomplish different tasks. The managed device with machine learning for a particular task may be selected to perform that task.
[0033] Another example of a device capability on which a task assignment can be based is a connected backend server. For example, the manager computing device (100) may determine a kind of request, e.g. , a request to purchase an item, a request for information, or a request to configure a smart device. The manager computing device (100) then determines which of the backend servers coupled to the various managed devices is best able to process such a request.
[0034] in yet another example, the capabilities of the managed devices may be related to a location of the managed device. For example, a managed intelligent device near a bedroom or a car may be selected for receiving downloaded audiobooks and/or reading audio books. In another example, a managed device, such as a smart doorbell, may be assigned to listen for when guests arrive and/or for intruders as opposed to a device near the interior of the home.
[003S] Other examples of device capabilities relate to the hardware of the managed devices. For example, some managed intelligent devices include different types of cameras and/or sensors and may be selected for sub-tasks that rely on cameras or a particular sensor.
[0036] Another example of a hardware component that may be used in determining which sub-task to assign to a managed device is a storage capacity and/or storage read/write speed. For example, an intelligent device with a fast write speed may be selected to receive content for streaming to a user.
However, the content may be saved to a different device with increased storage, and perhaps a slower speed, for long term storage after streaming of the content to the user.
[0037] In some examples, device capability may be determined based on user response. For example a manager device or a user can evaluate the responses of the different managed devices to determine which performed the most satisfactorily. Based on the feedback from the user, or analysis by the manager device, the manager device can learn which managed device gives the best response for a particular type of sub-task. In this example, managed devices that consistently give poor results can be dropped.
[0038] To aid in determining to which managed device a particular sub-task should be assigned, the computing device (100) includes a master manifest (106) that includes a list of capabilities of each of the different managed devices. The master manifest (106) is a combination of individual manifests from each of the different managed devices. For example, upon onboarding of a particular managed device, a manifest of that device, which can include static hardware components as well as dynamic capabilities such as load, available memory, and speeds, is passed to the manager computing device (100). Note that in this example, this master manifest (106) is present on a computing device (100) just while if is acting in a manager mode. When outside of the manager mode, the master manifest may be removed from the computing device (100). [0039] Such a computing device (100) a!iows for the more efficient completion of tasks. That is, rather than localizing all sub-tasks to be completed at a single computing device (100), which computing device may be an intelligent computing device (100) with machine learning and natural language processing, a manager intelligent computing device (100) can direct the efforts of multiple managed devices, perhaps even directing them to operate in parallel, to distribute processing resources for completing the task across various devices. Moreover, as each managed computing device is assigned a sub-task rather than the entire task, machine-learning is applied to a smaller environment such that it may more effectively converge to generate a particular output.
[0040] Fig. 2 is a flowchart of a method (200) for assigning sub-tasks based on device capability, according to an example of the principles described herein. As a general note, the methods (200, 400, 500) may be described below as being executed or performed by a particular computing device (Fig. 1 , 100). Other suitable systems and/or controller may be used as well. The methods (200, 400, 500) may be implemented in the form of executable instructions stored on at least one machine-readable storage medium of at least one of the devices and executed by at least one processor of at least one of the device. Alternatively or in addition, the methods (200, 400, 500) may be implemented in the form of electronic circuitry (e.g., hardware). While Figs. 2, 4, and 5 depict operations occurring in a particular order, a number of the operations of the methods (200, 400, 500) may be executed concurrently or in a different order than shown in Figs. 2, 4, and 5. In some examples, the methods (200, 400, 500) may include more or fewer operations than are shown in Figs. 2, 4, and 5. In some examples, a number of the operations of the methods (200, 400, 500) may, at certain times, be ongoing and/or may repeat
[0041] According to the method (200), a task to be completed is received (block 201 ) at a manager device. The task is received (block 201 ) from a user in any variety of ways. For example, a user may use a voice recognition interface to vocally utter a task to be completed, in other examples, the manager device may receive the task via another input device such as a keyboard or a touch-screen display, in some examples, the task may be received by one of the managed devices. For example, one of the managed devices may include a microphone to pick up vocal indications of a task. The managed device may provide the task or the vocal indications to the manager device.
[0042] With the input received, the manager device divides (block 202) the task into at least one sub-task. For example, a received task may be to read a book to a child in a room. This task may be broken up, by the manager device, based on capabilities of networked devices, which capabilities can include device location, device hardware, device processing speed, and historic device performance, among others. Examples of sub-tasks for the task of reading a book to a child in a room may include reading the book to the child. Another sub-task may include detecting that the child to be read to is in a particular location in the house, in some examples, a task may be divided into one sub- task which may include determining that the task is made up of a single sub- task.
[0043] Each of the sub-tasks are then assigned (block 203) by the manager device to different managed devices based on device capabilities. Returning to the above example, the task of reading of the book may be assigned to an intelligent speaker based on that speaker being in the child's room. The sub- task of detecting whether the child is in the room may be assigned to a motion sensor in the child's room. In this example, if the child has left the room as detected by the motion sensor, the intelligent speaker may stop reading the book, and another intelligent speaker located near the user may vocally indicate that the child has left the room and that the book reading has stopped.
[0044] Another example of a complex task being accomplished according to the present method (200) is financial investing. In this example, the task may be to select particular financial investments, in this example, one sub-task assigned to one intelligent device may be to analyze market data and to make a competitive suggestion for investments in a market. Another intelligent device can collect market data from relevant sources. Another intelligent device could be trained to determine whether information is from relevant sources. [0045] As described, a hierarchy of devices, which may be intelligent devices, is established with a manager computing device exerting control over managed devices. After a task is received and divided at the manager computing device, the manager computing device exerts control by assigning the sub-tasks to various managed devices based on the capabilities of all managed devices within a network. Thus, each managed device can learn and specialize in a particular sub-task rather than expending processing resources to learn ail sub-tasks associated with a task. Moreover, the different managed devices can work in parallel to execute a complex task more quickly than would otherwise be possible. In another example of the hierarchy, the manager computing device can add or remove devices from the network so as to tailor the network of devices to more effectively carry out task execution.
[0046] While reference is made to particular tasks and sub-tasks, the method (200) as described herein may be used to carry out any variety of tasks by breaking the task up into sub-tasks and assigning each sub-task to a variety of managed devices, which managed devices may be intelligent devices with machine-learning capabilities.
[0047] Fig. 3 is a diagram of a network (308) of devices, according to an example of the principles described herein. In this example devices include the manager device (310) and the managed devices (312-1 , 312-2, 312-3, 312-4, 312-5, 312-6, 312-7, 312-8). Each of the managed devices (312) and the manager device (310) include components of the computing device (Fig. 1 , 100) depicted in Fig. 1. That is, each of the managed devices (312) and the manager device (310) have a task executer (Fig. 1 , 102) to execute tasks, a controller (Fig. 1 , 104) to switch the computing device (Fig. 1 , 100) between various modes. Each device may also, when acting as a manager, include a master manifest (Fig. 1 , 106).
[0048] While eight managed devices (312) are depicted in Fig. 3 any number of managed devices (312) may be implemented in accordance with the principles described herein. Additionally, over time, the number of managed devices (312) may change as managed devices (312) are added and removed from the network (308). [0049] Within a given network (308) any of the devices may be selected as the manager device (310), That is, the computing device (Fig, 1 , 100) that becomes the manager device (310) may have the same capabilities of the managed devices (312). in other examples, the manager device (310) may be selected based on an increased processing capabilities. For example, the manager device (310) may be a personal computing device or a mobile phone and the managed devices (312) may be specialized devices such as intelligent speakers, thermostats, home automation equipment, specialized sensors etc.
[0050] As described above, each of the devices, i.e., the manager device (310) and the managed devices (312), may be intelligent devices capable of adjusting their operations based on historical performance and that can make decisions during the execution of those operations.
[0051] As described above, a task (314) may be received at the manager device (310) and divided into multiple sub-tasks (318-1 , 316-2, 316-3). Each of the sub-tasks (316) is then passed to a managed device (312). While Fig. 3 depicts particular sub-tasks (316) being passed to particular managed devices (312) and just one sub-task (318) being passed to each managed device (312), any number of sub-tasks (316) can be passed to any managed device (312) with any number of sub-tasks (316) being passed to different managed devices (312).
[0052] in this example, each managed device (312) may be machine- learning artificial intelligence devices that can learn and improve execution of sub-tasks (316) based on past performance. Still further, each of the devices, including the manager device (310) and the different managed devices (312) may be voice-enabled devices. For example, a user could utter a task to "find me a replacement microwave with the best price." The manager device (310) may receive the task (314) of returning purchase options for replacement microwaves at the best price, in another example, the manager device (310), rather than returning purchase options, may actually purchase a replacement microwave at the best price.
[0053] In either example, any number of sub-tasks (316) may be generated. As a specific example, the sub-tasks (316) may include finding microwave options, selecting one with a lowest price, selecting the best option for a microwave based on the price as well as other criteria such as availability, condition, etc., and in some cases a sub-task (318) may include securely purchasing the microwave. While in this example, specific reference is made to particular sub-tasks (316) for a particular task, any number, and different kinds, of sub-tasks (318) may be selected.
[0054] Allocating sub-tasks (318) to various managed devices (312) increases the security of any operation. For example, in the case of a secure financial transaction, were a single intelligent device is used and that one device were compromised, sensitive financial data may be lost. By comparison, when the secure financial transaction is distributed among many devices, a hacker would have to gain access to multiple devices, which is more difficult, before sensitive financial data could be acquired.
[005S] in another example, a manager device (310) may receive the task to lock the doors of a building when everyone is gone, in this example, some of the managed devices (312) may be motion sensors disposed at various locations throughout the building. Each of these motion sensors may receive a sub-task (316) of determining when that particular room is empty. Such a determination may be made when, after a period of time, no movement is detected within the particular room. As described above, the managed devices (312) may be intelligent devices that, based on historical data, can be more efficient at determining when a room is empty. Information from each room sensor may be passed to the manager device (310) and forwarded to another managed device (312), or forwarded directly to the other managed device (312). in this example, the other managed device (312) may be a door locking mechanism that can lock a particular door for the building. In this example, the manager device (310) divides the task into sub-tasks and assigns the sub-tasks (316) to different managed devices (312). In some cases the manager device (310) receives output from one managed device (312) and forwards this output to another managed device (312). In another example, the manager device (310) instructs the managed devices (312) to directly communicate one with another. [00S6] In yet another example, a user may utter the command, upon walking into a conference room to "initiate my next call," in this example, one of the managed devices (312) may include a microphone that receives the task (314) and passes it to the manager device (310). The manager device (310) may then break up the task (314) of initiating a next call into sub-tasks (318) which may include 1 ) looking at the schedule to determine next call, 2) determining which device, i.e., a mobile device on the user or a conference phone, is best suited for the call, and 3) initiating the call on the selected device. Accordingly, each of these managed devices (312) could perform their individual sub-task (318) to facilitate completion of the task (314) of initiating an upcoming call on the user's schedule.
[0057] In some examples, the managed devices (312) can communicate with one another. For example, the manager device (310) in addition to assigning sub-tasks to particular managed devices (312) may instruct how output from the various managed devices (312) is handled. As a specific example, the output of the first managed device (312-1 ), which output may be a list of available microwaves, may be passed to the manager device (310) and then routed to the second managed device (312-2) to evaluate, based on customer reviews, a quality of the different available microwaves. In one example, the first managed device (312-1 ) may pass the output to the second managed device (312-2) as it is generated. For example, the first managed device (312-1 ) may indicate each microwave as it is discovered, and the second managed device (312-2) may evaluate the microwave while the first managed device (312-1 ) continues to look for more microwaves.
[0058] In another example, the output of the first managed device (312-1 ) may be passed directly to the second managed device (312-2). in this example, the managed devices (312) and the manager device (310) are all on the same network (308) such that they can communicate with one another. In some examples, when devices are communicating directly to one another, the output may be vocal. For example, in one example when devices are connected over a network, they may use network protocols to communicate. In another example, when devices are not connected over a network, these devices can audibly communicate with one another.
[00S9] Fig. 4 is a flowchart of a method (400) for assigning sub-tasks (Fig. 3, 316) based on device capability, according to an example of the principles described herein. According to the method (400), a computing device (Fig. 1 , 100) receives (block 401 ) a designation to be the manager device (Fig. 3, 310). That is, through some interface, a user may place a computing device (Fig. 1 , 100) into a manager mode. As described above, the computing device (Fig. 1 , 100) that becomes a manager device (Fig. 3, 310) may be any device within a network (Fig. 3, 308) of devices, in some cases, the manager device (Fig. 3, 310) may be a personal computing device, such as a desktop computer or a laptop computer, or may be a mobile device such as a smartphone.
[0060] The manager device (Fig. 3, 310) then receives (block 402) a task (Fig. 3, 314) to be completed and divides (block 403) the task (Fig. 3, 314) into sub-tasks (Fig. 3, 316). These may be done as described above in connection with Fig. 2.
[0061] The manager device (Fig. 3, 310) determines (block 404) the capabilities of each of the managed devices (Fig. 3, 312). That is, each of the managed devices (Fig. 3, 312) have capabilities that may allow them to complete a sub-task (Fig. 3, 316). Examples of such capabilities include number of cores, processing speeds, amount of available storage, loads, etc. This information can be passed to a manager device (Fig. 3, 310) which maintains a master manifest (Fig. 1 , 106) of the different capabilities, in some cases, the master manifest (Fig. 1 , 106) is dynamic, meaning that the listed capabilities for the managed devices (Fig. 3, 312) change over time. For example, a load on a particular managed device (Fig. 3, 312) may change over time. Moreover, the manifest (Fig. 1 , 106) may be dynamic in that capabilities are added or removed as managed devices (Fig. 3, 312) are added or removed from the network (Fig. 3, 308). That is, as new managed devices (Fig. 3, 312) become available, they, and their capabilities, can automatically be added to the network and master manifest (Fig. 1 , 106). In some examples, the method of reporting the supported functions from a managed device (Fig. 3, 312) to a manager device (Fig. 3, 310) could be standardized.
[0062] With capabilities determined (block 404), the manager device (Fig. 3, 310) assigns (block 405) each of the sub-tasks (Fig. 3, 316) to the various managed devices (Fig. 3, 312) based on the capabilities of those managed devices (Fig. 3, 312). For example, managed devices (Fig. 3, 312) having learning capabilities related to a particular type of sub-task (Fig. 3, 318) may be assigned a sub-task (Fig. 3, 318) of that type.
[0063] According to the method (400), in some examples, an additional device may be added (block 408) to the network (Fig. 3, 308) of managed devices (Fig. 3, 312). That is, a user may purchase, install, and connect a new intelligent device to the network (Fig. 3, 308), In this example, via a user interface or automatically, the manager device (Fig. 3, 310) can receive an individual manifest from this additional device and can then rely on that additional device in the assignation of sub-tasks (Fig. 3, 316).
[0064] In another example, the additional device may be added from a library or warehouse when the managed devices (Fig. 3, 312) don't support a particular sub-task. For example, if a desired task, or sub-task, is to be completed and is not supported by the available managed devices (Fig. 3, 312), then the manager device (Fig. 3, 310) could seek an available managed device (Fig. 3, 312) from a library or warehouse of available devices/functions.
[006S] Managed devices (Fig. 3, 312) may also be removed (block 407) from the network (Fig. 3, 308) of managed devices (Fig. 3, 314). That is, a managed device (Fig. 3, 312) may no longer be needed, may become obsolete, or may become otherwise inoperable. Accordingly, a user may remove (block 407) that managed device (Fig. 3, 312) from the network (Fig, 3, 308). In this way, a hierarchy of devices is created wherein a user can add or remove devices from the network (Fig. 3, 308) to suit particular environments.
[0066] The ability to add and remove managed devices (Fig. 3, 312) may allow for devices to be re-purposed throughout their life. A particular example is provided in a network (Fig. 3, 308) intended to execute financial investment tasks (Fig. 3, 314). in this example, a particular managed device (Fig. 3, 312) could provide an error-checking function to let a data collection managed device (Fig, 3, 312) know that it is collecting bad sources. Accordingly, the data collection managed device (Fig. 3, 312) could enhance its collection methods. Once the data collection managed device (Fig. 3, 312) is well trained, the error- checking managed device (Fig. 3, 312) could be re-purposed within the network (Fig. 3, 308).
[0067] As described above, the network of managed devices (Fig. 3, 312) may be dynamic with managed devices (Fig. 3, 312) added and removed as desired. For example, depending on the time of day and available devices, cooperation of the system may not be available, so a manager device (Fig. 3, 310) may rely on other devices to complete tasks.
[0068] in some examples, the manager device (Fig. 3, 310) receives (block 408) output from a first managed device (Fig. 3, 312-1 ) and passes (block 409) that output to a second managed device (Fig. 3, 312-2). In this example, the manager device (Fig. 3, 310) is an intermediary between the different managed devices (Fig. 3, 312).
[0069] Fig. 5 is a flowchart of a method (500) for assigning sub-tasks based on device capability, according to an example of the principles described herein. According to the method (500), a computing device (Fig. 1 , 100) receives (block 501 ) a designation to be the manager device (Fig. 3, 310). This may be done as described above in connection with Fig. 4. The manager device (Fig. 3, 310) can then receive (block 502) a task (Fig. 3, 314) to be completed, divide (block 503) the task (Fig. 3, 314) into sub-tasks (Fig. 3, 318), determine (block 504) the capabilities of each of the managed devices (Fig. 3, 312), and assign (block 505) each of the sub-tasks (Fig. 3, 316) to the various managed devices (Fig. 3, 312) based on the capabilities of those managed devices (Fig. 3, 312). These may be done as described above in connection with Fig. 4.
[0070] Managed devices (Fig. 3, 312) may also be added (block 506) and removed from (block 507) from the network (Fig. 3, 308) of managed devices (Fig, 3, 314). These may be done as described above in connection with Fig. 4. in some examples, rather than being an intermediary between managed devices (Fig. 3, 312) as they complete their sub-tasks (Fig. 3, 316), the manager device (Fig. 3, 310) may direct (block 508) a first managed device (Fig, 3, 312-1 ) to communicate directly with a second managed device (Fig. 3, 312-2). For example, rather than the manager device (Fig. 3, 310) receiving output about available microwaves, this output from the first managed device (Fig. 3, 312-1 ) may be passed directly to the second managed device (Fig. 3, 312-2).
[0071] Fig. 8 is a diagram of a non-transitory machine-readable storage medium (618) for assigning sub-tasks (Fig. 3, 316) based on device capability, according to an example of the principles described herein. To achieve its desired functionality, a computing system includes various hardware
components. Specifically, the computing system includes a processor.
Machine-readable storage medium (618) is communicatively coupled to the processor. The machine-readable storage medium (618) includes a number of instruction sets (620, 622, 624, 626, 628, 630) for performing a designated function. The machine-readable storage medium (618) causes the processor to execute the designated function of the instruction sets (620, 622, 624, 626, 628, 630).
[0072] Although the following descriptions refer to a single machine-readable storage medium (618), the descriptions may also apply to multiple machine- readable storage mediums. In such examples, the instruction sets (620, 622, 824, 626, 628, 830) may be distributed (e.g., stored) across multiple machine- readable storage mediums.
[0073] The processor refers to at least one processor and other resources used to process programmed instructions. For example, the processor may be a number of central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium (818). The processor may fetch, decode, and execute instructions (820, 622, 624, 826, 628, 630) for assigning sub-tasks (Fig. 3, 316) to managed devices (Fig. 3, 312). In one example, the processor may include a number of electronic circuits comprising a number of electronic components for performing the functionality of a number of the instructions in the machine-readable storage medium (618). With respect to the executable instruction, representations (e.g., boxes) described and shown herein, it should be understood that part or all of the executable instructions and/or electronic circuits included within one box may, in alternate examples, be included in a different box shown in the figures or in a different box not shown.
[0074] The machine-readable storage medium (618) represent generally any memory capable of storing data such as programmed instructions or data structures used by the computing system. The machine-readable storage medium (618) includes a machine-readable storage medium that contains machine-readable program code to cause tasks to be executed by the processor. The machine-readable storage medium (618) may be tangible and/or non-transitory storage medium. The machine-readable storage medium (618) may be any appropriate storage medium that is not a transmission storage medium. For example, the machine-readable storage medium (618) may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, machine-readable storage medium (618) may be, for example, Random Access Memory (RAM), a storage drive, an optical disc, and the like. The machine-readable storage medium (618) may be disposed within the computing system. In this situation, the executable instructions may be "installed" on the computing system, in one example, the machine-readable storage medium (618) may be a portable, external or remote storage medium, for example, that allows the computing system to download the instructions from the portable/external/remote storage medium, in this situation, the executable instructions may be part of an "installation package". As described herein, the machine-readable storage medium (618) may be encoded with executable instructions for assigning sub-tasks (Fig. 3, 316).
[0075] Referring to Fig. 6, designate instructions (620), when executed by a processor, may cause the computing system to receive designation of a computing device from a network (Fig. 3, 308) of devices as a manager device (Fig. 3, 310). Capabilities instructions (622), when executed by a processor, may cause the computing system to determine capabilities of each of the multiple managed devices (Fig. 3, 312) in the network (Fig. 3, 308) of computing devices to facilitate assigning at least one sub-task (Fig. 3, 316). Task instructions (624), when executed by a processor, may cause the computing system to receive, at the manager device (Fig. 3, 310), a task (Fig. 3, 314) to be completed. Divide instructions (826), when executed by a processor, may cause the computing system to divide, by the manager device (Fig. 3, 310), the task (Fig. 3, 314) into the at least one sub-task (Fig. 3, 316). Assign instructions (628), when executed by a processor, may cause the computing system to assign, by the manager device (Fig. 3, 310), each of the at least one sub-tasks (Fig. 3, 316) to different managed devices (Fig. 3, 312) of the network of computing devices based on device capabilities. Alter instructions (630), when executed by a processor, may cause the computing system to dynamically alter the network (Fig. 3, 308) of computing devices to which sub-tasks (Fig. 3, 316) are assignable. That is, the alter instructions (630) may add or remove managed devices (Fig. 3, 312) from the network (Fig. 3, 308) of computing devices.
[0076] in some examples, the processor and machine-readable storage medium (618) are located within the same physical component, such as a server, or a network component. The machine-readable storage medium (618) may be part of the physical component's main memory, caches, registers, nonvolatile memory, or elsewhere in the physical component's memory hierarchy. In one example, the machine-readable storage medium (618) may be in communication with the processor over a network. Thus, the computing system may be implemented on a user device, on a server, on a collection of servers, or combinations thereof.
[0077] Fig. 7 is a diagram of a non-transitory machine-readable storage medium (618) for assigning sub-tasks (Fig. 3, 316) based on device capability, according to an example of the principles described herein, in this example, the machine-readable storage medium (618) includes additional instructions (732, 734, 736). Reduce instructions (732), when executed by a processor, may cause the computing system to reduce the capabilities of a managed device (Fig. 3, 312) to perform just a sub-task (Fig. 3, 316) associated with the managed device (Fig. 3, 312). That is, a managed device (Fig, 3, 312) may have different sensors and processors capable of completing a variety of sub-tasks (Fig. 3, 316). However, the manager device (Fig. 3, 310), based on any number of criteria, may determine that that particular managed device (Fig. 3, 312) is to carry out a particular sub- task (Fig. 3, 316). Accordingly, the capabilities of that managed device (Fig. 3, 312) are limited to ensure efficient completion of that sub-task (Fig. 3, 316).
[0078] Addition instructions (734), when executed by a processor, may cause the computing system to determine whether an additional device has been connected to the network (Fig. 3, 308) of computing devices. Manifest instructions (736), when executed by a processor, may cause the computing system to add a manifest of the capabilities of the additional device to the master manifest (Fig. 1 , 106) on the manager device (Fig. 3, 310).
[0079] In summary, using such a system and method 1 ) provides more efficient completion of tasks via sub-tasks assigned to different devices based on their capability; 2) reduces hardware and processing requirements for intelligent devices, thus improving their viability in the market; 3) enhances system efficiency by spreading overall workload to complete a task among several managed devices; 4) facilitates repurposing of devices within a network at different points in time; 5) facilitates addition of devices and removal of devices to enhance the customizability of a network; and 6) allows for training of intelligent devices to accomplish a variety of complex tasks. However, it is contemplated that the devices disclosed herein may address other matters and deficiencies in a number of technical areas.
[0080] Aspects of the present system and method are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to examples of the principles described herein. Each block of the flowchart illustrations and block diagrams, and combinations of blocks in the flowchart illustrations and block diagrams, may be implemented by computer usable program code. The computer usable program code may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the computer usable program code, when executed via, for example, the processor of the computing system or other programmable data processing apparatus, implement the functions or acts specified in the flowchart and/or block diagram block or blocks. In one example, the computer usable program code may be embodied within a computer readable storage medium; the computer readable storage medium being part of the computer program product. In one example, the computer readable storage medium is a non-transitory computer readable medium.
[0081] The preceding description has been presented to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Many modifications and variations are possible in light of the above teaching.

Claims

1 . A method comprising:
receiving, at a manager device, a task to be completed;
dividing, by the manager device, the task into at least one sub-task; and
assigning, by the manager device, each of the at least one sub-task to different managed devices of a network of computing devices based on device capabilities.
2. The method of claim 1 , further comprising receiving designation of a computing device from the network of computing devices as the manager device.
3. The method of claim 1 , wherein assigning each of the at least one sub-task to different managed devices comprises assigning one sub-task per managed device.
4. The method of claim 1 , further comprising adding an additional device to the network of computing devices to which sub-tasks are assignable.
5. The method of claim 1 , further comprising removing a managed device from the network of computing devices to which sub-tasks are assignable.
6. The method of claim 1 , further comprising:
receiving an output from a first managed device related to a corresponding first sub-task; and
passing the output from the first managed device to a second managed device to facilitate the second managed device executing a second sub-task.
7. The method of claim 1 , further comprising directing a first managed device executing a first sub-task to pass an output related to the first sub- task to a second managed device to facilitate the second managed device executing a second sub-task.
8. The method of claim 1 , further comprising determining capabilities of each of the managed devices in the network of computing devices to facilitate assigning each of the at least one sub-task.
9. A computing device comprising:
A task executer to perform a task indicated via user input;
a controller to:
place the computing device in a manager mode based on a received designation;
divide the task into at least one sub-task;
assign, based on device capabilities, each of the at least one sub-task to different managed devices from a network of computing devices; and
a master manifest of capabilities of each of the different managed devices, wherein the master manifest is a combination of individual manifests on each of the different managed devices.
10. The computing device of claim 9, wherein the computing device and managed devices are machine-learning computing devices.
1 1 . The computing device of claim 9, wherein the computing device further comprises a voice-enabled interface to receive the task via voice input.
12. The computing device of claim 9, wherein the computing device has the same capabilities as the managed devices.
13. A non-transitory machine-readable storage medium encoded with instructions executable by a processor, the machine-readable storage medium comprising:
instructions to receive designation of a computing device from a network of computing devices as a manager device;
instructions to determine capabilities of each of multiple managed devices in the network of computing devices to facilitate assigning at least one sub-task;
instructions to receive, at the manager device, a task to be
completed;
instructions to divide, by the manager device, the task into the at least one sub-task;
instructions to assign, by the manager device, each of the at least one sub-task to different managed devices of the network of computing devices based on device capabilities; and
instructions to dynamically alter the network of computing devices to which sub-tasks are assignable.
14. The machine-readable storage medium of claim 13, further comprising instructions to reduce the capabilities of a managed device to perform just a sub-task associated with the managed device.
15. The machine-readable storage medium of claim 13, further comprising:
instructions to determine whether an additional device has been connected to the network of computing devices; and
instructions to add a manifest of the capabilities of the additional device to the master manifest on the manager device.
28
PCT/US2017/056502 2017-10-13 2017-10-13 Sub-task assignment based on device capability WO2019074515A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2017/056502 WO2019074515A1 (en) 2017-10-13 2017-10-13 Sub-task assignment based on device capability

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2017/056502 WO2019074515A1 (en) 2017-10-13 2017-10-13 Sub-task assignment based on device capability

Publications (1)

Publication Number Publication Date
WO2019074515A1 true WO2019074515A1 (en) 2019-04-18

Family

ID=66101604

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2017/056502 WO2019074515A1 (en) 2017-10-13 2017-10-13 Sub-task assignment based on device capability

Country Status (1)

Country Link
WO (1) WO2019074515A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110648054A (en) * 2019-09-04 2020-01-03 中国建设银行股份有限公司 Task parallel processing method and device for robot process automation
WO2021096005A1 (en) * 2019-11-12 2021-05-20 Samsung Electronics Co., Ltd. Method and system for neural network execution distribution
US20230140281A1 (en) * 2019-10-08 2023-05-04 At&T Intellectual Property I, L.P. Task delegation and cooperation for automated assistants

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080080411A1 (en) * 2006-09-29 2008-04-03 Cole Terry L Task scheduler responsive to connectivity prerequisites
US20140244712A1 (en) * 2013-02-25 2014-08-28 Artificial Solutions Iberia SL System and methods for virtual assistant networks
US20150215350A1 (en) * 2013-08-27 2015-07-30 Persais, Llc System and method for distributed virtual assistant platforms
US20160335532A1 (en) * 2015-05-15 2016-11-17 Apple Inc. Virtual assistant in a communication session
US20170068550A1 (en) * 2015-09-08 2017-03-09 Apple Inc. Distributed personal assistant

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080080411A1 (en) * 2006-09-29 2008-04-03 Cole Terry L Task scheduler responsive to connectivity prerequisites
US20140244712A1 (en) * 2013-02-25 2014-08-28 Artificial Solutions Iberia SL System and methods for virtual assistant networks
US20150215350A1 (en) * 2013-08-27 2015-07-30 Persais, Llc System and method for distributed virtual assistant platforms
US20160335532A1 (en) * 2015-05-15 2016-11-17 Apple Inc. Virtual assistant in a communication session
US20170068550A1 (en) * 2015-09-08 2017-03-09 Apple Inc. Distributed personal assistant

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110648054A (en) * 2019-09-04 2020-01-03 中国建设银行股份有限公司 Task parallel processing method and device for robot process automation
CN110648054B (en) * 2019-09-04 2022-05-17 中国建设银行股份有限公司 Task parallel processing method and device for robot flow automation
US20230140281A1 (en) * 2019-10-08 2023-05-04 At&T Intellectual Property I, L.P. Task delegation and cooperation for automated assistants
WO2021096005A1 (en) * 2019-11-12 2021-05-20 Samsung Electronics Co., Ltd. Method and system for neural network execution distribution

Similar Documents

Publication Publication Date Title
US11080037B2 (en) Software patch management incorporating sentiment analysis
US11488064B2 (en) Machine learning model for micro-service compliance requirements
US20210042628A1 (en) Building a federated learning framework
US20210067470A1 (en) Methods and systems for improving chatbot intent training
US10748102B2 (en) Just in time learning driven by point of sale or other data and metrics
EP3091537A1 (en) Noise cancellation for voice activation
WO2019074515A1 (en) Sub-task assignment based on device capability
US11381683B2 (en) System, device, and method of performing data analytics for advising a sales representative during a voice call
US11727413B2 (en) System, device, and method of performing data analytics for generating sales tasks for sales representatives
US11114089B2 (en) Customizing a voice-based interface using surrounding factors
US10891954B2 (en) Methods and systems for managing voice response systems based on signals from external devices
US20240048656A1 (en) Selecting a target queue for an electronic communication
US10873662B2 (en) Identifying a media item to present to a user device via a communication session
CN116661936A (en) Page data processing method and device, computer equipment and storage medium
US20200118668A1 (en) Method and apparatus for autism spectrum disorder assessment and intervention
US11677832B2 (en) Voice activated device enabling
CN112787831B (en) Method and device for splitting conference group
US11727119B2 (en) Migration risk assessment, recommendation, and implementation
CN114862242A (en) Artificial customer service distribution method and device, storage medium and electronic equipment
US20220180865A1 (en) Runtime topic change analyses in spoken dialog contexts
US11818293B1 (en) Systems and methods for determining optimum customer routing path
CN115952208A (en) Method and device for calculating association degree of features and labels and electronic equipment
CN117370558A (en) Data integration method, device, equipment and storage medium thereof

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17928732

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17928732

Country of ref document: EP

Kind code of ref document: A1