The field relates to computational creativity and, more particular to techniques for generation of work products.
Computer programs and other machinery can be utilized for fabricating material and abstract objects. Such computer programs and machinery use work plans, or a process that realizes a work product, to facilitate the fabrication of material and abstract objects. Material objects include, by way of example, manufactured goods such as electronic circuits, food products, pharmaceuticals, etc. Abstract objects include, by way of example, complex travel itineraries, financial portfolios, culinary recipes, etc. Fabrication of existing work products is or can be automated or facilitated by computer programs, but the creation of new work products and the development of new work plans are not automated.
According to one embodiment of the invention, a method comprises evaluating a first work plan comprising one or more constituents to determine a first set of work plan metrics, determining one or more constraints for constituents of the first work plan, selecting one or more substitute constituents to replace constituents of the first work plan based at least in part on the determined constraints and the determined work plan metrics and generating a second work plan using the substitute constituents, the second work plan having a second set of work plan metrics similar to the first set of work plan metrics. The evaluating, determining, selecting and generating are performed by at least one processing device.
According to another embodiment of the invention, an article of manufacture comprises a computer readable storage medium for storing computer readable program code. The computer readable program code, when executed, causes a computer to evaluate a first work plan comprising one or more constituents to determine a first set of work plan metrics, determine one or more constraints for constituents of the first work plan, select one or more substitute constituents to replace constituents of the first work plan based at least in part on the determined constraints and the determined work plan metrics, and generate a second work plan using the substitute constituents, the second work plan having a second set of work plan metrics similar to the first set of work plan metrics.
According to another embodiment of the invention, an apparatus comprises a memory and a processor device operatively coupled to the memory. The processor device is configured to evaluate a first work plan comprising one or more constituents to determine a first set of work plan metrics, determine one or more constraints for constituents of the first work plan, select one or more substitute constituents to replace constituents of the first work plan based at least in part on the determined constraints and the determined work plan metrics, and generate a second work plan using the substitute constituents, the second work plan having a second set of work plan metrics similar to the first set of work plan metrics.
These and other embodiments of the invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.
Illustrative embodiments of the invention may be described herein in the context of illustrative methods, systems and devices for the generation of work plans. However, it is to be understood that embodiments of the invention are not limited to the illustrative methods, systems and devices described but instead are more broadly applicable to other suitable methods, systems and devices.
Embodiments of the invention are described herein in the context of generation of new work plans. It is to be appreciated, however, that the term “work plan” should be broadly construed. For example, a recipe may be considered a work plan that realizes a particular work product such as a food dish. The recipe itself, however, may also be considered a work plan. Thus, the terms work plan and work product as used herein are not mutually exclusive to one another.
Various types of work plans and processes may be utilized in a variety of contexts. By way of example, work plans may include culinary recipes, travel itineraries, business plans, etc. In some instances, constraints can make the use of existing work plans impossible, impractical or undesirable. For example, food-borne diseases, ingredient costs, ingredient shortages, preference shifts, medical conditions, etc. can render an existing work plan such as a recipe obsolete or impractical for a given situation. Similarly, constraints such as weather, event closures, security and other travel restrictions, etc. can render an existing travel itinerary unusable. Various other constraints may affect the viability of work plans in other contexts.
Constraints may be due to a variety of dynamic causes and events. By way of example, in the case of an E. coli outbreak, new information about potentially contaminated products can arrive on a daily basis for a period of several weeks or months. Consumers and food preparers may desire to use an existing recipe for a preferred food dish, but modify the ingredients for the recipe to accommodate various constraints while preserving flavor, integrity and quality.
Examples of constraints in the context of recipes, as discussed above, may include food-borne disease outbreaks, ingredient cost and availability changes, preference changes and health changes. By way of example, a food-borne disease outbreak may include outbreaks of E. coli, salmonella, etc. Often, such diseases may be linked to a particular type of food product or ingredient. Ingredient cost and availability changes may be due to a variety of factors. For example, weather events such as storms, droughts, etc. may cause crop failure or disruption of shipping lines. Preference changes can be due to particular ingredients going in and out of fashion. Preference changes may also results from a consumer desire to use locally-grown ingredients or organic foods, etc. Health changes may be influenced by new medical studies regarding the health and safety of particular ingredients for dietary purposes. Preference and health changes may also be due to factors specific to a particular individual. For example, a consumer may wish to use an existing recipe, but modify it due to a food allergy or other dietary constraint.
Embodiments of the invention allow for the generation of new work plans. Given an existing work plan, embodiments can generate new work plans subject to various constraints. New work plans may be generated such that they retain one or more desired characteristics or metrics of the existing work plan. Substitute constituents may be selected such that a new work plan and the existing work plan have substantially similar metrics or characteristics.
The designer module 102 is also configured to communicate with a domain knowledge database 108. The domain knowledge database 108 may store information relating to one or more work plans and constituents. The information relating to the work products and plans can be utilized to cluster the work products and plans based on various classifications and evaluating generated work plans, as will be described in further detail below. Constituent information may include information relating to cost, composition, etc. For example, in the context of recipe generation, ingredient information may include nutritional facts and chemical composition, food trend data, etc. In the context of itinerary generation, event or place information may include hours of operation, expected time required to see, thematic subject matter, etc. Work plans in the domain knowledge database 108 may be grouped according to classifications, constituents or other characteristics, including combinations of characteristics. The domain knowledge database 108 may further store feedback or other information regarding work plans or combinations of constituents, which may be used by evaluator module 104 in evaluating a new plan. Feedback information may comprise human hedonic perception data and other historical data on quality assessments.
The domain knowledge database 108 may be contained in a database server, cloud storage, networked storage or a physical memory of a server or workstation. Thus, it is to be appreciated that the domain knowledge database 108 shown in
The designer module 102 evaluates the existing work plan to determine a set of work plan metrics. For example, if the work plan is a recipe, the work plan metrics may include flavor, cost, ingredient usage, complexity, time required, etc. Various other metrics may be utilized for other types of work plans such as travel itineraries. The constraint modules 106 may provide information relating to one or more constituents to the designer module 102 continuously, in response to a query regarding specific constituents or classes from the designer module 102, at defined time intervals, etc.
If one or more constituents of the existing work plan are subject to a constraint, the designer module 102 can select one or more substitute constituents to replace the constrained constituents. For example, if a particular one of the constraint modules 106 provides information indicating that a given constituent in the work plan has a cost exceeding a threshold, the designer module 102 can use information stored in the domain knowledge database 108 to determine substitutes for the given constituent. The designer module 102 can generate one or more candidate work plans with one or more substitute constituents. The candidate work plans are provided to the evaluator module 104.
The evaluator module 104 utilizes information stored in the domain knowledge database 108 to evaluate the candidate work plans. The evaluator module 104 may calculate a set of work plan metrics for each of the candidate work plans, and compare the calculated metrics for the candidate work plans to the work plan metrics of the existing work plan. A given candidate work plan can be selected which has calculated metrics which are substantially the same or similar to those of the existing work plan.
One or more thresholds or ranges for metrics can be used to determine similarity. By way of example, a cost metric may have an acceptable range of 10%, i.e., the total cost of constituent in the new work plan must be at most 10% more expensive than the total cost of constituents in the existing work plan. Another metric may be related to availability of constituents. The range for the availability metric may be a specified distance, such as 5 miles, where a substitute constituent may be obtained. As will be appreciated by one skilled in the art, various other ranges and thresholds may be utilized, including user-defined thresholds. By way of example the cost threshold may be 5% or 20%, etc. The availability metric may be 1 mile or 10 miles, etc. Various other work plan metrics may be utilized. For example, in the context or recipe generation, metrics such as the olfactory pleasantness or flavor profile of a particular dish may be used. In some embodiments, the metrics for a given work plan may have different weights assigned thereto based on user preferences or context. By way of example, in generating a new recipe the flavor profile and olfactory pleasantness characteristics may be assigned higher weights than a cost metric, or vice versa.
The evaluator module 104 selects one of the candidate work plans as the new work plan. The evaluator module 104 may also determine that none of the candidate work plans are suitable as a new work plan. In such an instance, the work plan metric ranges or thresholds may be adjusted. Alternatively, the evaluator module 104 may request that the designer module 102 generate additional candidate work plans for evaluation. For example, in some embodiments the designer module 102 may initially generate only a small number of candidate work plans so as to ensure quick processing and generation of new work plans. If a situation arises in which none of the originally generated candidate work plans are acceptable, the evaluator module 104 can request the designer module 102 to generate one or more additional candidate work plans. In other embodiments, the designer module 102 and evaluator module 104 may operate substantially simultaneously. For example, the designer module 102 may provide candidate work plan to the evaluator module 104 continuously, or until the evaluator module 104 indicates that a given candidate work plan is acceptable.
Cost constraint module 206-1 is configured to provide constraint information relating to the monetary cost and/or availability of ingredients for a recipe. The cost constraint module 206-1 may indicated that a particular ingredient has a higher than average cost at a current time, is subject to shortages due to crop failure or shipping/transportation issues, etc. The cost constraint module 206-1 may also indicate that a particular ingredient is constrained even if its cost is not higher than average if the ease of access or obtaining the constituent is increased. For example, in a rural area, a given ingredient may be difficult to find or obtain, even if it is not more expensive than normal or subject to a shortage.
Health and safety constraint module 206-2 is configured to provide constraint information relating to current food-borne disease outbreaks, medical studies regarding particular ingredients, etc. as discussed above.
Dietary constraint module 206-3 is configured to provide constraint information relating to ingredients with respect to a particular diet. For example, dietary constraints may limit recipes to vegetarian or vegan recipes, kosher or halal recipes, etc. Dietary constraints may also be related to particular weight-loss regimens or plans, such as low-carbohydrate or low-sugar diets, etc. Dietary constraints may also relate to food-borne allergies. For example, a school, hospital or other public facility may wish to screen recipes for common allergens such as peanuts for the safety of consumers.
Preference constraint module 206-4 is configured to provide constraint information relating to user-selected preferences, trend data relating to general consumer preferences, etc. By way of example, user preferences may relate to locally-grown ingredients, organic ingredients, preservative-free ingredients, seasonally-fresh or available ingredients, etc.
Recipe designer module 202 is configured to receive an existing recipe as well as constraint information from constraint modules 206. The recipe designer module 202 can determine that a particular ingredient is subject to one or more constraints, and use information stored in the domain knowledge database 208 to determine substitute ingredients and generate one or more candidate recipes. The recipe designer module 202 can also determine, for a constraint relating to one or more ingredients of the recipe, other ingredients of the recipe which need to be replaced or substituted so as to maintain the set of work plan metrics of the existing recipe.
The recipe evaluator module 204 can calculate metrics such as flavor, cost and ingredient usage of the candidate recipes for comparison with corresponding metrics of the existing recipe so as to select a particular candidate recipe as the new recipe. Additional metrics, such as production process, may also be used. For example, substitute ingredients may be selected such that the overall process of the recipe is not significantly altered (e.g., no new equipment is required, total recipe time is substantially the same, etc.).
Weather constraint module 306-1 is configured to provide constraint information relating to changing weather conditions for particular geographic regions. The weather constraint module 306-1 may indicate a likelihood of precipitation, temperature range, etc. Travel designer module 302 may use this constraint information to determine that a particular activity scheduled on an agenda or itinerary should be changed or rearranged.
Event closure constraint module 306-2 is configured to provide constraint information relating to the availability of particular events. For example, such information may relate to one or more events which are sold out, particular times during which an event or place is closed, particular times at which an event or place is free or requires a reduced admission fee, etc.
Security constraint module 306-3 is configured to provide constraint information related to security threats, high crime areas, etc.
Travel designer module 302 is configured to receive an itinerary as well as constraint information from constraint modules 306. The travel designer module 302 can determine that a particular event on the itinerary is subject to one or more constraints, and use information stored in the domain knowledge database 308 to determine substitute events or activities and generate one or more candidate itineraries. The travel designer module 302 is further configured to determine, for one or more of the events subject to constraints, other events on the existing itinerary which need to be replaced or adjusted so as to maintain the work plan metrics of the existing itinerary.
The travel evaluator module 304 can calculate metrics such as activity type, cost, and time for the candidate itineraries to compare to corresponding metrics of the existing itinerary so as to select one of the candidate itineraries as the new itinerary. Additional metrics such as location may also be used. For example, it may be desired to restrict replacement events to a particular geographic location so that other events are not affected or to take into account the effects of the geographic location of substitute events on the remainder of an itinerary.
It is to be appreciated that the systems 200 and 300 described above are presented by way of example only. For example while system 300 is described above with respect to travel itineraries, other systems may be used for business schedules, educational schedules, shipping, etc. The system 100 may also be optimized for various other subject areas, including by way of example only the area of fashion (e.g., selecting outfits), the area of construction (e.g., building a structure), etc. In addition, while particular constraint modules 206 and 306 are shown for respective systems 200 and 300, these systems are not restricted solely to use with the particular constraint modules shown.
A surprise metric may be used as a measure of the novelty or Bayesian surprise associated with replacement constituents or candidate recipes. In some contexts, users may desire that a replacement recipe or other work plan be familiar. In other contexts, users may desire that a replacement recipe or other work plan be surprising (e.g., new, exciting, etc.). For example, user preference constraints may specify that particular ingredients or constituents be substituted for a desired surprise level or novelty. Novelty may be quantified by considering a prior probability distribution of existing recipes and the change in that probability distribution after a new recipe is observed, i.e., the posterior probability. It is also important to note that the same recipe or work plan may be novel to some observers and familiar to others.
Embodiments may utilize Bayesian surprise to calculate surprise metrics. Let M be a set of work plans known to an observer. Let MεM be a work plan in the set of known work plans, and let A be a new work plan being observed. The Bayesian surprise can be calculated using the following equation:
where p denotes a probability distribution function. It is important to note that while the surprise and novelty metrics are described above primarily with respect to recipe generation, these metrics may be utilized for the generation of various other types of work plans including travel itineraries.
Various other three-dimensional metric spaces may be used for other embodiments. In addition, some embodiments may utilize metric spaces with more or less than three dimensions. One or more metrics of a metric space may also be weighted higher than others. For example, safety metrics may be weighted higher than user preference metrics. In some embodiments, a candidate work plan may be selected if it meets a given portion or percentage of the metrics. For example, if a given work plan has three metrics and thus a three-dimensional metric space, a candidate work plan may be considered similar if two out of three metrics are similar.
As described above, existing work plans and constituent information in domain knowledge database 108 may be clustered or organized into groups or categories using one or more dimensions.
For example, a given ingredient such as ketchup may have a first classification of sweet and a second classification of condiment. An ingredient such as crushed red pepper may have a first classification of spicy and second classification of spice. Classifications may be used to quickly narrow a list of potentially hundreds or thousands of substitute ingredients to a handful of possible substitute ingredients. Classifications may also be used in conjunction with constraints. For example, if a given dietary constraint is for a vegetarian recipe, meat classes may be easily excluded from the space of available substitute ingredients.
Although
In recipe analysis, certain ingredients in a food recipe may not pair well with one another, so if one of the ingredients in an existing recipe is substituted for a replacement ingredient in a new plan, other adjustments to ingredients of the existing recipe may be necessary. For example, if one were to substitute soy milk for milk in an existing recipe, other ingredients (e.g., vanilla) may need to be removed and/or reduced so as to maintain a particular sweetness flavor profile. In addition, the replacement of a given ingredient may make one or more other ingredients redundant, or require the addition of one or more other ingredients. As an example, one may replace heavy cream in certain recipes with a combination of milk and butter, or vice versa.
In travel itinerary analysis, certain events in an itinerary may similarly conflict with one another. On determining that a given event is constrained due to weather, a replacement event may require adjustments to other parts of an itinerary. For example, assume that an event at a zoo is constrained due to weather and replaced with a natural history museum event. The zoo and natural history museum may be in very different locations, such that a lunch or dinner reservation may be adjusted to a restaurant or eatery closer to the natural history museum than the zoo.
It is important to note that
Because of the various interrelationships of ingredients, in many cases a simple one-for-one substitution will not retain existing work plan metrics. It is important to note that substitutions of constituents need not necessarily be considered “equivalent.” In the
Methodology 1200 begins with step 1202, computing pairing metrics pairing(i, R) and pairing(i, i′) for each ingredient i′ used in r, given a recipe rεR. Next, possible substitute ingredients s for ingredient i are identified and ranked in step 1204. For each substitute s, pairing metrics pairing(s, R) and pairing(s, i′) are computed for each ingredient i′ used in r in step 1206. In step 1208, for each ingredient i′ in r (other than i), if pairing(s, i)<pairing(i, i′)−ε the methodology tries to find a substitute i″ to i′ and repeats steps 1206 and 1208 with i″ instead of s. The value ε may represent a threshold value or metric space which defines similarity. For example, ε may be selected so as to correspond to the desired flavor band as discussed above with respect to
Pairing metrics pairing(s, i″) and pairing(s, R) are summed in step 1210. One or more recipes with the highest pairing scores as determined in step 1210 are selected as candidate recipes. A new recipe may be selected from the set of candidate recipes based on additional evaluation criteria, such as cost, surprise, similarity of cooking method, etc. Alternatively, only a single recipe may be selected in step 1210.
Step 1204 of methodology 1200, identifying and ranking possible substitute ingredients s in step 1204, may be performed using methodology 1300 as shown in
If pairing(s, s)≧pairing(i, i′)−ε, s′ is used to replace ingredient i′ in step 1308. If the determination in step 1306 has met is stopping criterion and no substitute s′ is found where pairing(s, s′)≧pairing(i, i′)−ε, the methodology proceeds to step 1310. In step 1310, the substitute s′ is used for which the pairing metric pairing(s, s′) has the highest value or the ingredient i′ is used if the pairing metric pairing(s, i′) is higher than pairing(s, s′).
A method according to an embodiment of the invention may include evaluating a first or existing work plan having one or more constituents to determine a first set of work plan metrics associated with the first work plan. One or more constraints for constituents of the first work plan are determined, and one or more substitute constituents are selected to replace constituents of the first work plan. The substitute constituents may be selected based on the determined constraints and the work plan metrics associated with the first work plan. A second or new work plan is generated using the substitute constituents such that the second work plan has a second set of work plan metrics associated therewith which are similar to the first set of work plan metrics.
Selecting the substitute constituents may involve the following. First, a given constituent which is subject to at least one constraint is selected. Next, one or more alternate or replacement constituents are determined for the given constituent. For each of the alternate constituents, one or more associated replacement constituents are determined for constituents of the first work plan other than the given constituent such that the alternate constituent and associated replacement constituents maintain the first set of work plan metrics. A given alternate constituent and associate replacement constituents are selected as the substitute constituents.
The given alternate constituent and associated replacement constituents may be selected based on a number of factors, including but not limited to a cost of the given alternate constituent and associated replacement constituents, the number of associated replacement constituents, an availability of the alternate constituent and associated replacement constituents, a surprise associated with the given alternate constituent and associated replacement constituents, combinations of the above factors, etc.
Determining the alternate constituents may include analyzing the given constituent to determine one or more attributes, such as clusters with which the given constituent is associated. A knowledge database can be searched to determine alternate constituents having attributes similar to the attributes of the given constituent. The alternate constituents may additionally or alternatively be determined by identifying a class or cluster associated with the first work plan, identifying a set of constituents or one or more other work plans in the given class, and selecting alternate constituents from the identified set of constituents. As another alternative or in addition to the techniques described above, determining the alternate constituents may include identifying a set of constituents, determining a substitutability metric of each constituent in the identified set, ranking the constituents in the identified set based at least in part on the determined substitutability metrics, and selecting one or more constituents in the identified set based on the constituent rankings.
It is to be appreciated that particular features described above with respect to a particular embodiment of the invention are not necessarily limited solely to use in the particular embodiment described. Instead, a single embodiment may include features described above in the context of two or more different embodiments.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions 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 instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
One or more embodiments can make use of software running on a general purpose computer or workstation. With reference to
The processor 1402, memory 1404, and input/output interface such as a display 1406 and keyboard 1408 can be interconnected, for example, via bus 1410 as part of data processing unit 1412. Suitable interconnections, for example, via bus 1410, can also be provided to a network interface 1414, such as a network card, which can be provided to interface with a computer network, and to a media interface 1416, such as a diskette or CD-ROM drive, which can be provided to interface with media 1418.
A data processing system suitable for storing and/or executing program code can include at least one processor 1402 coupled directly or indirectly to memory elements 1404 through a system bus 1410. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboard 1408 for making data entries; display 1406 for viewing data; a pointing device for selecting data; and the like) can be coupled to the system either directly (such as via bus 1410) or through intervening I/O controllers (omitted for clarity).
Network adapters such as a network interface 1414 may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
As used herein, a “server” includes a physical data processing system (for example, system 1412 as shown in
The flowchart and block diagrams in
Accordingly, techniques of the invention, for example, as depicted in
It will be appreciated and should be understood that the exemplary embodiments of the invention described above can be implemented in a number of different fashions. Given the teachings of the invention provided herein, one of ordinary skill in the related art will be able to contemplate other implementations of the invention. Indeed, although illustrative embodiments of the present invention have been described herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments, and that various other changes and modifications may be made by one skilled in the art without departing from the scope or spirit of the invention. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.