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

server/2024/12/22 18:08:15/

引言

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

作为数学建模的基础算法,线性规划学习起来的难度并不大。在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 =26>> 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.ppmy.cn/server/122256.html

相关文章

【python笔记】列表操作append(list)与append(list[:])的区别;列表的就地修改与非就地修改

问题背景&#xff1a; 当有一个数组list1 [1,2,3]&#xff0c;需要根据list1创建一个二维数组list2时&#xff0c; 想到了列表的list2.append(list1) 结果由于list1.pop()更改&#xff0c;list2的结果也随之变化&#xff0c;开始摸不着头脑。 append(list)与append(list[:])的…

前端文件下载全流程

一、首先是点击下载函数功能 源代码&#xff1a; java const dow async (record: any) > {console.log(record,record);let date: any {}date.pcno record.pcnodate.fileName record.fileNamedate.gmtCreated dayjs(record.gmtCreated).format(YYYY-MM)date.importSta…

解决docker目录内存不足扩容处理

当我们使用docker时&#xff0c;经常会创建新镜像和新容器&#xff0c;在新容器中又会安装各种包&#xff0c;这些东西不是虚拟的&#xff0c;而是实实在在存于我们的磁盘中&#xff0c;默认在/var/lib/docker中&#xff0c;这个目录是属于系统盘的&#xff0c;而系统盘的空间往…

接口自动化测试框架详解(pytest+allure+aiohttp+ 用例自动生成)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 近期准备优先做接口测试的覆盖&#xff0c;为此需要开发一个测试框架&#xff0c;经过思考&#xff0c;这次依然想做点儿不一样的东西。 接口测试是比较讲究效…

【计算机网络】运输层协议解析

这里写目录标题 前言UDP与TCP对比TCP流量控制TCP拥塞控制TCP超时重传时间选择TCP可靠传输实现 前言 运输层直接为应用进程间的逻辑通信提供服务。运输层向高层用户屏蔽了下面网络核心细节&#xff08;如网络拓扑、路由选择协议等&#xff09;它使应用进程看见的就好像是在两个…

IP地址与智能家居能够碰撞出什么样的火花呢?

感应灯、远程遥控空调&#xff0c;自动感应窗帘——智能家居已经在正逐步走入我们的生活&#xff0c;为我们带来前所未有的便捷与舒适体验。而在这一进程中&#xff0c;IP地址又能够与智能家居碰撞出什么样的火花呢&#xff1f; 一、IP地址&#xff1a;智能家居的连接基石 智…

0基础学习HTML(二十二)XHTML

HTML - XHTML XHTML 是以 XML 格式编写的 HTML。 什么是 XHTML? XHTML 指的是可扩展超文本标记语言XHTML 与 HTML 4.01 几乎是相同的XHTML 是更严格更纯净的 HTML 版本XHTML 是以 XML 应用的方式定义的 HTMLXHTML 是 2001 年 1 月发布的 W3C 推荐标准XHTML 得到所有主流浏览器…

Html--笔记01:使用软件vscode,简介Html5--基础骨架以及标题、段落、图片标签的使用

一.使用VSC--全称&#xff1a;Visual Studio Code vscode用来写html文件&#xff0c;打开文件夹与创建文件夹&#xff1a;①选择文件夹 ②拖拽文件 生成浏览器的html文件的快捷方式&#xff1a; &#xff01;enter 运行代码到网页的方法&#xff1a; 普通方法&#xff1a…