Like reference symbols in the various drawings indicate like elements.
An ad positioner 116 determines what slot, if any, will be assigned to each of the advertisers 106a-c. The ad positioner 116 makes a slot assignment to each of the advertisers 106a-c in order from an advertiser (e.g., the advertiser 106a) with a highest eligible bid to an advertiser (e.g., the advertiser 106c) with a lowest eligible bid. The ad positioner 116 assigns slots using the preference lists 108a-c. First, the ad positioner 116 assigns the advertiser 106a with the highest eligible bid 110a a most preferred slot from the advertiser's preference list 108a. Then, the ad positioner 116 assigns the advertiser 106b with the next highest eligible bid 110b an advertisement slot. If the most preferred slot in the list 108b is still available, then the ad positioner 116 assigns that slot to the advertiser 106b. Otherwise, if it is not available, then the ad positioner 116 checks the availability of the next slot in the list 108b. The ad positioner 116 continues until either it finds and assigns an available slot to the advertiser 106b or it determines that all slots in the list 108b are unavailable. The ad positioner 116 continues the assignment process for all of the advertisers 106a-c.
The ad positioner 116 transmits the assignments in ad position information 118a-d to be applied to one or more media 120a-d, such as a web page, a printed page, a television time schedule, or a radio time schedule. In general, preferred slots within a preference list need not be sequential. In certain implementations, a preference list indicates one or more ranges of slot preferences that need not be sequential. Additionally, if preference information is not received from an advertiser, the ad positioner 116 can create default preference information, which can list preferred slots in sequential order. For example, the preference information may indicate that the first slot is preferred first, the second slot is preferred second, etc.
In other implementations, the default preference information may be based on historical selections by other users for the particular medium on which the advertisements will be placed. For example, if the medium is a website and past users have preferred a particular order (e.g., first slot is preferred first, fourth slot is preferred second, and last spot is preferred third), the default preference information will reflect this statistical preference.
In certain implementations, the preference lists 108a-c includes other information, such as a preferred size, shape, or color of the assigned advertisement slot. For example, each of the media 120a-d may include four advertisement slots to be auctioned. The four advertisement slots may be ranked in the preference lists 108a-c according to their sequential order, such as a sequence of commercials in the television medium 120a. In addition, in the telephone directory printed medium 120d, the four slots may be ranked according to size, such as a small size for slots 2 and 3, a medium size for slot 4, and a large size for slot 1. The newspaper printed medium 120b may have color ads on left side pages (slots 1 and 2) and black/white ads on right side pages (slots 3 and 4). The web page medium 120c may have image shapes for slots 1 and 2, and single line text shapes for slots 3 and 4.
The auction system 104 may weight the bids 110a-c based on a click through rate (CTR) for an associated ad to determine a weighted bid. The click through rate can be the number of times that a viewer selects a hyperlink included in an ad presented on a web page. For example, a CTR of 1 indicates that, on average, all past viewers have visited the advertiser 106a after viewing the ad 206a. In addition, the CTR of 0.75 indicates that, statistically, three quarters of the viewers of the ad 206b visit the advertiser 106b and the CTR of 0.5 indicates that half of past viewers of the ad 206c have visited the advertiser 106c. The CTR can be multiplied by the submitted bid to generate a weighted bid that favors ads that have high CTRs.
The ranking assigner 114 ranks the advertisers 106a-c according to the bids 110a-c (or the weighted bids) from highest to lowest, that is the advertiser 106a is first, the advertiser 106b is second, and the advertiser 106c is third. The ad positioner 116 determines in which of the slots 202a-c, if any, each of the ads 206a-c will be placed. For example, the advertiser 106a with the highest weighted bid of $1.00 may be assigned its first slot preference from the list 108a, that is the first slot 202a on the web page 118c. The second highest advertiser 106b, having the weighted bid $0.90, is assigned its second slot preference, the second slot 202b, because its first slot preference was taken by the advertiser 106a which had a higher bid. The third advertiser 106c, having the third highest weighted bid of $0.80, is assigned no slots because both of its preferred slots listed in its preference list 108c are already taken. The ad positioner 116 outputs the position information via the interface 208 to a web server 210. The web server 210 presents the ads 206a-b in the slots 202a-b, respectively, along with the search results 204.
Process 300 selects (304) a previously unselected slot preference list associated with a highest eligible bidder. In certain implementations, the highest eligible bidder can be a bidder that has not already been assigned an advertisement slot and has a bid that is at least as high as a reserve bid. For example, the ranking assigner 114 may select the preference list 108a associated with the advertiser 106a.
If a position specified by the selected preference list is not available (306) and more positions in the preference list exist (308) in the list, then process 300 continues until a position is found that is still available or no more positions exist. If no more positions exist in the preference list, then process 300 selects (304) another previously unselected slot preference list submitted by the next highest eligible bidder. Otherwise, if a preferred position is determined to be available, then process 300 assigns (310) the position to the bidder's advertisement.
Optionally, process 300 charges (312) the bidder a fee for the advertisement placement. For example, the ad positioner 116 may calculate pricing fees based on the number of impressions of the ads 206a-b in the slots 202a-b. Pricing processes will be described in detail with respect to
If the are more bidders (408) that have not yet been selected by process 400, then process 400 assigns a second highest bid as the slot price for the selected slot and bidder. If there are no remaining bidders, then process 400 assigns the reserve price to the last bidder.
In general for process 400, one bidder is assigned the reserve price, that being the last bidder 502d with the slot price 508d of $0.60. Each of the other bidders is assigned a slot price of the bidder ranked directly below each of them (e.g., the next highest bidder in the slot auction) if the bidder won a slot. The bidder 502a is assigned the slot price 508a of $0.90, which was submitted by the bidder 502b. The bidder 502a preferred slot 1 and was assigned this slot because it was the highest bidder.
The bidder 502b is assigned the slot price 508b of $0.80, which was submitted by the bidder 502c. The bidder 502b preferred slots 1 and 2. Slot 1 was already taken by the bidder 502a, so the bidder 502b received the slot 2. The bidder 502c is assigned no slot or slot price because both preferred slots 1 and 2 are already assigned.
The bidder 502d is assigned the slot price 508d, which is equal to the reserve price. The bidder 502d was assigned its preferred slot 3 because slot 3 was not previously assigned and was charged the reserve price because there were no more next highest bids to set the price.
If a next slot in the preference list is available (606), then process 600 assigns (608) the slot to the selected bidder. Otherwise, if the slot is not available, then process 600 sets (610) the price of the slot, which has already been assigned to a previous highest bidder, at the bid of the current highest bidder if it is greater than the existing price of the slot.
If more slots exist in the preference list (612), then process 600 checks (606) the next slot in the preference list. Otherwise, if no more slots exist ,and more bidders exist (614), then process 600 accesses (604) the preference list of the next highest eligible bidder. Otherwise, if no more bidders exist, then process 600 ends. In general, if all bidders choose different slot preferences then all bidders may receive the reserve price.
Each of the bidders 702a-e is assigned a slot price of the bidder having the next highest bid for the same slot. The bidder 702a is assigned slot 3 with the slot price 708a of $0.70 from the bidder 702d who has the next highest bid for slot 3. The bidder 702b is assigned slot 1 with the slot price 708b of $0.70 from the bidder 702d who also has the next highest bid for slot 1. No other bidders bid on slot 2, so the bidder 702c receives slot 2 at the reserve price 712 of $0.60. Slots 1 and 3 are already taken by the bidders 702a-b, respectively, therefore the bidder 702d receives no slot and no slot price. No other bidders bid on slot 4, so the bidder 702e receives slot 4 at the reserve price 712 of $0.60.
If there exists an unassigned slot (804); then process 800 may remove (806) a slot and assign (802) the slots again, shift (808) all assigned slots up to fill in gaps left by unassigned slots and remove the unassigned slots, or assign (810) the unassigned slots to default advertisements. Otherwise, if no unassigned slots exist or the unassigned slots are filled up by shifting or by default advertisements, then process 800 terminates.
Removing a slot (806) may involve discarding a last advertisement slot and performing the slot assignment again. The omission of the last slot may result in one or more advertisers being assigned slots that previously went unassigned. Multiple removals may be performed. Default advertisements may include, for example, advertisements provided by the auction system 104 or public service announcements.
The system 900 includes a processor 910, a memory 920, a storage device 930, and an input/output device 940. Each of the components 910, 920, 930, and 940 are interconnected using a system bus 950. The processor 910 is capable of processing instructions for execution within the system 900. In one implementation, the processor 910 is a single-threaded processor. In another implementation, the processor 910 is a multi-threaded processor. The processor 910 is capable of processing instructions stored in the memory 920 or on the storage device 930 to display graphical information for a user interface on the input/output device 940.
The memory 920 stores information within the system 900. In one implementation, the memory 920 is a computer-readable medium. In one implementation, the memory 920 is a volatile memory unit. In another implementation, the memory 920 is a non-volatile memory unit.
The storage device 930 is capable of providing mass storage for the system 900. In one implementation, the storage device 930 is a computer-readable medium. In various different implementations, the storage device 930 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device.
The input/output device 940 provides input/output operations for the system 900. In one implementation, the input/output device 940 includes a keyboard and/or pointing device. In another implementation, the input/output device 940 includes a display unit for displaying graphical user interfaces.
The features described can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The apparatus can be implemented in a computer program product tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by a programmable processor; and method steps can be performed by a programmable processor executing a program of instructions to perform functions of the described implementations by operating on input data and generating output. The described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
To provide for interaction with a user, the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
The features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network, such as the described one. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Although a few implementations have been described in detail above, other modifications are possible. For example, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.