文章目录

  • 前言
  • 一、线性规划的来源及内容
    • 1.运筹学
    • 2.建模步骤
    • 3.线性规划
  • 二、Excel求解线性规划的实际案例-广告媒体组合优化问题
    • 1.建立数据源
    • 2.写出资源配置三要素
    • 3. 在excel中设置目标函数
    • 4.在excel中设置约束条件
    • 5.加载excel的规划求解模块
    • 6.在excel规划求解模块中设置决策变量和目标函数
    • 7.在excel规划中求解模块中设置约束条件
  • 三、python求解线性规划的实际案例
    • 1.最小化问题
    • 2.最大化问题

前言

在数学中,线性规划(Linear Programming,简称LP)特指目标函数和约束条件皆为线性的最優化问题。

线性规划是最优化问题中的一个重要领域。在作业研究中所面临的许多实际问题都可以用线性规划来处理,特别是某些特殊情况,例如:网络流、多商品流量等问题,都被认为非常重要


一、线性规划的来源及内容

1.运筹学

运筹学是一种科学的决策方法,它通常是在需要分配稀缺资源的条件下,寻求系统的最佳设计。科学的决策方法需要使用一个或多个数学模型(优化模型)来做出最优决策。

优化模型试图在满足给定约束的决策变量的所有值的集合中,找到优化(最大化或最小化)目标函数的决策变量的值。 它的三个主要组成部分是:

目标函数:要优化的函数(最大化或最小化)。
决策变量:影响系统性能的可控变量。
约束:决策变量的一组约束(即线性不等式或等式)。非负性约束限制了决策变量取正值。
优化模型的解称为最优可行解。

2.建模步骤

对运筹学问题进行准确建模是最重要的任务,也是最困难的任务。错误的模型会导致错误的解决方案,从而不能解决原来的问题。团队成员应按照以下步骤进行建模:

问题定义:定义项目的范围,并确定三个要素:决策变量、目标和限制(即约束)。
模型构建:将问题定义转化为数学关系。
模型求解:使用标准优化算法。在获得解后,需要进行灵敏度分析,以找出由于某些参数的变化而导致的解的行为。
模型有效性:检查模型是否按预期工作。
实现:将模型和结果转换为解决方案。

3.线性规划

线性规划(Linear Programming,也称为LP)是一种运筹学技术,当当所有的目标和约束都是线性的(在变量中)并且当所有的决策变量都是连续的时使用。线性规划是最简单的运筹学方法。

二、Excel求解线性规划的实际案例-广告媒体组合优化问题

1.建立数据源

建立如图的excel表格

2.写出资源配置三要素


3. 在excel中设置目标函数

根据前面的分析可知,目标函数为B2:E6与F2:F6区域两列数的乘积之和,在C10单元格输入"=SUMPRODUCT(E2:E6,F2:F6)"
如图:

4.在excel中设置约束条件

将第二步中所写的约束条件表达式设置在excel中

5.加载excel的规划求解模块

选择"文件"——>“选项”——>“加载项”——>“转到”,勾选"规划求解加载项",点击“确定”,在“数据”菜单中会出现规划求解的模块

6.在excel规划求解模块中设置决策变量和目标函数

选择“数据”——>“规划求解”,进行如下设置

7.在excel规划中求解模块中设置约束条件

在下图设置6个约束条件

约束条件1:电视广告费<=30000元

约束条件2:电视广告次数>=20次

约束条件3:广告费用<=40000元

约束条件4:被告知人数>=100000人

约束条件5:各媒体使用次数不超过次数限量的设置


约束条件6:各媒体使用次数为整正数

完成约束条件设置之后的六个约束条件的设置结果

三、python求解线性规划的实际案例

1.最小化问题

Python的SciPy库包含用于解决线性编程问题的linprog函数。在使用linprog时,编写代码要考虑的两个注意事项:

这个问题必须表述为一个最小化问题。
不等式必须表示为≤。
实验代码:

# Import required libraries
import numpy as np
from scipy .optimize import linprog
# Set the inequality constraints matrix
# Note: the inequality constraints must be in the form of <
A = np.array([[-1, -1, -1], [-1, 2, 0], [0, 0, -1], [-1, 0, 0], [0, -1, 0], [0, 0, -1]])
# Set the inequality constr aints vector
b = np.array([-1000, 0, -340, 0, 0, 0])
# Set the coefficients of the linear objective function vector
c = np.array([10, 15, 25])
# Solve linear progr amming problem
res = linprog(c, A_ub=A, b_ub=b)
# Print results
print( "Optimal value:", round(res. fun, ndigits=2),
"\nx values:", res.x,
"\nNumber of iterations performed:", res.nit,
"\nStatus:", res.message)

实验结果:

2.最大化问题

由于Python的SciPy库中的linprog函数是用来解决最小化问题的,因此有必要对原始目标函数进行转换。通过将目标函数的系数乘以-1(即通过改变其符号),可以将最小化问题转化为一个最大化问题。

让我们考虑下面需要解决的最大化问题:

实验代码:

# Import required libraries
import numpy as np
from scipy .optimize import linprog
# Set the inequality constraints matrix
# Note: the inequality constraints must be in the form of <
A = np.array([[-1, -1, -1], [-1, 2, 0], [0, 0, -1], [-1, 0, 0], [0, -1, 0], [0, 0, -1]])
# Set the inequality constr aints vector
b = np.array([-1000, 0, -340, 0, 0, 0])
# Set the coefficients of the linear objective function vector
c = np.array([10, 15, 25])
# Solve linear progr amming problem
res = linprog(c, A_ub=A, b_ub=b)
# Print results
print( "Optimal value:", round(res. fun, ndigits=2),
"\n x values:", res.x,
"\n Number of iterations performed:", res.nit,
"\n Status:", res.message)

实验结果:

线性规划问题(excel和python)相关推荐

  1. 再见 VBA!神器工具统一 Excel 和 Python

    作者 | 东哥起飞 来源 | Python数据科学 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Noteb ...

  2. python分析excel数据-对照Excel使用Python进行数据分析,更快掌握

    Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...

  3. python与excel结合-使用Excel和python来做回归分析

    使用Excel和python来做回归分析 作者:PHPYuan 时间:2018-08-01 03:40:50 聊完方差分析,就不得不说回归分析. 回归分析是一种应用广泛的统计分析方法,在金融,医学等领 ...

  4. python datetime格式转换_分别用Excel和python进行日期格式转换成时间戳格式

    最近在处理一份驾驶行为方面的数据,其中要用到时间戳,因此就在此与大家一同分享学习一下. 1.什么是时间戳? 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01 ...

  5. Excel:python结合Excel使用技巧经验总结之(将python输出的等间隔列数据直接粘贴复制存到物理表格内等)图文教程之详细攻略

    Excel:python结合Excel使用技巧经验总结之(将python输出的等间隔列数据直接粘贴复制存到物理表格内等)图文教程之详细攻略 目录 Excel使用技巧经验总结 将pandas.DataF ...

  6. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

  7. csv python 逐行读取_从 Excel 到 Python

    在 2016 年的 Build 大会上,微软宣布全球有 12 亿人在使用 Excel,而在同一年,全球的人口为 74 亿.也就是说,使用 Excel 的人占全球人口的 16.2%. 2019 年的一份 ...

  8. 从Excel到Python:最常用的36个Pandas函数

    本文为粉丝投稿的<从Excel到Python>读书笔记 本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分 ...

  9. python将excel日期比大小_sql与excel、python比较(二)——日期和时间函数

    1.CURDATE()或CURRENT_DATE():返回当前的日期 select curdate(),current_date(); excel:TODAY python:datetime和time ...

  10. python相比于excel的优势_对照Excel使用Python进行数据分析,更快掌握

    Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...

最新文章

  1. 静态查看进程信息 -- 基于 ps 命令实现
  2. python 如何自学-如何系统地自学 Python?
  3. 注册不到两年半Github标星39k+,吴恩达、李航老师的作品的笔记和代码实现
  4. 矩阵键盘程序_独立按键与矩阵按键
  5. docker中使用postgresql
  6. WGestures鼠标手势快捷手势介绍
  7. mysql检查所作的修正_MySQL常见故障检测和修正_mysql
  8. tecplot教程发布
  9. C# 开发安卓手机应用
  10. RHEL 7 使用 CentOS 源安装 docker ce
  11. linux谷歌浏览器flash屏蔽,默认禁用Flash!谷歌发布Chrome 76稳定版
  12. python把中文转英文_python自动化测试——中文转拼音,转英文
  13. python菜单栏不见了如何恢复_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
  14. 2022高性价蓝牙耳机排名,500元内真无线蓝牙耳机品牌推荐
  15. 产品设计过程中的沉没成本和禀赋效应
  16. canopen pdo通信c语言,CANopen通信之PDO通信
  17. mtk 手机 linux,【ZT】MTK X20编译环境搭建 烧写安卓固件详细教程
  18. 没用户、没技术,炒了这么久的区块链游戏似乎找到了一条新思路
  19. 界面仅允许扫码枪录入禁止手工键盘输入
  20. BMap 设置地图类型、缩放平移控件及缩放级别

热门文章

  1. [小O地图-图表] - 制作全国行政区图表
  2. JointJs快速入门
  3. mdt服务器实现自动加域,Windows自动化部署(三)MDT环境准备
  4. Python3.7下载与安装pygame
  5. Java动态生成excel模板、和动态模板数据导出
  6. Hadoop之Hbase安装和配置
  7. shoppping collection
  8. python汉化之后好用吗_关于Python写的程序汉化心得和所走过的各种坑儿
  9. 计算机桌面提示区,win7如何把电脑桌面分成四个区域?电脑分区域显示方法
  10. JSONArray.fromObject(); 引入问题