AUTOMATED INVENTORY MANAGEMENT

Disclosed are methods, systems, and computer-readable medium to perform operations including: calculating a current weight of a bought-in material over a current period; calculating a current weighted unit price of the bought in material; calculating a historical weighted average price of the bought-in material during a historical period; calculating a difference between the current weighted unit price and the historical weighted average price; calculating a material price percentage change by dividing the difference by the historical weighted average price; multiplying the material price percentage change by the current weight to obtain a weighted average percentage change for the bought-in material; and performing one or more actions in connection with the weighted average percentage change.

TECHNICAL FIELD

This disclosure relates to an automated inventory and supply chain management system.

BACKGROUND

An enterprise, for example, an oil and gas corporation, may spend significant capital on procuring materials and commodities from external vendors. These purchases are documented by purchase orders (POs) that include information such as, supplier or vendor, delivery address, item identifier (for example, name or code), item cost, item quantity, total item price, and total order cost. The enterprise may store these POs in a database.

SUMMARY

This disclosure describes an inventory management system (IMS) for calculating price change trends for materials procured by an enterprise, and for performing actions in connection with the calculated trends (for example, actions based on a price change trend). The IMS also analyzes the price change trends to generate insights on price change trends (for example, cost impact of high spend materials), both on an overall enterprise level and on a commodity level. The IMS can also display the price change trends, insights on the price change trends, and recommendations on a graphical user interface (GUI). In some implementations, the IMS interacts with external procurement systems to automatically negotiate contracts, look for new vendors, submit offers, and create orders based on the price change trends. Additionally, the IMS can interact with external systems, such as smart factories or smart shipping providers, to prompt and act on actions, such as ordering, shipping, and transporting.

Aspects of the subject matter described in this specification may be embodied in methods that include the actions of: calculating a current weight of a bought-in material over a current period; calculating a current weighted unit price of the bought in material; calculating a historical weighted average price of the bought-in material during a historical period; calculating a difference between the current weighted unit price and the historical weighted average price; calculating a material price percentage change by dividing the difference by the historical weighted average price; multiplying the material price percentage change by the current weight to obtain a weighted average percentage change for the bought-in material; and performing one or more actions in connection with the weighted average percentage change.

The previously-described implementation is applicable using a computer-implemented method; a non-transitory, computer-readable medium storing computer-readable instructions to perform the computer-implemented method; and a computer system including a computer memory interoperably coupled with a hardware processor configured to perform the computer-implemented method or the instructions stored on the non-transitory, computer-readable medium. These and other embodiments may each optionally include one or more of the following features.

In some implementations, calculating the current weight of the bought-in material involves: extracting from a purchase order database: (i) a plurality of purchase orders for the bought-in material during the current period and (ii) costs associated with the plurality of purchase orders; calculating a total cost of the plurality of purchase orders for the bought-in material; calculating a total cost of all purchase orders during the current period; and dividing the total cost of the plurality of purchase orders for the bought-in material by the total cost of all purchase orders to obtain the current weight of the bought-in material.

In some implementations, calculating the current weighted unit price of the bought-in material involves: for each of a plurality of purchase orders for the bought-in material: dividing a respective cost of the purchase order by a total material placement value during the current period to obtain a respective unit price weight; and multiplying the respective unit price weight with a respective effective unit price to obtain a respective weighted unit price; summing the respective weighted unit prices to obtain the current weighted unit price of the bought-in material.

In some implementations, the current weight of the material is calculated based on a plurality of purchase orders for the material during the current period, and wherein the plurality of purchase orders have at least one of an identical incoterm, purchasing office, or order unit of measurement.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves: determining the weighted average percentage change and a threshold change in a price of the material; and responsively generating an alert indicative of the threshold change.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves: generating, based on the weighted average percentage change, an offer for a purchase of the material; and submitting the offer to a system of an external vendor for the material.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves: generating a representation of a graphical user interface (GUI), where the GUI contains: one or more panes including a representation of the weighted average percentage change.

In some implementations, method400further involves calculating respective weighted average percentage changes for a plurality of materials; and calculating, based on the respective weighted average percentage changes, an overall weighted average percentage change.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves using ML or AI techniques to analyze the calculated price change trends and to generate recommendations based on the trends. An ML model can be trained using price change trends. As an example, an ML model can be trained to generate data indicative of the prices of the materials procured by the enterprise. As another example, an ML model can be trained to predict future prices of materials. As yet another example, an ML model can be trained to identify price change trends that are indicative of certain events (for example, rapidly changing price, sudden change in price, prices that deviate from the market, among other examples).

The subject matter described in this specification can be implemented to realize one or more of the following advantages. The disclosed IMS applies a weighted impact when generating price change trends, which improves the accuracy and utility of the data. The IMS also has the ability to track prices on an overall enterprise level or drill down to a commodity and material level. Further, the IMS can perform actions in connection with the generated price change trends. For example, the IMS can generate alerts that indicate a threshold change in price. Additionally, the IMS can generate a procurement strategy for frequently procured materials with specific prices and specific vendors to establish long term agreements in order to avoid price uncertainty. Also, the system can use the generated price change trends to predict future prices of materials. Furthermore, the IMS provides visibility on high spend materials and determines a cost impact of those materials. The cost impact can be used to show savings or added costs. As such, procurement strategies can be established based on the data provided by the IMS, which in turn, can be used to generate purchase agreements for high impact materials in order to avoid increased costs.

DETAILED DESCRIPTION

This disclosure describes an inventory management system (IMS) for calculating price change trends for materials procured by an enterprise, and for performing actions in connection with the calculated trends (for example, an action based on a price change trend). Additionally, the IMS analyzes price change trends to generate insights (for example, cost impact of high spend materials) both on an overall enterprise level and on a commodity level. The IMS may also display on a graphical user interface (GUI) the price change trends, insights on the price change trends, and recommendations based on the price change trends. In some implementations, the IMS communicates with external procurement systems to automatically negotiate procurement contracts, search for new vendors, submit procurement offers, or create orders based on price change trends. Additionally, the IMS can communicate with external systems, such as smart factories or smart shipping providers, to prompt and act on actions, such as ordering, shipping, and transporting.

FIG. 1illustrates an example block diagram of an inventory management system (IMS)100, according to some implementations. The IMS100may, for example, be operated by an enterprise that procures materials and commodities from external vendors. As shown inFIG. 1, the IMS100includes a plurality of price trend module102, a resource planning module104, a graphical user interface106, and a communication interface (not illustrated inFIG. 1). The IMS100may be implemented by a computing system, such as the computing system500ofFIG. 5. Note that the IMS100is shown for illustration purposes only, as the IMS100may include additional components and/or have one or more components removed without departing from the scope of the disclosure. Further, note that the various components of the IMS100may be arranged and connected in any manner. In the following discussion of the IMS100, reference is also made toFIG. 2andFIG. 3.

In an embodiment, the price trend module102is configured to calculate a price change trend for one or more materials that are procured by the enterprise. In particular, the price trend module102uses a price change trend workflow to calculate the price change trend for each material. In some examples, the price trend module102calculates a price change trend for a material in response to a trigger, such as a user input requesting the calculation, a determination by the price trend module102that a new vendor for the material is available, or a determination by the price trend module102that a quantity of the material in the enterprise's inventory is less than a threshold. In other examples, the price trend module102periodically calculates the price change trend for a material, such as on a monthly, quarterly, or yearly basis. As described below, the price trend module102calculates price change trends using purchase orders (POs) that are stored in a PO database. The PO database may be a centralized analytics repository for data associated with the procurement of materials. For example, all transactional data for an enterprise can be collected and stored in the centralized analytics repository, where other systems of the enterprise, such as the IMS100, may access the data.

FIG. 2illustrates an example workflow200for calculating a price change trend of a material, according to some implementations. For clarity of presentation, the description that follows generally describes the workflow200in the context of components in other figures of this description. However, it will be understood that the workflow200can be performed, for example, by any suitable system, environment, software, hardware, or a combination of systems, environments, software, and hardware, as appropriate. In some implementations, various steps of the workflow200can be run in parallel, in combination, in loops, or in any order.

At step202, the price trend module102calculates a current weight of a material. To do so, the price trend module102first extracts from a PO database: (i) all POs for the material during a current period and (ii) respective costs associated with the extracted POs. The current period may, for example, be a current month or business quarter, or any other period of time (for example, days, weeks, months, or years) up to and including the date at which the workflow200is executed.

The price trend module102then calculates a sum of the costs of the extracted POs (that is, the POs for purchases of the material made during the current period). The price trend module102also calculates a sum of the costs of all the POs made during the current period (that is, the POs for all purchases made during the current period). Finally, to calculate the weight of the material, the price trend module102divides the total cost of the POs for the material by the total cost of all POs during the current period.

At step204, the price trend module102calculates a current weighted unit price of the material. To do so, the price trend module102first calculates a unit price weight for each PO of the material by dividing each PO cost by a total material placement value during the current period, where the total material placement value is a total value procured for the material during the current period. Then, the price trend module102multiplies the unit price weight for each PO with an effective unit price of each PO. The effective unit price, which is extracted from the PO database, is a total cost of the material including a material's unit price, customs duties, and logistics. Then, the price trend module102sums the weighted unit prices of all POs for the material to obtain the current weighted unit price of the material.

At step206, the price trend module102checks for at least one of an International Commercial Term (incoterm) of the material, purchasing office that procured the material, and order unit of measurement of the material. Determining the at least one of these factors for the material allows the price trend module102to perform the subsequent steps of the workflow200using data that is also associated with all of these factors. Doing so will increase the accuracy of the calculated price change trends. For example, when calculating a weighted average price of the material over a historical period, only historical price change trends associated with the at least one of the same purchasing office, same incoterm, and same unit of measure are used in the calculation.

At step208, the price trend module102calculates a weighted average price of the material over a historical period. The weighted average price of the material is an average of all values of the weighted unit price of the material that were calculated during the historical period. For example, if the weighted unit price of the material is calculated on a quarterly basis, the weighted average price of the material is the average of the values of the weighted unit price that were calculated on a quarterly basis in the historical period. The historical period may be on the order of days, weeks, months, or years. In an example, the historical period precedes the current period such that the historical period does not overlap with the current period. In another example, a start date of the historical period may precede the current period, but an end date of the historical period may overlap with the current period. In one example, the historical period is two years.

At step210, the price trend module102calculates a difference between the current weighted unit price and the historical weighted average price. At step212, the price trend module102calculates a material price percentage change by dividing the difference between the current weighted unit price and the historical weighted average price by the historical weighted average price. At step214, the price trend module102calculates a weighted average percentage change by multiplying the material price percentage change by the current weight of the material (calculated in step202).

In an embodiment, the price trend module102executes the workflow200to calculate the price change trend for more than one material. In particular, by executing the workflow200for more than one material, the price trend module102can calculate overall price change trends for the enterprise based on the price change trends of the more than one material. In some embodiments, the workflow200considers other factors that can increase the accuracy of the calculated price change trends. Such factors include an International Commercial Term (incoterm) of the material, the purchasing office that procured the material, and the unit of measurement in which the order was placed. For example, when calculating a weighted average price of the material over a historical period, only historical price change trends associated with the same purchasing office, same incoterm, or same unit of measure are used in the calculation.

In an embodiment, the price trend module102stores each price change trend in a central database of the IMS100(not illustrated inFIG. 1). Additionally, the price trend module102stores identifying data with each price change trend, such as the material and time period with which the price change trend is associated. The price trend modules that are stored in the central database can be used at a later time as historical data for calculating new price change trends. Additionally, the IMS100can perform actions in connection with the calculated trends (for example, an action based on a price change trend).

Returning toFIG. 1, the resource planning module104is configured to analyze the stored price change trends and to perform actions in connection with the trends. In an embodiment, the resource planning module104analyzes the price change trends, using statistical analysis, to generate data indicative of the prices of the materials procured by the enterprise. This data can be used to compare the enterprise's procured prices with market prices. Additionally, this data can be used to predict future prices of materials. Further, this data can be used to build a procurement strategy for frequently procured materials with a specific price and a specific vendor in order to avoid price uncertainty. Yet further, this data can be used to provide visibility on high spend materials and signify a cost impact of those materials. The cost impact can be used to show savings or additional costs associated with each of the high spend materials. As such, procurement strategies can be established based on the data to generate purchase agreements for high impact materials in order to avoid increased costs. In some examples, the data can be represented using visual graphics, such as charts, plots, or graphs.

In another embodiment, the resource planning module104generates recommendations based on the calculated price change trends. For example, the resource planning module104can generate recommendations for which vendors to use, prices at which to purchase materials, and quantities to purchase. These recommendations can be provided to an inventory management or supply chain team of the enterprise.

In an embodiment, the resource planning module104can perform one or more analysis operations. For example, the analysis operations in the resource planning module104can include machine learning (ML) algorithms or artificial intelligence (AI) algorithms, for example, based on detection, failure, or prediction models. Such algorithms can be based on data-driven models, physics models, or models that are both physics- and data-driven. The analysis operations are performed to identify patterns in the data. In particular, the resource planning module104uses ML or AI techniques to analyze the calculated price change trends and to generate recommendations based on the trends. An ML model can be trained using price change trends that are calculated by the price trend module102. As an example, an ML model can be trained to generate data indicative of the prices of the materials procured by the enterprise. As another example, an ML model can be trained to predict future prices of materials. As yet another example, an ML model can be trained to identify price change trends that are indicative of certain events (for example, rapidly changing price, sudden change in price, prices that deviate from the market, among other examples).

Generally, machine learning can encompass a wide variety of different techniques that are used to train a machine to perform specific tasks without being specifically programmed to perform those tasks. The machine can be trained using different machine learning techniques, including, for example, supervised learning, unsupervised learning, and reinforcement learning. In supervised learning, inputs and corresponding outputs of interest are provided to the machine. The machine adjusts its functions in order to provide the desired output when the inputs are provided. Supervised learning is generally used to teach a computer to solve problems in which are outcome determinative. In contrast, in unsupervised learning inputs are provided without providing a corresponding desired output. Unsupervised learning is generally used in classification problems. Reinforcement learning describes an algorithm which a machine makes decisions using trial and error. Feedback informs the machine when a good choice or bad choice is made. The machine then adjusts its algorithms accordingly. During the training process, different algorithms may be used, including among others, generalized linear regression (GLM).

In another embodiment, the resource planning module104performs an action in connection with the calculated price change trends. In an example, the resource planning module104can generate an alert (for example, audio or visual alert via a computing device) indicative of a threshold change in price (for example, threshold drop or increase in price). In another example, the resource planning module104can be connected across inventory and supply chain management, which includes manufacturing, storage, transportation, and logistics, such that the resource planning module104can provide options for and actually act on calculated price change trends. The resource planning module104can incorporate, connect to, communicate with, or otherwise participate in the exchange of information, data, and instructions with external vendors in order to autonomously perform supply chain and inventory management actions. Such actions include negotiating existing contracts, searching for new vendors, submitting offers, and creating orders.

The graphical user interface106is used to display a graphical user interface (GUI) on a display of a computing device. In particular, the graphical user interface106may use data visualization software that retrieves data from the IMS100and generates the data visualization. For example, the IMS100can store and execute software, such as an operating system or application modules. Application modules can include routines, programs, objects, components, or data structures that perform particular tasks or that implement particular inventory management functions. In an example, the graphical user interface106generates a GUI that shows price change trends, insights on the price change trends, and recommendations. Additionally, the GUI may include features for placing orders, modifying the data, generating visual graphics indicative of the data, generating business reports based on the data, and exporting the data.

FIG. 3illustrates an example graphical user interface (GUI)300, according to some implementations. As shown inFIG. 3, the GUI300includes a toolbar panel310and a main window316. The toolbar panel310includes drop-down menu312that enables selection of a format in which the data is displayed, such as “Table,” “Graph,” or “Report.” In the example, ofFIG. 3, the selected format is “Table.” As such, a table is displayed in window316. As shown inFIG. 3, the table includes several column headers, including “Cal.year/quar”306, “Material group”302, and “Weighted Average Change,”304. The column under the “Cal.year/quar”306header indicates the business quarter and year associated with the displayed data. The column under the “Material group”302header indicates materials for which price change trends are generated. And the column under the “Weighted Average Change”304header indicates the weighted average change for each displayed material.

The toolbar panel310also includes “Recommendation” button314that enables providing an instruction to the IMS100to generate recommendations based on the displayed data. Further, the toolbar panel310includes “Place Order” button308that enables providing an instruction to the IMS100to automatically place orders based on the displayed data. Other buttons and features are also possible.

FIG. 4is a flowchart of an example method400, according to some implementations. The method400is for calculating price change trends for materials procured by an enterprise, and for performing actions in connection with the calculated trends. For clarity of presentation, the description that follows generally describes method400in the context of the other figures in this description. However, it will be understood that method400can be performed, for example, by any suitable system, environment, software, hardware, or a combination of systems, environments, software, and hardware, as appropriate. In some implementations, various steps of method400can be run in parallel, in combination, in loops, or in any order.

At step402, method400involves calculating a current weight of a bought-in material over a current period, where the bought-in material is procured by an enterprise from an external supplier.

At step404, method400involves calculating a current weighted unit price of the bought-in material.

At step406, method400involves calculating a historical weighted average price of the bought-in material during a historical period.

At step408, method400involves calculating a difference between the current weighted unit price and the historical weighted average price.

At step410, method400involves calculating a material price percentage change by dividing the difference by the historical weighted average price.

At step412, method400involves multiplying the material price percentage change by the current weight to obtain a weighted average percentage change for the bought-in material.

At step414, method400involves performing one or more actions in connection with the weighted average percentage change.

In some implementations, calculating the current weight of the bought-in material involves: extracting from a purchase order database: (i) a plurality of purchase orders for the bought-in material during the current period and (ii) costs associated with the plurality of purchase orders; calculating a total cost of the plurality of purchase orders for the bought-in material; calculating a total cost of all purchase orders during the current period; and dividing the total cost of the plurality of purchase orders for the bought-in material by the total cost of all purchase orders to obtain the current weight of the bought-in material.

In some implementations, calculating the current weighted unit price of the bought-in material involves: for each of a plurality of purchase orders for the bought-in material: dividing a respective cost of the purchase order by a total material placement value during the current period to obtain a respective unit price weight; and multiplying the respective unit price weight with a respective effective unit price to obtain a respective weighted unit price; summing the respective weighted unit prices to obtain the current weighted unit price of the bought-in material.

In some implementations, the current weight of the material is calculated based on a plurality of purchase orders for the material during the current period, and wherein the plurality of purchase orders have at least one of an identical incoterm, purchasing office, or order unit of measurement.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves: determining the weighted average percentage change and a threshold change in a price of the material; and responsively generating an alert indicative of the threshold change.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves: generating, based on the weighted average percentage change, an offer for a purchase of the material; and submitting the offer to a system of an external vendor for the material.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves: generating a representation of a graphical user interface (GUI), where the GUI contains: one or more panes including a representation of the weighted average percentage change.

In some implementations, method400further involves calculating respective weighted average percentage changes for a plurality of materials; and calculating, based on the respective weighted average percentage changes, an overall weighted average percentage change.

In some implementations, performing one or more actions in connection with the weighted average percentage change involves using ML or AI techniques to analyze the calculated price change trends and to generate recommendations based on the trends. An ML model can be trained using price change trends. As an example, an ML model can be trained to generate data indicative of the prices of the materials procured by the enterprise. As another example, an ML model can be trained to predict future prices of materials. As yet another example, an ML model can be trained to identify price change trends that are indicative of certain events (for example, rapidly changing price, sudden change in price, prices that deviate from the market, among other examples).

FIG. 5is a block diagram of an example computer system500that can be used to provide computational functionalities associated with described algorithms, methods, functions, processes, flows, and procedures described in the present disclosure, according to some implementations of the present disclosure. In some implementations, the IMS100can be the computer system500, include the computer system500, or include part of the computer system500. In some implementations, the IMS100can communicate with the computer system500.

The illustrated computer502is intended to encompass any computing device such as a server, a desktop computer, embedded computer, a laptop/notebook computer, a wireless data port, a smart phone, a personal data assistant (PDA), a tablet computing device, or one or more processors within these devices, including physical instances, virtual instances, or both. The computer502can include input devices such as keypads, keyboards, and touch screens that can accept user information. Also, the computer502can include output devices that can convey information associated with the operation of the computer502. The information can include digital data, visual data, audio information, or a combination of information. The information can be presented in a graphical user interface (UI) (or GUI). In some implementations, the inputs and outputs include display ports (such as DVI-I+2x display ports), USB 3.0, GbE ports, isolated DI/O, SATA-III (6.0 Gb/s) ports, mPCIe slots, a combination of these, or other ports. In instances of an edge gateway, the computer502can include a Smart Embedded Management Agent (SEMA), such as a built-in ADLINK SEMA 2.2, and a video sync technology, such as Quick Sync Video technology supported by ADLINK MSDK+. In some examples, the computer502can include the MXE-5400 Series processor-based fanless embedded computer by ADLINK, though the computer502can take other forms or include other components.

The computer502can serve in a role as a client, a network component, a server, a database, a persistency, or components of a computer system for performing the subject matter described in the present disclosure. The illustrated computer502is communicably coupled with a network530. In some implementations, one or more components of the computer502can be configured to operate within different environments, including cloud-computing-based environments, local environments, global environments, and combinations of environments.

The computer502can receive requests over network530from a client application (for example, executing on another computer502). The computer502can respond to the received requests by processing the received requests using software applications. Requests can also be sent to the computer502from internal users (for example, from a command console), external (or third) parties, automated applications, entities, individuals, systems, and computers.

Each of the components of the computer502can communicate using a system bus. In some implementations, any or all of the components of the computer502, including hardware or software components, can interface with each other or the interface504(or a combination of both), over the system bus. Interfaces can use an application programming interface (API), a service layer, or a combination of the API and service layer. The API can include specifications for routines, data structures, and object classes. The API can be either computer-language independent or dependent. The API can refer to a complete interface, a single function, or a set of APIs.

The service layer can provide software services to the computer502and other components (whether illustrated or not) that are communicably coupled to the computer502. The functionality of the computer502can be accessible for all service consumers using this service layer. Software services, such as those provided by the service layer, can provide reusable, defined functionalities through a defined interface. For example, the interface can be software written in JAVA, C++, or a language providing data in extensible markup language (XML) format. While illustrated as an integrated component of the computer502, in alternative implementations, the API or the service layer can be stand-alone components in relation to other components of the computer502and other components communicably coupled to the computer502. Moreover, any or all parts of the API or the service layer can be implemented as child or sub-modules of another software module, enterprise application, or hardware module without departing from the scope of the present disclosure.

The computer502can include an interface504. Although illustrated as a single interface504inFIG. 5, two or more interfaces504can be used according to particular needs, desires, or particular implementations of the computer502and the described functionality. The interface504can be used by the computer502for communicating with other systems that are connected to the network530(whether illustrated or not) in a distributed environment. Generally, the interface504can include, or be implemented using, logic encoded in software or hardware (or a combination of software and hardware) operable to communicate with the network530. More specifically, the interface504can include software supporting one or more communication protocols associated with communications. As such, the network530or the interface's hardware can be operable to communicate physical signals within and outside of the illustrated computer502.

The computer502includes a processor505. Although illustrated as a single processor505inFIG. 5, two or more processors505can be used according to particular needs, desires, or particular implementations of the computer502and the described functionality. Generally, the processor505can execute instructions and can manipulate data to perform the operations of the computer502, including operations using algorithms, methods, functions, processes, flows, and procedures as described in the present disclosure.

The computer502can also include a database506that can hold data for the computer502and other components connected to the network530(whether illustrated or not). For example, database506can be an in-memory, conventional, or a database storing data consistent with the present disclosure. In some implementations, database506can be a combination of two or more different database types (for example, hybrid in-memory and conventional databases) according to particular needs, desires, or particular implementations of the computer502and the described functionality. Although illustrated as a single database506inFIG. 5, two or more databases (of the same, different, or combination of types) can be used according to particular needs, desires, or particular implementations of the computer502and the described functionality. While database506is illustrated as an internal component of the computer502, in alternative implementations, database506can be external to the computer502.

The computer502also includes a memory507that can hold data for the computer502or a combination of components connected to the network530(whether illustrated or not). Memory507can store any data consistent with the present disclosure. In some implementations, memory507can be a combination of two or more different types of memory (for example, a combination of semiconductor and magnetic storage) according to particular needs, desires, or particular implementations of the computer502and the described functionality. Although illustrated as a single memory507inFIG. 5, two or more memories507(of the same, different, or combination of types) can be used according to particular needs, desires, or particular implementations of the computer502and the described functionality. While memory507is illustrated as an internal component of the computer502, in alternative implementations, memory507can be external to the computer502.

An application can be an algorithmic software engine providing functionality according to particular needs, desires, or particular implementations of the computer502and the described functionality. For example, an application can serve as one or more components, modules, or applications. Multiple applications can be implemented on the computer502. Each application can be internal or external to the computer502.

The computer502can also include a power supply514. The power supply514can include a rechargeable or non-rechargeable battery that can be configured to be either user- or non-user-replaceable. In some implementations, the power supply514can include power-conversion and management circuits, including recharging, standby, and power management functionalities. In some implementations, the power-supply514can include a power plug to allow the computer502to be plugged into a wall socket or a power source to, for example, power the computer502or recharge a rechargeable battery.

There can be any number of computers502associated with, or external to, a computer system including computer502, with each computer502communicating over network530. Further, the terms “client,” “user,” and other appropriate terminology can be used interchangeably, as appropriate, without departing from the scope of the present disclosure. Moreover, the present disclosure contemplates that many users can use one computer502and one user can use multiple computers502.