1. Field of the Invention
The present invention relates to online advertising.
2. Background
Online advertisement (“ad”) networks enable display advertisements and/or other types of advertisements to be served to users who visit the Web sites of publishers that are participating in the advertisement network. Advertisers generate the advertisements and buy placements for those advertisements on the publishers' Websites. A placement represents a publisher's agreement to serve a specified advertisement to users when the users visit the publisher's site. The advertisements and placements are typically selected based on the anticipated audiences for those sites. A publisher typically serves the advertisements at the selected placements along with other content associated with the publisher's site.
Each time an advertisement is served to a user, an impression is said to occur.
Each impression has attribute values that indicate information regarding the user to whom the advertisement is served and/or the Web site with which the impression is associated. When an advertiser considers buying placements for an advertisement on a publisher's Website, the advertiser often provides a query or contract to the publisher, requesting an advertising supply forecast. The advertising supply forecast is an estimate of a number of impressions, which are to occur in a future time period, that have specified attribute values. The advertiser typically identifies the specified attribute values in the advertiser's query. For instance, the advertiser may want to target users that have particular attributes (e.g., particular ages, locations, interests, etc.) and/or Websites or publishers that have certain attributes.
Generating a supply forecast for a combination of attribute values received in a query from an advertiser is a computationally extensive process. For example, the number of attributes and corresponding values identified in a query is often substantial, including as many as hundreds or even thousands of attributes. The possible combinations of such attributes are very large in number. Furthermore, hundreds of millions of impression records may need to be analyzed for matching with the query. The analysis may need to be partitioned among multiple servers to reduce the working memory needs on each server. Furthermore, the supply forecast is typically desired to be provided to the advertiser in real time in response to the query. Accordingly, substantial bandwidth and/or resources of a publisher may be consumed to provide a supply forecast in response to the query in a timely manner.
Various approaches are described herein for, among other things, providing supply forecasts for advertisement impressions. Supply forecasts for future advertisement inventory are enabled to be generated that match attribute values received from a requester in a request that specifies a query or “contract.” Such supply forecasts may be determined based on cumulative or non-cumulative supply forecast values, and may be determined based on time series of supply forecast values for individual impressions or for blocks of impressions. The generated supply forecasts may be provided to the requester in response to the request in a timely manner.
In a first implementation, an advertisement supply forecasting system and method is provided. A user interface is configured to receive a request from a requester for an impression supply forecast based on a contract that indicates at least one attribute and a target time period. A match determiner is configured to determine a plurality of impressions that match the contract. An impression supply forecaster is configured to determine forecasted supplies for the plurality of impressions that match the contract. A forecasted supply summer is configured to sum the determined forecasted supplies to generate an impression supply forecast. The generated impression supply forecast is provided to the requester.
In one implementation, the match determiner is configured to receive an impression-attribute matrix that includes a set of impressions, and indicates one or more attributes of a plurality of attributes satisfied by each impression in the set. The match determiner is configured to apply the at least one attribute of the contract to the impression-attribute matrix to determine any matching impressions in the set of impressions. The determined matching impressions are the impressions determined by the match determiner to match the contract.
In a further implementation, the impression supply forecaster is configured to receive a cumulative forecast value array that includes a time series of cumulative supply forecast values corresponding to each impression of a set of impressions. The impression supply forecaster includes a start time determiner, an end time determiner, and a cumulative value subtractor. The start time determiner is configured to determine a first cumulative supply forecast value in the cumulative forecast value array for a time instance (e.g., a particular day) of a corresponding time series at a start of the target time period. The end time determiner is configured to determine a last cumulative supply forecast value in the cumulative forecast value array for a time instance of a corresponding time series at an end of the target time period. For each impression of the plurality of impressions that match the contract, the cumulative value subtractor is configured to subtract the determined first cumulative supply forecast value from the determined last cumulative supply forecast value to determine a forecasted supply.
In a still further implementation, the impression supply forecaster includes an impression block sorter and an impression block supply calculator. The impression block sorter is configured to sort the plurality of impressions into a plurality of impression blocks. The impression block supply calculator is configured to determine a forecasted supply for each block of the plurality of impression blocks based on a corresponding time series of supply forecast values. The impression block supply calculator multiplies the forecasted supply determined for each block of impressions by a number of impressions included in the block of impressions to generate a corresponding block supply forecast.
In an example implementation of the impression block sorter, the impression block sorter receives a plurality of impression indices that correspond to the plurality of impressions that match the contract. The plurality of impression indices is sorted according to a plurality of impression aggregation bases. The impression block sorter receives an index map that maps one or more impression indices to each of a plurality of aggregation base indices. The impression block sorter includes an aggregation base range determiner and an impression block definer. The aggregation base range determiner is configured to locate in the index map a plurality of first and last impression index pairs to identify ranges of impression indices in the plurality of impression indices that each link to a corresponding aggregation base index. The impression block definer is configured to define a block of impressions for each aggregation base index that has a range of impression indices identified by the aggregation base range determiner Each defined block includes the impressions of the plurality of impressions having indices in the corresponding identified range of impression indices. The impression block supply calculator may be configured to determine a forecasted supply for each block of impressions defined by the impression block definer.
Computer program products are also described herein that enable supply forecasting, and that enable further embodiments as described herein.
Further features and advantages of the disclosed technologies, as well as the structure and operation of various embodiments, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate embodiments of the present invention and, together with the description, further serve to explain the principles involved and to enable a person skilled in the relevant art(s) to make and use the disclosed technologies.
The features and advantages of the disclosed technologies will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
The following detailed description refers to the accompanying drawings that illustrate exemplary embodiments of the present invention. However, the scope of the present invention is not limited to these embodiments, but is instead defined by the appended claims. Thus, embodiments beyond those shown in the accompanying drawings, such as modified versions of the illustrated embodiments, may nevertheless be encompassed by the present invention.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” or the like, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to implement such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
A supply forecast is an estimate of a number of impressions that are to occur in a future time period for a particular set of attribute values. Example embodiments are provided herein for determining a supply forecast for future impression inventory that matches attribute values received from a requester in a query or “contract.” Such embodiments enable supply forecasting to be performed for any number of attribute values more rapidly than conventional techniques. Furthermore, embodiments described herein may consume substantially less bandwidth and/or resources for supply forecasting than conventional techniques. Example advertising environments and embodiments for supply forecasting are described in detail in the following sections.
Embodiments for supply forecasting may be implemented in a variety of advertising environments. For instance,
As shown in
User systems 102a-102m are capable of communicating with any one or more of publisher servers 104a-104n in network 100. For example, each of user systems 102a-102m may include a client that enables a user who owns (or otherwise has access to) the user system to access sites (e.g., websites) that are hosted by publisher servers 104a-104n. For instance, a client may include a web browser, a non-web-enabled client, or may be any other suitable type of client. In
Publisher servers 104a-104n are capable of communicating with user systems 102a-102m in network 100. Each of publisher servers 104a-104n is configured to host a site (e.g., a website) published by a corresponding publisher 1-N so that such site is accessible to users of network 100 via user systems 102a-102m. Each of publisher servers 104a-104n is further configured to serve advertisement(s) to users of network 100 when those users access a website that is hosted by the respective publisher server.
User systems 102a-102m may each be any type of electronic device configured with web browsing functionality (or other suitable network communication functionality), including a desktop computer (e.g., a personal computer, etc.), a mobile computing device (e.g., a personal digital assistant (PDA), a laptop computer, a notebook computer, a tablet computer (e.g., an Apple iPad™), a netbook, etc.), a mobile phone (e.g., a cell phone, a smart phone, etc.), or a mobile email device.
Advertisement serving system 106 may receive advertisements from advertiser system 108 and/or other sources. Advertisement serving system 106 is configured to serve the advertisements to publisher servers 104a-104n when the sites hosted by servers 104a-104n are accessed by users, thereby facilitating the delivery of advertisements to the users. Advertisement serving system 106 may be implemented in various ways, including in the form of one or more computing systems, such as one or more servers.
As shown in
Advertisement supply forecasting system 110 is configured to forecast supply for advertisements according to a non-parametric technique. The calculation of eligible supply of a query or contract using a non-parametric model is a time consuming process. Even the non-parametric model may be partitioned across multiple data servers when used to determine a supply forecast in response to a contract. The conventional time cost of such a calculation is n×m, where “n” is a number of impressions that are determined to match the query and “m” is a duration for an advertising campaign that is specified in the query. The number of matching impressions “n” may be large, including in the millions of matching impressions. The value “m” can be any number, and a typical value for “m” is about 100 days. A conventional algorithm for calculating a supply forecast for a query takes about 600 msec. Embodiments described herein can perform a supply forecast determination faster than such conventional techniques (e.g., in the order of 27 to 30 times faster than a conventional algorithm). As such, according to embodiments, advertisement supply forecasting system 110 is capable of serving relatively large number of queries per second (e.g., 25-30 queries/sec in one implementation) on the basis of a non-parametric supply model having a large number of matching impressions (e.g., 200 million impressions in one example).
Advertisement supply forecasting system 110 may be implemented in various ways to forecast supply of impressions, in embodiments. For instance,
Advertisement supply forecasting system 200 is described as follows with respect to
As shown in
Numerous types of attributes may be specified in a contract. Examples of demographic attributes that may be indicated in a contract include sex (male, female), age (e.g., specific ages, ranges of ages, age categories such as child, teenager, adult, etc.), income, education, employment status, etc. Examples of geographic attributes include present location, home address, home city, home state, home region, home country, etc. Examples of preference attributes include favorite foods, favorite travel destinations, favorite clothes, favorite items such as electronic gadgets, automobiles, etc. Examples of interest attributes include sports, cooking, travel, etc. Any number and combination of these and/or alternative attributes may be specified in a contract, including tens of attributes, hundreds of attributes, thousands of attributes, and even greater numbers of attributes.
User interface 202 may be implemented in any suitable manner to enable supply forecast requests/contracts to be received. For example, in an embodiment, user interface 202 may include a communication interface, such as described elsewhere herein or otherwise known, to receive request 210 in any form, including receiving request 210 as an email, as a text message, etc. In an embodiment, user interface 202 may provide a web page that enables a requester to enter information of request 210 into a fillable form or other graphical user interface. In another embodiment, user interface 202 may be implemented as a web service or other network-based application programming interface (API) configured to receive request 210. As shown in
Referring back to
In step 306, forecasted supplies are determined for the plurality of impressions that match the contract. For example, as shown in
In step 308, the determined forecasted supplies are summed to generate the impression supply forecast. For example, as shown in
In step 310, the generated impression supply forecast is provided to the requester. For example, as shown in
Impression supply forecast 220 is an impression supply forecast generated for the requester based on the received contract. In an embodiment, impression supply forecast 220 may indicate a number of impressions forecasted to be eligible for supply over the target time period indicated in the contract at the one or more target online properties indicated in the contract. The requester may use the generated supply forecast in any manner, including basing a decision on the generated supply forecast of whether to execute an advertising campaign using the parameters supplied in the contract—the target online properties, attributes, and target time period—or whether to request another supply forecast for another possible advertising campaign. The requester may submit further contracts as subsequent requests 210 based on the information learned from responses 222. The further contracts may be modified relative to previously submitted contracts in any manner to aid the requester in forming an advertising campaign aligned with the requester's advertising campaign goals.
Match determiner 204 and impression supply forecaster 206 may be implemented in various ways to perform their respective functions. Example embodiments for match determiner 204 and impression supply forecaster 206 are described in the following subsections.
As described above, match determiner 204 of
As shown in
For instance,
In the embodiment of
Match determiner 400 of
In an embodiment, matrix 500 may be organized in a compressed form to support fast look up of matching impressions, while using a relatively small storage space in storage 404. For instance, matrix 500 may be implemented according to the open source “Fastbit” indexing technology, which is an indexing technology that uses a compressed bitmap, and may be configured to generate a list of matching impressions in the form of a list of indices corresponding to the matching impressions (e.g., with reference to matrix 500, may output index “0” for impression 0, index “1” for impression 1, etc.), or in other manner. In other embodiments, matrix 500 may be configured in other ways.
Storage 404 may be any suitable type of storage included in system 200 (
As described above, impression supply forecaster 206 of
As shown in
For instance,
In the embodiment of
Referring to
where
Ti=the supply forecast for matching impression i,
ts=the starting time instance of target time period 212,
te=the ending time instance of target time period 212, and
Vi[t]=a supply forecast value (e.g., from array 604) for matching impression i at time instance t.
For example, referring to
Thus, in an example where impression 0 and impression 1 are determined to be the matching impressions of matching impressions 216, and impression supply forecaster 206 determines forecasted supplies 218 to include 35 million impressions for impression 0 and 17 million impressions for impression 1, forecasted supply summer 208 of
As such, in an embodiment, forecasted supply summer 208 of
where
f(u)=impression supply forecast 220 for targeting predicate u,
t0=the first time instance, and
MI=all impressions matching targeting predicate u (matching impressions 216).
In Equation 2, the targeting predicate u is the contract received in request 210. A running time Equation 2 is n×m, where “n” is the number of matching impressions and “m” is the number of days in the duration. In some cases, targeting predicate u can result in matching impressions 216 including millions to hundreds of millions of matching impressions, covering a target time period 212 of 1-36 months (30-1000 days), leading to a relatively time consuming determination for impression supply forecast 220.
As described above, in other embodiments, impression supply forecaster 206 may generate impression supply forecast 220 in other ways. For instance,
As shown in
As shown in
In the embodiment of
In a similar manner, second row 1006b of array 1000 corresponds to impression 1, and provides a time series of cumulative supply forecast values for impression 1 based on the non-cumulative time series shown for impression 1 in array 700. As indicated by array 1000, impression 1 has a cumulative forecasted supply value of 10 million impressions at time instance 0, a cumulative forecasted supply value of 15 million impressions at time instance 1 (10 million+5 million from row 706b of array 700), a cumulative forecasted supply value of 23 million impressions at time instance 2 (10 million+5 million+8 million), a cumulative forecasted supply value of 27 million impressions at time instance 3 (10 million+5 million+8 million+4 million), and a cumulative forecasted supply value of 476 million impressions at time instance Z (for time instances 0-Z in row 706b of array 700). Cumulative forecasted supply values may be determined for subsequent impressions in array 1000 in a similar manner. As such, cumulative forecast value array 808 of
For instance, referring to
where
CV[t]=cumulative forecast value array 1000 at time instance t, and
V[x]=a supply forecast value at time instance x.
As such, a running time of determining a supply forecast is reduced (relative to the prior subsection) to approximately 2×n (where n=the number of matching impressions). This is because rather than summing together a series of supply forecast values (e.g., using forecast value summer 602 as described above) to generate the supply forecast for an impression, a single subtraction operation may be performed to generate the supply forecast for the impression (as described below with respect to step 908).
In step 904, a first cumulative supply forecast value in the cumulative forecast value array is determined for a time instance of the corresponding time series at a start of the target time period. For example, as shown in
For example, referring to array 1000 of
In step 906, a last cumulative supply forecast value in the cumulative forecast value array is determined for a time instance of the corresponding time series at an end of the target time period. For example, as shown in
For example, referring to array 1000 of
In step 908, the first cumulative supply forecast value is subtracted from the last cumulative supply forecast value to determine a forecasted supply. For example, as shown in
FVi=CVi[te]−CVi[ts−1] Equation 4
where
CVi[t]=the cumulative forecast value for impression i at time t, and
FVi=the supply forecast generated for impression i.
As such, forecasted supply summer 208 of
For instance, referring to the current example, a first cumulative supply forecast value of 1 million for impression 0 and a first cumulative supply forecast value of 10 million for impression 1 are received in first cumulative supply forecast values 812, and a last cumulative supply forecast value of 36 million for impression 0 and a last cumulative supply forecast value of 27 million for impression 1 are received last cumulative supply forecast values 814. Cumulative value subtractor 806 subtracts 1 million from 36 million to determine a forecasted supply of 35 million impressions for impression 0, and subtracts 10 million from 27 million to determine a forecasted supply of 17 million impressions for impression 1 for a target time period 212 of Jan. 10-12, 2011. Thus, in this example, forecasted supplies 218 include the forecasted supply of 35 million impressions for impression 0 and the forecasted supply of 17 million impressions for impression 1. Forecasted supply summer 208 of
In another embodiment, impression supply forecaster 206 of
As shown in
As shown in
As shown in
In step 1204, a forecasted supply is determined for each block of impressions of the plurality of impression blocks based on a corresponding time series of supply forecast values. For example, as shown in
For instance,
Still further, array 1300 is arranged such that array 1300 includes a plurality of impression blocks 1302. For instance, a first impression block 1302a is shown in array 1300, and a portion of a second impression block 1302b is shown in array 1300. First impression block 1302a is shown as including ten impressions—impressions 0-9 (three impressions—impressions 10-12 are shown in array 1300 as included in second impression block 1302b, although further impressions may be included in second impression block 1302b). Any number of impression blocks 1302 may be included in array 1300, including hundreds of thousands, millions, or greater numbers of impression blocks 1302. Furthermore, any number of impressions may be included in each impression block 1302, including hundreds, thousands, millions, etc., of impressions. In the embodiment of
As indicated in array 1300, impressions included in a common impression block 1302 each have the same time series of cumulative supply forecast values. For example, each of impressions 0-9 of first impression block 1302a have the same time series of cumulative supply forecast values (e.g., 1 million impressions at time instance 0, 21 million impressions at time instance 1, 31 million impressions at time instance 2, 36 million impressions at time instance 3, etc.). As such, a forecasted supply may be determined once for the time series of first impression block 1302a to generate a forecasted supply of each of impressions 0-9. The forecasted supply may be generated by impression block supply calculator 1104 of
Referring back to
For example, referring to array 1300 of
where
Bj=impression block j, and
|Bj|=the number of matching impressions in impression block j.
Impression block sorter 1102 may be implemented in various ways to sort impressions into impression blocks. For instance,
As shown in
In step 1504, an index map that maps one or more impression indices to each of a plurality of aggregation base indices is received. For example, as shown in
Index map 1406 may map any number of impressions indices to any number of aggregation base indices, including tens, thousands, or millions of aggregation base indices. Index map 1406 may be configured in any manner.
In step 1506, a first impression index and a last impression index are located in the index map to identify a range of impression indices of the plurality of impression indices that link to a corresponding aggregation base index. For example, in an embodiment, aggregation base range determiner 1402 may be configured to determine a first impression index and a last impression index in index map 1406 for matching impressions indicated in matching impressions 216 that map to a first common aggregation base index. As shown in
For instance, in one example, matching impressions 216 may include indices for impressions 1, 3, 7, 8, 10, 12, 15, 23, and 87. With respect to the example of index map 1406 provided in Table 1 above, impressions 1, 3, 7, and 8 map to an aggregation base index of 0. Thus, for the first aggregation base index of 0, aggregation base range determiner 1402 may determine a first impression index of 1 and a last impression index of 8 for the impressions indicated in matching impressions 216.
In step 1508, a block of impressions associated with the aggregation base index is defined to include impressions of the plurality of impressions having indices in the range of impression indices bounded by the first impression index and the last impression index. For example, as shown in
For instance, continuing the above example, matching impressions 216 includes indices for impressions 1, 3, 7, 8, 10, 12, 15, 23, and 87, and first and last impression indices 1408 indicates first and last impression indices of 1 and 8 for the first aggregation base index of 0. Based on this, impression block definer 1404 defines a first impression block corresponding to the first aggregation base index of 0 that includes impressions of matching impressions 216 having indices in the range of 1 to 8, which are impressions 1, 3, 7, and 8. As shown in
In step 1510, steps 1506 and 1508 are repeated for one or more subsequent ranges of impression indices and corresponding aggregation base indices to sort the plurality of impressions into one or more further blocks of impressions of the plurality of impression blocks. For instance, in further iterations of step 1506, aggregation base range determiner 1402 determines first and last impression index pairs in index map 1406 for further matching impressions indicated in matching impressions 216 that map to a first common aggregation base index. Furthermore, in further iterations of step 1508, impression block definer 1404 defines blocks of impressions that include impressions of matching impressions 216 having indices in the range of impression indices indicated by corresponding impression index pairs indicated by first and last impression indices 1408.
For instance, continuing the above example, matching impressions 216 includes indices for impressions 1, 3, 7, 8, 10, 12, 15, 23, and 87. For the second aggregation base index of 1, aggregation base range determiner 1402 may determine a first impression index of 10 and a last impression index of 87 for the impressions indicated in matching impressions 216. As no further impression indices corresponding to further aggregation base indices are provided in this example of matching impressions 216, aggregation base range determiner 1402 determines no further first and last impression indices. Impression block definer 1404 defines a second impression block corresponding to the second aggregation base index of 1 that includes impressions of matching impressions 216 having indices in the range of 10 to 87, which are impressions 10, 12, 15, 23, and 87. In this example, no further blocks of impressions are defined. As shown in
The methods and systems described above may be combined in any manner in embodiments for forecasting supply. For instance, flowcharts 300 (
As described above, in an embodiment, the impressions “i” determined to match a targeting predicate may be sorted by their respective aggregation bases (also known as “linking trends”). For example, the Fastbit indexing technology may be utilized generate matching impressions 216 in a manner that maintains the order of impressions, such that the matching impressions of a block Bj are sequentially arranged in matching impressions 216. Matching impressions 216 may be referred to as a matching output list H. H list contains the impression indices of all matching impressions. The impression indices are maintained in order and are grouped by an impression index bi in H. For instance, impression indices b0 to bn that are associated with a first aggregation base are grouped first in H, impression indices bn+1 to bm that are associated with a second aggregation base are grouped second in H, etc. The value ei for each aggregation base, which is the last impression index in matching impressions 216 for an aggregation base, is indicated in index map 1406. The ei values are used to calculate the size of impression block |Bj|, as follows:
Embodiments reduce the number of calculations used to forecast supply, and therefore reduce the amount of time and resources used to forecast supply. For instance, in one example, a supply forecast is generated in 20-22 milliseconds (ms), where determining matching impressions 216 took about 10-12 ms and forecasting supply took about 10 ms, while 600 ms was used to forecast supply according to conventional techniques. As such, in one embodiment, system 200 may serve 25-30 queries/sec in real time on the basis of a non-parametric supply model with 200 million impressions.
Advertisement supply forecasting system 110, user interface 202, match determiner 204, impression supply forecaster 206, forecasted supply summer 208, match determiner 400, impression supply forecaster 600, forecast value summer 602, impression supply forecaster 800, start time determiner 802, end time determiner 804, cumulative value subtractor 806, impression supply forecaster 110, impression block sorter 1102, impression block supply calculator 1104, impression block supply forecaster 1106, multiplier 1108, impression block sorter 1400, aggregation base range determiner 1402, and impression block definer 1404 may be implemented in hardware, software, firmware, or any combination thereof. For example, advertisement supply forecasting system 110, user interface 202, match determiner 204, impression supply forecaster 206, forecasted supply summer 208, match determiner 400, impression supply forecaster 600, forecast value summer 602, impression supply forecaster 800, start time determiner 802, end time determiner 804, cumulative value subtractor 806, impression supply forecaster 110, impression block sorter 1102, impression block supply calculator 1104, impression block supply forecaster 1106, multiplier 1108, impression block sorter 1400, aggregation base range determiner 1402, and/or impression block definer 1404 may be implemented as computer program code configured to be executed in one or more processors. Alternatively, advertisement supply forecasting system 110, user interface 202, match determiner 204, impression supply forecaster 206, forecasted supply summer 208, match determiner 400, impression supply forecaster 600, forecast value summer 602, impression supply forecaster 800, start time determiner 802, end time determiner 804, cumulative value subtractor 806, impression supply forecaster 110, impression block sorter 1102, impression block supply calculator 1104, impression block supply forecaster 1106, multiplier 1108, impression block sorter 1400, aggregation base range determiner 1402, and/or impression block definer 1404 may be implemented as hardware logic/electrical circuitry.
The embodiments described herein, including systems, methods/processes, and/or apparatuses, may be implemented using well known servers/computers, such as a computer 1600 shown in
Computer 1600 can be any commercially available and well known computer capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Sun, HP, Dell, Cray, etc. Computer 1600 may be any type of computer, including a desktop computer, a server, etc.
Computer 1600 includes one or more processors (also called central processing units, or CPUs), such as a processor 1604. Processor 1604 is connected to a communication infrastructure 1602, such as a communication bus. In some embodiments, processor 1604 can simultaneously operate multiple computing threads.
Computer 1600 also includes a primary or main memory 1606, such as random access memory (RAM). Main memory 1606 has stored therein control logic 1628A (computer software), and data.
Computer 1600 also includes one or more secondary storage devices 1610. Secondary storage devices 1610 include, for example, a hard disk drive 1612 and/or a removable storage device or drive 1614, as well as other types of storage devices, such as memory cards and memory sticks. For instance, computer 1600 may include an industry standard interface, such a universal serial bus (USB) interface for interfacing with devices such as a memory stick. Removable storage drive 1614 represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
Removable storage drive 1614 interacts with a removable storage unit 1616. Removable storage unit 1616 includes a computer useable or readable storage medium 1624 having stored therein computer software 1628B (control logic) and/or data. Removable storage unit 1616 represents a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device. Removable storage drive 1614 reads from and/or writes to removable storage unit 1616 in a well known manner.
Computer 1600 also includes input/output/display devices 1622, such as monitors, keyboards, pointing devices, etc.
Computer 1600 further includes a communication or network interface 1618. Communication interface 1618 enables the computer 1600 to communicate with remote devices. For example, communication interface 1618 allows computer 1600 to communicate over communication networks or mediums 1642 (representing a form of a computer useable or readable medium), such as LANs, WANs, the Internet, etc. Network interface 1618 may interface with remote sites or networks via wired or wireless connections.
Control logic 1628C may be transmitted to and from computer 1600 via the communication medium 1642.
Any apparatus or manufacture comprising a computer useable or readable medium having control logic (software) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer 1600, main memory 1606, secondary storage devices 1610, and removable storage unit 1616. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent embodiments of the invention.
Devices in which embodiments may be implemented may include storage, such as storage drives, memory devices, and further types of computer-readable media. Examples of such computer-readable storage media include a hard disk, a removable magnetic disk, a removable optical disk, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. As used herein, the terms “computer program medium” and “computer-readable medium” are used to generally refer to the hard disk associated with a hard disk drive, a removable magnetic disk, a removable optical disk (e.g., CDROMs, DVDs, etc.), zip disks, tapes, magnetic storage devices, MEMS (micro-electromechanical systems) storage, nanotechnology-based storage devices, as well as other media such as flash memory cards, digital video discs, RAM devices, ROM devices, and the like. Such computer-readable storage media may store program modules that include computer program logic for advertisement supply forecasting system 110, user interface 202, match determiner 204, impression supply forecaster 206, forecasted supply summer 208, match determiner 400, impression supply forecaster 600, forecast value summer 602, impression supply forecaster 800, start time determiner 802, end time determiner 804, cumulative value subtractor 806, impression supply forecaster 110, impression block sorter 1102, impression block supply calculator 1104, impression block supply forecaster 1106, multiplier 1108, impression block sorter 1400, aggregation base range determiner 1402, impression block definer 1404, flowchart 300, flowchart 900, flowchart 1200, and/or flowchart 1500 (including any one or more steps of flowcharts 300, 900, 1200, and 1500), and/or further embodiments of the present invention described herein. Embodiments of the invention are directed to computer program products comprising such logic (e.g., in the form of program code or software) stored on any computer useable medium. Such program code, when executed in one or more processors, causes a device to operate as described herein.
The invention can work with software, hardware, and/or operating system implementations other than those described herein. Any software, hardware, and operating system implementations suitable for performing the functions described herein can be used.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and details can be made therein without departing from the spirit and scope of the invention. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.