CASH LEVEL OPTIMIZATION WITH AUTOCALIBRATION
20220036293 · 2022-02-03
Inventors
Cpc classification
G06Q10/087
PHYSICS
G06N5/01
PHYSICS
G06N3/126
PHYSICS
International classification
Abstract
The disclosure concerns a computer-implemented method of optimizing the cash level of a cash device (20), wherein the cash level indicates an amount of currency in at least one cash box of the cash device (20), wherein the method comprises the following steps: iteratively optimizing, in an automated manner, a calibration (26) of the cash device (20), wherein the calibration (26) comprises a plurality of parameters; and generating a plan (29) based at least in part on the calibration (26), wherein the plan (29) indicates when and/or how the cash device (20) is to be serviced.
Claims
1. A system for optimizing efficiency of cash flow, comprising: at least one computing device comprising at least one storage device, at least one memory device, at least one network connection, and at least one user interface device; at least one network connected computing device comprising at least one network connected storage device, at least one network connected memory device, at least one network connected network connection; wherein the at least one computing device and the at least one network connected computing device are connected via a computer network; at least one cash point device connected to the computer network, and the at least one cash point device configured to provide at least one current cash levels, and at least one set of historical data to the at least one network connected computing device; wherein the at least one network connected computing device aggregates the at least current cash levels and the at least one set of historical data, and creates a set of aggregated current status indicators and a set of aggregated historical data; wherein the at least one computing device can access the aggregated current cash levels, the set of aggregated historical data, and the at least one computing device is configured to utilize a forecaster engine; an autocalibrator engine and an evaluator engine to evaluate the quality of a calibration data set; wherein the forecaster engine analyzes the aggregated current status indicators and the set of aggregated historical data to generate a forecast dataset for each of the at least one cash point device; wherein the autocalibrator engine analyzes the aggregated current cash levels, the forecast dataset and the set of aggregated historical data to repeatedly generate candidate calibration datasets; wherein, as part of a feedback loop, the evaluator engine analyzes the aggregated current cash levels, the set of aggregated historical data, the forecast dataset, and candidate calibration datasets to generate an evaluation dataset that contains the relative quality of the calibration datasets according to a pre-defined evaluation measure; wherein the evaluation dataset is further processed by the autocalibrator engine to determine how the evaluation dataset will lead to a modification of the calibration datasets; and wherein, as part of a feedback loop, if changes need to be made, the autocalibrator engine eliminates calibration datasets of low quality and sends modified candidate calibration datasets to the evaluator engine; wherein, as the termination of a feedback loop, based on a termination criterium of the autocalibrator engine, the resulting optimized calibration dataset is further processed by an optimizer engine on at least one computing device that in response generates a plan dataset that is transmitted to the at least one networked computing device for distribution via the computer network.
2. The system of claim 1, wherein the feedback loop includes the evaluator engine feeding the autocalibrator engine that when reaching the termination of the feedback loop provides the optimzed calibration dataset to the optimizer for further processing.
3. The system of claim 1, wherein the autocalibrator engine and the evaluator engine iteratively process datasets to generate the optimized calibration dataset.
4. The system of claim 1, wherein the autocalibrator engine utilizes a genetic algorithm to generate the candidate calibration datasets.
5. The system of claim 1, wherein the at least one cash point device receives the plan dataset by the computer network.
6. The system of claim 1, wherein the autocalibrator engine utilizes a genetic algorithm that comprises a plurality of parameters as part of its analysis.
7. The system of claim 6, wherein the plurality of parameters can be chosen from a set of cash denominations, a stock level threshold, a buffer factor, and a minimum balance.
8. The system of claim 7, wherein the genetic algorithm performs mutation, combination, and selection operations based on the plurality of parameters to generate the candidate calibration datasets.
9. A system for optimization comprising: at least one cashpoint node that is in communication with at least one server node through a computer network; wherein each or the at least one server node is operated by or on behalf of a banking institution; at least one computing device node in communication with the at least one server node through the computer network; wherein the at least one computing device node executes a forecasting engine configured to create a forecast dataset of a set of expected transactions with each of the at least one cashpoint nodes in communication with the at least one server node; wherein the forecast engine utilizes historical and current data from the cashpoint node to generate the forecast dataset; wherein, as part of a feedback loop, the at least one computing device node executes a calibration engine that, in part based on the forecast dataset, is configured to create a number of candidate calibration datasets; wherein the at least one computing device node executes an evaluator engine configured to evaluate the quality of calibration datasets and provide an evaluation dataset; wherein, as a finalization of a feedback loop, the at least one computing device node executes a calibration engine to create an optimized calibration dataset selected from the candidate calibration datasets based on the evaluation dataset of the candidate calibration datasets; wherein the at least one computing device node executes an optimizer engine configured to use the optimized calibration dataset and generates a plan dataset for the at least one cashpoint node; and wherein the at least one server node or the at least one cashpoint node can send a service order based on the plan dataset, and the order triggers a servicing of the at least one cashpoint node.
10. The system of claim 9, wherein the feedback loop includes the evaluator engine feeding the calibration engine that when reaching the termination of the feedback loop provides the optimized calibration dataset to the optimizer for further processing.
11. The system of claim 9, wherein the calibration engine and the evaluator engine iteratively process datasets to generate the optimized calibration dataset.
12. The system of claim 9, wherein the calibration engine utilizes a genetic algorithm to generate the candidate calibration datasets.
13. The system of claim 9, wherein the at least one cash point device receives the plan dataset by the computer network.
14. The system of claim 9, wherein the autocalibrator engine utilizes a genetic algorithm that comprises a plurality of parameters as part of its analysis.
15. The system of claim 14, wherein the plurality of parameters can be chosen from a set of cash denominations, a stock level threshold, a buffer factor, and a minimum balance.
16. The system of claim 15, wherein the genetic algorithm performs mutation, combination, and selection operations based on the plurality of parameters to generate the candidate calibration datasets.
17. A method of optimization of a calibration for a cash level optimizer device comprising: receiving a dataset of cash level history, and current cash levels for a cash device with a computing device connected to the cash device via a computer network; preparing a forecast dataset comprising set of expected transactions, based on the cash level history and current cash levels; optimizing a calibration for the optimizer engine consisting of a set of variable parameters based on a prepared forecast dataset, and a set of historical transactions with the computing device; generating a plan based on the optimized calibration, the current cash levels of the cash device and the forecast dataset, and providing the plan to a banking institution or cash-in-transit company to allow for optimal servicing of the cash device; wherein the calibration optimization is performed using a domain specific metaheuristic search algorithm; wherein the metaheuristic search algorithm iteratively creates datasets consisting of candidate calibrations whose parameters are restricted by one or more constraints received from a constraint system device; wherein each dataset consisting of the candidate calibrations is evaluated using an evaluation engine which produces an evaluation dataset according to a pre-defined evaluation measure that determines the quality of each candidate calibration; wherein the optimized calibration is determined as the calibration candidate with the best quality upon meeting a termination criterium, optionally storing one or more values of the parameters that are part of the calibration datasets in a neural network, preferably a feedforward neural network; wherein the metaheuristic search algorithm takes into account plurality of parameters that are part of a calibration containing one or more of the following parameters, a stock level threshold of the cash device, a buffer factor of the cash device, a minimum balance for each of the denominations of the cash device, and cost parameters to service the cash device, and wherein the set of services costs are retrieved from a third party service by the computing device.
18. The method of claim 17, wherein the evaluation engine returns the evaluation dataset to the meatheuristic search algorithm until the termination criterium is met.
19. The method of claim 17, wherein the metaheuristic search algorithm is a genetic algorithm, which performs mutation, combination, and selection operations to the evaluation dataset to generate datasets consisting of candidate calibrations.
20. The method of claim 17, wherein the termination criterium can have at least two thresholds that allow for the optimized calibration to be provided to the banking institution or cash-in-transit company when the first of the at least two thresholds is met while continuing to refine the optimization until the second or final threshold of the at least two thresholds is met.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0019] The novel features believed characteristic of the disclosure are set forth in the appended claims. The disclosure itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will be best understood by reference to the following detailed description of illustrative embodiments when read in conjunction with the accompanying drawings, wherein:
[0020] In the following detailed description, presently preferred embodiments of the invention are further described with reference to the following figures:
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036] The graphical elements used in the figures may be understood as follows:
[0037] Diamond shaped nodes: Engine or procedure, containing various classes that interact.
[0038] Rectangle shaped nodes: Classes, abstract classes and interfaces.
[0039] Ellipse shaped nodes: Processes (like function calls) and data.
[0040] Trapezium shaped nodes: The operation of a machine or device (and the information produced thereby).
[0041] Arrow: Calls between classes (arrow from class A to class B has the meaning: class A calls methods from class B, i.e. in particular A instantiates B).
[0042] Dashed arrow: Transfer of information (dashed arrow from class/process or Engine A to class/process or Engine B means data is passed from A to B; the mechanism of transfer may vary and depends on the implementation). Note that a call of class A to class B usually implies that data from B is passed on to A. In that case the dashed arrow from B to A is omitted.
DETAILED DESCRIPTION
[0043] Embodiments of the present disclosure will now be described.
[0044] A given set of adjusted parameters can be referred to as a calibration dataset and a parameter can be considered a constituent of a calibration dataset. As part of the operation of any engine or system automatically adjusting a calibration can produce so-called candidate calibration datasets. We call a feedback loop between engines and/or systems robustly reactive if it takes into account changes in contingencies, comprising at least deviations between forecasted datasets and actual occurrences, as well as changes in the configuration or behavior of the cash devices. The feedback loop is called robustly adaptive if it dynamically adjusts its behavior to the aforementioned changes. The present disclosure can fix the following domain specific criteria for the efficient automated production of an optimized calibration dataset. The criteria need to be fulfilled to ensure the continued operation of a cash device, cash center and/or other devices and/or systems involved in the cash supply chain.
[0045] Criterium 1: The structure of the search space of possible constituents of a calibration dataset should be taken into account in order to limit the number of unsuitable candidate calibration datasets, thereby making any search process time feasible. In particular, this may involve determining the semantic units between the constituents, i.e. the logical interdependencies. As well as determine the constraints fulfilled within these semantic units.
[0046] Criterium 2: Find a proper means to evaluate the quality of a given candidate calibration dataset, i.e. means for evaluation that a) converges quickly and is computationally efficient, b) that is the correct measure for quality, i.e. does not hide any critical situations.
[0047] Criterium 3: The feedback loop between the (auto-)calibrator and the evaluator should be robustly reactive and robustly adaptive.
[0048] Without specific reference to the domain of cash level management, the more general field of supply chain optimization has been extensively studied in the patent literature, for example, in U.S. Pat. No. 8,311,878 B2, U.S. Pat. No. 6,560,501 B1, U.S. Pat. No. 6,456,996 B1 and U.S. Pat. No. 6,272,483 B1.
[0049] In various documents, for example, U.S. Pat. No. 10,748,095 B2, an optimization process based on a deterministic forecast of withdrawal demand to determine cash refill amount, is described. These methods involve an inefficient and impracticable feedback loop between an external stochastic simulation process as well as an internal optimizer process as depicted in
[0050] Moreover, some references such as U.S. Pat. No. 6,031,984 discloses applications of over constrained systems to model optimization problems. Generally speaking, a constrained system includes a large number of variables and an objective function, for example. taking account of the overall cost within the optimization problem. The goal is to find solutions minimizing the value of this function, by a suitable search method. The constraints that one has to take into account are typically subdivided into so-called hard constraints and soft constraints. The hard constraints are required to be fulfilled in order to obtain a feasible solution. Violation of the soft constraints incur penalty costs, thereby increasing the value of the objective function. In real-world scenarios, there are usually various variables, entering the constraints, which are domain-specific, i.e. they depend on the particular real-world application of the model. We refer to “Integer Optimization by Local Search—A Domain-Independent Approach” by J. P. Walser (Lecture Notes in Artificial Intelligence, LNAI-1637, Springer Verlag, August 1999) for further background.
[0051] The document “Comparing parameter tuning methods for evolutionary algorithms” by S. K. Smit, A. E. Eiben (Proceedings of the IEEE Congress on Evolutionary Computation (CEC), pp. 399-406) discusses issues related to tuning the parameters of an evolutionary algorithm by describing a number of existing tuning methods, and presenting an experimental comparison among them. This work focuses on the parameter tuning problem for evolutionary algorithms. It does not apply to other use cases such as constrained optimization metaheuristic search. In addition, it is restricted to a general theoretical discussion that is provided on the basis of which no solution to a specific problem such as cash level optimization can be provided, as the specific problem involves many individual challenges to which no general solution procedure directly applies, compared with Criteria 1-3.
[0052] The document “Reactive Search and Intelligent Optimization” by R. Battiti, M. Brunato, F. Mascia (Operations Research/Computer Science Interfaces Series, Vol. 45, Springer, November 2008) addresses the problem of parameter tuning for stochastic optimization problems. As depicted in
[0053] In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of embodiments of the invention. However, it will be apparent that various embodiments or examples may be practiced without these specific details. The figures and description are not intended to be restrictive. The ensuing description provides example embodiments only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the example embodiments will provide those skilled in the art with an enabling description for implementing an example embodiment. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the technology as set forth in the appended claims. Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, machines/apparatuses, information, programmable routines, data structures and other components may be shown as components in the form of a flowchart diagram, an information transmission diagram, a call diagram or a mixture of these in order not to obscure the embodiments in unnecessary detail. In other instances, well known machines, routines, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments. Systems depicted in some of the figures may be provided in various configurations.
[0054] One aspect of the present disclosure relates to methods and systems for an optimized management of the cash level of a machine interchangeably referred to as a “cashpoint”, “cash-dispensing device” or “cash device”, which is a device that operates in order to meet the cash demands of customers. Examples of a cashpoint include, without limitation, an automated teller machine (ATM) for withdrawal of cash, a recycle machine capable of providing the functionality for withdrawal as well as deposit of cash by authorized customers, and/or a cash center within the branch of a bank or other location. To ensure the optimal supply of cash, taking into consideration factors such as transport costs, interest costs and/or the goal to ensure a sufficient amount of cash (i.e. service level), aspects of the disclosure may employ software tools or systems that are executed on specific hardware components. Certain aspects of the disclosure may rely on measured physical entities such as the recorded cash level of the cashpoint, and/or the invention may in certain aspects actively perform corresponding measurements of physical entities, e.g. on a regular basis. Aspects of the disclosure may then forecast a future cash demand and/or supply, on the basis of which an adjustment of the cash levels via services, i.e. replacement of cash, may be recommended by the system. In certain aspects, the disclosure may also actively and/or directly calibrate the cashpoint in accordance with the optimized cash level recommendation, preferably with as little as possible or even without human intervention. The underlying procedures to forecast and/or optimize the cash levels may depend on a large number of parameters. It is a very difficult and time-consuming process to adjust these parameters that need to be correctly adjusted. In addition, the adjustment of the parameters should be constantly renewed in order to adequately respond to changing conditions. In other words, the validity of a particular parameter adjustment may expire quickly. In the previous methods, the adjustment is therefore typically a reactive and repeating manual procedure. Aspects of the present disclosure, by contrast, provide for an automated parameter calibration in order to fully automate the cash level optimization of a cashpoint, multiple cashpoints, bank or retail branches or even entire cash centers.
[0055] To this end, aspects of the disclosure provide for an adapted metaheuristic search mechanism, by which the large space of possible parameters is traversed in an intelligent manner. We subdivide the parameters into categories, referred to as lamina in the ensuing description of the presently preferred embodiments. These lamina with the corresponding parameters are given as follows:
[0056] 1. Lamina “Service Trigger” comprising parameters “sub-set of denominations” and/or “minimum stock levels”:
[0057] Aspects of the disclosure allow to define a certain sub-set of denominations to be considered for triggering a service. In case the expected cash level for at least one denomination from the sub-set of denominations is expected to be less than its minimum stock level, a service for the next upcoming service option is triggered, otherwise not.
[0058] 2. Lamina “Service Level” comprising parameters for “buffer factors” and/or “minimum balances”:
[0059] In order to calculate the cash levels for a certain range the expected values as well as a buffer based on the uncertainty of the forecast may be taken into account. But instead of the uncertainty measure itself, a weighted buffer is preferably used by applying buffer factors on the uncertainty measures derived from the forecast.
[0060] Moreover, minimum balances can be defined to prevent that the cash levels will be reduced to a value lower than the configured minimum.
[0061] 3. Lamina “Service Interval” comprising parameter “maximum service interval”:
[0062] It is sometimes necessary to restrict the cash service range due to organizational reasons. In that case a maximum service interval can be defined to prevent that the cash service ranges exceed the maximum range configured.
[0063] The disclosure may involve the communication of two (or more) devices and/or systems as illustrated in
[0064] Optionally, automated parameter adjustments may use techniques of artificial intelligence. In this context, aspects of the invention may provide an adapted metaheuristic search, possibly taking into account the functional properties of specific parameters. The metaheuristic may be coupled to a neural network, which provides a mechanism to store previous possibly useful parameter adjustments. In such a way the system may comprise a memory, thereby reducing the computational burden of having to recompute cost-minimal parameter adjustments that have been obtained in an earlier run of the metaheuristic search. In addition, a neural network may provide the possibility to improve the evaluation of the overall costs of a particular parameter adjustment, known as the problem of fitness evaluation of metaheuristic search methods.
[0065] Moreover, the automated cash level optimizer system may be realized as a distributed system. This has the advantages that the computational burden is distributed among many systems, that no mutual interference occurs and the minimization of costs to a company by being able to offer solutions as a service (SaaS model). The disadvantages of a distributed systems solution comprise a higher network load, the risk of data loss both physically as well as legally. The components of the system, including in particular the calibrator system, the evaluator system and the optimizer system (possibly subdivided by further components according to each particular embodiment), could communicate via a network, as part of a reactive feedback loop. An example of a distributed systems approach is illustrated in
[0066] Variations of such a setup are also conceivable, e.g. it could be the case that the calibration system is subdivided into separate components which communicate via a communications network. One such component may be the neural network, separate from the metaheuristic search which may in turn be separated from a system responsible for the subdivision of the parameter search space and so on. Likewise, the other components illustrated in
[0067] Before a detailed discussion of the present disclosure, some expressions used herein shall be clarified:
[0068] A “cashpoint”, also referred to as “cash-dispensing device” or simply “cash device”, is a device that comprises an internal storage for storing cash. The cash can be withdrawn and possibly deposited, e.g. by a customer and/or by authorized personnel.
[0069] The “cash level” of the cashpoint is the amount of cash in the cashpoint. The cashpoint may comprise a memory means, such as a memory chip, to keep track of turnovers of withdrawals, deposits and/or the current cash level. In addition, the cashpoint may have a connection to a (secure) network.
[0070] The “history” is data comprising past turnover of withdrawals and/or deposits of the cashpoint.
[0071] A “calibration” is a set of values of parameters usable to fine tune a mathematical optimization technique.
[0072] A “forecast” is data comprising estimated future withdrawals and/or deposits of the cashpoint. A forecast may be obtained using a standard statistical procedure.
[0073] Functional Description of the Present Disclosure.
[0074] Coming back to the domain of cash level management,
[0075] The cashpoint 10 records and stores its current cash levels 12 which are at all times transmitted to a server 18. The server 18, based on this information, stores a history 11 as well as current cash levels 12 inside a database. Based on the information stored in the database a forecast 16 is created by a forecaster 17 and passed on to an optimizer system 13. Such a forecast 16 is typically derived by a software-based forecaster 17 using known mathematical/stochastic models and indicates a prediction of the transactions (e.g. withdrawals, deposits) that will likely occur in the future, e.g. for the next 45 days.
[0076] Based on the history 11 and the forecast 16, it is possible to generate a calibration 15 for the cashpoint 10. Such a calibration 15 typically indicates, among other aspects, how much excess cash, in the sense of a buffer, should be employed at the cashpoint 10 to accommodate the expected transactions as well as unexpected peaks that might occur. In the example of
[0077] Once the human agent 14 is satisfied with the calibration 15, a plan is generated which typically indicates one or more points in time when the cashpoint 10 has to be re-stocked with cash within a predetermined time span, e.g. for the next 30 days. Based on the plan for optimization of cash levels, instructions for cash level adjustments are passed on to the cashpoint 10. As can be seen, the procedure according to the prior art is based to a large extent on the individual decisions of the human agent 14 and is thus highly subjective and inefficient.
[0078] Altogether, in the prior art, human intervention is required at least in the following steps: import of the historical information from the cashpoint 10 in a suitable database and the optimizer 13 with concurrent calibration of parameters. Very many optimization runs are necessary in order for the human agent to find the best parameter values. The maintenance of the component systems involved, ensuring their proper operation is also part of human intervention. Therefore, the entire mechanism of the cash level adjustments depends on a human agent who acts as an intelligent and self-aware feedback channel, who modifies the parameter values according to his observations about the behavior of the optimizer 13. What is missing is a reactive search strategy which combines the optimization procedures with an automated calibration of the parameter search space. However, such mechanisms are highly dependent on the specific features of the optimization technique and the overall specification of the system under study. In order to address the automated fine-tuning problem, the consensus of the people having ordinary skills in the art is that there is no general method for automated calibration of parameters for optimization algorithms known. Each case therefore represents a unique challenge necessitating a non-obvious solution strategy, meeting the unique challenges presented by the individual case under consideration.
[0079] In summary, the known approaches do not enable an automated adjustment of the parameter search space, a so-called automated calibration. Furthermore, it is desirable to have fully automated cash level adjustments, without any need for human intervention. It is therefore the technical problem of the present invention to provide an automated approach for the cash level optimization of a cashpoint, thereby at least partly, overcoming the above explained disadvantages of the prior art.
[0080]
[0081] Current 22 and/or past 21 cash level information is transmitted, via the secure network 30, to an evaluator 27 and later passed on to an optimizer 28. The optimizer 28 stores the relevant historic data 21 and, based on a mathematical optimization technique, creates a plan 29 for optimal cash level adjustments. In the particular embodiment, the forecaster 23, evaluator 27 and optimizer 28 could be computer implemented systems which are integrated into one computing system, or they could be part of a distributed network of computer systems, sharing information via a secure network protocol. In the particular embodiment, the data obtained from the cashpoint 20 is imported into a database which is then accessed by the forecaster 23. This is facilitated by the Network system 30 which obtains the data from the cashpoint 20 and facilitates the communication with the other components displayed in
[0082] In previous methods and systems (see
[0083] In addition, the novel scheme of interacting components, together with our novel mechanisms, results in synergistic effects. The auto-calibration requires a means to repeatedly evaluate the quality of a calibration. In one particular embodiment this evaluation is based on the evaluation dataset, generated by the evaluator 27. To be precise, what is being done in this step is an evaluation of the relative quality of a given calibration. This means the evaluator 27 computes a total score, based on several quality criteria that encapsulate the objectives of minimization of the total costs and maximization of the total service level. Since these objectives are contradictory, weighting factors are defined to find the best combination. This is what we mean by an evaluation of a calibration in the presently preferred embodiment.
[0084] In at least one embodiment, the instructions computed by the optimizer 28, based on the calibration obtained by the auto calibrator 25, are sent directly to the Server 210 and then passed on to the automated cash center 131, such as depicted in
[0085] There are two sets of bank notes containers. The first set of containers resides at the automated cash center 131, does not contain any cash at the outset and is filled with cash according to the instructions. Then it is taken by the CIT 134 to the cashpoint 132. The cashpoint 132 contains the second set of containers with the residual cash inside. At the point of a service the first set of containers is exchanged with the second set of containers. The CIT 133 transports the second set of containers to the automated cash center 131. The second set of bank notes containers is further processed in a fully automized fashion at the cash center 131. The processing at the cash center 131 consists of the following steps: The second set of bank notes containers are opened by a loading module via a gripping robot that takes staples of cash and inserts them into high speed sorting machines. The machines are capable of banding, welding, unzipping and disposing of packaging. Before the execution of a service, as depicted in
[0086] Altogether, the closed loop scenario of present disclosure comprises the following steps:
[0087] 1. The cashpoint 20 passes on its historic data 21, via the secure network 28, to the forecaster 23, as well as its current cash levels 22 to the auto calibrator system 25. The interaction of the cashpoint 20 with the other components may be facilitated by the server 210, which is configured for storing the relevant information and translating it into a format readable by the cashpoint 20 and the other systems, respectively.
[0088] 2. A forecast 24 is created by the forecaster system 23.
[0089] 3. The forecast 24 is accessed by the auto calibrator 25, on the basis of which, in addition to the current cash levels 22, it creates a calibration 26.
[0090] 4. Calibration 26 and forecast 24 are passed on to the evaluator 27 and a current evaluation dataset is fed back into the auto calibrator 25. The feedback loop (7) ends when optimal parameter values have been obtained, as decided by a convergence criterion of the auto calibrator 25.
[0091] 5. The optimizer 28 creates a plan 29 for future cash level adjustments.
[0092] 6. The plan 29 is transmitted to the Server 210, via the secure network 28. The cashpoint 20 is serviced based on this information as outlined above and further illustrated in
[0093] As
[0094] Structural Description of the Autocalibration of the Present Disclosure.
[0095] The system requires a large number of free parameters to be adjusted, i.e. it relies on the calibration. This adjustment is executed by an autocalibration mechanism. We give a detailed description of one particular possible embodiment for such a mechanism, based on an evolutionary metaheuristic coupled to a feedforward neural network. This is meant as an illustrative description and does not exclude other embodiments using other methods of artificial intelligence. As a non-exhaustive list of examples we mention other possible search strategies such as: a) stochastic gradient descent, b) a feedforward neural network using backpropagation, c) a recurrent neural network (RNN) with a directed acyclic graph, d) a RNN with a directed cyclic graph, e) a continuous time RNN, f) a multiple timescales RNN, g) a heuristic or metaheuristic search or heuristic optimization technique, h) techniques mentioned in g) combined with a), b), c), d), e) or f), as well as i) any suitable combination of the previously mentioned or other search techniques.
[0096] In the particular embodiment illustrated by the drawings, via an evolutionary metaheuristic, the parameter search space is subdivided into functional categories. To this end a data structure which furnishes a lamination of the search space, is employed. The parameters within a category are encoded as so-called gene vectors. An initial population is obtained by a randomized breeding of potential solutions. Each solution is constrained, by a so-called constraint system 43. The constraint system 43 encodes the semantic interrelationships between the parameters, within a given category. Hence any potential solution remains within the bounds imposed by the constraint system. After the initial breeding phase, the laminated parameter structure is passed on to a genetic algorithm 32. The genetic algorithm 32 performs the operations of mutation, combination and selection (using tournament and rank selection), within the bounds imposed by the constraint system. These operations are repeated until, after a predetermined number of trials, no new optimal solution can be reached. The solution, consisting of parameters, is then passed on to the optimizer system 33. The system creates in turn a plan for optimal cash level adjustments.
[0097] At the point before the cash level data 31 is transmitted to the optimizer system, it is first passed on to the genetic algorithm routines 32. The candidate solutions obtained within the genetic algorithm are then passed on to the evaluator 33, in order to obtain the necessary information to calculate the fitness 34 of the candidate solutions. The genetic algorithm interacts with the constraint system 43, which determines the bounds, within which any candidate solution (i.e. vectors of parameters, subdivided into functional categories), has to remain.
[0098] An initial set of individuals, i.e. candidate solutions is generated in a random fashion 55, after the constraint system has determined the semantic bounds of the functional categories of parameters. Starting with a set of N=100 candidate solutions 55, the genetic algorithm routines 53 execute the selection and crossover combination operations, resulting in 0<<M≤N candidate solutions 51, cf.
[0099] Denote by 0<P.sub.c<1 the pre-defined probability constant. Then, based on ranking by fitness, the assigned probabilities are given as follows:
P.sub.1=P.sub.c,P.sub.2=(1−P.sub.c)P.sub.c,P.sub.3−(1−P.sub.c).sup.2P.sub.c, . . . ,Pn−1=(1−Pc){circumflex over ( )}(n−2)Pc,Pn=(1−Pc){circumflex over ( )}(n−1).
[0100] The tournament selector routine contains in addition a distance measure for parameters. This determines the diversity of prospective solutions. The diversity measure and the rank measure are then aligned to select solutions. The fitness function determines the overall cost of the cash level adjustments, obtained from the parameters in the evaluator engine. The evaluation is comprised of at least a service level evaluator, service trigger evaluator and a cost evaluator with an appropriate weighting of the various resulting evaluator scores. The costs that enter in the cost evaluation consist of service costs, stock costs, interest costs, processing costs and penalty costs for stockouts.
[0101] Summarizing, the operation of one embodiment of the genetic algorithm is based on the following structure. An 8-tuple (X,.sup.{L.sup..sup.
.sup.,{Dist.sup.
.sup.,S.sup.
[0102] The solution search space X, subdivided into lamina
[0104] Each lamina L.sub.j is endowed with a vector of strict partial orderings
.sub.j:=(
.sub.jk).sub.k=1.sup.n(j)
[0105] and L.sub.j⊂R.sup.n(j), where n(j) denotes the number of components of a vector contained in L.sub.j.
[0106] A set of distance measures Dist.sub.j such that for given x,y∈L.sub.j
Dist.sub.j(x,y):=#{k:(x.sub.k.sub.jky.sub.k).Math.(y.sub.k
.sub.jkx.sub.k)}.
[0107] where .Math. denotes the exclusive-or operation, i.e. the number of differing components of the two vectors. This furnishes a metric on L.sub.j, for each 1≤j≤d.
[0108] A semigroup S, generated by the genetic operations mutation and recombination. We consider here a semigroup, since these operations are non-deterministic. The operations of the genetic algorithm furnish a semigroup action S×X.fwdarw.X. Note that if S where a group, the action would partition X into the orbits of the action. In our system the partition by the lamina is pre-defined.
[0109] The rank measure S.sub.rank: X.sup.N.fwdarw.[0,1] as defined above (it depends on the pre-defined value P.sub.c). The diversity measure S.sub.div: X.sup.N.fwdarw.[0,1] defined with the help of the distance measures Dist.sub.j (the vectors are compared pairwise)
[0110] and pr.sub.j: X.fwdarw.L.sub.j denotes the projection onto the j-th component.
[0111] The fitness function ƒ: X.fwdarw.R, i.e. x*∈X is a cost-optimal solution if ƒ(x*)≤ƒ(x) for each x∈X.
[0112] A constraint system C:={c.sub.1, c.sub.2, . . . , c.sub.d}, consisting of logical operations c.sub.j: L.sub.j.fwdarw.{0,1} for 1≤j≤d. Such that x∈L.sub.j, then
[0113] Definition. A genotype is a vector (ƒ.sub.j).sub.j=1.sup.d consisting of d maps ƒ.sub.j: [3].sup.n(j).fwdarw.L.sub.j.sup.n(j) such that for each 1≤j≤d the map ƒ.sub.j is the vector ƒ.sub.j=
[0114] (g.sub.1,j, g.sub.2,j, . . . , g.sub.n(j),j) consisting of maps g.sub.k,j: [3].fwdarw.L.sub.j for 1≤k≤n(j). (Notation: [n]:={0, 1, . . . , n}, n∈N).
[0115] The values in [3] represent the states: 0 DEFAULT, 1 MIN, 2 MAX and 3 CURRENT
[0116] A phenotype is a vector v∈.sup.Σ.sup.
[0117] A genotype therefore fulfills the role of an internal representation of the parameter search space. The phenotype is simply a calibration. Denote by G the set of all possible genotypes. The genotypes are converted into phenotypes in the following way. The transformation T: .fwdarw.
.sup.Σ.sup.
(ƒ.sub.j).sub.j=1.sup.d
(ƒ.sub.j(3, . . . ,3)).sub.j=1.sup.d∈
.sup.Σ.sup.
[0118] Note that G is a subset of the set×.sub.j=1.sup.d Map([3].sup.n(j), L.sub.j.sup.n(j)) of all maps from [3].sup.n(j) to L.sub.j.sup.n(j).
[0119] In the particular exemplary case considered here there are d=3 lamina. Each lamina corresponds to a category of parameters in the sense that:
[0120] L.sub.1 comprises vectors x.sup.(1) representing the n(1)=2 parameters that belong to the category Service Trigger. The parameter sub-set of denominations is represented by a set x.sub.1.sup.(1) of denominations which is a subset of all permissible denominations D. The parameter minimum stockout levels is represented by a map x.sub.2.sup.(2):x.sub.1.sup.(1).fwdarw..sup.|x.sup.
.sub.11 is given by the proper subset relation ⊂ and the strict partial order
.sub.12 is given by the standard less-than relation < for positive integers applied component-wise to the set) x.sub.2.sup.(2)(x.sub.1.sup.(1)).
[0121] Each representation can assume four possible values according to the different states. The DEFAULT state is the parameter value pre-defined in the database. The states MIN, MAX are adjusted according to the following heuristics: The sub-set of denominations is determined based on the forecast and the current cash levels, i.e. the denominations that are depleted fast on average and are withdraw-heavy (i.e. have more withdraws than deposits on average) form the MAX sub-set of denominations, the fastest running denomination(s), that have maximum container capacity and that are in addition withdraw-heavy form(s) the MIN sub-set. The heuristics for the parameter bounds for minimum stockout levels is analogous to the heuristics for the parameters bounds of minimum balances to be described below.
[0122] The constraint system c.sub.1 returns 1 whenever the CURRENT state of the parameter representation is within the bounds as specified by the states MIN and MAX, i.e. whenever the sentence (g1,1(1)11 g1,1(3)
11 g1,1(2))∧(g2,1(1)
12 g2,1(3)
12 g2,1(2)) is true. The check is facilitated by the strict partial orders.
[0123] L.sub.2 comprises vectors x.sup.(2) representing the n(2)=2 parameters that belong to the category Service Level. The parameter buffer factors is represented by real number x.sub.1.sup.(2) and likewise so is parameter buffer factor weekend x.sub.2.sup.(2).
[0124] The strict partial orders .sub.21,
.sub.22,
.sub.23,
.sub.24 are given by the standard less-than relation < for real numbers. The parameter minimum balances is represented by a map.sup.x.sup.
\x.sub.1.sup.(1).fwdarw.
from the set of denominations to positive integers, i.e. each denomination gets assigned a positive integer. The strict partial order
.sub.25 is given by the standard less-than relation < for positive integers, applied componentwise to the set.sup.x.sup.
\x.sub.1.sup.(1)). The MAX and MIN states of the buffer factors and minimum balances are determined by the following heuristics: The MIN buffer factor is set to 0.1. The forecast is run over the past historical data. For each service that has taken place in the past, the aggregated forecasted withdrawals and aggregated turnovers are calculated (per denomination and per service date), under the assumption that the service has been left out (for each service date). These values are put in a table, one value for each service date. The deviation for each service date is the aggregated withdrawals minus the aggregated turnovers multiplied with the buffer factor. The maximum of the deviations, where buffer factor is taken to be the MIN buffer factor, yield the MAX state for a denomination's minimum balance. The buffer factor is now iteratively increased by 0.1 increments until the evaluated maximal deviation has reached its minimum value >0. This minimum value is the state MIN for a denomination's minimum balance. The reached value for the buffer factor is the state MAX for the buffer factor.
[0125] L.sub.3 comprises vectors x.sup.(3) representing the n(3)=1 parameters that belong to the category Service Interval. The parameter maximum service interval is represented by a positive integer x.sub.1.sup.(3) and the strict partial order .sub.31 is given by the standard less-than relation < for positive integers.
[0126] In the particular embodiment, the Evaluator is comprised of the following components:
[0127] The service level evaluator determines the level of stock. Among all ranges, above a realistic threshold and associated volume, the evaluator computes for each (range, volume) pair the aggregated deviation over the range. If the aggregated deviation shows that D more volume is needed, the relative shortening of the range that is needed to meet the demand is estimated and a penalty is determined, based on the degree of flexibility of the regular services. The total measure for the service level evaluator is given by the sum over all ranges above the threshold over the relative shortenings of the ranges needed multiplied by the respective penalty.
[0128] The service trigger evaluator identifies good and bad service trigger decisions based on the current candidate calibration. For each two service options a test is performed, based on the forecast and buffer factors, whether the minimum stockout levels suffice until the second next service, for each denomination belonging to the parameter the sub-set of denominations. Each possible decision where the stockout levels do not suffice is counted as a mistake. The total measure for the service trigger evaluation is given by the number of mistakes divided by the total number of decisions, weighted by a stockout penalty.
[0129] The cost evaluator determines for each candidate calibration the relative growth tendency of the resulting plan costs without the need to compute a plan beforehand. Underlying the method is a stochastic economic order quantity model for the demand, with stationary probability distribution and stochastically independent withdrawals and deposits. The expected value of the plan costs is defined via the economic order quantity model as a sum of the expected service costs, the expected interest costs and the expected penalty costs. The gradient of the expected plan costs is the 2-vector consisting of the derivative with respect to order time as the first component and the derivative with respect to quantity of the expected plan costs as the second component. The cost tendency of a given candidate calibration is defined as the overall minimal deviations from the negative gradient in the search tree of possible ranges. The cost score of given candidate calibration is therefore defined as the average of all the distances in the direction of the negative gradient of the expected value of the costs in the search tree of possible service ranges.
[0130] The total evaluation score of a given candidate calibration is described, via a pre-defined weight factor w that is a real number in the closed unit interval and that encapsulates the willingness to take risks, as w multiplied by the sum of the service trigger evaluator and the service level evaluator plus (1−w) multiplied by the cost evaluator.
[0131] Functional Data Structures Used in the Autocalibration
[0132]
[0133] Mutator: The interface provides the basic functionality for mutation of candidate solutions. Selector: Provides the functionality for the selection operations.
[0134] CrossoverMethod: Provides the functionality for the crossover combination of individuals. Gene: By a gene we mean a single parameter of the system. A gene encodes the minimal/maximal permissible value of the parameter, the default value (as set by the system) and the current value as it is used by the genetic algorithm.
[0135] GeneVector: By a vector of genes we encode several parameters belonging to a single functional category. Each vector consists of a list of genes, encoded in the data structure List<Gene>. The routine getVectors(Parameters) returns the entire laminated candidate solution space.
[0136] EvalFitness: The main routine of this class is computeCost where the overall cost of a candidate solution is computed, based on the response of the evaluator engine.
[0137] RankSelector: Provides the functionality for the selection of individuals using probability ranking.
[0138] CombCrossover: This class provides the functionality for the combination of individual solutions. In the main routine of this class categories are interchanges according to a probability threshold.
[0139] NN: This interface furnishes the structure of the neural network. The network is initialized and continuously updated with the information contained in a list of GeneVectors, i.e. each vector of genes corresponds to the information processed by a single hidden layer of the network. The layers are stored in a list of NLayer type. The number of layers equals the number of functional categories of parameters.
[0140] Neuron: A neuron is managed within this class. The constructor depends on nw, i.e. the number of weights. The class contains methods to store and update neuron values. All weights are stored in a list of double values.
[0141] NLayer: This class manage a neuronal layer. It is constructed with n standing for the number of neurons in the layer and wpn, i.e. the weights per neuron.
[0142] NNProcessor: This is the main class for the processing of the supervised feedforward network.
[0143] This is meant as an illustration of one particular embodiment of an autocalibration mechanism. The mathematical description corresponds to specific functional data structures in this particular embodiment. These data structures are listed in
[0144] The data structure facilitating this functionality is given by a list of GeneVectors. After instance creation of the functional classes, representing the categories of parameters, the constraint system modifies the gene vectors with their minimum and maximum values. The functional data structures determining the operation of the genetic algorithm consist of classes encoding an Individual with its genotype and phenotype and various classes ensuring the correct operation and performance of the algorithm. A genotype is encoded via the class GeneVector, consisting of a list vector of Genes. The genes encode parameters in terms of key/value pairs. Here, in the definition of the map ƒ.sub.j, the value 0 is mapped to the default state of the parameter, ½ are mapped respectively to the minimum/maximum value (determined by the constraint system) and 3 to the current value. On the other hand, the phenotype consists of all the parameter keys and values that are translated from the genotype. In the concrete implementation we have to keep track of the precise location of each parameter in the memory of the devices and process these locations in a uniform way. The parameters are therefore identified by their parameter keys which are stored and used uniformly in the genotype, as well as the phenotype data structures. An individual is determined by a functional data structure encoding both the genotype and phenotype, as well as a means for translating the former into the latter.
[0145] The operations of the genetic algorithm are given as follows. The mutation generates a random value α in the interval (0,1). If α<P.sub.c, then a parameter from the population of N individuals is selected at random. The recombination operation combines different gene vectors, i.e. categories of parameters, selected according to a probability threshold α<P.sub.c from the population of N individuals.
[0146] The fitness function ƒ is defined as follows: given g∈G as a candidate solution (genotype), we convert g via the transformation map T into a phenotype x∈X⊂R.sup.Σ.sup.
[0147] The constraint system (CS) 54 encodes the semantic interdependencies of the parameters within their respective functional categories using various heuristics. This is specific to the concrete types and categories of parameters under consideration. In our case the CS 54 determines the upper and lower bounds for parameters, corresponding to the states MIN and MAX in the definition of the genotype. The CS ensures that the candidate solutions determined by the evolutionary algorithm stay within these bounds. After the constrained mutation and recombination operations have been executed on the population of individuals, the selection operations are executed. These are as described before. The algorithm repeats this process until the termination criterion is reached. The latter is defined as convergence, i.e. the offspring remain in the same fitness class of solutions.
[0148] To illustrate the functioning of the genetic algorithm in terms of the concrete example, where we restrict ourselves to the lamina of representations of parameters Service Trigger L.sub.1 and Service Interval L.sub.3 and the execution is limited to N=2 generations in order to preserve readability.
[0149] Breeding N=2 individuals that are represented by the vectors x.sup.(1)[a] and x.sup.(3)[a], where a=1,2 are the generations and x.sup.(1) consisting of the representations of the parameters sub-set of denominations, minimum stockout levels in their respective states DEFAULT 0, MIN 1, MAX 2 and CURRENT 3 as well as x.sup.(3) consisting of the representation of the parameter maximum service interval
[0150] in its respective states. The set of all denominations is given by D={1, 10, 50, 100, 1000}. The first two generations are bred at random, verifying the bounds of the constraint system, yielding the genotypes:
[0151] Selection: No difference in fitness of the two candidate solutions.
[0152] Mutation:
[0153] Crossover:
[0154] Selection: After probability ranking, the solution (x.sup.(1)[4],x.sup.(3)[1]) is selected as the fittest solution, according to the quality score of the evaluator engine.
[0155] Feedforward Neural Network
[0156]
[0157] The neural network architecture is in principle independent of the evolutionary algorithm and could be realized in a separate computer system, based on a distributed systems approach, i.e. similar to the arrangement in
Input:(w.sub.k:i).sub.1≤k≤n(i),((x.sub.i−1,k)).sub.1≤k≤n(i−1)
Output: (input(s))+bias.
[0158] The bias represents the knowledge base of the network. In our case this is the default value for each neuron, i.e. the default set for each parameter value. Therefore the activation function takes on the general form:
[0159] Here the function on the right hand side is a suitable nonlinear function. In some embodiments we could use the sigmoid function in the form of the logistic function
Various other choices of nonlinear functions for activation are possible. Note that in alternate embodiments of the search mechanism, by means of other types of neural network, the learning rule changes accordingly.
[0160] The supervised neural network, cf.
[0161] At the beginning the cashpoint data (history, forecast and current cash level) 91 is passed on to the neural network processor 92. The number of input, output and hidden layers 93 is initialized, based on that information. Next the weights of the neurons 94 in the input, output and hidden layers are initialized.
[0162] The output for each neuron 94 in the output layer 93 is computed.
[0163] Call the genetic algorithm routines 95 and update the parameters of the neural network 92.
[0164] Check if the convergence criterion of the genetic algorithm is fulfilled.
[0165] If YES execute step 2 and finish.
[0166] If NO go to step 3.
[0167] In summary, certain aspects of the present disclosure provides a method to optimize, using a so-called auto-calibrator, a calibration for an optimizer of cash levels of a cashpoint (i.e. a cash device), by automating the calibration of parameters that are needed by the optimizer. The optimizer may rely on certain components of data: a forecast, the current cash levels of the device and/or a calibration. The cash device may store the historical turnover data and/or the current cash levels. The forecast may rely on the historical turnover data to generate, e.g. via a standard statistical procedure, the likely future turnover data of the machine. The calibration may comprise a set of parameters needed to fine tune the optimizer. The optimizer may execute methods of mathematical optimization in order to produce a plan for future cash level adjustments of the machine. Certain aspects of the innovation provide for the automation of the calibration, i.e. the automated determination of parameters, best suitable for ideal performance of the optimizer. In addition, aspects of the disclosure may provide a closed loop scheme for automated cash level adjustments of a cash point, without the need for human intervention.
[0168]
[0169] In at least one example, the present disclosure can be described as follows:
[0170] 1. A method to calibrate the parameter search space of an underlying optimization device employing a functional lamination of the search space, comprising: [0171] A constraint system comprising: [0172] A subdivision of the parameter search space into functional categories. [0173] The definition of logical constraints, i.e. the interrelationships of parameters. [0174] A heuristic language encoding the functional semantics of the calibration search space. [0175] A metaheuristic search comprising: [0176] A functional data structure for internal representation of the constrained search space. [0177] Search operations with components that interact with the constraint system. [0178] A feedback mechanism that allows components of the auto calibrator to interact with the evaluator, comprising: [0179] An internal memory, storing previous calibrations, in the form of a neural network. [0180] An interface connecting the search operations of the auto calibrator system with the evaluation dataset generator of the evaluator system. [0181] A concurrent internal arrangement of process execution, allowing feedback loop between the evaluator system and the auto calibrator system. [0182] A convergence or stopping criterion to discontinue the feedback loop when a cost optimal calibration has been obtained.
[0183] 2. A complex system to furnish fully automated cash level adjustments needed for the cost minimal operation of ATM's and cash recyclers, comprising: [0184] A cashpoint, i.e. cash device, equipped with a secure network connection (a radio chip) and a memory chip. [0185] Forecaster, Optimizer, Evaluator and Autocalibrator systems. [0186] Transmittal of cash level and historic information from a cashpoint (i.e. a cash device), via a secure network. [0187] Further passing on this information to a forecaster system and autocalibration system. [0188] Passing on this information to the evaluator system with a feedback interaction mechanism. [0189] Generating a plan based on the calibration by the optimizer system and transmitting the plan for cash level adjustments back to the cashpoint.
[0190] The methods disclosed herein comprise one or more steps or actions for achieving the described method. The method steps and/or actions may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps or actions is specified, the order and/or use of specific steps and/or actions may be modified without departing from the scope of the claims.
[0191] The various operations of methods described above may be performed by any suitable means capable of performing the corresponding functions. The means may include various hardware and/or software/firmware component(s) and/or module(s), including, but not limited to a circuit, an application specific integrated circuit (ASIC), or processor. Generally, where there are operations illustrated in Figures, those operations may be performed by any suitable corresponding counterpart means-plus-function components.
[0192] For example, means for determining, means for performing, means for transmitting, means for receiving, means for sending, means for signaling, means for selecting, means for correlating, means for evaluating, means for assigning, means for allocating, means for removing, means for summing, means for scaling, means calculating, means for averaging, and/or means for taking action, may include one or more processors, transmitters, receivers, and/or other elements of the components illustrated in the figures.
[0193] Those of skill in the art would 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 combinations thereof.
[0194] Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the disclosure herein may be implemented as electronic hardware, software/firmware, or combinations thereof. To clearly illustrate this interchangeability of hardware and software/firmware, 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/firmware 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.
[0195] The various illustrative logical blocks, modules, and circuits described in connection with the disclosure herein may be implemented or performed with a general-purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (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.
[0196] The steps of a method or algorithm described in connection with the disclosure herein may be embodied directly in hardware, in a software/firmware module executed by a processor, or in a combination thereof. A software/firmware module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, phase change memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.
[0197] In one or more exemplary designs, the functions described may be implemented in hardware, software/firmware, or combinations thereof. If implemented in software/firmware, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD/DVD or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special-purpose computer, or a general-purpose or special-purpose processor. Also, any connection is properly termed a computer-readable medium. For example, if the software/firmware is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0198] The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
[0199] While this disclosure has been particularly shown and described with reference to preferred embodiments, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention. The inventors expect skilled artisans to employ such variations as appropriate, and the inventors intend the invention to be practiced otherwise than as specifically described herein. Accordingly, this disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.
[0200] While various embodiments in accordance with the principles disclosed herein have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of this disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with any claims and their equivalents issuing from this disclosure. Furthermore, the above advantages and features are provided in described embodiments, but shall not limit the application of such issued claims to processes and structures accomplishing any or all of the above advantages.
[0201] Additionally, the section headings herein are provided for consistency with the suggestions under 37 C.F.R. 1.77 or otherwise to provide organizational cues. These headings shall not limit or characterize the invention(s) set out in any claims that may issue from this disclosure. Specifically, and by way of example, although the headings refer to a “Technical Field,” the claims should not be limited by the language chosen under this heading to describe the so-called field. Further, a description of a technology as background information is not to be construed as an admission that certain technology is prior art to any embodiment(s) in this disclosure. Neither is the “Brief Summary” to be considered as a characterization of the embodiment(s) set forth in issued claims. Furthermore, any reference in this disclosure to “invention” in the singular should not be used to argue that there is only a single point of novelty in this disclosure. Multiple embodiments may be set forth according to the limitations of the multiple claims issuing from this disclosure, and such claims accordingly define the embodiment(s), and their equivalents, that are protected thereby. In all instances, the scope of such claims shall be considered on their own merits in light of this disclosure, but should not be constrained by the headings set forth herein.