案例背景:
对于大多数广告主来说,广告投放的目的无非就是吸引更多的用户,最终实现营销转化。他们特别关注这些信息:
投放渠道有哪些?
曝光及流量预估有多少?
媒体/广告公司承诺的量是否达到?数据是不是真实?
广告的投入与产出比......
某品牌公司新开发了一款药物牙膏,公司准备投入 370万元进行广告媒体宣传,希望消费者能了解新产品,并能够吸引消费者购买新产品。根据广告媒体预算情况,目前有5种媒体可供选择,相关有效信息:
1、至少进行 300次电视广告播放;
2、至少有550万名潜在顾客被告知;
3、电视广告投入不超过 220万元。
确定问题(适用场景):
如何进行媒体组合,才能使广告质量最高?
线性规划是决策系统的静态最优化数学规划方法之一。它作为经营管理决策中的数学手段,在现代决策中的应用是非常广泛的,它可以用来解决科学研究、工程设计、生产安排、军事指挥、经济规划等。即在一定条件下,合理安排人力物力等资源,使结果达到最好。决策变量、约束条件、目标函数是线性规划的三要素。
数据收集:
目标函数与约束条件中的所有参数,对数据的要求较高,数值型数据。
字段 | 数据类型 | 说明 |
媒体渠道 | 字符型、类别型 | 媒体渠道:日间电视、夜间电视、日报、期刊杂志、互联网五种 |
被告知的潜在顾客 | 数值型 | 一次广告投放带来的潜在客户流量数(单位:人/次) |
广告费用 | 数值型 | 一次广告投放的成本,单位:元/次 |
媒体最高使用次数 | 数值型 | 不同媒体渠道投放上限,单位:次 |
每次宣传的质量 | 数值型 | 不同媒体渠道广告投放效果评分,分值范围(1-100) |
媒体渠道 | 被告知的潜在顾客(人/次) | 广告费用(元/次) | 媒体最高使用次数(次) | 每次宣传的质量 |
日间电视 | 3000 | 5000 | 550 | 65 |
夜间电视 | 6000 | 10000 | 370 | 90 |
日报 | 150000 | 40000 | 30 | 40 |
期刊杂志 | 25000 | 10000 | 50 | 60 |
互联网 | 2500 | 5000 | 75 | 35 |
数据预处理:
无缺失值即可。
EXCEL线性规划求解方法:
列出目标函数公式与所有约束条件,在EXCEL中添加线性规划求解加载项并求解各个未知变量的值。
给要求解的X(x1-x5)留出计算的位置(可变单元格)
写出目标函数的计算公式:
列出所有约束条件:
(x1-x5非负的条件可以不写,可统一进行处理)
(注意量纲要一致)
利用 EXCEL-数据-分析-规划求解 进行x1-x5的求解:
结果分析:
直接查看求解结果,注意,线性规划最优解的几种可能情况:
-
有唯一最优解
-
有一个以上的最优解
-
无界解
-
无解
执行与反馈:
执行结果并结合实际情况,不断修正模型。
370万元进行广告媒体宣传的方案为:
媒体渠道 | 宣传次数 |
日间电视 | 440 |
夜间电视 | 0 |
日报 | 19 |
期刊杂志 | 48 |
互联网 | 52 |
Python实现:
from scipy import optimize
import numpy as np
np.set_printoptions(suppress=True)
c=np.array([65,
90,
40,
60,
35])
A_ub=np.array([[-1,-1,0,0,0],
[-3000,-6000,-150000,-25000,-2500],
[5000,10000,0,0,0],
[5000,10000,40000,10000,5000],
[1,0,0,0,0],
[0,1,0,0,0],
[0,0,1,0,0],
[0,0,0,1,0],
[0,0,0,0,1]])
#注意:不等式方向不一样,需要添加负号调节方向,使之对应;相应的,系数矩阵的系数也要改变方向
B_ub=np.array([-300,-5500000,2200000,3700000,550,370,30,50,75])
result=optimize.linprog(-c,A_ub,B_ub)
print(result)