Patent Description:
Entities with substantial printing demands typically use a production printer. A production printer is a high-speed printer used for volume printing, such as a continuous-forms printer that prints on a web of print media stored on a large roll. A production printer typically includes a localized print controller that manages the overall operation of the printer, and a marking engine (sometimes referred to as an "imaging engine" or a "print engine"). The marking engine includes one or more arrays of printheads.

Upon receiving a print job, the print controller rasterizes logical pages of the job (e.g., to create bitmaps representing each page of the job), and the marking engine operates individual printheads to mark the web based on the rasterized logical pages. Thus, the printer marks physical pages based on the digital information of the print job.

Ink is responsible for a substantial material cost associated with printing. However, an amount of ink used by a production printer varies from print job to print job, from printer model to printer model, and from printer to printer. Thus, it remains difficult to estimate the total cost of printing a print job as an a priori process.

Print shop operators continue to seek certainty and a precise understanding of the amount of ink that will be used by a print shop during the printing of any given job. This helps to ensure that the cost of printing each job is known before physical resources at the print shop are used for printing.

<CIT> discloses that systems and methods include processors for receiving training data for a user activity; receiving bias criteria; determining a set of model parameters for a machine learning model including: (<NUM>) applying the machine learning model to the training data; (<NUM>) generating model prediction errors; (<NUM>) generating a data selection vector to identify non-outlier target variables based on the model prediction errors; (<NUM>) utilizing the data selection vector to generate a non-outlier data set; (<NUM>) determining updated model parameters based on the non-outlier data set; and (<NUM>) repeating steps (<NUM>)-(<NUM>) until a censoring performance termination criterion is satisfied; training classifier model parameters for an outlier classifier machine learning model; applying the outlier classifier machine learning model to activity-related data to determine non-outlier activity-related data; and applying the machine learning model to the non-outlier activity-related data to predict future activity-related attributes for the user activity (cf.

<CIT> discloses that techniques for operating an industrial printer include causing it to report data that indicates cost of operation (COO) parameter values based on output sensors and/or component detection module configured to measure physical phenomena related to components of the printer referred to as COO parameters (cf. The COO parameters values, which may include waste values, are derived and displayed in a graphical user interface dynamically on a real time basis. One or more graphical user interface is generated to present a one or more active areas to select the display of the COO parameter values in numeric and or graphical form or combinations thereof.

Embodiments described herein provide for cloud-based virtual printers that simulate configurations for a specific printer at a print shop, and updating ink estimation models based on input from such virtual printers. These virtual printers provide accurate estimation of ink usage for the printer because they actively simulate potential hardware and/or software configurations of that printer. Specifically, the virtual printers each generate a different estimate of ink usage by simulating a different configuration of the printer. In this manner, a print shop operator is capable of rapidly identifying an ideal printer configuration for a print job that balances quality with ink usage.

Further embodiments of the present invention are described in the dependent claims.

Other illustrative embodiments (e.g., methods and computer-readable media relating to the foregoing embodiments) may be described below.

Some embodiments of the present invention are now described, by way of example only, and with reference to the accompanying drawings.

The figures and the following description illustrate specific illustrative embodiments of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the invention and are included within the scope of the invention. Furthermore, any examples described herein are intended to aid in understanding the principles of the invention, and are to be construed as being without limitation to such specifically recited examples and conditions. As a result, the invention is not limited to the specific embodiments or examples described below, but by the claims and their equivalents.

<FIG> is a block diagram of an ink estimation system <NUM> in an illustrative embodiment. Ink estimation system <NUM> comprises any system, device, or component operable to perform cloud-based estimation of ink usage for one or more models of production printer. As used herein, a "cloud-based" operation is one which is performed via the operation of one or more virtual machines (or other virtual environments) that have been dynamically assigned hardware resources (e.g., processors <NUM>, memories <NUM>, etc.) from one or more computers <NUM>, and are accessible via a network <NUM>, such as the Internet or a private network. Thus, any of the components of cloud computing system <NUM> may be implemented via hardware resources at one or more of computers <NUM>.

In this embodiment, ink estimation system <NUM> includes one or more servers <NUM>, which may each be operated by a manufacturer of a model of printer, or by a print shop. Server <NUM> includes a memory <NUM> storing virtual machines <NUM> (or images thereof for use by cloud computing system <NUM>). Each virtual machine <NUM> represents a series of printer, a model of printer, or a specific printer. Each virtual machine <NUM> at the server <NUM> is designed to simulate the hardware resources (e.g., memory, processor, etc.) and software resources (e.g., installed firmware, Operating System (OS), software, etc.) implemented by a corresponding series, model, or specific printer. In one embodiment, the software resources include instructions for rasterization of print data, as well as instructions for operating an ink estimation model that estimates ink usage for print jobs based on the results of rasterization.

Server <NUM> also includes a controller <NUM> for updating the virtual machines <NUM> in response to new ink usage data. Controller <NUM> may be implemented as custom circuitry, as a hardware processor executing programmed instructions, etc. An interface <NUM> of server <NUM> provides the virtual machines <NUM> to cloud computing system <NUM> (e.g., a cloud storage <NUM> of cloud computing system <NUM>). A virtual machine <NUM> may then be utilized by the cloud computing system <NUM> in order to instantiate multiple virtual printers <NUM>.

During operation, a client <NUM> may submit a print job intended for printing at a printer <NUM> to cloud computing system <NUM>, in order to estimate an amount of ink that will be used printing the job. The print job may comprise Page Description Language (PDL) print data, such as Portable Document Format (PDF) print data, accompanied by a job ticket. The print job is submitted via network <NUM>, such as the Internet or a private network.

In this embodiment, the print job is submitted to an Application Programming Interface (API) gateway <NUM>, which operates as an interface for receiving the print job from a browser of the client <NUM>. The API gateway <NUM> pushes an event notification to cloud event service <NUM>, which instantiates a number of virtual printers <NUM> equal to the number of configurations to be considered for printing the print job.

The virtual printers <NUM> each emulate the series, model, or specific printer intended for printing the print job. In one embodiment, each virtual printer <NUM> comprises a copy of the virtual machine <NUM> which represents the printer <NUM> that will be printing (or its corresponding model or series). However, each virtual printer <NUM> has been tailored to a specific, different configuration for the printer <NUM>, in that software settings or hardware settings are adjusted at each virtual printer <NUM> to match a specific configuration. The virtual printers <NUM>, which are each initialized according to a different configuration, perform ink estimation for the print job based on their configurations. These configurations may be provided with the print job by the client <NUM>, may be dynamically determined, or may constitute a default array of configurations for a specific series of printer, or model of printer, printer, or client.

As used herein, a configuration of a printer comprises any setting for a printer which alters printed output for the print job. In a brief example, configurations may include paper weights, paper coatings, paper smoothness, paper ink absorptions, n-up printing settings, control mark settings, color curves, and intensity settings for a printer.

In further embodiments, configurations may include any settings that affect ink estimation. These include paper settings such as page width or length, paper weight, paper thickness, paper type, paper color, whether preprinted registration marks are included within the paper, whether the paper is perforated, whether the paper is coated (e.g., including the type of coating), whether the paper is preprinted, an opacity of the paper, or even advance settings such as printing speed, distance, and/or tension.

Further printer configurations may include flushing settings such as flushing type and page flushing settings, calibration settings such as calibration status and calibration data, etc..

Still further printer configurations may include job settings, including basic settings such as a number of copies, page range, selected paper, orientation, printing side, open orientation, and whether the print job is color or black and white. Other job settings include job setup settings (e.g., sample print settings, or input data format settings), layout information (e.g., whether printing is performed duplex, N-up, etc.), color settings, and image correction/enhancement settings.

Still further printer configurations may include color management settings, such as whether the printer is set to print color or black and white, spot color matching, black overprint, black/gray reproduction settings, control bar settings, color substitutions, black settings for text and/or line art, CMYK overprint settings, whether PDF/X output intent is used, etc. Some color management settings relate to print quality, such as ink limit settings, tone curves, and coordination of ink density across multiple print engines. Still further color management settings include input CMYK settings, input RGB settings, input gray settings, reference profiles, printer profiles color, printer profiles black and white, whether or not embedded CMYK profiles are used, whether or not embedded RGB profiles are used, whether or not embedded gray profiles are used, rendering intent, and other settings, such as spot colors.

Ink estimates generated by the virtual printers <NUM> are provided to a cloud storage <NUM>, which may be accessed by API gateway <NUM>, an email service, or other system for providing ink estimates to client <NUM>. Once the ink estimates have been completed, cloud event service <NUM> may dynamically release resources assigned to the virtual printers <NUM>, deleting those virtual printers <NUM>.

Any of the various components of cloud computing system <NUM> may be implemented by the hardware resources available at one or more computers <NUM> that are capable of engaging in networked communications with each other. For example, cloud event service <NUM> may be implemented utilizing processors and memories of computers <NUM>, may listen for events, may instantiate the virtual printers <NUM>, and/or may delete the virtual printers <NUM> to facilitate ink estimation operations.

The particular arrangement, number, and configuration of components described herein is illustrative and non-limiting. Illustrative details of the operation of ink estimation system <NUM> will be discussed with regard to <FIG>. Assume, for this embodiment, that a customer has prepared a print job intended for printing on a specific printer, but is uncertain of the amount of ink that the print job will use.

<FIG> is a flowchart illustrating a method <NUM> for estimating ink via multiple virtual printers operating in parallel in an illustrative embodiment. The steps of method <NUM> are described with reference to ink estimation system <NUM> of <FIG>, but those skilled in the art will appreciate that method <NUM> may be performed in other systems. The steps of the flowcharts described herein are not all inclusive and may include other steps not shown. The steps described herein may also be performed in an alternative order.

In step <NUM>, cloud event service <NUM> receives a print job and potential configurations of a printer <NUM> selected for printing the print job. In this embodiment, the print job is transmitted via client <NUM>, and the potential configurations are reported by client <NUM>, or stored by default in a cloud storage <NUM> and associated with the printer, its model, its series, or its client. The potential configurations are distinct from each other, and may alter the manner in which ink droplets are ejected onto the page (e.g., by altering a size or density of ink droplets). Thus, the amount of ink utilized by the printer <NUM> in each configuration is likely to vary.

Step <NUM> includes the cloud event service <NUM> initializing virtual printers <NUM> for the printer <NUM> that each correspond with one of the potential configurations. Although all of the virtual printers <NUM> may be initialized from the same virtual machine <NUM> corresponding with the printer <NUM>, one virtual printer <NUM> is initialized for each potential configuration of that printer <NUM>. Thus, in one embodiment, each of the virtual printers <NUM> represents the same model of printer, and each of the virtual printers <NUM> estimates an amount of ink used by a different configuration of that model of printer.

Initializing the virtual printers <NUM> may comprise assigning resources for a virtual machine <NUM> corresponding with the printer <NUM> being considered, and executing instructions to boot an OS of the virtual machine <NUM>, along with any corresponding software for emulating the printer <NUM>. For example, initializing a virtual printer <NUM> may include launching software defining an ink estimation model for the printer <NUM> that virtual printer <NUM> represents. In one embodiment, each virtual printer <NUM> comprises a Digital Front End (DFE) corresponding to the printer <NUM> selected for printing the print job.

Step <NUM> includes operating the virtual printers <NUM> in parallel to estimate amounts of ink used for each configuration during printing of the print job. As a part of this process, each virtual printer <NUM> may independently and/or asynchronously rasterize print data for the print job, interpret job ticket instructions, apply settings for the configuration assigned to the virtual printer, and estimate ink used for the print job based on the assigned configuration. Thus, in at least one embodiment, each of the virtual printers <NUM> is configured to estimate an amount of ink usage based on a rasterization of the print job.

Step <NUM> includes storing the estimated amounts of ink in a cloud storage <NUM>. In one embodiment, each virtual printer <NUM> stores a corresponding estimated amount within the cloud storage <NUM>, such as within a shared folder or file. In a further embodiment, cloud event service <NUM> stores each estimated amount in response to receiving a confirmation form a virtual printer <NUM> that the virtual printer <NUM> has completed ink estimation.

After the estimated amounts have been placed into cloud storage <NUM>, the estimated amounts may be accessed by other services or components that interact with cloud computing system <NUM>. For example, an email server, text messaging service, or other entity may access the estimated amounts and report them to a computing device such as client <NUM>.

Method <NUM> provides a notable advantage over prior systems and techniques, because it enables rapid, massively parallel processing of print jobs in order to estimate ink usage. This allows for multiple configurations to be contemplated at once for each print job. Providing an enhanced breadth of ink estimation for multiple possible configurations helps a print shop operator to intelligently choose a configuration for printing the print job.

In a further embodiment, a virtual machine <NUM> for the virtual printers <NUM> is configured to be updated based on a comparison of an actual amount of ink used to the estimated amounts of ink used. For example, a virtual machine <NUM> for the virtual printers <NUM> may receive updated training data for an ink estimation model that utilizes machine learning. The ink estimation model may then be re-trained with the updated training data to enhance accuracy. Further discussion of such a system is provided below with respect to <FIG>.

<FIG> is a block diagram <NUM> of a virtual printer <NUM> in an illustrative embodiment. In this embodiment, virtual printer <NUM> includes a virtual processor <NUM> and a virtual memory <NUM>, which comprise allocated resources at one or more processors and/or memories of computers <NUM> of <FIG>. Virtual memory <NUM> includes a configuration <NUM>, a set of printer properties <NUM> assigned to the virtual printer <NUM>, and an ink estimation model <NUM>. The configuration <NUM> may be implemented at virtual printer <NUM> as instructions for altering or adjusting input to the ink estimation model <NUM>, based on requested settings. In this embodiment, printer properties <NUM> include information identifying a series, model, and/or identifier for the printer <NUM> being emulated by the virtual printer <NUM>. Printer properties <NUM> may also include information describing a virtual machine <NUM> that the virtual printer <NUM> was implemented on, and/or other properties.

Ink estimation model <NUM> may implement any suitably accurate heuristic for estimating an amount of ink used by a printer in printing a print job. For example, an ink estimation model may comprise a series of weights applied to input variables such as estimated ink amounts or metrics for rasterized print data (e.g., an amount of ink coverage per page). In many embodiments, ink estimation model <NUM> estimates an amount of used for each of multiple color planes, such as Cyan, Magenta, Yellow, and Key black (CMYK). The ink estimation model <NUM> may comprise a static model, or a machine learning model as desired. For example, the ink estimation model <NUM> may comprise a regression model, a neural network, or other model that utilizes machine learning to estimate ink usage based on a number and/or size of dots ejected onto a page by print nozzles, or an amount of coverage of the page with ink. In one embodiment, the ink estimation model <NUM> utilizes training data in order to adjust weights between nodes of a neural network that estimate ink usage based on rasterized print data. In such an embodiment, the ink estimation model <NUM> may be updated or re-trained based on information indicating the actual amount of ink used for each print job, as well as information indicating metrics for corresponding rasterized print data.

<FIG> is a message diagram <NUM> depicting communications between various components of an ink estimation system <NUM> in an illustrative embodiment. As shown in <FIG>, one or more clients <NUM> provide a print job and set of configurations for a printer <NUM> to cloud event service <NUM>. The cloud event service <NUM> initializes a virtual printer <NUM> for each configuration of the printer <NUM>, and these virtual printers <NUM> generate ink estimates. The ink estimates are stored in a cloud storage <NUM>, and cloud event service <NUM> receives a completion notification from a virtual printer <NUM> each time an ink estimate is completed. In this embodiment, cloud event service <NUM> deletes each of the virtual printers <NUM> after receiving confirmation that an ink estimate has been completed. The cloud event service <NUM> then retrieves ink estimates from the cloud storage <NUM>, and provides the ink estimates to client <NUM>, such as via an API for access by a browser of the client <NUM>.

<FIG> is a block diagram <NUM> of a cloud event service <NUM> that operates multiple sets of virtual printers <NUM> in order to estimate ink for multiple print jobs in parallel in an illustrative embodiment. In this embodiment, each time the cloud event service <NUM> receives a print job and a set of configurations, for any printer <NUM> at any client <NUM>, the cloud event service <NUM> instantiates a set of virtual printers <NUM>, including one virtual printer <NUM> for each potential configuration of the printer being considered. This may be performed as a parallel process. Hence, the existence of a set of virtual printers <NUM> to estimate ink for a first print job for a printer does not prevent cloud event service <NUM> from instantiating another set of virtual printers for another print job of the same or another printer.

<FIG> depicts a Graphical User Interface (GUI) <NUM> for reporting estimates of ink usage for a print job in an illustrative embodiment. In this embodiment, GUI <NUM> comprises a browser window that includes a first area <NUM> indicating the progress of one or more ink estimates for a print job for a printer. The first area <NUM> is updated in response to notifications via an API gateway indicating that an ink estimate has been completed for a corresponding configuration. Thus, the first area may be filled with estimates, one by one, over time. This allows a print shop operator to review the estimates which have been completed, even when other estimates still need more time. A second area <NUM> of the GUI <NUM> provides a graphical representation of a set of ink estimates for a print job. Each estimate is labeled with a corresponding configuration. In this manner, a print shop operator may rapidly review and compare ink estimation results for a variety of different configurations for the printer.

<FIG> depicts a GUI <NUM> that includes warnings based on prior feedback for settings in an illustrative embodiment. In this embodiment, GUI <NUM> comprises GUI <NUM>, in addition to multiple notifications that are tied to specific configurations. Specifically, GUI <NUM> utilizes data from a cloud storage <NUM> that holds feedback for various configurations for the printer being considered. This feedback may be created in response to explicit communications from a client <NUM>, or may be generated automatically in response to detecting a threshold difference in actual ink usage as compared to estimated ink usage, or based on historical data indicating that a print job was printed more than once, indicating a re-print. In one embodiment, a first piece of text feedback is provided for more than a threshold difference in ink usage, while a second piece of text feedback is provided for re-prints.

GUI <NUM> accesses feedback for each configuration of the printer kept in cloud storage <NUM>, and proceeds to provide the feedback in the form of notifications. <NUM>, notifications <NUM> and <NUM> are provided. These notifications may be provided in response to a user hovering over or clicking on a corresponding configuration. Notification <NUM> indicates that print jobs using the configuration have been historically subject to re-prints, while notification <NUM> indicates that estimates of ink usage for the corresponding configuration are often less than the actual amount of ink used during printing.

With a discussion of cloud computing operations for performing parallel ink estimation provided above with respect to <FIG>, <FIG> provide further context for utilizing ink estimation data to fuel adjustments to an ink estimation model for a virtual machine representing a printer, model of printer, or series of printer.

<FIG> is a flowchart illustrating a method <NUM> for altering ink estimation models based on a comparison of estimated to actual ink usage in an illustrative embodiment. Steps <NUM>-<NUM> relate to data collection processes for receiving and collecting ink estimates, while steps <NUM>-<NUM> relate to adjusting an ink estimation model based on collected ink estimates. Data collection processes and ink estimation model adjustments may be performed asynchronously and/or in parallel as desired, for each of multiple virtual machines representing different printers, models of printer, or series of printer.

Steps <NUM>-<NUM> may be performed periodically to analyze batches of completed print jobs, each time a print job is completed, or in any other sequence desired. Furthermore, steps <NUM>-<NUM> may be performed asynchronously and/or in parallel for each of multiple virtual machines <NUM>.

Step <NUM> includes controller <NUM> storing a virtual machine <NUM> for instantiating virtual printers <NUM> that estimate amounts of ink used by a printer <NUM> for print jobs. Storing the virtual machine <NUM> may comprise loading or maintaining the virtual machine <NUM> in memory <NUM> for access by a cloud computing system <NUM>. The virtual machine <NUM> may represent a single printer <NUM>, a model of printer, or a series of printer as desired. In many embodiments, virtual machine <NUM> is one of many virtual machines <NUM> that each represent a different printer, model, or series. In a further embodiment, a virtual machine <NUM> may be one of a set of virtual machines <NUM> for a client <NUM>, such that each client <NUM> has an associated set of one or more virtual machines <NUM> representing printers <NUM> used by that client <NUM>.

Step <NUM> comprises controller <NUM> identifying a next print job. In one embodiment, this is performed as part of batch processing of ink estimate data for each of multiple virtual machines <NUM>. In a further embodiment, step <NUM> is performed as each print job is completed, in response to a push notification from cloud event service <NUM> that a print j ob was completed relating to virtual machine <NUM>. As a part of this process, controller <NUM> may access a cloud storage <NUM> to review data for a list of print jobs having completed ink estimates.

Step <NUM> comprises controller <NUM> identifying estimated amounts of ink determined by the virtual printers <NUM> according to each of multiple configurations for the printer <NUM> for the print job. This may comprise controller <NUM> accessing a cloud storage <NUM> (e.g., after virtual printers <NUM> have completed estimates for the print job) in order to retrieve the estimated amounts of ink for analysis and review. In one embodiment, controller <NUM> additionally retrieves metrics for corresponding rasterized print data, which may be used later to facilitate training or adjustment of an ink estimation model.

Step <NUM> comprises controller <NUM> identifying a chosen configuration and corresponding actual amount of ink used by the printer for the print job. The chosen configuration is the configuration that was used by the printer <NUM> to print the print job. Step <NUM> may be performed, for example based on ink usage data provided from printer <NUM> (e.g., via client <NUM>) to server <NUM> or to a cloud storage <NUM>. In one embodiment, this is performed in response to receiving input from printer <NUM> at API gateway <NUM>, indicating the actual amount of ink used for print jobs printed by printer <NUM>, or aggregating such results across multiple print jobs, multiple printers, or multiple models of printers. In further embodiments, controller <NUM> actively identifies the actual amount of ink by querying the printer <NUM>.

After a predetermined period of time, or after a certain amount of data has been collected, or in response to user input, controller <NUM> may transition from data collection to adjustment of the underlying ink estimation model for the virtual machine <NUM>. To this end, step <NUM> comprises identifying a configuration. This may comprise controller <NUM> reviewing one of many configurations used for print jobs over a period of time (e.g., the last day, week, month, etc.) by the virtual machine <NUM>, reviewing default sets of configurations used for the virtual machine <NUM>, etc..

Step <NUM> comprises determining that estimated amounts of ink for the selected configuration have less than a threshold difference from actual amounts of ink for each of multiple print jobs. The actual amount of ink used for a print job may be compared to the estimated amount for that print job by, for example, determining a mathematical difference between the two. This difference may be reported as a percentage difference, or as an absolute difference. Controller <NUM> may perform this operation by subtracting the estimated amount of ink from the actual amount of ink, determining the absolute value of the resulting number, and determining whether the amount is greater than or less than the threshold value (e.g., ten milliliters of ink, etc.).

In some embodiments, the threshold value is a percentage difference from the estimated value. Thus, if the actual amount of ink used for a print job is different from the estimated amount of ink by less than this percentage (e.g., ten percent, twenty percent), then the estimate may be considered accurate. In one embodiment, the controller <NUM> is further configured to determine whether the difference is less than the threshold for each of multiple color planes, and may update the ink estimate model for each of multiple color planes in order to accurately estimate ink consumption for Cyan, Magenta, Yellow, and Key black (CMYK).

Step <NUM> includes updating an ink estimation model <NUM> at the virtual machine <NUM> based on the estimated amounts of ink and corresponding print job data (e.g., metrics for rasterized print job data) for the configuration, in response to the determining performed in step <NUM>. Updating the ink estimation model <NUM> ensures that future estimates will be more accurate than current estimates. In one embodiment, controller <NUM> updates the ink estimation model <NUM> by adjusting weights of the ink estimation model <NUM> based on the difference between estimated and actual usage, together with metrics for rasterized print data (e.g., information indicating ink coverage on the page, etc.). Depending on embodiment, the ink estimation model <NUM> may be updated for the specific printer, a specific client <NUM> or print shop, a model of printers, or a series of printers as desired.

Method <NUM> provides a technical benefit by ensuring that ink estimation models <NUM> remain up to date and accurate for specific printers, models of printer, or series of printer. Furthermore, method <NUM>, by utilizing estimates of ink usage to populate training data, ensures that a robust amount of training data remains available for training its models.

In a further embodiment, the ink estimation model <NUM> utilizes machine learning (e.g., a regression model, neural network, or other learning model) and is updated by controller <NUM> updating corresponding training data with estimated amounts of ink, and metrics for rasterized print data for corresponding print jobs. In one embodiment, this comprises adding a new point of data for each print job that was printed. In further embodiments, this comprises applying a "delta" or other value indication of a difference between estimated and actual amounts of ink usage. This may further comprise re-training the ink estimation model <NUM>, or otherwise adjusting weights for the ink estimation model <NUM> to reduce differences between estimated and actual amounts of ink used. In this manner, controller <NUM> may replace or supplement the training data with the estimated amounts of ink discussed above, and may then retrain the ink estimation model <NUM> as desired.

In one embodiment, the ink estimate model comprises a neural network. An upper layer of the neural network includes nodes that receive inputs comprising, amounts of dots for each of multiple color planes, and configuration data for the printer. A bottom layer of the neural network provides output indicating a volume of ink used per color plane.

In further embodiments, controller <NUM> is capable of rapidly identifying that estimates for print jobs have lost their accuracy. For example, if estimates for a configuration for a printer have been historically within a threshold level of accuracy (e.g., ninety percent accurate), and recent estimates for the configuration are not within the threshold, controller <NUM> may generate a notification for client <NUM>. The notification may ask whether the printer <NUM> has experienced an equipment failure, or whether operating conditions for the print have been altered. This may help to rapidly notify a print shop operator that printer <NUM> has deviated from its historical amounts of ink usage, enabling remedial measures to be taken quickly.

<FIG> is a diagram <NUM> for including estimates for a specific configuration within training data for an ink estimation model in an illustrative embodiment. In this embodiment, for each print job for a printer <NUM>, a set of estimates <NUM>-<NUM> of ink usage are created. Estimate <NUM> corresponds to a first configuration, estimate <NUM> corresponds to a second configuration, estimate <NUM> corresponds to a third configuration, estimate <NUM> corresponds to a fourth configuration, and estimate <NUM> corresponds to a fifth configuration. These estimates <NUM>-<NUM> may be selectively provided to training data <NUM>, which is used to update an ink estimation model. In this embodiment, controller <NUM> determines that estimates <NUM> for the fifth configuration are consistently within a threshold level of accuracy for multiple print jobs. Thus, controller <NUM> feeds estimates <NUM> for the fifth configuration for each print job into the training data <NUM> (e.g., together with metrics for corresponding print data), to facilitate updating the ink estimation model.

In short, controller <NUM> may be configured to update the ink estimation model <NUM> with estimated amounts of ink, even when configurations for those estimated amounts were not actually chosen for printing. Controller <NUM> also updates the model with actual amounts of ink used. That is, when actual amounts of ink used are available for a configuration, those amounts are used. However, when only estimated amounts of ink are available, those are provided for consideration in updating the ink estimation model <NUM>.

<FIG> is a diagram <NUM> for including estimates for a specific print job within training data for an ink estimation model in an illustrative embodiment. Diagram <NUM> is largely similar to <FIG>. However, in this embodiment, controller <NUM> determines that because an estimate <NUM> for configuration for a print job is highly accurate when compared to actual amounts of ink used by the printer for the print job, all estimates for all configurations for that print job shall be added to the training data <NUM>.

In short, the controller <NUM> may determine that an estimated amount of ink for a configuration is within a threshold amount of accuracy (e.g., ninety five percent). Controller <NUM> may then update an ink estimation model at the virtual machine <NUM>, based on other estimated amounts of ink for the print job, even when those configurations were not used for printing. Stated another way, if an estimate for one configuration is notably accurate for a print job, controller <NUM> may update the ink estimation model with estimates for other configurations for that print job, even when there are no corresponding actual amounts of ink usage for those estimates.

In the following examples, additional processes, systems, and methods are described. The following clauses and/or examples pertain to further embodiments or examples. Specifics in the examples may be used anywhere in one or more embodiments. The various features of the different embodiments or examples may be variously combined with some features included and others excluded to suit a variety of different applications. Examples may include subject matter such as a method, means for performing acts of the method, at least one machine-readable medium including instructions that, when performed by a machine cause the machine to perform acts of the method, or of an apparatus or system according to embodiments and examples described herein.

Embodiments disclosed herein can take the form of software, hardware, firmware, or various combinations thereof. In one particular embodiment, software is used to direct a processing system of ink estimation system <NUM> to perform the various operations disclosed herein. <FIG> illustrates a processing system <NUM> operable to execute a computer readable medium embodying programmed instructions to perform desired functions in an illustrative embodiment. Processing system <NUM> is operable to perform the above operations by executing programmed instructions tangibly embodied on computer readable storage medium <NUM>. In this regard, embodiments of the invention can take the form of a computer program accessible via computer-readable medium <NUM> providing program code for use by a computer or any other instruction execution system. For the purposes of this description, computer readable storage medium <NUM> can be anything that can contain or store the program for use by the computer.

Computer readable storage medium <NUM> can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor device. Examples of computer readable storage medium <NUM> include a solid state memory, a magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disk - read only memory (CD-ROM), compact disk - read/write (CD-R/W), and DVD.

Processing system <NUM>, being suitable for storing and/or executing the program code, includes at least one processor <NUM> coupled to program and data memory <NUM> through a system bus <NUM>. Program and data memory <NUM> can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code and/or data in order to reduce the number of times the code and/or data are retrieved from bulk storage during execution.

Claim 1:
A system (<NUM>) for dynamically revising ink estimation models, comprising:
a memory (<NUM>) storing a virtual machine (<NUM>) for instantiating virtual printers (<NUM>) that estimate amounts of ink used by a printer (<NUM>) for print jobs; and
a controller (<NUM>) configured, for each print job, to: identify estimated amounts of ink determined by the virtual printers (<NUM>) according to each of multiple configurations for the printer (<NUM>), and identify a chosen configuration and a corresponding actual amount of ink used by the printer (<NUM>),
the controller (<NUM>) further configured to select a configuration, determine that estimated amounts of ink for the selected configuration have less than a threshold difference from actual amounts of ink for each of multiple print jobs, and to update an ink estimation model at the virtual machine (<NUM>) based on the estimated amounts of ink and corresponding print job data for the selected configuration in response to the determination, wherein:
the controller (<NUM>) is further configured to determine that an estimated amount of ink is within a threshold amount of accuracy for a configuration for a print job, and to update the ink estimation model at the virtual machine (<NUM>) based on other estimated amounts of ink for other configurations for the print job.