广告投放优化(线性规划求解)(Excel+Python)

案例背景:

对于大多数广告主来说,广告投放的目的无非就是吸引更多的用户,最终实现营销转化。他们特别关注这些信息:

投放渠道有哪些?

曝光及流量预估有多少?

媒体/广告公司承诺的量是否达到?数据是不是真实?

广告的投入与产出比......

某品牌公司新开发了一款药物牙膏,公司准备投入 370万元进行广告媒体宣传,希望消费者能了解新产品,并能够吸引消费者购买新产品。根据广告媒体预算情况,目前有5种媒体可供选择,相关有效信息:

1、至少进行 300次电视广告播放;

2、至少有550万名潜在顾客被告知;

3、电视广告投入不超过 220万元。

确定问题(适用场景):

如何进行媒体组合,才能使广告质量最高? 

线性规划是决策系统的静态最优化数学规划方法之一。它作为经营管理决策中的数学手段,在现代决策中的应用是非常广泛的,它可以用来解决科学研究、工程设计、生产安排、军事指挥、经济规划等。即在一定条件下,合理安排人力物力等资源,使结果达到最好。决策变量、约束条件、目标函数是线性规划的三要素。

数据收集:

目标函数与约束条件中的所有参数,对数据的要求较高,数值型数据。

字段数据类型说明
媒体渠道字符型、类别型媒体渠道:日间电视、夜间电视、日报、期刊杂志、互联网五种
被告知的潜在顾客数值型一次广告投放带来的潜在客户流量数(单位:人/次)
广告费用数值型一次广告投放的成本,单位:元/次
媒体最高使用次数数值型不同媒体渠道投放上限,单位:次
每次宣传的质量数值型不同媒体渠道广告投放效果评分,分值范围(1-100)

媒体渠道被告知的潜在顾客(人/次)广告费用(元/次)媒体最高使用次数(次)每次宣传的质量
日间电视3000500055065
夜间电视60001000037090
日报150000400003040
期刊杂志25000100005060
互联网250050007535

数据预处理:

无缺失值即可。

EXCEL线性规划求解方法:

列出目标函数公式与所有约束条件,在EXCEL中添加线性规划求解加载项并求解各个未知变量的值。

给要求解的X(x1-x5)留出计算的位置(可变单元格)

图片

写出目标函数的计算公式:

图片

列出所有约束条件:

(x1-x5非负的条件可以不写,可统一进行处理)

(注意量纲要一致)

图片

利用 EXCEL-数据-分析-规划求解 进行x1-x5的求解:

图片

图片

结果分析:

图片

直接查看求解结果,注意,线性规划最优解的几种可能情况:

  1. 有唯一最优解

  2. 有一个以上的最优解

  3. 无界解

  4. 无解

执行与反馈:

执行结果并结合实际情况,不断修正模型。

 370万元进行广告媒体宣传的方案为:

媒体渠道宣传次数
日间电视440
夜间电视0
日报19
期刊杂志48
互联网52

Python实现:​​​​​​​

from scipy import optimizeimport 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)

图片

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用线性规划求解TSP问题,你可以使用Python优化库,如PuLP或cvxpy。下面是一个使用PuLP库的例子: ```python from pulp import * # 创建问题实例 prob = LpProblem("TSP_Problem", LpMinimize) # 创建变量 n = 4 # 城市数量 cities = range(n) # 城市列表 x = LpVariable.dicts("x", [(i, j) for i in cities for j in cities], cat='Binary') # 添加目标函数 prob += lpSum(x[i, j] * distance_matrix[i][j] for i in cities for j in cities) # 添加约束条件 for i in cities: prob += lpSum(x[i, j] for j in cities if j != i) == 1 prob += lpSum(x[j, i] for j in cities if j != i) == 1 # 避免出现子回路 u = LpVariable.dicts("u", cities, lowBound=0, upBound=n-1, cat='Integer') for i in cities: for j in cities: if i != j and (i != 0 and j != 0): prob += u[i] - u[j] + n * x[i, j] <= n - 1 # 求解问题 prob.solve() # 打印结果 print("最优路径:") for i in cities: for j in cities: if value(x[i, j]) == 1: print(f"从城市 {i} 到城市 {j}") print("最短距离:", value(prob.objective)) ``` 这个例子使用了PuLP库来创建一个线性规划问题实例,并使用变量`x`来表示城市间的路径。目标函数是最小化路径的总距离。约束条件包括每个城市仅能连接一条路径,以及避免出现子回路。 你需要自己定义城市之间的距离矩阵`distance_matrix`,并将其替换到代码中。这个例子仅展示了如何使用线性规划库来求解TSP问题的大致思路,具体实现还需要根据你的具体问题进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值