CPD轮播广告库的简单算法
在广告的领域中,有一种广告形式,采用的是CPD的售卖模式,为了对流量进行拆分,媒体方会对广告位进行轮播拆分。比如一个广告位,被拆成了10轮播,那么在广告主来预订广告位的时候,这个时候就可以告诉广告主,我这边有10个CPD的轮播可以售卖。然后广告主A买走了其中的一个轮播,接下来另外一个广告主过来,只剩下9个轮播了。
在上面的例子中,一个CPD的广告位被拆分成了10个轮播,那么这个时候广告位的库存数就是10,广告位的CPD库存,就是一个广告位可以售卖的轮播总数。
接下来我们来聊一聊,广告主在预订CPD广告位的时候库存的一种简单算法。
一、不考虑定向的CPD库存算法。
前面的博文中,我有提到广告位的定向的概念,我们在讨论CPD库存算法的时候,先不考虑定向的条件,来看看库存是怎么来计算的。
比如,媒体方,把一个广告位拆成了S轮播。这个时候有个广告主A跑过来说,我需要购买你广告位的一轮播,你这边有多少剩余的库存可以卖给我?然后你一看,没有任何预订,于是你告诉广告主A说,这边可以有S个库存卖给你,于是广告主买走了其中的一轮播。
接下来另外一个广告主B跑过来说,我想要购买这个广告位的一轮播,你这边有多少剩余库存可以卖?于是你一看,之前已经被广告主A买走了一轮播了,所以这个时候剩下了S-1轮播可以卖。
好了通过上面的例子我们可以知道,在不考虑定向的情况下,CPD的库存计算非常简单,即下面的公式
剩余库存 = CPD总轮播数-客户已经预订轮播数(公式1)
二、带有定向的CPD库存算法
接下来我们需要考虑另外一种情况,带有定向的CPD的库存算法。
关于带有定向的CPD的库存计算有很多种方法,在这里,我给大家介绍一种简单的计算方法。
剩余库存 = CPD总轮播数-预订冲突的轮播数(公式2)
什么是冲突的轮播数呢? 就是当前的预订和之前已有的预订有冲突的预订轮播数。
举一个简单的例子:
一个广告位 5月1号 有10轮播,已经有的预订如下:

这个时候有个广告主C过来说,我需要预订5月1号上海地区,问还剩下多少库存?
因为广告主C需要预订的也是上海地区,这和广告主A的预订上海有冲突,但是和广告主B预订北京没有冲突,预订的冲突轮播数为1
所以广告主预订上海地区看到的剩余库存数为9。
所以,有定向的库存计算,最主要的就是要想办法冲突的预定数。
要计算冲突的预定数,主要分为以下两步。
1、过滤掉和当前预定不冲突的预定数
2、每个维度在最细的粒度计算冲突的轮播
再举例说明多维度定向交叉的情况的例子,比如一个广告位支持地区定向和年龄定向。
地区定向的最小粒度为城市级别
年龄定向的最小粒度每20岁作为一个级别,一共包含(0~20,20~40,40~60,60~80)这四个级别
这个广告位一共被拆成了10个轮播,当前已经有的预定如下:

这时候广告主E过来,定向条件是 地区:杭州,年龄:20~60岁,问广告主E看到的剩余库存是多少呢?
下面简单的来分析一下:
广告主A的地区定向条件是上海,与杭州不冲突,所以广告主A的预定和当前广告主不冲突,可以过滤掉。
广告主D的地区定向条件是全国,年龄是所有年龄的人,所以广告主D的预定和当前广告主的预定有冲突,冲突数为1轮播。
我们来重点看一下广告主B、广告主C与当前广告主定向的冲突预定数的计算。
首先我们把B和C的定向条件拆到最细

再把当前客户的定向条件(杭州,20~40岁)拆成最细的粒度

E1 与B 和 C1冲突, 冲突的预定数为 N1 = 3+2=5;
E2 与 C2 冲突,冲突的预定数 N2 = 2
然后,求得当前广告主E的预定与B和C广告主预定的冲突数 = Max(N1,N2) = 5,再加上D的全国通投,总的预定冲突数 = 5 + 1 = 6
最后根据公式2求得 剩余的轮播数 = 10 -6 =4
所以,最终当前广告主E在 杭州,20-60岁这个定向条件下,看到的CPD的广告位库存为4。
以上的过程便完成了CPD轮播广告库存数的计算,当然以上的算法简单粗暴,但是在某些情况下计算出来的,并非最优解,后面有时间我会再给大家讲一种更好的CPD轮播广告库存算法。
CPD轮播广告库的简单算法的更多相关文章
- 最简单的轮播广告(原生JS)
改变每个图片的opacity属性:来自学友刘斌 素材图片: <!DOCTYPE html> <html lang="en"> <head> &l ...
- 利用RecyclerView实现无限轮播广告条
代码地址如下:http://www.demodashi.com/demo/14771.html 前言: 公司产品需要新增悬浮广告条的功能,要求是可以循环滚动,并且点击相应的浮条会跳转到相应的界面,在实 ...
- (Demo分享)利用原生JavaScript-ScrollLeft-实现做轮播广告通知
轮播广告通知整体思路: 1.首先文字的移动利用了JAVA script 中ScrollLeft的知识点: 2.在设置一条一模一样的新闻,利用无缝轮播图滚动的原理让新闻无缝滚动. 3.使用了自执行匿名函 ...
- [springboot 开发单体web shop] 6. 商品分类和轮播广告展示
商品分类&轮播广告 因最近又被困在了OSGI技术POC,更新进度有点慢,希望大家不要怪罪哦. 上节 我们实现了登录之后前端的展示,如: 接着,我们来实现左侧分类栏目的功能. ## 商品分类|P ...
- 开发单体web shop] 6. 商品分类和轮播广告展示
目录 商品分类&轮播广告 商品分类|ProductCategory 需求分析 开发梳理 编码实现 轮播广告|SlideAD 需求分析 开发梳理 编码实现 福利讲解 源码下载 下节预告 商品分类 ...
- FLASH轮播广告 在谷歌浏览器中不显示的解决办法(FLash轮播放广告在谷歌浏览器中无法显示处理方法)
在用PHPWEB模板的时候,碰到首页有一个FLASH轮播广告,在IE浏览器下可以正常显示播放,在谷歌浏览器中却显示不了,解决办法如下: 欢迎转载:http://blog.csdn.net/aminfo ...
- 基于bootstrap的轮播广告页,带图片和文字
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...
- ViewPaper实现轮播广告条
使用V4包中的viewPaper组件自己定义轮播广告条效果. 实现viewpaper的滑动切换和定时自己主动切换效果. 上效果图 布局文件 <RelativeLayout xmlns:andro ...
- Android开发之ViewPager实现轮播图(轮播广告)效果的自定义View
最近开发中需要做一个类似京东首页那样的广告轮播效果,于是采用ViewPager自己自定义了一个轮播图效果的View. 主要原理就是利用定时任务器定时切换ViewPager的页面. 效果图如下: 主页面 ...
随机推荐
- iOS中ActionSheet和Alert的区别
首先,样子长得就不一样 看下图:
- Mockito: InvalidUseOfMatchersException
异常报错信息: org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument match ...
- mv命令(转)
原文:http://www.cnblogs.com/peida/archive/2012/10/27/2743022.html mv命令是move的缩写,可以用来移动文件或者将文件改名(move (r ...
- ls命令(转)
原文:http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下l ...
- POJ - 1325 Machine Schedule 二分图 最小点覆盖
题目大意:有两个机器,A机器有n种工作模式,B机器有m种工作模式,刚開始两个机器都是0模式.假设要切换模式的话,机器就必须的重新启动 有k个任务,每一个任务都能够交给A机器的i模式或者B机器的j模式完 ...
- Java 类型, Hibernate 映射类型及 SQL 类型之间的相应关系
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- (三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)
3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" ...
- Web Service——CXF发布REST服务
1. 什么是REST REST,英文representational state transfer(表象性状态转变)或者表述性状态转移,REST是web服务的一种架构风格,使用HTTP.URI.XML ...
- mysql中字符集和排序规则说明
数据库需要适应各种语言和字符就需要支持不同的字符集(Character Set),每种字符集也有各自的排序规则(Collation). 一.字符集 字符集,即用于定义字符在数据库中的编码的集合. 常见 ...
- HDUOJ----最少拦截系统
最少拦截系统 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...