线性规划模型详解及实际应用反思
一、线性规划的定义
线性规划一般用于求解最优化问题。线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最
小的问题。该方法在建立方程时非常简单快速,但不利于人工计算。但随着计算机技术的发展,特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
线性规划的中心思想:求解出符合各约束条件的目标函数最优解。因为目标函数及约束条件均为线性函数,故被称为线性规划问题。如果其中有一个公式不是线性,则不是线性规划问题。
目标函数:根据要求的参数与各决策变量间的关系建立函数。
约束条件:根据各决策变量间的关系写出等式或不等式及决策变量的范围。
例如下述问题:
某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。生产甲机床需用 A、B机器加工,加工时间分别为每台2 小时和 1 小时;生产乙机床需用 A、B、C 三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为 A 机器 10 小时、 B 机器 8 小时和 C 机器 7 小时,问该厂应生产甲、乙机床各几台,才能使总利润最大?
上述问题的数学模型:设该厂生产x1x_1x1台甲机床和x2x_2x2乙机床时总利润最大,则应满足:
其中x1x_1x1、x2x_2x2称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件。
二、用MATLAB求解
1、MATLAB中线性规划的标准形式为:
(1)cTc^TcT为目标函数中决策变量的系数矩阵,例如:本题中c=[4;3]
(2)A为约束条件中决策变量的系数矩阵,在写程序时可用a表示,例如:本题中a=[2,1;1,1;0,1;-1,0;0,-1];其中注意x1x_1x1、x2x_2x2大于等于0,在程序中的写法。转化为标准形式时符号取反时,系数应乘以-1。
(3)在约束条件中有等式时,Aep表示等式中系数矩阵,beq表示等式结果。
(4)LB 和 UB 分别是变量 x 的下界和上界。
(5)本题中函数形式为x=linprog(-c,a,b,[],[],zeros(2,1))。标准形式为min,而本题中求max故c取相反数。两个[]是aep和beq的位置,本题约束条件中没有等式,故不用。zeros(2,1)控制参数,表示决策变量有2个,目标值有1个。
2.本题MATLAB程序
c=[4;3];
a=[2,1;1,1;0,1;-1,0;0,-1];
b=[10;8;7;0;0];
x=linprog(-c,a,b,[],[],zeros(2,1))
value=c'*x
结果:
三、实际应用
前言
这一部分写于2019.2.4.离写这篇文章已经过去5个月之久了。这个例子是本人2018年全国数学建模中应用的,最终获得了全国一等奖。现在我拿出这个例子反思以下在复杂情况时,是否可以应用线性规划模型(或者说,已明确线性规划模型适用,应如何建立线性规划模型)。
问题背景
(1)结合附件 1 给出的专用服装材料的某些参数值以及附件 2 给出的测量得到假人皮肤外侧的温度,对环境温度为 75ºC、II 层厚度为 6mm、IV 层厚度为5 mm、工作时间为 90 分钟的情形开展实验,建立数学模型,计算温度分布,并生成温度分布的 Excel 文件。
(2)当环境温度为 65ºC、IV 层的厚度为 5.5 mm 时,确定 II 层的最优厚度,确保工作 60 分钟时,假人皮肤外侧温度不超过47ºC,且超过 44ºC 的时间不超过 5 分钟。
(3)当环境温度为 80ºC 时,确定 II 层和 IV 层的最优厚度,确保工作30分钟时,假人皮肤外侧温度不超过 47ºC,且超过 44ºC 的时间不超过 5 分钟。
所建模型
针对问题二
针对问题三(双层规划模型,目标函数没有列出)
总结与反思
- 线性规划模型适用的情况明确 ,在问题二中已明确指出求最优厚度,因此可以确定线性规划可以应用。
- 看似复杂,实则简单 ,问题二中,就是建立了一个F1、F2与最优厚度的模型。由于该题各参数之间联系不明确需要推导(推导过程复杂),导致目标函数和约束条件函数过于复杂,其原理与线性规划一致。因此,我认为复杂类问题推导目标函数和约束条件是关键,但这并不影响线性规划模型的应用。
- 灵活运用规划类模型 ,现在有许多规划类模型(例如整数规划、双层规划、多目标规划等等)已经十分成熟,而且解决各类问题也十分方便。
- 复杂的规划模型,最优化求解是关键, 建立完模型不等于可以立刻得出答案,类似于双层规划模型这种,最优化求解是该模型是否良好关键。目前比较好的方法有梯度下降法、牛顿法、共轭梯度法等等,详细可见[https://www.cnblogs.com/maybe2030/p/4751804.html]。
- 模型是否可靠?、求解是否准确? ,这是本人到现在依然存在的疑惑,由于我也是刚刚接触建模没有多长时间,建立模型时(特别是模型复杂时)许多细节完全照搬网上的理论,对于模型的检验也没有完整的理论去检验,仅凭一面之词很难说明问题。(今后如需利用这方面知识需要注意)
- 模型简单,是否可以在建模比赛中使用? ,这个问题很难解答,首先我认为数学建模是为了解决实际问题,只要模型能够准确、可靠的解决问题就能给使用。其次、规划类模型是解决某类数学问题的唯一途径。
线性规划模型详解及实际应用反思相关推荐
- 数学建模——线性规划模型详解Python代码
数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...
- 使用pickle保存机器学习模型详解及实战(pickle、joblib)
使用pickle保存机器学习模型详解及实战 pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...
- Transformer 模型详解
Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于 Transformer.Transformer 模型使用了 Self- ...
- TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,
TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...
- TensorFlow Wide And Deep 模型详解与应用
Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1].wide and dee ...
- 数学建模——智能优化之模拟退火模型详解Python代码
数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...
- 数学建模——智能优化之粒子群模型详解Python代码
数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...
- 数学建模——支持向量机模型详解Python代码
数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...
- 数学建模——一维、二维插值模型详解Python代码
数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...
最新文章
- Cesium调用 WMS 、WMTS 服务
- linux shell 把一个文件的前n行 拷贝到另一个文件中
- 一天搞定HTML----列表标签03
- 海南师范大学计算机设计大赛证书,我校品牌VI设计作品在中国大学生计算机设计大赛海南省赛中获得一等奖...
- 30.jvm.gc(GC之详解CMS收集过程和日志分析)
- python如何使用session和cookie_Python爬虫番外篇之Cookie和Session-阿里云开发者社区
- oracle 触发器 merge,[OT]函数|过程|触发器|插入(insert)|修改(Merge)
- 王道考研 计算机网络17 IP数据报 最大传送单元MTU IP地址 IPv4 子网划分 ARP协议 ICMP协议 移动IP
- Scala 知识点掌握1
- java blueprint_blueprint(蓝本/蓝图)学习笔记
- RAID简单介绍和Linux如何搭建一个RAID
- 快速排序算法之我见(附上C代码)
- 【剖析 | SOFARPC 框架】系列之 SOFARPC 注解支持剖析
- 数组对象转json格式
- svnadmin dump导入导出命令
- 利用百度图像处理API接口实现人脸融合
- 【解决】RuntimeError:Trying to backward throughthe graph a second time
- 安装软件时出现解析包出现问题是什么原因
- 微信小程序点击获取昵称头像
- python 换脸 github_AI 换脸项目 ALAE 登顶 Github,AI 换脸又升级?