线性规划问题(excel和python)
文章目录
- 前言
- 一、线性规划的来源及内容
- 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)相关推荐
- 再见 VBA!神器工具统一 Excel 和 Python
作者 | 东哥起飞 来源 | Python数据科学 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Noteb ...
- python分析excel数据-对照Excel使用Python进行数据分析,更快掌握
Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...
- python与excel结合-使用Excel和python来做回归分析
使用Excel和python来做回归分析 作者:PHPYuan 时间:2018-08-01 03:40:50 聊完方差分析,就不得不说回归分析. 回归分析是一种应用广泛的统计分析方法,在金融,医学等领 ...
- python datetime格式转换_分别用Excel和python进行日期格式转换成时间戳格式
最近在处理一份驾驶行为方面的数据,其中要用到时间戳,因此就在此与大家一同分享学习一下. 1.什么是时间戳? 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01 ...
- Excel:python结合Excel使用技巧经验总结之(将python输出的等间隔列数据直接粘贴复制存到物理表格内等)图文教程之详细攻略
Excel:python结合Excel使用技巧经验总结之(将python输出的等间隔列数据直接粘贴复制存到物理表格内等)图文教程之详细攻略 目录 Excel使用技巧经验总结 将pandas.DataF ...
- 数学建模——线性规划模型详解Python代码
数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...
- csv python 逐行读取_从 Excel 到 Python
在 2016 年的 Build 大会上,微软宣布全球有 12 亿人在使用 Excel,而在同一年,全球的人口为 74 亿.也就是说,使用 Excel 的人占全球人口的 16.2%. 2019 年的一份 ...
- 从Excel到Python:最常用的36个Pandas函数
本文为粉丝投稿的<从Excel到Python>读书笔记 本文涉及pandas最常用的36个函数,通过这些函数介绍如何完成数据生成和导入.数据清洗.预处理,以及最常见的数据分类,数据筛选,分 ...
- python将excel日期比大小_sql与excel、python比较(二)——日期和时间函数
1.CURDATE()或CURRENT_DATE():返回当前的日期 select curdate(),current_date(); excel:TODAY python:datetime和time ...
- python相比于excel的优势_对照Excel使用Python进行数据分析,更快掌握
Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...
最新文章
- 静态查看进程信息 -- 基于 ps 命令实现
- python 如何自学-如何系统地自学 Python?
- 注册不到两年半Github标星39k+,吴恩达、李航老师的作品的笔记和代码实现
- 矩阵键盘程序_独立按键与矩阵按键
- docker中使用postgresql
- WGestures鼠标手势快捷手势介绍
- mysql检查所作的修正_MySQL常见故障检测和修正_mysql
- tecplot教程发布
- C# 开发安卓手机应用
- RHEL 7 使用 CentOS 源安装 docker ce
- linux谷歌浏览器flash屏蔽,默认禁用Flash!谷歌发布Chrome 76稳定版
- python把中文转英文_python自动化测试——中文转拼音,转英文
- python菜单栏不见了如何恢复_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
- 2022高性价蓝牙耳机排名,500元内真无线蓝牙耳机品牌推荐
- 产品设计过程中的沉没成本和禀赋效应
- canopen pdo通信c语言,CANopen通信之PDO通信
- mtk 手机 linux,【ZT】MTK X20编译环境搭建 烧写安卓固件详细教程
- 没用户、没技术,炒了这么久的区块链游戏似乎找到了一条新思路
- 界面仅允许扫码枪录入禁止手工键盘输入
- BMap 设置地图类型、缩放平移控件及缩放级别
热门文章
- [小O地图-图表] - 制作全国行政区图表
- JointJs快速入门
- mdt服务器实现自动加域,Windows自动化部署(三)MDT环境准备
- Python3.7下载与安装pygame
- Java动态生成excel模板、和动态模板数据导出
- Hadoop之Hbase安装和配置
- shoppping collection
- python汉化之后好用吗_关于Python写的程序汉化心得和所走过的各种坑儿
- 计算机桌面提示区,win7如何把电脑桌面分成四个区域?电脑分区域显示方法
- JSONArray.fromObject(); 引入问题