数学建模-线性规划讲解(Matlab版本)

news2024/11/15 21:49:01

引言

相信不少小伙伴刚开始接触数学建模时,第一个学习的算法就是运筹学的重要分支--数学规划,而数学规划当中重要的分支就是线性规划了。在这里笔者参考了司守奎和孙玺菁老师的《数学建模算法与应用》(第三版)这本书,以此来讲讲关于线性规划当中的基础知识。

作为数学建模的基础算法,线性规划学习起来的难度并不大。在1947年提出线性规划当中的单纯形法后,线性规划趋于成熟,在工业界和商业界中都发挥着较为重要的作用。

线性规划模型的形式

一般而言,线性规划模型的形式有

  1. 线性规划模型的一般形式

简写形式为 

2.也能用向量的形式表示

3.还能用矩阵的形式表示 

解的概念

一般线性规划问题的数学标准型为 

这里有两个重要概念为 

可行解

满足上图约束条件的解x=[X_1,X_2,...,X_n]^T,称为线性规划问题的可行解,
而使上图中的目标函数达到最大值的可行解称为最优解

可行域:

所有可行解构成的集合称为问题的可行域,记为R′

例题

我们来看一道相当经典的问题

机床厂生产甲、乙两种机床’每台机床销售后的利润分别为4千元与3千元。生产甲机床需用A、B机器加工’加工时间分别为每台2h和每台1h;生产乙机床需用A、B、C三种机器加工’加工时间均为每台1h°若每天可用于加工的机器时数分别为A机器10h、B机器8h和C机器7h’问该厂应生产甲、乙机床各几台才能使总利润最大?

问题分析

决策变量

我们将甲机床和乙机床的产量分别定义为x_1x_2

目标函数:

我们开始分析这个问题时,就得先看看题目的目标是什么。这里是要让总利润最大化,那么我们确定影响目标的目标函数,目标函数

maxZ=4x_1+3x_2(即要最大化Z

约束条件

我们发现生产甲机床需要用到A机器和B机器共同生产才行,它需要A机器2小时,B机器1小时,对于乙机器呢,它则需要A,B,C各个工作一小时,再根据题目中各个机器的工作时长我们可以得到以下关系式 

  • 2x_1+x_2\leq 10
  • x_1+x_2\leq8
  • x_3\leq7

模型建立:

而我们刚刚所构建的数学模型为

这个就是我们所构建的数学模型啦,下面我们用matlab来实现一下我们所设计的数学模型

clc,clear;
f=[-4,-3];
a=[2,1;1,1;0,1];
b=[10,8,7];
[x,y]=linprog(f,a,b);
x,y=-y;
disp(y)

运行结果: 


Optimal solution found.


x =

     2
     6

>> disp(y)
    26

注意!!!matlab当中的标准形式为求解最小值,在求解最大值时,我们得加个负号。 

建立线性模型的三个步骤

通过这样一道经典的例题,我们总结一下求解思路

  1. 分析问题,找出决策变量。

  2. 根据问题所给定的条件,找出决策变量必须要满足的一组线性等式或者不等式约束,即为约束条件。

  3. 根据问题的目标,构造关于决策变量的一个线性函数,即为目标函数。

走完这三步后,我们就能构建起我们的一个数学模型了

在做完我们的建模后,我们要对我们所构建的模型还要对我们的模型做一个灵敏度分析。

灵敏度分析

概念

所谓的灵敏度分析就是指对系统因周围条件变化而显示出来的敏感程度分析。其实就是对我们的数学模型和算法进行优化 。

实现方式

我们通常会提出这两个疑问,并去解答我们的疑问

  1. 如果参数a_{ij},b_i,c_j中的一个或者几个发生了变化’现行最优方案会有什么变化?
  2. 将这些参数的变化限制在什么范围内’原最优解仍是最优的?

一些见解 

 在实际应用当中,给定参变量一个步长使其重复求解线性规划问题,以观察最优解的
变化情况,不失为一种可用的数值方法,特别是使用计算机求解时。(对于这一点,笔者在国赛时感触较大,虽然不是应用在线性规划上

对于数学模型的灵敏度分析,我们在后面的博文当中会有所涉及的,感兴趣的同学可以等一下后面的文章,可以与笔者交流一下心得。

Matlab求解

求解线性规划模型已经有比较成熟的算法。对-般的线性规划模型’常用的求解方
法有图解法、单纯形法等;虽然针对线性规划的理论算法已经比较完善,但是当需要求解
的模型的决策变量和约束条件数量比较多时’手工求解模型是十分繁杂甚至不可能的’通
常需要借助计算机软件来实现。

目前’求解数学规划模型的常用软件有Matlab,Python,Lingo等多种,笔者后续文章中出现的
数学规划模型主要使用Matlab软件求解。Matlab求解数学规划问题(包括线性规划、整
数规划和非线性规划)采用两种模式:基于求解器的求解方法和基于问题的求解方法

1.基于求解器的求解方法

线性规划的目标函数可以是求最大值,也可以是求最小值,约束条件的不等号可以是
小于等于号也可以是大于等于号。为了避免这种形式多样性带来的不便,Matlab基于求
解器的求解方法中规定线性规划的标准形式为

代码

[x,fval] =linprog(f,A,b)
[x,fval] =linprog(f,A,b,Aeq,beq)
[x,fcal] =linPr○g(f,A,b,Aeq,beα,lb,ub)
%%x返回决策向量的取值
%%5fval返回目标函数的最优值
%%f为价值向量
%%A,b对应线性不等式约束
%%Aeq’beq对应线性等式约束
%%lb和ub分别对应决策向量的下界向量和上界向量

 2.基于问题的求解

Matlab基于问题的求解数学规划方法,首先需要用变量和表达式构造优化问题,然后
solve函数求解。具体求解步骤可以通过下面例子看出来,或者在命令窗口运行doc
optimproblem
,看Matlab的详细帮助。

代码

clc,clear
prob= optimroblem(‘ObjectiveSense','max')%目标函数最大化的优化间题
c =[4;3];b= [10:8;7];
a=[2,1;1,1;0,1]?
x= optimvar('x',2,'LowerBound',0); %决策变量
prob.Objective = c'*x; %目标函数
prob.Constraints.con 玉 a*x<=b; %约束条件
[sal,fval,flag,out]=solve(prob)% fval返回最优值
Bol.x %显示决策变量的值

这几行代码是基于刚刚那个例子给出的基于问题求解的方式,而我们刚刚在例题当中所给出的解答方案呢,则是使用了基于求解器的求解方式。

应用

线性规划在军事作战,经济分析, 经营管理,工程技术等领域都发挥着十分重要的作用,在讲完整数规划后,笔者会专门写一篇文章,讲解相关应用和例题求解

总结

这是笔者关于数学建模相关的文章,略有不足,请各位读者多多指教,笔者也会在后期推出更为复杂和有意思的数学模型以及算法内容

最后不要忘记关注一下笔者,谢谢各位小伙伴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同等学力申硕英语多少分及格

同等学力申硕全国统考与往年的分数线一样&#xff0c;英语、学科综合均为60分合格通过制&#xff0c;满分均100分。 单科分数未达到及格线的考生&#xff0c;次年5月可以参加单科的补考 同等学力申硕的意义和作用 授予同等学力人员硕士学位是国家为同等学力人员开辟的获得学位…

前端——阿里图标的使用

阿里图标 将小图标定义成字体&#xff0c;通过引入字体的方式来展示这些图标 1.打开阿里图标库 https://www.iconfont.cn/ 2.登录 / 注册一个账号 3.选中你需要使用的图标 并且把它加入购物车 4.全部选择完之后 点击右上角 购物车 然后下载代码 5.解压后你下载的文…

MySQL数据库的日志你知道几个?

1、前言 MySQL相信大家都用过&#xff0c;但MySQL中都有哪些日志&#xff0c;是干什么的&#xff0c;估计有小伙伴还没有搞清楚。可能有小伙伴只知道最重要的三个&#xff1a;undolog、redolog、binlog。其实这是不全的&#xff0c;MySQL中的日志有&#xff1a; undolog&…

双端搭建个人博客

1. 准备工作 确保你的两个虚拟机都安装了以下软件: 虚拟机1(Web服务器): Apache2, PHP虚拟机2(数据库服务器): MariaDB2. 安装步骤 虚拟机1(Web服务器) 安装Apache2和PHP 更新系统包列表: sudo apt update安装Apache2: sudo apt install apache2 -y安装PHP及其Apac…

python学习第十二节:python开发图形界面

python学习第十二节&#xff1a;python开发图形界面 创建一个窗口实例化窗口对象调用窗口设置窗口大小设置窗口的标题设置窗口图标否能够改变窗口设置窗口的背景 创建容器组件容器组件的介绍组件参数的介绍label标签label添加标签控件 label添加标签定位label的relief参数label…

网站建设中,常用的后台技术有哪些,他们分别擅长做什么网站平台

PHP、Python、JavaScript、Ruby、Java和.NET各自适用于不同类型的网站平台。以下是对这些编程语言适用场景的具体介绍&#xff1a; PHP Web开发&#xff1a;PHP是一种广泛使用的开源服务器端脚本语言&#xff0c;特别适合Web开发。全球有超过80%的网站使用PHP作为服务器端编程语…

SaaS(Software as a Service)软件的主流技术架构

在当今数字化时代&#xff0c;SaaS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;软件以其灵活、高效和成本效益高的特点&#xff0c;成为企业信息化建设的首选。为了实现SaaS软件的稳定、可靠和高效运行&#xff0c;其技术架构的设计显得尤为重要。本文…

页面在移动设备上显示不正常的原因及解决方案

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介页面在移动设备上显示不正常的原因及解决方案1. 缺少 viewport 元标签1.1 问题描述1.2 解决方案1.3 注意事项 2. 响应式设计未实现或设计不当2.1 问题描述2.2 解决方案示例&#xff1a;媒体查询的使用 2.3 常见的媒体查询断点 3. 固…

基于传感网技术的职业院校安防系统实训室

一、引言 随着信息技术的飞速发展和城市化的不断加速&#xff0c;智能楼宇及安防系统已成为现代城市建设的重要组成部分。高职院校作为培养技术型人才的重要基地&#xff0c;应积极响应市场需求&#xff0c;建设符合时代潮流的安防系统实训室&#xff0c;以提升学生的专业技能…

Linux之实战命令11:tload应用实例(四十五)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

【工具】语音朗读PDF的免费工具

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 背景介绍 看累了&#xff0c;不想看&#xff0c;能不能读给我听&#xff01; 工具介绍 Natural Readers Free Text to Speech Online with Realistic…

最优化理论与自动驾驶(二-补充):求解算法(梯度下降法、牛顿法、高斯牛顿法以及LM法,C++代码)

在之前的章节里面&#xff08;最优化理论与自动驾驶&#xff08;二&#xff09;&#xff1a;求解算法&#xff09;我们展示了最优化理论的基础求解算法&#xff0c;包括高斯-牛顿法&#xff08;Gauss-Newton Method&#xff09;、梯度下降法&#xff08;Gradient Descent Metho…

蓝桥杯【物联网】零基础到国奖之路:十一. LORA

蓝桥杯【物联网】零基础到国奖之路:十一. LORA 第一节 LORA理论第二节 Lora的无线收发数据1&#xff0c;硬件解读2&#xff0c;CubeMX配置3&#xff0c;MDK代码 第一节 LORA理论 Lora是一种长距离、低功耗的无线通信技术&#xff0c;专为iot和远程应用设计。Lora技术基于半双工…

傅里叶变换及其应用笔记

傅里叶变换 预备知识学习路线扼要描述两者之间的共同点&#xff1a;线性运算周期性现象对称性与周期性的关系周期性 预备知识 学习路线 从傅里叶级数&#xff0c;过度到傅里叶变换 扼要描述 傅里叶级数&#xff08;Fourier series&#xff09;&#xff0c;几乎等同于周期性…

针对考研的C语言学习(定制化快速掌握重点1)

1.printf函数的几个要点 printf函数中所有的输出都是右对齐的&#xff0c;除非在%后面添加负号&#xff0c;则表示左对齐 #include<stdio.h> int main() {int num 10;int nums 100;float f 1000.2333333333;printf("%3d\n", nums);//%3d表示输出的总宽度至…

Python画笔案例-064 绘制彩花之旋转羽毛

1、绘制彩花之旋转羽毛 通过 python 的turtle 库绘制 彩花之旋转羽毛,如下图: 2、实现代码 绘制 彩花之旋转羽毛,以下为实现代码: """彩花之旋转羽毛.py本程序需要coloradd模块支持,安装方法:pip install coloradd技术支持微信scartch8,QQ:406273900www.l…

ROS2 技术及分布式介绍

PC端开发环境搭建 WSL环境搭建 https://www.guyuehome.com/46574 In Windows 11 builds that support wslg: 1. Open up powershell and enter wsl --install ROS2系统安装 方法一 • 设置编码 Bash $ sudo apt update && sudo apt install loca…

DAY80服务攻防-中间件安全HW2023-WPS 分析WeblogicJettyJenkinsCVE

知识点 1、中间件-Jetty-CVE&信息泄漏 2、中间件-Jenkins-CVE&RCE执行 3、中间件-Weblogic-CVE&反序列化&RCE 4、应用WPS-HW2023-RCE&复现&上线CS 中间件-Jetty-CVE&信息泄漏 Jetty是一个开源的servlet容器&#xff0c;它为基于Java的Web容器…

RAG(Retrieval-Augmented Generation)检索增强生成技术基础了解学习与实践

RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合了信息检索&#xff08;Retrieval&#xff09;和生成模型&#xff08;Generation&#xff09;的技术&#xff0c;旨在提高生成模型的性能和准确性。RAG 技术通过在生成过程中引入外部知识库&#xff0c;使…

两张图讲透软件测试实验室认证技术体系与质量管理体系

软件测试实验室在申请相关资质认证时&#xff0c;需要建立一套完整的质量管理体系和过硬的技术体系。这其中涉及到的要素非常繁杂&#xff0c;工作量非常庞大&#xff0c;为了帮助大家快速梳理清楚软件测试实验室认证过程中质量管理体系和技术体系的建设思路&#xff0c;我们梳…