文章目录
- 一、实际问题分析——媒体组合案例
- 二、Excel完成线性规划问题的求解
- 三、Python完成线性规划的求解
- 四、参考
一、实际问题分析——媒体组合案例
现有五个广告投放渠道:日间电视、夜间电视、网络媒体、平面媒体和户外广告,每个渠道的效果、费用及限制如下表
设日间电视、夜间电视、网络媒体、平面媒体和户外广告的使用次数依次设为x1,x2,x3,x4,x5,咨询电话量设为L,则五种媒体资源配置的三要素为:
- 决策变量:x1,x2,x3,x4,x5;
- 目标函数:咨询电话量L=600x1+800x2+500x3+400x4+300x5最大化;
- 所满足的约束条件:
- 电视广告费用不超过3万元,1000x1+2000x2<=30000;
- 电视广告次数至少进行20次,x1+x2>=20;
- 广告总费用不超过4万元,1000x1+2000x2+400x3+1000x4+100x5<=40000;
- 被告知人数至少10万人,2000x1+4000x2+3000x3+5000x4+600x5>=100000;
- 各媒体使用次数不超过次数限量,x1<=14,x2<=8,x3<=40,x4<=5,x5<=50;
- 各媒体使用次数均为正整数。
二、Excel完成线性规划问题的求解
- 创建数据源
录入上述数据,并增加“各媒体使用次数”列 - 在Excel中设置目标函数
由前面的分析可知,目标函数为E2:E6与F2:F6区域两列数组对应元素的乘积之和,在C10单元格中输入“=SUMPRODUCT(E2:E6,F2:F6)” - 设置约束条件
将之前的约束条件表达式设置在Excel中(写公式时前面不要忘了加“=”号) - 加载Excel的规划求解模块
选择“文件”->“选项”->“加载项”->“转到”,勾选“规划求解加载项”,单击确定。
这样数据菜单下就出现了“规划求解”模块 - 在Excel规划求解模块中设置决策变量和目标函数
- 选择“数据”->“规划求解”,设置如下
- 设置约束条件
选择“遵守约束”后的“添加”,分别设置6个约束条件
约束条件1设置:
约束条件2设置:
约束条件3设置:
约束条件4设置:
约束条件5设置:
约束条件6设置:
设置完成
6. 最终求解结果
三、Python完成线性规划的求解
- 打开Windows终端,输入Jupyter Notebook,打开Jupyter工具
- 在Jupyter的web网页中创建Python文本
- 现在就可以填写代码了
完整代码如下
import numpy as np
from scipy import optimize as op
x1=(0,14)
x2=(0,8)
x3=(0,40)
x4=(0,5)
x5=(0,50)
c=np.array([600,800,500,400,300])
A_ub=np.array([[1000,2000,0,0,0],[-1,-1,0,0,0],[1000,2000,400,1000,100],[-2000,-4000,-3000,-5000,-600]])
B_ub=np.array([30000,-20,40000,-100000])
res=op.linprog(-c,A_ub,B_ub,bounds=(x1,x2,x3,x4,x5))
res
结果如下