This disclosure describes workflows and machine learning models for training a machine learning recommendation model to recommend interventions to advance an individual's well-being and to update one or more well-being profiles that are specific to the user and the user's environment.
A number of consumer wearable products are available that enable users to track various health metrics such as blood pressure, heart rate, activity levels, and the like. Such information is collected by the wearable and is typically presented to the user in a display on the wearable or on a connected mobile device (e.g., a smartphone). Such information is useful to the user to provide a snapshot of the user's condition as it relates to the respective tracked variables; however, the information tracked by conventional wearable products is not sufficient to enable the user to track her well-being over time as the user's well-being is not a function of a single factor or variable and different activities affect different individuals differently.
Various examples are now described to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
In sample configurations described herein, a method of monitoring a user's well-being is described that includes creating an n-dimensional well-being profile specific to the user, the n-dimensional well-being profile comprising values for n well-being factors, and mapping at least one intervention activity to a plurality of well-being factors impacted by the intervention activity. Then, upon completion of the user performing an intervention activity, the n-dimensional profile is refined into at least one n-dimensional sub-profile for an environment in which the intervention activity was performed, wherein the n-dimensional profile is refined in accordance with implicit and explicit responses to the completed intervention activity that impact the plurality of well-being factors in the environment. A recommendation is provided to the user for another intervention activity based on the refined at least one n-dimensional sub-profile for the environment, and changes in at least one of the n-dimensional well-being profile or the at least one n-dimensional sub-profile are monitored to track changes in the user's well-being over time as the user completes intervention activities. The n well-being factors may include factors that can directly or indirectly affect the user's well-being, including a plurality of cardio, resting heart rate, sleep hours, water intake, or smoking. The method may further include maintaining a library of the n well-being factors in a data store, the n well-being factors including at least one of calm, self-love, forgiveness, modesty, prudence, self-regulation, kindness, love, teamwork, leadership, diet, sleep, drugs, or community. The environment may also include one of work, home, a gym, or driving, where the user has an n-dimensional well-being profile for each environment.
The methods described herein further include assigning weights to well-being factors that are specific to the user and the user's environment to create the n-dimensional well-being profile. In sample configurations, the weights are increased based on a number of implicit and explicit responses triggered by an associated well-being factor in response to an intervention activity.
The methods described herein may further include generating trend and collaborative well-being features. In sample configurations, the trend well-being features extrapolate intervention activities based on several users' completed intervention activities. A specific intervention activity for the environment is recommended based on trends specific to the user. The collaborative well-being features also may include well-being features from other users with a similar well-being profile to the user.
In sample configurations, the implicit and explicit responses relate to physiological and psychological effects of the completed intervention activity impacting the plurality of well-being factors in the environment. The implicit responses may be measured by sensors while the explicit responses may be provided by the user in response to a survey.
In further sample configurations, mapping the at least one intervention activity to the plurality of well-being factors impacted by the intervention activity may include a many-to-many mapping of the implicit and explicit responses to the completed intervention activity to the plurality of well-being factors impacted by the completed intervention activity. Also, an overall well-being profile for the user may be computed based on at least one n-dimensional sub-profile for each environment in which an intervention activity is performed by the user. In sample configurations, the computing may include summing respective well-being factors together for the at least one n-dimensional sub-profile for each environment. In addition, the n-dimensional well-being profile specific to the user may be collaboratively filtered with an n-dimensional well-being profile specific to another user. The resulting recommendation may be provided to the user for another intervention activity based on a result of the collaborative filtering.
The n-dimensional well-being profile specific to the user may be stored as versioned well-being factor values specific to the user and the environment. The n-dimensional well-being profile specific to the user may be stored on a mobile computing device of the user. Also, the n-dimensional well-being profile specific to the user may be encrypted into encrypted data and stored on a server. The n-dimensional well-being profile specific to the user also may be de-identified into de-identified aggregate profile data for a plurality of users and stored on the server.
Also, each time the well-being factors for a given n-dimensional well-being profile are updated, a new version of the n-dimensional well-being profile may be created and a profile table updated to track a version lineage of the n-dimensional well-being profile. In sample configurations, the n-dimensional well-being profile specific to the user may be stored in a hierarchical tree structure on a computing device where each new version of the n-dimensional well-being profile is stored under a current version of the n-dimensional well-being profile to create the at least one n-dimensional sub-profile. In such a configuration, tracking changes in the user's well-being over time as the user completes intervention activities may include tracking the n-dimensional well-being profile specific to the user in the hierarchical tree structure where each node in the tree represents a point in n-dimensional space.
In such configurations, the method may include identifying which well-being factors impact a user's well-being the most at each level in the hierarchical tree structure and recommending intervention activities for the identified well-being factors at each level in the hierarchical tree structure. In such configurations, building the hierarchical tree structure for the user's n-dimensional well-being profile may include the steps of obtaining a list of recommended well-being factors to pursue given the user's current position, recommending intervention activities for each of the listed recommended well-being factors, gathering feedback from the user to obtain an associated well-being label for the recommended well-being factors, creating a new n-dimensional well-being profile for each intervention activity that uses a recommended well-being profile from a previous level in the hierarchical tree structure as its parent, and selecting an n-dimensional well-being profile with a best well-being label as a candidate n-dimensional well-being profile for a current level in the hierarchical tree structure.
In sample configurations, refining the n-dimensional profile into at least one n-dimensional sub-profile for an environment in which the intervention activity was performed may include incrementing values of the at least one n-dimensional sub-profile for the environment by a total number of implicit or explicit responses triggered by the completed intervention activity. The implicit response may be triggered by the completed intervention activity when a value for a well-being factor affected by the completed intervention activity falls outside two standard deviations from historical values associated with the user for the well-being factor.
In further configurations, refining the n-dimensional well-being profile into at least one n-dimensional sub-profile for an environment in which the intervention activity was performed may include determining the user's environment, measuring all implicit and explicit responses associated with well-being factors in the user's environment related to the recommended intervention activity, determining which implicit responses impacted the well-being factors for the user in the user's environment by comparing a value of an implicit response against an historical value for the implicit response in that environment for the user, and when an explicit response is captured, determining when the explicit response was triggered. For each implicit or explicit response that changed in value, the method may further include determining the well-being factors that impact the implicit or explicit response, and for each well-being factor that impacts an implicit or explicit response, fetching records for an environment specific n-dimensional well-being profile specific to the user and determining from the records the values of well-being factors for the user for the environment specific n-dimensional well-being profile specific to the user. A value of at least one well-being factor may be incremented by a count of triggered implicit and explicit responses and the n-dimensional well-being profile updated with the value of the at least one well-being factor.
In still further configurations, a well-being label may be provided as a target variable to optimize while training a recommendation model for use in providing the recommendation to the user for another intervention activity based on the refined at least one n-dimensional sub-profile for the environment. Training the recommendation model for another intervention activity may occur at a periodicity depending on how many intervention activities have been completed. The training may use variables extracted during the completed intervention activity as a feature vector and the well-being label as the target variable for the training. Training the recommendation model for another intervention activity also may use data extracted using a collaborative filter from other users' de-identified aggregate well-being profile data. Training the recommendation model for another intervention activity may further include predicting a sequence of well-being factors that is most likely to result in an improvement to the well-being label based on previous sequences of well-being factors that improved the well-being label in response to intervention activities mapped to the previous sequences of well-being activities.
The description provided herein also relates to a system for monitoring a user's well-being. In sample configurations, such a system includes a hierarchical tree structure that stores an n-dimensional well-being profile specific to a user where each new version of the n-dimensional well-being profile is stored under a current version of the n-dimensional well-being profile to create at least one n-dimensional sub-profile comprising values for n well-being factors, respective well-being factors of the user being mapped to at least one intervention activity that impacts the respective well-being factors of the user. A computing device is further proved to receive implicit and explicit responses to an intervention activity completed by the user that impacts the respective well-being factors of the user in an environment of the user and to refine the n-dimensional well-being profile specific to the user into at least one n-dimensional sub-profile for the environment in which the intervention activity was performed. The n-dimensional well-being profile may be refined in accordance with the implicit and explicit responses to the completed intervention activity. The computing device may also monitor changes in at least one of the n-dimensional well-being profile or the at least one n-dimensional sub-profile to track changes in the user's well-being over time as the user completes intervention activities. A personalized recommendation model may be further included to provide a recommendation to the user for another intervention activity based on the refined at least one n-dimensional sub-profile for the environment.
The system may further include a server that receives and stores encrypted intervention activity completion data from the computing device and processes the intervention activity completion data to form a de-identified data stream. The server may further process the de-identified data stream for a plurality of users to generate intervention activity recommendations for the user and pushes the intervention activity recommendations to the computing device. A personalized training module may be used to train the personalized recommendation model using data extracted from the implicit and explicit responses to the completed intervention activity.
A method may be performed by the apparatus, and further features of the method result from the functionality of the apparatus. Also, the explanations provided for each aspect and its implementation apply equally to the other aspects and the corresponding implementations. The different configurations may be implemented in hardware, software, or any combination thereof. Also, any one of the foregoing examples may be combined with any one or more of the other foregoing examples to create a new configuration within the scope of the present disclosure.
The foregoing and other beneficial features and advantages of the subject matter described herein will become apparent from the following detailed description in connection with the attached figures, of which:
Sample configurations will be described with respect to
The present disclosure is based on the recognition that an individual's well-being is not a function of a single factor or variable but is instead a multi-dimensional function of a number of factors or variables where intervention activities (i.e., activities that people perform to help with their well-being; hereinafter “interventions”) affect each individual differently. The system described herein recommends interventions that best influence well-being across multiple factors by creating an n-dimensional profile specific to each individual. Upon completion of the interventions, that profile is refined to develop n-dimensional sub-profiles for each individual. This refining process is informed using the effectiveness of each intervention as it relates to each individual and environmentally specific well-being factors using implicit and explicit responses (herein referred to as “signals”) responsive to the interventions. The recommendation of future well-being interventions is based on well-being factors in the refined n-dimensional well-being profile. The n-dimensional profile enables tracking of the user's well-being journey in n-dimensional space as the user completes interventions.
As used herein, well-being factors are factors that can directly or indirectly affect an individual's well-being, like cardio, resting heart rate, sleep hours, water intake, smoking, etc. Well-being environments for an individual reference the specific circumstances under which an individual would carry out the particular intervention. The process of assigning weight to a well-being factor is specific to a user and the user's environment and the resultant mapping is called a well-being profile. The system described herein aims to map as many factors as possible to respective dimensions for a given user in a specific environment. Each user can have multiple well-being profiles associated with them, one for each environment. These profiles drive the recommendation of interventions for a user.
In sample configurations, three kinds of data are used to power the recommendation of interventions for a user: user data, intervention data, and user environment data. User data includes all the data that is specific to a user, including age, gender, demographics, health data, nutrition data, sleep data, intervention completed data, calendar data, survey response data, etc. Intervention data refers to the metadata about a given intervention, including name, description, associated morbidity factors, location, suitable environment, etc. User environment data refers to the data about the user's current environment. The user environment data determines a user's current physical environment or situation, like work, home, a gym, driving, etc.
Once the user data, intervention data, and user environment data has been collected, trend and collaborative features are generated to feed into the recommendation engine. Trend features extrapolate relevant interventions based on several users' completed interventions and recommend a specific intervention based on the trends specific to the user. These interventions are specific to the environment in which these interventions are being performed. Trends will help recommend appropriate interventions for the given location, like volunteering opportunities, fitness classes, etc. Collaborative features extract features from other users with a similar profile. This data could include interests, tags, dimensions, etc.
User and user environment data are collected when an intervention is completed. Based on the data collected, an application measures the effectiveness of the intervention. Effectiveness is measured based on the response to the survey at the time of intervention completion and the physiological (using wearable and other measurable data like heart rate, sleep hours, etc.) and psychological effects (using survey based explicit signals) that are determined as a result of the completed intervention. The well-being profile is amended to reflect the updated physiological and psychological effects. Since a user can have multiple well-being profiles depending on the environment, the appropriate well-being profile will be altered based on the environment in which the user performed the intervention.
The overall well-being profile of an individual is computed based on the environment-specific well-being profiles. This overall wellbeing profile is calculated by summing the individual factor values together to form the computed well-being which places the user in an n-dimensional space. This way of representing well-being allows the system to track the user's well-being journey in n-dimensional space as the user completes interventions. In sample configurations, the system further may use collaborative filtering techniques to figure out similar journeys that have been successful in the past to recommend new well-being factors and interventions to the user.
As used herein, a wellbeing profile stores the versioned factor values specific to a user and an environment. The user's wellbeing profile is stored and maintained for the user in a user computing device such as a mobile phone. The techniques for building a well-being profile for a user are described further below. The data model backing the well-being profile is described first.
In sample configurations, the well-being profile of a user stores the user data, intervention data, and environment data using the design shown in
The well-being factors are made up of a number of factors that are granular abstractions that contribute toward well-being. For example, well-being factors may include calm, self-love, forgiveness, modesty, prudence, self-regulation, kindness, love, teamwork, leadership, diet, sleep, drugs, community, etc. In sample configurations, a library of well-being factors may be maintained in a datastore with metadata.
All measures of well-being, implicit and explicit, also may be maintained in the profile data stores 100. Implicit signals are signals that are measured (e.g., by sensors) without any initiative from the user, whereas explicit signals are usually a form of a survey. Metadata about the implicit signals may include name, description, device (sensor) that measures it, expected range, etc. Metadata about explicit signals may consist of the survey and how often the survey data is captured. A mapping of the implicit and explicit signals to well-being factors may be maintained so that a determination can be made as to what well-being factors are affected at the time of the intervention completion. It will be appreciated that this mapping is a many-to-many relationship. In other words, the same implicit or explicit signal can contribute to several well-being factors, and each well-being factor can be affected by several implicit and/or explicit signals. This mapping may be maintained in accordance with the latest research regarding a person's well-being.
Interventions track the task to be performed by the user to improve her well-being. The interventions are recommended to the user to address a specific well-being factor(s) in a given environment. Once the user completes the intervention, implicit and/or explicit signals associated with the well-being factors (that the intervention was recommended for) will be measured or captured. The well-being factor value in the user's well-being profile(s) will be incremented by the total number of implicit or explicit signals triggered. For example, in order for an implicit signal to be triggered, it may be required to fall outside two standard deviations from the historical values associated with that specific user. The explicit signals, on the other hand, may contain metadata as illustrated by way of example in
In sample configurations, the well-being system described herein triggers a well-being profile update routine 300 when the user completes an intervention. A sample configuration of the well-being profile update routine 300 is shown in
At 310, the user's environment is determined. The environment could be input by the user or may be determined automatically based on the user's location, user behavior, etc.
At 320, all the implicit and explicit signals associated with well-being factors in the user's environment related to the recommended intervention are measured. If surveys are needed to capture the explicit signals, the user will be asked relevant questions in the survey.
Once the implicit signals have been measured, a determination is made at 330 to determine which implicit signals impacted the well-being factors for the specific user in the user's environment by comparing the value of the implicit signal against the user's historical value for the implicit signal in that environment.
A determination is made at 340 as to whether explicit signals (surveys) were used to capture user intervention response data. If so, the metadata in the survey will be used at 350 to determine when the explicit signal is triggered (e.g.: Answering “yes” to a question may be considered a trigger.)
For each implicit or explicit signal that changed, a determination is made at 360 to determine the well-being factors that impact the implicit or explicit signals.
For each well-being factor that impacts a specific signal, records are fetched at 370 for the environment specific profile, and related well-being factors for the user and the current values are determined at 380. If no matching records were found, the current value is assumed to be zero.
At 390, a new well-being profile record for the user is inserted after incrementing the value by the count of triggered signals.
It is noted that the well-being profile is a versioned entity, so any change made to the well-being profile is added as a new row in the data store. This versioning system allows the system to track a user's well-being journey over time. Each time the factors are updated for a given profile, a new version of the profile is created. The parent id column in the profile table is used to keep track of the lineage.
A well-being label may be provided as an explicit input from the user regarding the user's well-being upon intervention completion. The well-being label may be measured using different questions. The responses to these questions may be normalized to a value between−2 to 2 (ranging from stressed to invigorated). Of course, other ranges may be used for the well-being label, as appropriate. This well-being label then may be used as a target variable to optimize while training a recommendation model for the user.
In sample configurations, each well-being profile is stored in a hierarchical data structure on the user's mobile device (e.g., smartphone). For example,
As illustrated in
If each well-being factor is considered as a plane 450 in a n-dimensional space as shown in
The well-being profile is specific to an individual, so it needs to be tracked privately on the user's mobile or other computing device. To support multiple computing devices for a given user, the profile data may be stored in a backend data storage (e.g. backend data storage 120 in
In sample configurations, as users complete the interventions, the well-being factors that are affected are calculated via captured implicit and explicit signals. Weights are assigned to the well-being factors based on the logic described above with respect to
As shown in
Since the well-being profile data is specific to individual users, it cannot be shared with other users without an explicit approval from the user. In order to make it convenient for users to migrate between computing devices, the users' well-being profile data is stored in the backend data store 120. This data will be encrypted using the key created by the user so this data is opaque to the system. The encrypted storage in the backend data store 120 tracks snapshot data for each user by timestamp. Any update to a given user's profile will be published to all the user's computing devices to keep the well-being profile data store on the user's computing devices up to date. In addition to the user's encrypted profile data, de-identified profile data may be stored in a generic store on the backend data store 120 which tracks the coordinates of the n-dimensional space, the activity IDs that triggered any change, and the signals corresponding to the activity IDs. This de-identified data may be used to add collaborative recommendations based on what worked for other users.
The system recommends interventions that have the most impact on a user in an environment on a given day. In order to train a model that has the most impact on a given user, the recommendation may be a result of combining results from a personalized recommendation model and global recommendation model.
The personalized intervention recommendation model is trained using the following broad categories of data collected specifically for a user:
Intervention data including tags, keywords, etc.
The personalized intervention recommendation model is trained periodically depending on how many interventions were completed. Model training uses all the variables extracted during intervention completion as the feature vector and the well-being label as the target variable. At a high level, the feature vector includes 4 kinds of data:
Once the model is trained using the feature vectors and the well-being label, the recommendation may be dynamically based on where the user is and what is happening around the user at a given time. The input to the model to get a recommended list of activities may be as follows:
Thus, the input to the personalized intervention recommendation model is mostly based on the user's current surroundings and health data except for the well-being factors to be addressed. For the personalized intervention recommendation model, the well-being factor to be addressed is derived based on what worked for the user in the past under the given conditions (where such data is available; otherwise the model may be assigned a starting value that is adjusted by responses to interventions). This personalized invention recommendation model uses the data available on the user's computing device to train and recommend interventions. Accordingly, the interventions recommended using the personalized intervention recommendation model will not have any variations. In order to discover new interventions, interventions may be recommended based on what other users are doing.
The global intervention recommendation model may be trained using the de-identified data from all the users of the system. If a user is willing to share their intervention and health data anonymously, then the following factors are sent to the backend storage for training:
In the case of the global intervention recommendation model, the well-being factors to be addressed may be derived using a combination of:
In order to figure out which well-being factors to pursue at any given point in time, the system may predict a well-being factors sequence that is mostly likely to result in a better well-being label. This prediction may be treated as a sequence prediction problem. There are several sequence prediction deep learning models available including the most popular one by Google called seq2seq. In order to train the deep learning model, the sequence of factors in the individual's well-being journey across all the users is used to train the global intervention recommendation model. The global intervention recommendation model is fine-tuned on the computing device by using the well-being factors sequence from the last 90 days. The training data for the sequence prediction contains the previous list of well-being factors explored as the input and the well-being factor that worked as the well-being label. Sample training data may include, for example, the training data of the type shown in Table 1 below.
On-device personalized recommendation model training module 680 uses the data that is stored in the on-device feature store 610 to train the personalized recommendation model 682. As noted above, the personalized recommendation model 682 may be a pre-trained deep learning model such as DeepFM, Collaborative Deep Learning, and Hybrid Deep Learning algorithms. If the performance of the new personalized recommendation model 682 is better than the existing personalized recommendation model, then the on-device personalized model serving module 684 will be updated to use the new personalized recommendation model.
The global intervention recommendation models depend on the de-identified data stream 660 and the well-being features (e.g., geopolitical signals 661, weather 662, location 663, well-being factor values 664, factor sequences 665, etc.) extracted from the de-identified data stream 660. The well-being features extracted from the de-identified data stream 660 are stored in the off-line feature store 620. These off-line features will be materialized into the online feature store 630, which in turn is used by the global model server 690 to recommend interventions 670. Global well-being features from the off-line features stored in the off-line feature store 620 are also materialized (condensed) into well-being features that are provided to the features SDK 642 and the on-line feature store 630.
The encrypted feature store 646 is used only as a backup when the user loses the data in the user's computing device 640.
During system operation, intervention completion data is provided at 692 to the on-device feature store 610 in response to sensor measurements, survey inputs, and the like. The invention completion data 618 is stored in the on-device feature store 610 and pushed to the features SDK 642 that encrypts the data into the encrypted data stream 644 that is provided to the encrypted feature store 646. The de-identified data stream 660 created by the features SDK 642 is stored in the off-line feature store 620 and used for the global intervention recommendation training at 694. The updated global recommendation model is provided to the global model server 690. In addition, the de-identified data stored in the off-line feature store 620 is used for factor sequence model training at 696. The updated factor sequence model is used in conjunction with personalized sequence training at 698 on the user's device 640.
As noted above, the users' well-being profiles may be tracked in a hierarchical tree structure where each node in the tree represents a point in the n-dimensional space. To proceed from one level to the next, the system identifies which of the planes (well-being factors) impact the user's well-being the most. In other words, at each level in the hierarchy, the plane(s) are chosen on which to move the user. Interventions are recommended for those planes and user feedback is monitored to select the planes to pursue.
For example, if the intervention recommendation resulted in a better well-being label, the resulting well-being profile may be chosen as the candidate for this level and the system proceeds to experiment with the next level. Conceptually, this results in a well-being journey that has the most impact on the user's well-being. Tactically, this approach allows the system to collect the data needed to define the well-being fingerprint of the user.
At 710, the system obtains a list of recommended well-being factors to pursue given the user's current position. This recommendation may be based on personal history and collaborative filtering across multiple users.
At 720, the system recommends interventions for each of the listed well-being factors using the user's personalized intervention recommendation model.
At 730, the system gathers feedback from the user to obtain the associated well-being label.
At 740, each of the interventions results in a new well-being profile that uses the selected well-being profile from the previous level as its parent.
At 750, the profile with the best well-being label is selected as the candidate profile for this layer and steps 710-750 are repeated.
Thus, unlike systems that may track a user's well-being based on a change in a measured variable, the system described herein represents the user's well-being data in n-dimensions, which enables the user's well-being to be tracked over time and compared to the well-being of other similarly situated users. The training of the recommendation models enables the intervention recommendations to be regularly updated to provide personalized recommendations to the user that will have a maximum impact on the user's well-being profile. The relationships between the well-being factors and the well-being signals responsive to interventions may be updated based on the collected data as well as the latest medical data from experts in the field, thus providing constant improvement in the system's ability to monitor the user's well-being. Feedback on a display of the user's computing device (e.g., mobile phone) enables the user to monitor her multi-dimensional well-being profile and to observe the specific impacts the interventions have on her well-being over time.
Memory 804 may include volatile memory 810 and non-volatile memory 812. Computer 800 also may include, or have access to a computing environment that includes, a variety of computer-readable media, such as volatile memory 810 and non-volatile memory 812, removable storage 806 and non-removable storage 808. Computer storage includes random access memory (RAM), read only memory (ROM), erasable programmable read-only memory (EPROM) or electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, compact disc read-only memory (CD ROM), Digital Versatile Disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium capable of storing computer-readable instructions.
Computer 800 may further include or have access to a computing environment that includes input interface 814, output interface 816, and a communication interface 818. Output interface 816 may include a display device, such as a touchscreen, that also may serve as an input device. The input interface 814 may include one or more of a touchscreen, touchpad, mouse, keyboard, camera, one or more device-specific buttons, one or more sensors integrated within or coupled via wired or wireless data connections to the computer 800, and other input devices.
The computer 800 may operate in a networked environment using communication interface 818 to connect to one or more remote computers. The remote computer may include a personal computer (PC), server, router, network PC, a peer device or other common network switch, or the like. The communication connection accessed via communication interface 818 may include a Local Area Network (LAN), a Wide Area Network (WAN), cellular, Wi-Fi, Bluetooth, Zigbee, or other networks. According to one configuration, the various components of computer 800 are connected with a system bus 820.
Computer-readable instructions stored on a computer-readable medium are executable by the processing unit 802 of the computer 800, such as a program 822. The program 822 in some configurations comprises software that, when executed by the processing unit 802, performs operations according to any of the configurations and models included herein. A hard drive, CD-ROM, and RAM are some examples of articles including a non-transitory computer-readable medium, such as a storage device. The terms computer-readable medium and storage device do not include carrier waves to the extent carrier waves are deemed too transitory. Storage can also include networked storage, such as a storage area network (SAN). Computer program 822 may be used to cause processing unit 802 to perform one or more methods or functions described herein.
It should be further understood that software including one or more computer-executable instructions that facilitate processing and operations as described above with reference to any one or all of steps of the disclosure may be provided in user portable electronic client devices to implement the features described herein. Alternatively, the software may be obtained and loaded into a server for implementing the features described herein through interaction with a user's client device. The software may be stored on a server for distribution over the Internet, for example.
Also, it will be understood by one skilled in the art that this disclosure is not limited in its application to the details of construction and the arrangement of components set forth in the above description or illustrated in the drawings. The configurations herein are capable of other configurations, and capable of being practiced or carried out in various ways. Also, it will be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising,” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items.
The components of the illustrative devices, systems and methods employed in accordance with the illustrated configurations may be implemented, at least in part, in digital electronic circuitry, analog electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. These components also may be implemented, for example, as a computer program product such as a computer program, program code or computer instructions tangibly embodied in an information carrier, or in a machine-readable storage device, for execution by, or to control the operation of, data processing apparatus such as a programmable processor, a computer, or multiple computers.
A computer program may be written in any form of programming language, including compiled or interpreted languages, and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. Also, functional programs, codes, and code segments for accomplishing the systems and methods described herein may be easily construed as within the scope of the disclosure by programmers skilled in the art to which the present disclosure pertains. Method steps associated with the illustrative configurations may be performed by one or more programmable processors executing a computer program, code or instructions to perform functions (e.g., by operating on input data and generating an output). Method steps may also be performed by, and apparatus may be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC, for example.
The various illustrative logical blocks, modules, and circuits described in connection with the configurations disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an ASIC, a FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. As used herein, a “plurality” comprises two or more.
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random-access memory or both. The elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example, semiconductor memory devices, e.g., electrically programmable read-only memory or ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory devices, and data storage disks (e.g., magnetic disks, internal hard disks, or removable disks, magneto-optical disks, compact disc ROM (CD-ROM), or digital versatile disc ROM (DVD-ROM). The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.
Those of skill in the art understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Those skilled in the art may further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the configurations disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure. A software module may reside in random access memory (RAM), flash memory, ROM, EPROM, EEPROM, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. A sample storage medium is coupled to the processor such the processor may read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. In other words, the processor and the storage medium may reside in an integrated circuit or be implemented as discrete components.
As used herein, “machine-readable medium” means a device able to store instructions and data temporarily or permanently and may include, but is not limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., EEPROM), and any suitable combination thereof. The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store processor instructions. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, which is capable of storing instructions for execution by one or more processors, such that the instructions, when executed by one or more processors cause the one or more processors to perform any one or more of the methodologies described herein. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” as used herein excludes signals per se.